Peano
Loading...
Searching...
No Matches
curvilinear.py
Go to the documentation of this file.
1import os, sys, peano4, exahype2
2
3from exahype2.solvers.aderdg.ADERDG import Polynomials
4
5import os, sys
6import subprocess
7
8import CurvilinearElastic
9
10sys.path.insert(0, os.path.abspath("../ExaSeis_core"))
11import Scenario
12
13available_scenarios = {
14 "LOH1": Scenario.LOH1(),
15 "Zugspitze": Scenario.Zugspitze()
16}
17
18scenario = "LOH1"
19precision = "fp64"
20use_tracers = True
21order = 5
22min_level = 3
23plot_dt = 0.0
24
25scenario_string = scenario.lower()
26my_scenario = available_scenarios[scenario]
27
28unknowns = {"v": 3, "sigma": 6}
29auxiliary_variables = {
30 "rho": 1, "cp": 1, "cs": 1,
31 "jacobian": 1, "metric_derivative": 9,
32 "curve_grid": 3,
33}
34
35offset = my_scenario.domain_offset
36size = my_scenario.domain_size
37end_time = my_scenario.end_time
38
39max_depth = 0
40max_h = 1.1 * min(size) / (3.0**min_level)
41min_h = max_h / (3.0**max_depth)
42
43my_scenario.generate_required_files(order)
44
45theSolver = exahype2.solvers.aderdg.GlobalAdaptiveTimeStep(
46 name="ElasticSolver",
47 order=order,
48 unknowns=unknowns,
49 auxiliary_variables=auxiliary_variables,
50 min_cell_h=min_h,
51 max_cell_h=max_h,
52 time_step_relaxation=0.9
53)
54
55theSolver.add_kernel_optimisations(
56 is_linear=True,
57 polynomials=Polynomials.Gauss_Lobatto,
58 initialise_patches=True,
59 precision = precision
60)
61
62theSolver.set_implementation(
63 initial_conditions = CurvilinearElastic.initial(my_scenario.initial_conditions()),
64 boundary_conditions = CurvilinearElastic.boundary(),
71 number_of_point_sources = 1,
72 point_source = my_scenario.point_source(),
73 init_point_source_location = my_scenario.init_point_source()
74)
75
76theSolver._abstract_solver_user_declarations += CurvilinearElastic.abstractDeclarations()
77theSolver._abstract_solver_user_definitions += CurvilinearElastic.abstractUserDefinitions()
78theSolver._start_grid_initialisation_implementation += CurvilinearElastic.init_grid_step_implementation(scenario_string)
79theSolver.add_user_solver_includes(CurvilinearElastic.userIncludes())
80
81filename = scenario+"_l"+str(min_level)+"_o"+str(order)+"_pr_"+precision
82project = exahype2.Project(["exahype2", "elastic"], "curvi", executable="LOH1")
83
84project.add_solver(theSolver)
85
86if use_tracers:
87 project.add_action_set_to_timestepping(
88 exahype2.tracer.CurviTracer(
89 coordinates=my_scenario.tracer_coordinates,
90 solver=theSolver,
91 filename=filename,
92 data_delta_between_two_snapshots=1e16, time_delta_between_two_snapshots=0.01,
93 output_precision=10, clear_database_after_flush=False
94 ))
95
96project.set_global_simulation_parameters(
97 dimensions=3,
98 offset=offset,
99 size=size,
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],
105)
106
107project.set_load_balancer("new ::exahype2::LoadBalancingConfiguration()")
108project.set_Peano4_installation( "../../../../", peano4.output.CompileMode.Release )
109peano4_project = project.generate_Peano4_project(verbose=False)
110peano4_project.build(make_clean_first=True)
111
112os.rename("LOH1", filename)
113subprocess.run("make distclean", shell = True, executable="/bin/bash")
Part of a series of benchmarks by the SeISmic MOdeling Web INterfacE (Sismowine)
Definition LOH1.py:7
Benchmark representing a rectangular area of 80x80km around the Zugspitze.
Definition Zugspitze.py:7
init_grid_step_implementation(scenario_string)
initial(pointwise_initial_conditions)