5from exahype2.solvers.aderdg.ADERDG
import Polynomials
15polynomials =
"legendre"
18size = [ 9.0, 9.0, 9.0]
19offset = [-4.5, 0., -4.5]
21unknowns = {
"v": 3,
"sigma": 6}
22auxiliary_variables = {
"rho":1,
"cp": 1,
"cs": 1}
24max_h = 1.1 * min(size) / (3.0**min_level)
25min_h = max_h / (3.0**max_depth)
27project = exahype2.Project( [
"applications",
"exahype2",
"exaseis"],
".",
28 executable=
"LOH_level_"+str(min_level)+
"_order_"+str(order)+
"_"+polynomials+
"_precision_"+str(precision) )
30theSolver=exahype2.solvers.aderdg.GlobalAdaptiveTimeStep(
31 name=
"elastic", order=order,
32 unknowns=unknowns, auxiliary_variables=auxiliary_variables,
33 min_cell_h=min_h, max_cell_h=max_h, time_step_relaxation=0.9,
36theSolver.add_kernel_optimisations(
37 is_linear=
True, polynomials=(Polynomials.Gauss_Lobatto
if polynomials==
"lobatto" else Polynomials.Gauss_Legendre)
41theSolver.set_implementation(
48 number_of_point_sources = 1,
53theSolver.add_user_solver_includes(
"""
54#include "../ExaSeis_core/Numerics/cartesianRoutines.h"
55#include "../ExaSeis_core/Numerics/riemannsolverIsotropic.h"
58project.add_solver(theSolver)
61 tracer_particles = project.add_tracer(name=
"Tracer", particle_attributes=12)
63 project.add_action_set_to_initialisation(
64 exahype2.tracer.InsertParticlesByCoordinates(
65 particle_set=tracer_particles,
67 [0.000, 0., 0.693], [0.000, 0., 5.543], [0.000, 0., 10.392],
68 [0.490, 0., 0.490], [3.919, 0., 3.919], [7.348, 0., 7.3480],
69 [0.577, 0., 0.384], [4.612, 0., 3.075], [8.647, 0., 5.7640]
74 project.add_action_set_to_timestepping(
75 peano4.toolbox.particles.api.UpdateParallelState(particle_set=tracer_particles)
78 project.add_action_set_to_timestepping(
79 exahype2.tracer.DiscontinuousGalerkinTracing(
80 tracer_particles, theSolver,
81 project_on_tracer_properties_kernel=
"::exahype2::dg::projectAllValuesOntoParticle"
85 project.add_action_set_to_timestepping(
86 exahype2.tracer.DumpTracerIntoDatabase(
87 particle_set=tracer_particles, solver=theSolver,
88 filename=
"tracers/Cartesian_level_"+str(min_level)+
"_order_"+str(order)+
"_"+polynomials+
"_precision_"+str(precision),
89 data_delta_between_two_snapsots=1e16, time_delta_between_two_snapsots=0.01,
90 output_precision=10, clear_database_after_flush=
False
107 if not os.path.exists(
"tracers"):
108 os.makedirs(
"tracers")
110 theSolver._abstract_solver_user_declarations +=
"double QuadraturePoints1d[Order+1];"
112 theSolver._start_simulation_implementation +=
"""
114 kernels::{{SOLVER_NAME}}::Quadrature<{{SOLUTION_STORAGE_PRECISION}}>::nodes,
120 project.set_output_path(
"solutions")
122project.set_global_simulation_parameters(
124 offset = offset[0:3],
127 first_plot_time_stamp = 0.0,
128 time_in_between_plots = plot_dt,
131project.set_load_balancer(
"new ::exahype2::LoadBalancingConfiguration()")
132project.set_build_mode(peano4.output.CompileMode.Release)
133peano4_project = project.generate_Peano4_project(verbose=
False)
134peano4_project.build(make_clean_first=
True)