![]() |
Peano
|
Variation of classic FD4 which relies on second order PDE formulation. More...
Public Member Functions | |
__init__ (self, name, patch_size, rk_order, min_meshcell_h, max_meshcell_h, reconstruction_type) | |
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. | |
![]() | |
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. | |
![]() | |
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: | |
![]() | |
create_data_structures (self) | |
Call the superclass' create_data_structures() to ensure that all the data structures are in place, i.e. | |
create_action_sets (self) | |
Call superclass routine and then reconfigure the update cell call. | |
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. | |
![]() | |
__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 | |
auxiliary_variables | |
![]() | |
integer_constants | |
double_constants | |
Default_Time_Step_Size_Relaxation | |
![]() | |
enclave_task_priority | |
make_copy_of_enclave_task_data | |
![]() | |
select_dofs_to_print | |
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.
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.
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.
Reimplemented from CCZ4Solver.AbstractCCZ4Solver.
Definition at line 1039 of file CCZ4Solver.py.
References CCZ4Solver.AbstractCCZ4Solver._FO_formulation_unknowns, CCZ4Solver.AbstractCCZ4Solver._SO_formulation_unknowns, and CCZ4Solver.CCZ4Solver_FD4_SecondOrderFormulation_GlobalAdaptiveTimeStepWithEnclaveTasking._SO_formulation_unknowns.
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.
|
protected |
Definition at line 1064 of file CCZ4Solver.py.
Referenced by CCZ4Solver.CCZ4Solver_FD4_SecondOrderFormulation_GlobalAdaptiveTimeStepWithEnclaveTasking.__init__().
CCZ4Solver.CCZ4Solver_FD4_SecondOrderFormulation_GlobalAdaptiveTimeStepWithEnclaveTasking.auxiliary_variables |
Definition at line 1191 of file CCZ4Solver.py.
Referenced by exahype2.symhype.PDE.PDE._implementation_of_mapping_onto_named_quantities(), exahype2.symhype.PDE.PDE.implementation_of_boundary_conditions(), exahype2.symhype.PDE.PDE.implementation_of_homogeneous_Neumann_BC(), exahype2.symhype.PDE.PDE.implementation_of_initial_conditions(), and exahype2.symhype.PDE.PDE.unknown_identifier_for_plotter().