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