Peano
CCZ4Solver.CCZ4Solver_FD4_SecondOrderFormulation_GlobalAdaptiveTimeStepWithEnclaveTasking Class Reference
Inheritance diagram for CCZ4Solver.CCZ4Solver_FD4_SecondOrderFormulation_GlobalAdaptiveTimeStepWithEnclaveTasking:
Collaboration diagram for CCZ4Solver.CCZ4Solver_FD4_SecondOrderFormulation_GlobalAdaptiveTimeStepWithEnclaveTasking:

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)
 
- Public Member Functions inherited from CCZ4Solver.AbstractCCZ4Solver
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

- Data Fields inherited from CCZ4Solver.AbstractCCZ4Solver
 integer_constants
 
 double_constants
 
 Default_Time_Step_Size_Relaxation
 
- Static Public Attributes inherited from CCZ4Solver.AbstractCCZ4Solver
float Default_Time_Step_Size_Relaxation = 0.1
 

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__()

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.

Here is the call graph for this function:

Member Function Documentation

◆ add_tracer()

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.


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