Peano
pml-dynamic-rupture.py
Go to the documentation of this file.
1 import os, sys, peano4, exahype2
2 
3 from exahype2.solvers.aderdg.ADERDG import Polynomials
4 
5 sys.path.insert(0, os.path.abspath("../pml"))
6 
7 import PMLElastic
8 import PMLDynamicRuptureElastic
9 
10 #sys.path.insert(0, os.path.abspath("../ExaSeis_core/Scenario"))
11 #import TPV5, TPV26, TPV28, TPV29
12 
13 sys.path.insert(0, os.path.abspath("../ExaSeis_core"))
14 import Scenario
15 
16 
17 available_scenarios = {
18  "TPV5": Scenario.TPV5(),
19  "TPV26": Scenario.TPV26(),
20  "TPV28": Scenario.TPV28(),
21  "TPV29": Scenario.TPV29()
22 }
23 
24 scenario = "TPV28"
25 scenario_string = scenario.lower()
26 my_scenario = available_scenarios[scenario]
27 
28 unknowns = {"v": 3, "sigma": 6, "u": 3, "pml": 27}
29 auxiliary_variables = {
30  "rho": 1, "cp": 1, "cs": 1,
31  "dmp_pml": 3, "jacobian": 1,
32  "metric_derivative": 9,
33  "curve_grid": 3,
34 }
35 
36 offset = my_scenario.domain_offset
37 size = my_scenario.domain_size
38 end_time = my_scenario.end_time
39 plot_dt = 0.0
40 order = 5
41 min_level = 3
42 max_depth = 0
43 max_h = 1.1 * min(size) / (3.0**min_level)
44 min_h = max_h / (3.0**max_depth)
45 
46 precision = "fp64"
47 
48 my_scenario.generate_required_files(order)
49 
50 theSolver = exahype2.solvers.aderdg.GlobalAdaptiveTimeStep(
51  name="ElasticSolver",
52  order=order,
53  unknowns=unknowns,
54  auxiliary_variables=auxiliary_variables,
55  min_cell_h=min_h,
56  max_cell_h=max_h,
57  time_step_relaxation=0.9
58 )
59 
60 theSolver.add_kernel_optimisations(
61  is_linear=True,
62  polynomials=Polynomials.Gauss_Lobatto,
63  initialise_patches=True,
64  precision=precision
65 )
66 
67 theSolver.set_implementation(
68  initial_conditions = PMLElastic.initial(my_scenario.initial_conditions()),
69  boundary_conditions = PMLElastic.boundary(),
70  max_eigenvalue = PMLElastic.eigenvalue(),
71  flux = PMLElastic.flux(),
72  ncp = PMLElastic.ncp(),
76 )
77 
78 theSolver._finish_time_step_implementation += PMLDynamicRuptureElastic.finish_time_step_implementation(scenario_string)
79 theSolver._abstract_solver_user_definitions += PMLDynamicRuptureElastic.abstractUserDefinitions()
80 theSolver._abstract_solver_user_declarations += PMLDynamicRuptureElastic.abstractDeclarations()
81 theSolver._start_grid_initialisation_implementation += PMLDynamicRuptureElastic.init_grid_step_implementation(scenario_string)
82 theSolver._destructor_implementation += PMLElastic.abstractDestructor()
83 theSolver.add_user_solver_includes(PMLDynamicRuptureElastic.userIncludes())
84 
85 project = exahype2.Project(["exahype2", "elastic"], "pml", executable=scenario)
86 
87 project.add_solver(theSolver)
88 
89 filename = scenario+"_l_"+str(min_level)+"_o_"+str(order)+"_pr_"+str(precision)
90 
91 project.add_action_set_to_timestepping(
92  exahype2.tracer.NewDGTracer(
93  coordinates= my_scenario.tracer_coordinates,
94  solver=theSolver,
95  filename=filename,
96  data_delta_between_two_snapshots=1e16, time_delta_between_two_snapshots=0.01,
97  output_precision=10, clear_database_after_flush=False,
98  unknowns_to_store=12
99 ))
100 
101 if plot_dt > 0.0:
102  project.set_output_path("solutions"+filename)
103 
104 project.set_global_simulation_parameters(
105  dimensions=3,
106  offset=offset,
107  size=size,
108  min_end_time=end_time,
109  max_end_time=end_time,
110  first_plot_time_stamp=0.0,
111  time_in_between_plots=plot_dt,
112  periodic_BC=[False, False, False],
113 )
114 
115 project.set_load_balancer("new ::exahype2::LoadBalancingConfiguration()")
116 project.set_Peano4_installation( "../../../../", peano4.output.CompileMode.Release )
117 peano4_project = project.generate_Peano4_project(verbose=False)
118 peano4_project.build(make_clean_first=True)
Part of a series of benchmarks by the Statewide California Earthquake Center (SCEC)
Definition: TPV26.py:7
Part of a series of benchmarks by the Statewide California Earthquake Center (SCEC)
Definition: TPV28.py:7
Part of a series of benchmarks by the Statewide California Earthquake Center (SCEC)
Definition: TPV29.py:7
Part of a series of benchmarks by the Statewide California Earthquake Center (SCEC)
Definition: TPV5.py:7
def init_grid_step_implementation(scenario_string)
def finish_time_step_implementation(scenario_string)
def boundary()
Definition: PMLElastic.py:92
def flux()
Definition: PMLElastic.py:134
def ncp()
Definition: PMLElastic.py:189
def algebraic_source()
Definition: PMLElastic.py:272
def initial(pointwise_initial_conditions)
Definition: PMLElastic.py:3
def eigenvalue()
Definition: PMLElastic.py:99
def abstractDestructor()
Definition: PMLElastic.py:454
def multiplyMaterialParameterMatrix()
Definition: PMLElastic.py:322
static double min(double const x, double const y)
str
Definition: ccz4.py:55