Peano
SBH.FD4SolverWithLimiter Class Reference
Inheritance diagram for SBH.FD4SolverWithLimiter:
Collaboration diagram for SBH.FD4SolverWithLimiter:

Public Member Functions

def __init__ (self, name, patch_size, min_cell_size, max_cell_size, KernelParallelisation parallelisation_of_interpolation, KernelParallelisation parallelisation_of_kernels, interpolation_method)
 
def create_action_sets (self)
 
- Public Member Functions inherited from CCZ4Solver.CCZ4Solver_FD4_GlobalAdaptiveTimeStepWithEnclaveTasking
def __init__ (self, name, patch_size, rk_order, min_meshcell_h, max_meshcell_h, pde_terms_without_state, second_order=False)
 
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)
 

Data Fields

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

Private Attributes

 _name_without_FD4_extension
 
 _parallelisation_of_interpolation
 
 _action_set_preprocess_solution
 
 _action_set_postprocess_solution
 

Additional Inherited Members

- Static Public Attributes inherited from CCZ4Solver.AbstractCCZ4Solver
float Default_Time_Step_Size_Relaxation = 0.1
 

Detailed Description

4th order Finite Differences solver with a limiter

The FD scheme is our primary solver, i.e. the one we wanna use (almost)
everywhere. Hence, we have to be sure that we use the right boundary
conditions. In our case, that should be Sommerfeld ones. As we work
with a limited FD4 solver, we have to ensure that we get the
@ref benchmarks_exahype2_ccz4_single_black_hole "solver coupling" right.

The primary solver is a plain CCZ4 FD4 solver with enclave tasking. There
are some modification though:

1. We ensure that we use Sommerfeld boundary conditions. This means that
   we have to replace the whole generic boundary treatment with a bespoke
   action set.
2. The coupling has to be injected. We model the coupling as separate
   (enclave) tasks to avoid that we totally serialise the solver steps
   whenever we encounter a coupling.

Definition at line 205 of file SBH.py.

Constructor & Destructor Documentation

◆ __init__()

def SBH.FD4SolverWithLimiter.__init__ (   self,
  name,
  patch_size,
  min_cell_size,
  max_cell_size,
KernelParallelisation  parallelisation_of_interpolation,
KernelParallelisation  parallelisation_of_kernels,
  interpolation_method 
)

Definition at line 228 of file SBH.py.

Member Function Documentation

◆ create_action_sets()

def SBH.FD4SolverWithLimiter.create_action_sets (   self)
            Tailor action set behaviour

            We first make a few additional cells skeleton cells. The rationale
            behind additional skeletons is given in the @ref benchmarks_exahype2_ccz4_single_black_hole "generic overview".
            Given the first remark there on FD4-FV coupling, one would be tempted
            to use the predicate

            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            self._action_set_update_cell.additional_skeleton_guard = " " "(
      repositories::instanceOf" " " + self._name_without_FD4_extension + " " "_FV.isCellOverlappingWithBHImpactArea(marker)
      and
      not repositories::instanceOf" " " + self._name_without_FD4_extension + " " "_FV.areAllFaceConnectedCellsOverlappingWithBHImpactArea(marker)
    )
    " " "
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

            Once we study the other items (notably the fourth), we see that it is
            reasonable to make all the overlap region a skeleton within the FD4
            solver.

Definition at line 291 of file SBH.py.

References ccz4.CCZ4Solver._auxiliary_variables, mgccz4.MGCCZ4Solver._auxiliary_variables, and ccz4.str.

Referenced by mgccz4.MGCCZ4Solver.add_derivative_calculation(), and ccz4.CCZ4Solver.add_Psi4W().

Here is the caller graph for this function:

Field Documentation

◆ _action_set_postprocess_solution

SBH.FD4SolverWithLimiter._action_set_postprocess_solution
private

Definition at line 528 of file SBH.py.

◆ _action_set_preprocess_solution

SBH.FD4SolverWithLimiter._action_set_preprocess_solution
private

Definition at line 369 of file SBH.py.

◆ _name_without_FD4_extension

SBH.FD4SolverWithLimiter._name_without_FD4_extension
private

Definition at line 238 of file SBH.py.

◆ _parallelisation_of_interpolation

SBH.FD4SolverWithLimiter._parallelisation_of_interpolation
private

Definition at line 239 of file SBH.py.

◆ interpolation_method

SBH.FD4SolverWithLimiter.interpolation_method

Definition at line 240 of file SBH.py.


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