3 A very simple example which demonstrates how to configure a patch-based
4 Finite Volume solver in Peano4. The code relies on snippets from ExaHyPE2.
5 However, it relies only on ExaHyPE's C/FORTRAN compute kernels, i.e. the
6 sophisticated build environment of this H2020 project is not used. The
7 solver simulates the simple MHD equations.
18 import peano4.datamodel
19 import peano4.solversteps
21 import peano4.visualisation
31 output_files = [ f
for f
in os.listdir(
".")
if f.endswith(
".peano-patch-file")
or f.endswith(
".vtu") ]
32 for f
in output_files:
40 project = exahype2.Project( [
"examples",
"exahype2",
"finitevolumes"],
"finitevolumes",
"." )
49 project.add_solver( exahype2.solvers.fv.GenericRusanovFixedTimeStepSize(
51 patch_size=patch_size,
53 auxiliary_variables=0,
62 build_mode = peano4.output.CompileMode.Asserts
68 project.set_global_simulation_parameters(
69 dimensions, [0.0,0.0], [1.0,1.0],
74 project.set_global_simulation_parameters(
75 dimensions, [0.0,0.0,0.0], [1.0,1.0,1.0],
82 peano4_project = project.generate_Peano4_project()
84 peano4_project.output.makefile.parse_configure_script_outcome(
"../../.." )
85 peano4_project.output.makefile.set_mode(build_mode)
87 peano4_project.output.makefile.add_Fortran_file(
"Parameters.f90" )
88 peano4_project.output.makefile.add_Fortran_file(
"C2P-MHD.f90" )
89 peano4_project.output.makefile.add_Fortran_file(
"C2PRoutines.f90" )
90 peano4_project.output.makefile.add_Fortran_file(
"PDE.f90" )
91 peano4_project.output.makefile.add_Fortran_file(
"InitialData.f90" )
93 peano4_project.generate(peano4.output.Overwrite.Default)
94 peano4_project.build()
95 success = peano4_project.run( [] )
99 convert = peano4.visualisation.Convert(
"solutionMHD",
True )
100 convert.set_visualisation_tools_path(
"../../../../src/visualisation" )
101 convert.extract_fine_grid()
102 convert.convert_to_vtk()