7from GRMHD
import max_eigenvalue, flux, ncp
13available_scenarios = [
"AlfvenWave",
"MichelSphericalAccretion"]
15parser = exahype2.ArgumentParser(
"ExaHyPE 2 - ADER-DG GRMHD Testing Script")
18 "-s",
"--scenario", default=
"AlfvenWave", help=
"|".join(available_scenarios)
23 number_of_snapshots=0,
25args = parser.parse_args()
27order = args.degrees_of_freedom - 1
28max_h = 1.1 * 6.0 / (3.0**args.min_depth)
29min_h = max_h * 3.0 ** (-args.amr_levels)
31polynomials = exahype2.solvers.aderdg.Polynomials.Gauss_Legendre
33if args.scenario ==
"MichelSphericalAccretion":
35 offset = [2.2, 2.2, 2.2]
36 size = [6.0, 6.0, 6.0]
39 function_name =
"initialAccretionDisc3D"
40elif args.scenario ==
"AlfvenWave":
43 size = [2 * pi, 2 * pi]
46 function_name =
"AlfvenWaveTest"
48if args.build_mode ==
"Debug":
53 GRMHD::InitialData::"""
64 GRMHD::InitialData::"""
73analytical_solution = (
75 GRMHD::InitialData::"""
84project = exahype2.Project(
85 namespace=[
"tests",
"exahype2",
"aderdg"],
86 project_name=args.scenario,
91solver = exahype2.solvers.aderdg.GlobalAdaptiveTimeStep(
96 time_step_relaxation=0.9,
107 auxiliary_variables=0,
110solver.add_kernel_optimisations(
111 polynomials=polynomials,
116solver.set_implementation(
117 initial_conditions=initial,
118 boundary_conditions=boundary_condition,
119 max_eigenvalue=max_eigenvalue,
124solver.add_user_solver_includes(
126#include "InitialData.h"
131exahype2.solvers.aderdg.ErrorMeasurement(
133 error_measurement_implementation=analytical_solution,
134 output_file_name=
"Error_"
137 + str(args.min_depth)
142project.add_solver(solver)
144if args.number_of_snapshots <= 0:
145 time_in_between_plots = 0.0
147 time_in_between_plots = end_time / args.number_of_snapshots
148 project.set_output_path(args.output)
150project.set_global_simulation_parameters(
151 dimensions=dimensions,
152 offset=offset[0:dimensions],
153 size=size[0:dimensions],
154 min_end_time=end_time,
155 max_end_time=end_time,
156 first_plot_time_stamp=0.0,
157 time_in_between_plots=time_in_between_plots,
158 periodic_BC=[periodic_bc, periodic_bc, periodic_bc][0:dimensions],
161project.set_load_balancer(
"new ::exahype2::LoadBalancingConfiguration")
162project.set_build_mode(mode=peano4.output.string_to_mode(args.build_mode))
163project = project.generate_Peano4_project(verbose=
False)
164project.build(make_clean_first=
True)