Breaking of a dam (fluidsimfoam-dam
solver)#
We created a solver fluidsimfoam-dam
to reproduce the OpenFOAM tutorial
Breaking of a dam.
from fluidsimfoam_dam import Simul
To run a sequential simulation:
params = Simul.create_default_params()
params.output.sub_directory = "doc_fluidsimfoam/dam"
params.control_dict.end_time = 1.0
sim = Simul(params)
path_run: /home/docs/Sim_data/doc_fluidsimfoam/dam/dam_run_2024-01-21_22-30-20
INFO sim: <class 'fluidsimfoam_dam.Simul'> sim.output.log: <class 'fluidsimfoam.output.log.Log'> sim.output.fields: <class 'fluidsimfoam.output.fields.Fields'> input_files: - in 0: U alpha_water p_rgh - in constant: g transportProperties turbulenceProperties - in system: blockMeshDict controlDict decomposeParDict fvSchemes fvSolution sampling setFieldsDict sim.output: <class 'fluidsimfoam_dam.output.OutputDam'> sim.oper: <class 'fluidsimfoam.operators.Operators'> sim.init_fields: <class 'fluidsimfoam.init_fields.InitFields'> sim.make: <class 'fluidsimfoam.make.MakeInvoke'>
sim.make.exec("polymesh")
blockMesh
sim.make.exec("run")
setFields
Starting simulation in
/home/docs/Sim_data/doc_fluidsimfoam/dam/dam_run_2024-01-21_22-30-20
end_time = 1.0
eq_time: 0.025 ( 2.46 %), clock_time: 0.201 s
eq_time: 0.453 ( 45.26 %), clock_time: 2.204 s
eq_time: 0.808 ( 80.77 %), clock_time: 4.207 s
Simulation done. path_run:
/home/docs/Sim_data/doc_fluidsimfoam/dam/dam_run_2024-01-21_22-30-20
import pyvista
pyvista.set_jupyter_backend("static")
pyvista.global_theme.anti_aliasing = 'ssaa'
pyvista.global_theme.background = 'white'
pyvista.global_theme.font.color = 'black'
pyvista.global_theme.font.label_size = 12
pyvista.global_theme.font.title_size = 16
pyvista.global_theme.colorbar_orientation = 'vertical'
sim.output.fields.plot_contour("alpha.water", time=0.1);
sim.output.fields.plot_contour("alpha.water", time=0.4);
sim.output.fields.plot_contour("alpha.water", time=1);
To run the same simulation but in parallel:
params = Simul.create_default_params()
params.output.sub_directory = "doc_fluidsimfoam/dam"
params.control_dict.end_time = 1.0
params.parallel.method = "simple"
params.parallel.nsubdoms = 4
params.parallel.nsubdoms_xyz = [2, 2, 1]
sim = Simul(params)
path_run: /home/docs/Sim_data/doc_fluidsimfoam/dam/dam_run_2024-01-21_22-30-32
INFO sim: <class 'fluidsimfoam_dam.Simul'> sim.output.log: <class 'fluidsimfoam.output.log.Log'> sim.output.fields: <class 'fluidsimfoam.output.fields.Fields'> input_files: - in 0: U alpha_water p_rgh - in constant: g transportProperties turbulenceProperties - in system: blockMeshDict controlDict decomposeParDict fvSchemes fvSolution sampling setFieldsDict sim.output: <class 'fluidsimfoam_dam.output.OutputDam'> sim.oper: <class 'fluidsimfoam.operators.Operators'> sim.init_fields: <class 'fluidsimfoam.init_fields.InitFields'> sim.make: <class 'fluidsimfoam.make.MakeInvoke'>
sim.make.exec("run")
blockMesh
setFields
decomposePar
Starting simulation in
/home/docs/Sim_data/doc_fluidsimfoam/dam/dam_run_2024-01-21_22-30-32
end_time = 1.0
eq_time: 0.172 ( 17.24 %), clock_time: 2.203 s
eq_time: 0.336 ( 33.62 %), clock_time: 4.206 s
eq_time: 0.484 ( 48.43 %), clock_time: 6.209 s
eq_time: 0.593 ( 59.26 %), clock_time: 8.212 s
eq_time: 0.755 ( 75.51 %), clock_time: 10.215 s
eq_time: 0.917 ( 91.73 %), clock_time: 12.218 s
Simulation done. path_run:
/home/docs/Sim_data/doc_fluidsimfoam/dam/dam_run_2024-01-21_22-30-32
One can also try with a higher dam:
params.parallel.nsubdoms = 1
params.block_mesh_dict.height_dam *= 2
sim = Simul(params)
path_run: /home/docs/Sim_data/doc_fluidsimfoam/dam/dam_run_2024-01-21_22-30-46
INFO sim: <class 'fluidsimfoam_dam.Simul'> sim.output.log: <class 'fluidsimfoam.output.log.Log'> sim.output.fields: <class 'fluidsimfoam.output.fields.Fields'> input_files: - in 0: U alpha_water p_rgh - in constant: g transportProperties turbulenceProperties - in system: blockMeshDict controlDict decomposeParDict fvSchemes fvSolution sampling setFieldsDict sim.output: <class 'fluidsimfoam_dam.output.OutputDam'> sim.oper: <class 'fluidsimfoam.operators.Operators'> sim.init_fields: <class 'fluidsimfoam.init_fields.InitFields'> sim.make: <class 'fluidsimfoam.make.MakeInvoke'>
sim.make.exec("run")
blockMesh
setFields
Starting simulation in
/home/docs/Sim_data/doc_fluidsimfoam/dam/dam_run_2024-01-21_22-30-46
end_time = 1.0
eq_time: 0.025 ( 2.46 %), clock_time: 0.201 s
eq_time: 0.411 ( 41.05 %), clock_time: 2.204 s
eq_time: 0.669 ( 66.90 %), clock_time: 4.206 s
eq_time: 0.856 ( 85.56 %), clock_time: 6.209 s
Simulation done. path_run:
/home/docs/Sim_data/doc_fluidsimfoam/dam/dam_run_2024-01-21_22-30-46
sim.output.fields.plot_contour("alpha.water", time=0.1);
sim.output.fields.plot_contour("alpha.water", time=0.4);
sim.output.fields.plot_contour("alpha.water", time=1);