|
[Sponsors] |
Change onflow condition "on-the-fly" with pysu2 ? |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
December 14, 2021, 13:14 |
Change onflow condition "on-the-fly" with pysu2 ?
|
#1 |
New Member
Arne Voß
Join Date: Dec 2021
Posts: 13
Rep Power: 5 |
Hi everyone,
I use the pysu2 interface to launch a CFD computation similar as shown below. I have two questions/problems: a) Is it possible to change parameters like the angle of attack, sideslip or the grid movement "on-the-fly", without initializing the solver again? For example it is possible to set mesh deformations on-the-fly with pysu2.CSinglezoneDriver.SetMeshDisplacement() but I haven't found a function to change e.g. the onflow condition. b) Currently, my workaround is to write the new onflow condition into the config file and initialize SU2 again with hte new config file. However, this creates new problems because I found that the memory is not cleared after the post-processing and thus, after a couple of loops, I run out of memory. Note that I use mesh deformation, which uses a lot of memory. import pysu2 class MySU2Interface(object): def init_solver(self, para_filename): self.FluidSolver = pysu2.CSinglezoneDriver(para_filename, 1, self.comm) def run_solver(self): # mpi barrier self.comm.barrier() # run solver self.FluidSolver.Preprocess(0) self.FluidSolver.Run() self.FluidSolver.Postprocess() # write outputs and restart file(s) self.FluidSolver.Monitor(0) self.FluidSolver.Output(0) |
|
December 14, 2021, 15:26 |
|
#2 |
Senior Member
Pedro Gomes
Join Date: Dec 2017
Posts: 466
Rep Power: 14 |
Unfortunately we do not have that capability.
|
|
December 15, 2021, 06:36 |
|
#3 |
New Member
Arne Voß
Join Date: Dec 2021
Posts: 13
Rep Power: 5 |
Hi Pedro,
thank you very much for the fast answer. Do you have any plans to integrate such a functionality in the future? In the meantime, do your have or do you plan to have a function that clears/releases all memory when SU2 is done? Something like pysu2.CSinglezoneDriver.release_memory() or similar... I believe that would be very helpful for the users that don't use SU2 (only) as a standalone. I tried to delete the SU2 instance in python, but that didn't do anything to the memory consumption and running the garbage collector manually didn't help neither. del self.FluidSolver gc.collect() Do you have any suggestions how I could/should handle this problem? Thank you very much for your help, Arne Update to question b): After looking into the code, I found that the function that clears/releases memory is called pysu2.CSinglezoneDriver.Postprocessing(). I didn't see it at the beginning, because there is a second function Postprocess(). Looking at the names only, I didn't realize the difference in the underlying function. Last edited by Arne Voß; December 21, 2021 at 04:12. |
|
December 20, 2021, 19:04 |
|
#4 |
Senior Member
bigfoot
Join Date: Dec 2011
Location: Netherlands
Posts: 676
Rep Power: 21 |
For the updating of parameters: At the start of every iteration you could read a file with the updated parameter value in it and update the value that is read from the config file.
|
|
December 21, 2021, 04:05 |
|
#5 |
New Member
Arne Voß
Join Date: Dec 2021
Posts: 13
Rep Power: 5 |
Hi,
That sound like what I have in mind. However, I am not sure how to do this. Could you give more detailed instructions? Thank you very much, Arne |
|
December 22, 2021, 06:41 |
|
#6 |
Senior Member
Pedro Gomes
Join Date: Dec 2017
Posts: 466
Rep Power: 14 |
Hi Arne you can have a look at CEulerSolver::SetFarfield_AoA in CEulerSolver.cpp for what needs to be changed to set a different AoA.
I would be careful with changing Mach number because it may be used for nondimensionalization, or as a parameter of some schemes. |
|
December 22, 2021, 07:03 |
|
#7 |
New Member
Arne Voß
Join Date: Dec 2021
Posts: 13
Rep Power: 5 |
Hi,
I see that I could call SetAoA(alpha) located in the CConfig.cpp. But I believe the CConfig.cpp is not accessible via the python interface, so I have no idea how I could do this. What needs to be done to expose the CConfig.cpp to the python interface? Is it possible at all? Sorry that I ask questions that might appear simple to you guys, but I am not a software engineer and have no experience with C++. Thank you for your help, Arne |
|
December 23, 2021, 13:37 |
|
#8 |
Senior Member
Pedro Gomes
Join Date: Dec 2017
Posts: 466
Rep Power: 14 |
It is not enough to set it in the config object because other classes will use the original value to convert that information into something else, for example, the flow solver will use it to compute the farfield velocity.
The function I pointed to above, modifies that velocity. The typical process to expose functions to python is via the CDriver class, in particular the methods you add to python_wrapper_structure.cpp. In a nutshell you need to add a method to the driver to reach into the lower classes (solvers, etc.) See e.g. CDriver::SetVertexNormalHeatFlux in that file. |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Change Boundary Condition type during Transient simulation | Achille | FLUENT | 3 | December 29, 2022 11:20 |
Change Boundary Condition Type From Solver | Daveed | OpenFOAM Running, Solving & CFD | 1 | February 8, 2021 06:16 |
Change of boundary condition value (mole fraction) of species after convergence | Anshul7 | FLUENT | 0 | February 6, 2021 07:21 |
How to change the viscosity of STL-fluid Region in initial condition | Tusher | FLOW-3D | 0 | September 23, 2020 10:28 |
Pressure change after import init. condition file | Tony | CFX | 0 | October 18, 2004 23:46 |