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
 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.
 

Data Fields

 auxiliary_variables
 
- Data Fields inherited from CCZ4Solver.AbstractCCZ4Solver
 integer_constants
 
 double_constants
 
 Default_Time_Step_Size_Relaxation
 

Protected Attributes

 _SO_formulation_unknowns
 

Additional Inherited Members

- 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 992 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.

Reimplemented from CCZ4Solver.AbstractCCZ4Solver.

Definition at line 1037 of file CCZ4Solver.py.

References CCZ4Solver.AbstractCCZ4Solver._FO_formulation_unknowns, CCZ4Solver.AbstractCCZ4Solver._SO_formulation_unknowns, and CCZ4Solver.CCZ4Solver_FD4_SecondOrderFormulation_GlobalAdaptiveTimeStepWithEnclaveTasking._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 1166 of file CCZ4Solver.py.

Field Documentation

◆ _SO_formulation_unknowns

CCZ4Solver.CCZ4Solver_FD4_SecondOrderFormulation_GlobalAdaptiveTimeStepWithEnclaveTasking._SO_formulation_unknowns
protected

◆ auxiliary_variables

CCZ4Solver.CCZ4Solver_FD4_SecondOrderFormulation_GlobalAdaptiveTimeStepWithEnclaveTasking.auxiliary_variables

Definition at line 1189 of file CCZ4Solver.py.


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