/ 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)