/ Matrix_Portal_Flow_Viewer / flow_runner.py
flow_runner.py
1 # SPDX-FileCopyrightText: 2020 Carter Nelson for Adafruit Industries 2 # 3 # SPDX-License-Identifier: MIT 4 5 #====== 6 # NOTE: Run this on your PC, not the Matrix Portal. 7 #====== 8 import sys 9 import numpy as np 10 from PIL import Image 11 from ecoulements import systeme 12 13 # load geometry 14 grid = np.where(np.asarray(Image.open(sys.argv[1])), 1, 0) 15 16 # add inlet / outlet flows 17 inlet = np.array([2] * grid.shape[0]) 18 outlet = np.array([3] * grid.shape[0]) 19 grid = np.hstack((inlet[:, None], grid, outlet[:, None])) 20 21 # add upper/ lower walls 22 wall = np.array([0] * grid.shape[1]) 23 grid = np.vstack((wall, grid, wall)) 24 25 # solve 26 _, VX, VY, _ = systeme.sol(grid) 27 28 # save results to file 29 OUTFILE = "flow_solution.py" 30 with open(OUTFILE , "w") as fp: 31 fp.write("nan = None\n") 32 fp.write("solution = {\n") 33 fp.write('"VX":\n') 34 fp.write(str(VX[1:-1, 1:-1].tolist())) 35 fp.write(',\n"VY":\n') 36 fp.write(str(VY[1:-1, 1:-1].tolist())) 37 fp.write("\n}\n") 38 39 # done 40 print("DONE! Results saved to", OUTFILE)