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)
 Constructor.
 
 create_action_sets (self)
 Tailor action set behaviour.
 
- Public Member Functions inherited from CCZ4Solver.CCZ4Solver_FD4_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.
 
- 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.
 
- Public Member Functions inherited from exahype2.solvers.rkfd.fd4.GlobalAdaptiveTimeStepWithEnclaveTasking.GlobalAdaptiveTimeStepWithEnclaveTasking
 set_implementation (self, flux=None, ncp=None, source_term=None, eigenvalues=None, boundary_conditions=None, refinement_criterion=None, initial_conditions=None, memory_location=None, additional_action_set_includes="", additional_user_includes="", KOSigma=None)
 If you pass in User_Defined, then the generator will create C++ stubs that you have to befill manually.
 
 user_action_set_includes (self)
 Add further includes to this property, if your action sets require some additional routines from other header files.
 
 add_entries_to_text_replacement_dictionary (self, d)
 Invoce superclass and then add one more field:
 
- Public Member Functions inherited from exahype2.solvers.rkfd.SeparateSweepsWithEnclaveTasking.SeparateSweepsWithEnclaveTasking
 create_data_structures (self)
 Call the superclass' create_data_structures() to ensure that all the data structures are in place, i.e.
 
 add_implementation_files_to_project (self, namespace, output, dimensions, subdirectory="")
 Add the enclave task for the GPU.
 
 add_actions_to_perform_time_step (self, step)
 Add enclave aspect.
 
 switch_storage_scheme (self, Storage cell_data_storage, Storage face_data_storage)
 By default, we hold all data on the call stacks.
 
- Public Member Functions inherited from exahype2.solvers.rkfd.CellCenteredFiniteDifferences.CellCenteredFiniteDifferences
 __str__ (self)
 
 get_min_number_of_spacetree_levels (self, domain_size)
 
 get_max_number_of_spacetree_levels (self, domain_size)
 
 get_coarsest_number_of_patches (self, domain_size)
 
 get_finest_number_of_patches (self, domain_size)
 
 get_coarsest_number_of_compute_grid_cells (self, domain_size)
 
 get_finest_number_of_compute_grid_cells (self, domain_size)
 
 get_coarsest_compute_grid_cell_size (self, domain_size)
 
 get_finest_compute_grid_cell_size (self, domain_size)
 
 create_readme_descriptor (self, domain_offset, domain_size)
 
 user_solver_includes (self)
 Add further includes to this property, if your solver requires some additional routines from other header files.
 
 number_of_Runge_Kutta_steps (self)
 Return number of steps required to realise the Runge-Kutta scheme.
 
 add_user_action_set_includes (self, value)
 Add further includes to this property, if your action sets require some additional routines from other header files.
 
 add_user_solver_includes (self, value)
 Add further includes to this property, if your solver requires some additional routines from other header files.
 
 get_name_of_global_instance (self)
 
 add_to_Peano4_datamodel (self, datamodel, verbose)
 Add all required data to the Peano4 project's datamodel so it is properly built up.
 
 add_use_data_statements_to_Peano4_solver_step (self, step)
 Tell Peano what data to move around.
 
 add_actions_to_init_grid (self, step, restart_from_checkpoint=False)
 Add your actions to init grid.
 
 add_actions_to_create_grid (self, step, evaluate_refinement_criterion)
 The boundary information is set only once.
 
 plot_description (self)
 
 plot_description (self, description)
 Use this one to set a description within the output patch file that tells the vis solver what the semantics of the entries are.
 
 add_actions_to_plot_solution (self, step, output_path, restart_from_checkpoint=False)
 Add action sets to plotting grid sweep.
 
 add_actions_to_checkpoint_solution (self, step, output_path, restart_from_checkpoint=False)
 Add action sets to checkpoint grid sweep.
 
 set_solver_constants (self, datastring)
 
 add_solver_constants (self, datastring)
 
 unknowns (self)
 
 patch_size (self)
 
 auxiliary_variables (self)
 
 patch_size (self, value)
 
 unknowns (self, value)
 
 auxiliary_variables (self, value)
 
 preprocess_reconstructed_patch (self)
 
 preprocess_reconstructed_patch (self, kernel)
 Please consult exahype2.solvers.fv.FV.preprocess_reconstructed_patch() for a documentation on this routine.
 
 name (self)
 
 postprocess_updated_patch (self)
 
 postprocess_updated_patch (self, kernel)
 Define a postprocessing routine over the data.
 
 overlap (self)
 
 overlap (self, value)
 
 interpolation (self)
 
 interpolation (self, value)
 Set the interpolation scheme.
 
 restriction (self)
 Set the restriction scheme.
 
 restriction (self, value)
 

Data Fields

 interpolation_method
 
- Data Fields inherited from CCZ4Solver.AbstractCCZ4Solver
 integer_constants
 
 double_constants
 
 Default_Time_Step_Size_Relaxation
 
- Data Fields inherited from exahype2.solvers.rkfd.SeparateSweepsWithEnclaveTasking.SeparateSweepsWithEnclaveTasking
 enclave_task_priority
 
 make_copy_of_enclave_task_data
 
- Data Fields inherited from exahype2.solvers.rkfd.CellCenteredFiniteDifferences.CellCenteredFiniteDifferences
 select_dofs_to_print
 

Protected Attributes

 _name_without_FD4_extension
 
 _parallelisation_of_interpolation
 
 _auxiliary_variables
 
 _action_set_preprocess_solution
 
 _action_set_postprocess_solution
 
- Protected Attributes inherited from exahype2.solvers.rkfd.fd4.GlobalAdaptiveTimeStepWithEnclaveTasking.GlobalAdaptiveTimeStepWithEnclaveTasking
 _reconstruction_stages
 
 _time_step_relaxation
 
 _compute_eigenvalue
 
 _KO_Sigma
 
 _compute_kernel_call
 
 _flux_implementation
 
 _ncp_implementation
 
 _source_term_implementation
 
 _fused_compute_kernel_call_cpu
 
 _fused_compute_kernel_call_gpu
 
 _abstract_solver_user_declarations
 
 _abstract_solver_user_definitions
 
 _compute_time_step_size
 
 _compute_new_time_step_size
 
 _solver_user_declarations
 
 _solver_user_definitions
 
 _start_time_step_implementation
 
 _finish_time_step_implementation
 
 _constructor_implementation
 
- Protected Attributes inherited from exahype2.solvers.rkfd.SeparateSweepsWithEnclaveTasking.SeparateSweepsWithEnclaveTasking
 _name
 
 _rk_order
 
 _primary_sweeps_of_Runge_Kutta_step_on_cell
 
 _secondary_sweeps_of_Runge_Kutta_step_on_cell
 
 _last_secondary_sweep_of_Runge_Kutta_step_on_cell
 
 _primary_sweeps_of_Runge_Kutta_step_on_face
 
 _secondary_sweeps_of_Runge_Kutta_step_on_face
 
 _primary_sweep_guard
 
 _primary_sweep_or_plot_guard
 
 _secondary_sweep_guard
 
 _secondary_sweep_or_initialisation_guard
 
 _solver_template_file_class_name
 
 _fused_compute_kernel_call_cpu
 
 _fused_compute_kernel_call_gpu
 
 _pde_terms_without_state
 
 _fused_volumetric_kernel_call_cpu
 
 _fused_volumetric_kernel_call_gpu
 
 _action_set_merge_enclave_task_outcome
 
 _action_set_update_cell
 
- Protected Attributes inherited from exahype2.solvers.rkfd.SeparateSweeps.SeparateSweeps
 _rk_order
 
 _solver_template_file_class_name
 
 _flux_implementation
 
 _ncp_implementation
 
 _eigenvalues_implementation
 
 _source_term_implementation
 
 _name
 
 _action_set_update_cell
 
 _reconstruction_stages
 
 _boundary_conditions_implementation
 
 _refinement_criterion_implementation
 
 _initial_conditions_implementation
 
 _reconstructed_array_memory_location
 
- Protected Attributes inherited from exahype2.solvers.rkfd.CellCenteredFiniteDifferences.CellCenteredFiniteDifferences
 _name
 
 _min_meshcell_h
 
 _max_meshcell_h
 
 _plot_grid_properties
 
 _patch_size
 
 _overlap
 
 _rk_order
 
 _use_var_shortcut
 
 _variable_names
 
 _variable_pos
 
 _unknowns
 
 _auxiliary_variables
 
 _solver_constants
 
 _user_action_set_includes
 
 _user_solver_includes
 
 _kernel_namespace
 
 _reconstructed_array_memory_location
 
 _solver_template_file_class_name
 
 _plot_description
 
 _action_set_initial_conditions
 
 _action_set_initial_conditions_for_grid_construction
 
 _action_set_AMR
 
 _action_set_AMR_commit_without_further_analysis
 
 _action_set_handle_boundary
 
 _action_set_project_patch_onto_faces
 
 _action_set_roll_over_update_of_faces
 
 _action_set_copy_new_faces_onto_old_faces
 
 _action_set_couple_resolution_transitions_and_handle_dynamic_mesh_refinement
 
 _action_set_postprocess_solution
 
 _action_set_preprocess_solution
 
 _compute_time_step_size
 
 _compute_new_time_step_size
 
 _preprocess_reconstructed_patch
 
 _postprocess_updated_patch
 
 _compute_kernel_call
 
 _compute_eigenvalue
 
 _abstract_solver_user_declarations
 
 _abstract_solver_user_definitions
 
 _solver_user_declarations
 
 _solver_user_definitions
 
 _start_time_step_implementation
 
 _finish_time_step_implementation
 
 _constructor_implementation
 
 _boundary_conditions_implementation
 
 _refinement_criterion_implementation
 
 _initial_conditions_implementation
 
 _interpolation
 
 _restriction
 
 _baseline_action_set_descend_invocation_order
 
 _patch
 
 _patch_estimates
 
 _patch_overlap_old
 
 _patch_overlap_new
 
 _patch_overlap_update
 
 _cell_data_storage
 
 _face_data_storage
 
 _cell_label
 
 _face_label
 
 _action_set_AMR_throughout_grid_construction
 
 _action_set_compute_final_linear_combination
 
 _action_set_update_face_label
 
 _action_set_update_cell_label
 
 _action_set_update_cell
 

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.
 
- Protected Member Functions inherited from exahype2.solvers.rkfd.SeparateSweepsWithEnclaveTasking.SeparateSweepsWithEnclaveTasking
 _enclave_task_name (self)
 
- Protected Member Functions inherited from exahype2.solvers.rkfd.CellCenteredFiniteDifferences.CellCenteredFiniteDifferences
 _provide_cell_data_to_compute_kernels_default_guard (self)
 
 _provide_face_data_to_compute_kernels_default_guard (self)
 
 _store_cell_data_default_guard (self)
 Extend the guard via ands only.
 
 _load_cell_data_default_guard (self)
 Extend the guard via ands only.
 
 _store_face_data_default_guard (self)
 Extend the guard via ands only.
 
 _load_face_data_default_guard (self)
 Extend the guard via ands only.
 
 _unknown_identifier (self)
 
 _get_default_includes (self)
 
 _init_dictionary_with_default_parameters (self, d)
 This one is called by all algorithmic steps before I invoke add_entries_to_text_replacement_dictionary().
 
- 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,
rk_order,
min_meshcell_h,
KernelParallelisation max_meshcell_h,
KernelParallelisation pde_terms_without_state,
second_order )

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

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

Reimplemented from exahype2.solvers.rkfd.SeparateSweepsWithEnclaveTasking.SeparateSweepsWithEnclaveTasking.

Definition at line 291 of file SBH.py.

References exahype2.solvers.aderdg.ADERDG.ADERDG._action_set_handle_boundary, exahype2.solvers.fv.FV.FV._action_set_handle_boundary, exahype2.solvers.rkdg.RungeKuttaDG.RungeKuttaDG._action_set_handle_boundary, exahype2.solvers.rkfd.CellCenteredFiniteDifferences.CellCenteredFiniteDifferences._action_set_handle_boundary, and SBH.FD4SolverWithLimiter.create_action_sets().

Referenced by mgccz4.MGCCZ4Solver.add_derivative_calculation(), exahype2.solvers.aderdg.ADERDG.ADERDG.add_kernel_optimisations(), ccz4.CCZ4Solver.add_Psi4W(), exahype2.solvers.fv.FV.FV.auxiliary_variables(), exahype2.solvers.rkdg.RungeKuttaDG.RungeKuttaDG.auxiliary_variables(), exahype2.solvers.rkfd.CellCenteredFiniteDifferences.CellCenteredFiniteDifferences.auxiliary_variables(), exahype2.solvers.elliptic.AMRMarker.AMRMarker.couple_with_FV_solver(), SBH.FD4SolverWithLimiter.create_action_sets(), exahype2.solvers.fv.FV.FV.interpolation(), exahype2.solvers.rkfd.CellCenteredFiniteDifferences.CellCenteredFiniteDifferences.interpolation(), exahype2.solvers.fv.FV.FV.overlap(), exahype2.solvers.rkfd.CellCenteredFiniteDifferences.CellCenteredFiniteDifferences.overlap(), exahype2.solvers.fv.FV.FV.patch_size(), exahype2.solvers.rkfd.CellCenteredFiniteDifferences.CellCenteredFiniteDifferences.patch_size(), exahype2.solvers.elliptic.ConstrainedPoissonEquationForMarkerOnCells.ConstrainedPoissonEquationForMarkerOnCells.postprocess_updated_cell(), exahype2.solvers.rkdg.RungeKuttaDG.RungeKuttaDG.postprocess_updated_cell_after_final_linear_combination(), exahype2.solvers.rkdg.RungeKuttaDG.RungeKuttaDG.postprocess_updated_cell_after_Runge_Kutta_step(), exahype2.solvers.aderdg.ADERDG.ADERDG.postprocess_updated_patch(), exahype2.solvers.fv.FV.FV.postprocess_updated_patch(), exahype2.solvers.rkfd.CellCenteredFiniteDifferences.CellCenteredFiniteDifferences.postprocess_updated_patch(), exahype2.solvers.aderdg.ADERDG.ADERDG.preprocess_reconstructed_patch(), exahype2.solvers.fv.FV.FV.preprocess_reconstructed_patch(), exahype2.solvers.rkfd.CellCenteredFiniteDifferences.CellCenteredFiniteDifferences.preprocess_reconstructed_patch(), exahype2.solvers.fv.FV.FV.restriction(), exahype2.solvers.rkfd.CellCenteredFiniteDifferences.CellCenteredFiniteDifferences.restriction(), exahype2.solvers.aderdg.ADERDG.ADERDG.set_implementation(), exahype2.solvers.rkdg.RungeKuttaDG.RungeKuttaDG.set_implementation(), exahype2.solvers.aderdg.ADERDG.ADERDG.switch_storage_scheme(), exahype2.solvers.fv.FV.FV.switch_storage_scheme(), exahype2.solvers.rkdg.RungeKuttaDG.RungeKuttaDG.switch_storage_scheme(), exahype2.solvers.rkfd.CellCenteredFiniteDifferences.CellCenteredFiniteDifferences.switch_storage_scheme(), exahype2.solvers.fv.FV.FV.unknowns(), exahype2.solvers.rkdg.RungeKuttaDG.RungeKuttaDG.unknowns(), and exahype2.solvers.rkfd.CellCenteredFiniteDifferences.CellCenteredFiniteDifferences.unknowns().

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

Field Documentation

◆ _action_set_postprocess_solution

◆ _action_set_preprocess_solution

◆ _auxiliary_variables

◆ _name_without_FD4_extension

SBH.FD4SolverWithLimiter._name_without_FD4_extension
protected

Definition at line 238 of file SBH.py.

◆ _parallelisation_of_interpolation

SBH.FD4SolverWithLimiter._parallelisation_of_interpolation
protected

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: