8 available_precisions = {
9 "bf16",
"fp16",
"fp32",
"fp64"
12 available_scenarios = {
22 parser = exahype2.ArgumentParser(
"ExaHyPE 2 - ADER-DG Testing Script")
23 parser.add_argument(
"-pr",
"--precision", default=
"fp64", help=
"|".join(available_precisions))
24 parser.add_argument(
"-s",
"--scenario", default=
None, help=
"|".join(available_scenarios.keys()))
29 args = parser.parse_args()
31 if args.scenario
is None:
35 "Which of the following scenarios would you like to test?\n"
36 +
" - ".join(available_scenarios.keys())
39 scenario = available_scenarios[s]
46 scenario = available_scenarios[args.scenario]
48 order = args.degrees_of_freedom - 1
49 max_h = 1.1 * scenario._domain_size / (3.0**args.min_depth)
50 min_h = max_h * 3.0 ** (-args.amr_levels)
52 polynomials = exahype2.solvers.aderdg.Polynomials.Gauss_Lobatto
54 project = exahype2.Project(
55 namespace=[
"tests",
"exahype2",
"aderdg"],
56 project_name=scenario.__class__.__name__,
61 solver = exahype2.solvers.aderdg.GlobalAdaptiveTimeStep(
66 time_step_relaxation=0.9,
67 unknowns=scenario._equation.num_unknowns,
68 auxiliary_variables=scenario._equation.num_auxiliary_variables,
71 solver.add_kernel_optimisations(
72 polynomials=polynomials,
73 is_linear=scenario._equation.is_linear,
74 precision=args.precision
77 solver.set_implementation(
78 initial_conditions=scenario.initial_conditions(),
79 boundary_conditions=scenario.boundary_conditions(),
80 max_eigenvalue=scenario._equation.eigenvalues(),
81 flux=scenario._equation.flux(),
82 ncp=scenario._equation.ncp(),
83 riemann_solver=scenario._equation.riemann_solver(),
86 solver.set_plotter(args.plotter)
88 if scenario.analytical_solution() != exahype2.solvers.PDETerms.None_Implementation:
89 exahype2.solvers.aderdg.ErrorMeasurement(
91 error_measurement_implementation=scenario.analytical_solution(),
92 output_file_name=
"Error_" + scenario.__class__.__name__,
95 project.add_solver(solver)
96 project.set_output_path(
"solutions")
97 scenario.set_global_simulation_parameters(project)
98 project.set_load_balancer(
"new ::exahype2::LoadBalancingConfiguration")
99 project.set_Peano4_installation(
"../../../", mode=peano4.output.string_to_mode(args.build_mode))
100 project = project.generate_Peano4_project(verbose=
False)
101 project.set_fenv_handler(args.fpe)
102 project.build(make_clean_first=
True)
Scenario reproduced from Dumbser & Käser, https://doi.org/10.1111/j.1365-246X.2006....
Very simple scenario in which the initial value of x is shifted in each spatial dimension.
Scenario reproduced from Dumbser & Käser, https://doi.org/10.1111/j.1365-246X.2006....
Scenario reproduced from Ioratti, Dumbser & Loubère, https://doi.org/10.1007/s10915-020-01209-w (p.
Scenario reproduced from Ioratti, Dumbser & Loubère, https://doi.org/10.1007/s10915-020-01209-w (p.
Classic radial dam break SWE equations, with constant initial water height but a bump in the bathymet...
Resting lake scenario for the shallow water equations.