Peano
Loading...
Searching...
No Matches
SBH.FD4SolverWithLimiter Class Reference

4th order Finite Differences solver with a limiter More...

Inheritance diagram for SBH.FD4SolverWithLimiter:
Collaboration diagram for SBH.FD4SolverWithLimiter:

Public Member Functions

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

Data Fields

str interpolation_method = interpolation_method
Data Fields inherited from CCZ4Solver.AbstractCCZ4Solver
dict integer_constants
dict double_constants

Protected Attributes

 _name_without_FD4_extension = name
 _parallelisation_of_interpolation = 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
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

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

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

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 create_action_sets().

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

Here is the call graph for this function:
Here is the caller graph for this function:

Field Documentation

◆ _action_set_postprocess_solution

SBH.FD4SolverWithLimiter._action_set_postprocess_solution
protected
Initial value:
= exahype2.solvers.rkfd.actionsets.PatchWisePostprocessSolution(
self,
.format(
self._name_without_FD4_extension
),
)

Definition at line 528 of file SBH.py.

◆ _action_set_preprocess_solution

SBH.FD4SolverWithLimiter._action_set_preprocess_solution
protected

Definition at line 369 of file SBH.py.

◆ _name_without_FD4_extension

SBH.FD4SolverWithLimiter._name_without_FD4_extension = name
protected

Definition at line 238 of file SBH.py.

◆ _parallelisation_of_interpolation

SBH.FD4SolverWithLimiter._parallelisation_of_interpolation = parallelisation_of_interpolation
protected

Definition at line 239 of file SBH.py.

◆ interpolation_method

str SBH.FD4SolverWithLimiter.interpolation_method = interpolation_method

Definition at line 240 of file SBH.py.


The documentation for this class was generated from the following file:
  • benchmarks/exahype2/ccz4/single-black-hole/SBH.py