![]() |
Peano
|
Public Member Functions | |
def | __init__ (self, name, patch_size, rk_order, min_meshcell_h, max_meshcell_h, reconstruction_type) |
def | add_tracer (self, name, coordinates, project, number_of_entries_between_two_db_flushes, data_delta_between_two_snapsots, time_delta_between_two_snapsots, clear_database_after_flush, tracer_unknowns) |
![]() | |
def | __init__ (self) |
def | enable_second_order (self) |
def | add_all_solver_constants (self) |
def | add_makefile_parameters (self, peano4_project, path_of_ccz4_application) |
Additional Inherited Members | |
![]() | |
integer_constants | |
double_constants | |
Default_Time_Step_Size_Relaxation | |
![]() | |
float | Default_Time_Step_Size_Relaxation = 0.1 |
Variation of classic FD4 which relies on second order PDE formulation The traditional ExaHyPE CCZ4 formulation is the first order formulation introduced by Dumbser et al. In this formulation, the second order terms in CCZ4 are substituted with helper variables which represent first order derivatives. While formally straightforward, keeping the whole system consistent and stricly hyperbolic is a different challenge. In this revised version, we have to evolve the primary quantities of CCZ4 and also the helper variables, which blows the overall system up to 59 equations in its simplest form. The work by Dumbser and others suggest that this is a consistent and stable approach, but limited work is actually published on proper physical simulations. We therefore also implemented a second order PDE version within ExaHyPE. This second order variant is not really second order from the start. Instead, we use the first order formulation, and we reconstruct the helper term via finite differences prior to the compute kernel application. That is, the compute kernels see variables representing first order derivatives, and they also evolve these guys. Afterwards, we throw away the evolved quantities and reconstruct them from the primary unknowns prior to the next time step. This might not be super efficient (it would be faster to stick to the second order formulation right from the start), but it allows us to reuse the compute kernels written for the first order PDE formulation. ## Data layout We have now a smaller number of real unknowns, i.e. only those guys who belong to the "original" second-order formulation. The remaining quantities compared to a first-order formulation are technically material or auxiliary quantities. We model them as such, which allows ExaHyPE`s data management to deal more efficiently with them. reconstruction_type: "4thOrder", "centralDifferences", "leftDifference", "rightDifference"
Definition at line 994 of file CCZ4Solver.py.
def CCZ4Solver.CCZ4Solver_FD4_SecondOrderFormulation_GlobalAdaptiveTimeStepWithEnclaveTasking.__init__ | ( | self, | |
name, | |||
patch_size, | |||
rk_order, | |||
min_meshcell_h, | |||
max_meshcell_h, | |||
reconstruction_type | |||
) |
Constructor Calibrate the default time step size calibration with 1/16 to take into account that we have a higher-order numerical scheme.
Definition at line 1039 of file CCZ4Solver.py.
References CCZ4Solver.AbstractCCZ4Solver._add_standard_includes(), CCZ4Solver.AbstractCCZ4Solver._FO_formulation_unknowns, CCZ4Solver.AbstractCCZ4Solver._SO_formulation_unknowns, gauge-wave-fv.CCZ4Solver.postprocess_updated_patch, and performance_testbed.CCZ4Solver.postprocess_updated_patch.
def CCZ4Solver.CCZ4Solver_FD4_SecondOrderFormulation_GlobalAdaptiveTimeStepWithEnclaveTasking.add_tracer | ( | self, | |
name, | |||
coordinates, | |||
project, | |||
number_of_entries_between_two_db_flushes, | |||
data_delta_between_two_snapsots, | |||
time_delta_between_two_snapsots, | |||
clear_database_after_flush, | |||
tracer_unknowns | |||
) |
Add tracer to project Consult exahype2.tracer.DumpTracerIntoDatabase for an explanation of some of the arguments. Most of them are simply piped through to this class. project: exahype2.Project
Reimplemented from CCZ4Solver.AbstractCCZ4Solver.
Definition at line 1168 of file CCZ4Solver.py.
References coupling.StaticCoupling.StaticCoupling._name.