1 import os, sys, peano4, exahype2
3 from exahype2.solvers.aderdg.ADERDG
import Polynomials
8 import CurvilinearElastic
10 sys.path.insert(0, os.path.abspath(
"../ExaSeis_core"))
13 available_scenarios = {
25 scenario_string = scenario.lower()
26 my_scenario = available_scenarios[scenario]
28 unknowns = {
"v": 3,
"sigma": 6}
29 auxiliary_variables = {
30 "rho": 1,
"cp": 1,
"cs": 1,
31 "jacobian": 1,
"metric_derivative": 9,
35 offset = my_scenario.domain_offset
36 size = my_scenario.domain_size
37 end_time = my_scenario.end_time
40 max_h = 1.1 *
min(size) / (3.0**min_level)
41 min_h = max_h / (3.0**max_depth)
43 my_scenario.generate_required_files(order)
45 theSolver = exahype2.solvers.aderdg.GlobalAdaptiveTimeStep(
49 auxiliary_variables=auxiliary_variables,
52 time_step_relaxation=0.9
55 theSolver.add_kernel_optimisations(
57 polynomials=Polynomials.Gauss_Lobatto,
58 initialise_patches=
True,
62 theSolver.set_implementation(
71 number_of_point_sources = 1,
72 point_source = my_scenario.point_source(),
73 init_point_source_location = my_scenario.init_point_source()
81 filename = scenario+
"_l"+
str(min_level)+
"_o"+
str(order)+
"_pr_"+precision
82 project = exahype2.Project([
"exahype2",
"elastic"],
"curvi", executable=
"LOH1")
84 project.add_solver(theSolver)
87 project.add_action_set_to_timestepping(
88 exahype2.tracer.NewDGTracer(
89 coordinates=my_scenario.tracer_coordinates,
92 data_delta_between_two_snapshots=1e16, time_delta_between_two_snapshots=0.01,
93 output_precision=10, clear_database_after_flush=
False
96 project.set_global_simulation_parameters(
100 min_end_time=end_time,
101 max_end_time=end_time,
102 first_plot_time_stamp=0.0,
103 time_in_between_plots=0.0,
104 periodic_BC=[
False,
False,
False],
107 project.set_load_balancer(
"new ::exahype2::LoadBalancingConfiguration()")
108 project.set_Peano4_installation(
"../../../../", peano4.output.CompileMode.Release )
109 peano4_project = project.generate_Peano4_project(verbose=
False)
110 peano4_project.build(make_clean_first=
True)
112 os.rename(
"LOH1", filename)
113 subprocess.run(
"make distclean", shell =
True, executable=
"/bin/bash")
Part of a series of benchmarks by the SeISmic MOdeling Web INterfacE (Sismowine)
Benchmark representing a rectangular area of 80x80km around the Zugspitze.
def abstractUserDefinitions()
def initial(pointwise_initial_conditions)
def refinement_criterion()
def multiplyMaterialParameterMatrix()
def init_grid_step_implementation(scenario_string)
def abstractDeclarations()
static double min(double const x, double const y)