3from exahype2.solvers.PDETerms
import PDETerms
4from exahype2.solvers.rkdg.SeparateSweepsWithEnclaveTasking
import SeparateSweepsWithEnclaveTasking
6from exahype2.solvers.rkdg.kernels
import create_abstract_solver_declarations
7from exahype2.solvers.rkdg.kernels
import create_abstract_solver_definitions
8from exahype2.solvers.rkdg.kernels
import create_solver_declarations
9from exahype2.solvers.rkdg.kernels
import create_solver_definitions
11from exahype2.solvers.rkdg.kernels
import SolverVariant
13from exahype2.solvers.rkdg.kernels
import create_volumetric_solver_call_dsl
14from exahype2.solvers.rkdg.kernels
import create_add_solver_contributions_call
15from exahype2.solvers.rkdg.kernels
import create_multiply_with_inverted_mass_matrix_call
16from exahype2.solvers.rkdg.rusanov.kernels
import create_Riemann_solver_call_dsl
17from exahype2.solvers.rkdg.kernels
import create_cell_integral_kernel_definitions
18from exahype2.solvers.rkdg.rusanov.kernels
import create_Riemann_solver_kernel_definitions
19from exahype2.solvers.rkdg.kernels
import clear_dg_kernel_file
21from exahype2.solvers.rkdg.AdaptiveTimeSteppingCodeSnippets
import AdaptiveTimeSteppingCodeSnippets
23from exahype2.solvers.rkdg.actionsets.ProjectLinearCombinationOfEstimatesOntoFaces
import FaceProjections
29 RKDG solver with global adaptive time step
31 Please consult GlobalAdaptiveTimeStep for more documentation. This version is
32 basically the same with the "only" exception being that we employ enclave
45 flux=PDETerms.User_Defined_Implementation,
46 eigenvalues=PDETerms.User_Defined_Implementation,
47 ncp=PDETerms.None_Implementation,
48 point_source=PDETerms.None_Implementation,
49 boundary_conditions=PDETerms.User_Defined_Implementation,
50 refinement_criterion=PDETerms.Empty_Implementation,
51 initial_conditions=PDETerms.User_Defined_Implementation,
52 source_term=PDETerms.None_Implementation,
53 plot_grid_properties=False,
54 pde_terms_without_state=False,
58 Construct RKDG solver with adaptive global time step and enclave tasking
61 super(GlobalAdaptiveTimeStepWithEnclaveTasking,self).
__init__(name,
64 FaceProjections.Solution,
70 pde_terms_without_state)
90 refinement_criterion=refinement_criterion,
91 initial_conditions=initial_conditions,
92 additional_action_set_includes=
"",
93 additional_user_includes=
"",
95 eigenvalues=eigenvalues,
97 source_term=source_term,
98 point_source=point_source
106 boundary_conditions=None,
107 refinement_criterion=None,
108 initial_conditions=None,
111 additional_action_set_includes = "",
112 additional_user_includes = ""
115 If you pass in User_Defined, then the generator will create C++ stubs
116 that you have to befill manually. If you pass in None_Implementation, it
117 will create nop, i.e., no implementation or defaults. Any other string
118 is copied 1:1 into the implementation. If you pass in None, then the
119 set value so far won't be overwritten.
121 Please note that not all options are supported by all solvers.
123 This routine should be the very last invoked by the constructor.
125 super(GlobalAdaptiveTimeStepWithEnclaveTasking,self).
set_implementation(boundary_conditions=boundary_conditions,
126 refinement_criterion=refinement_criterion,
127 initial_conditions=initial_conditions,
128 additional_action_set_includes=additional_action_set_includes,
129 additional_user_includes=additional_user_includes,
132 eigenvalues=eigenvalues,
133 source_term=source_term,
134 point_source=point_source
137 clear_dg_kernel_file()
138 create_cell_integral_kernel_definitions(
148 create_Riemann_solver_kernel_definitions()
152 self.
_abstract_solver_user_declarations = create_abstract_solver_declarations(self._flux_implementation, self._ncp_implementation, self._eigenvalues_implementation, self._source_term_implementation, self._point_sources_implementation, pde_terms_without_state=self._pde_terms_without_state)
154 self.
_abstract_solver_user_definitions = create_abstract_solver_definitions( self._flux_implementation, self._ncp_implementation, self._eigenvalues_implementation, self._source_term_implementation, self._point_sources_implementation, pde_terms_without_state=self._pde_terms_without_state)
157 self.
_solver_user_declarations = create_solver_declarations(self._flux_implementation, self._ncp_implementation, self._eigenvalues_implementation, self._source_term_implementation, self._point_sources_implementation, pde_terms_without_state=self._pde_terms_without_state)
158 self.
_solver_user_definitions = create_solver_definitions( self._flux_implementation, self._ncp_implementation, self._eigenvalues_implementation, self._source_term_implementation, self._point_sources_implementation, pde_terms_without_state=self._pde_terms_without_state)
170 return super(GlobalAdaptiveTimeStepWithEnclaveTasking, self).user_action_set_includes +
"""
171#include "exahype2/dg/rusanov/Rusanov.h"
172#include "kernels/dg.h"
RKDG solver with global adaptive time step.
_add_solver_contributions_call
_fused_volumetric_compute_kernel_call_stateless_gpu
_constructor_implementation
_Riemann_compute_kernel_call
_abstract_solver_user_definitions
_compute_new_time_step_size
__init__(self, name, rk_order, polynomials, unknowns, auxiliary_variables, min_cell_h, max_cell_h, time_step_relaxation, flux=PDETerms.User_Defined_Implementation, eigenvalues=PDETerms.User_Defined_Implementation, ncp=PDETerms.None_Implementation, point_source=PDETerms.None_Implementation, boundary_conditions=PDETerms.User_Defined_Implementation, refinement_criterion=PDETerms.Empty_Implementation, initial_conditions=PDETerms.User_Defined_Implementation, source_term=PDETerms.None_Implementation, plot_grid_properties=False, pde_terms_without_state=False)
Construct RKDG solver with adaptive global time step and enclave tasking.
_volumetric_compute_kernel_call_stateless
_finish_time_step_implementation
_volumetric_compute_kernel_call
_multiply_with_inverted_mass_matrix_call
user_action_set_includes(self)
_abstract_solver_user_declarations
set_implementation(self, flux=None, ncp=None, eigenvalues=None, boundary_conditions=None, refinement_criterion=None, initial_conditions=None, source_term=None, point_source=None, additional_action_set_includes="", additional_user_includes="")
If you pass in User_Defined, then the generator will create C++ stubs that you have to befill manuall...
_start_time_step_implementation
_solver_user_declarations
_fused_volumetric_compute_kernel_call_stateless_cpu