Peano
Loading...
Searching...
No Matches
CCZ4Solver.CCZ4Solver_FD4_SecondOrderFormulation_GlobalAdaptiveTimeStepWithEnclaveTasking Class Reference

Variation of classic FD4 which relies on second order PDE formulation. More...

Inheritance diagram for CCZ4Solver.CCZ4Solver_FD4_SecondOrderFormulation_GlobalAdaptiveTimeStepWithEnclaveTasking:
Collaboration diagram for CCZ4Solver.CCZ4Solver_FD4_SecondOrderFormulation_GlobalAdaptiveTimeStepWithEnclaveTasking:

Public Member Functions

 __init__ (self, name, patch_size, rk_order, min_meshcell_h, max_meshcell_h, reconstruction_type)
 Constructor.
 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.
Public Member Functions inherited from CCZ4Solver.AbstractCCZ4Solver
 __init__ (self)
 Constructor.
 enable_second_order (self)
 add_all_solver_constants (self)
 Add domain-specific constants.
 add_makefile_parameters (self, peano4_project, path_of_ccz4_application)
 Add include path and minimal required cpp files to makefile.

Additional Inherited Members

Data Fields inherited from CCZ4Solver.AbstractCCZ4Solver
dict integer_constants
dict double_constants
Static Public Attributes inherited from CCZ4Solver.AbstractCCZ4Solver
float Default_Time_Step_Size_Relaxation = 0.1
Protected Member Functions inherited from CCZ4Solver.AbstractCCZ4Solver
 _add_standard_includes (self)
 Add the headers for the compute kernels and initial condition implementations.
Static Protected Attributes inherited from CCZ4Solver.AbstractCCZ4Solver
dict _FO_formulation_unknowns
dict _SO_formulation_unknowns

Detailed Description

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.

Constructor & Destructor Documentation

◆ __init__()

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._FO_formulation_unknowns, and CCZ4Solver.AbstractCCZ4Solver._SO_formulation_unknowns.

Member Function Documentation

◆ add_tracer()

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, and SBH.Limiter._name.


The documentation for this class was generated from the following file: