3from exahype2.solvers.PDETerms
import PDETerms
4from exahype2.solvers.rkdg.SeparateSweeps
import SeparateSweeps
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_cell_integral_kernel_definitions
14from exahype2.solvers.rkdg.kernels
import clear_dg_kernel_file
15from exahype2.solvers.rkdg.kernels
import create_volumetric_solver_call_dsl
16from exahype2.solvers.rkdg.kernels
import create_add_solver_contributions_call
17from exahype2.solvers.rkdg.kernels
import create_multiply_with_inverted_mass_matrix_call
18from exahype2.solvers.rkdg.rusanov.kernels
import create_Riemann_solver_call
19from exahype2.solvers.rkdg.rusanov.kernels
import create_Riemann_solver_kernel_definitions
21from exahype2.solvers.rkdg.AdaptiveTimeSteppingCodeSnippets
import AdaptiveTimeSteppingCodeSnippets
23from exahype2.solvers.rkdg.actionsets.ProjectLinearCombinationOfEstimatesOntoFaces
import FaceProjections
29 RKDG solver with Rusanov Riemann solver employing global adaptive time stepping
31 Please consult GlobalFixedTimeStep for details. This version is very similar
32 with the big difference being that we add the evaluation and global
33 reduction of the maximum eigenvalue and then adopt the time step size
46 flux=PDETerms.User_Defined_Implementation,
47 eigenvalues=PDETerms.User_Defined_Implementation,
48 ncp=PDETerms.None_Implementation,
49 point_source=PDETerms.None_Implementation,
50 boundary_conditions=PDETerms.User_Defined_Implementation,
51 refinement_criterion=PDETerms.Empty_Implementation,
52 initial_conditions=PDETerms.User_Defined_Implementation,
53 source_term=PDETerms.None_Implementation,
54 plot_grid_properties=False,
55 pde_terms_without_state=False,
59 Construct RKDG solver with adaptive global time step
62 super(GlobalAdaptiveTimeStep,self).
__init__(name,
65 FaceProjections.Solution,
71 pde_terms_without_state,
87 refinement_criterion=refinement_criterion,
88 initial_conditions=initial_conditions,
89 additional_action_set_includes=
"",
90 additional_user_includes=
"",
92 eigenvalues=eigenvalues,
94 source_term=source_term,
95 point_source=point_source
103 boundary_conditions=None,
104 refinement_criterion=None,
105 initial_conditions=None,
108 additional_action_set_includes = "",
109 additional_user_includes = ""
112 If you pass in User_Defined, then the generator will create C++ stubs
113 that you have to befill manually. If you pass in None_Implementation, it
114 will create nop, i.e., no implementation or defaults. Any other string
115 is copied 1:1 into the implementation. If you pass in None, then the
116 set value so far won't be overwritten.
118 Please note that not all options are supported by all solvers.
120 This routine should be the very last invoked by the constructor.
122 super(GlobalAdaptiveTimeStep,self).
set_implementation(boundary_conditions=boundary_conditions,
123 refinement_criterion=refinement_criterion,
124 initial_conditions=initial_conditions,
125 additional_action_set_includes=additional_action_set_includes,
126 additional_user_includes=additional_user_includes,
129 eigenvalues=eigenvalues,
130 source_term=source_term,
131 point_source=point_source
133 clear_dg_kernel_file()
134 create_cell_integral_kernel_definitions(
144 create_Riemann_solver_kernel_definitions()
148 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, self._pde_terms_without_state)
150 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, self._pde_terms_without_state)
153 self.
_solver_user_declarations = create_solver_declarations(self._flux_implementation, self._ncp_implementation, self._eigenvalues_implementation, self._source_term_implementation, self._point_sources_implementation, self._pde_terms_without_state)
154 self.
_solver_user_definitions = create_solver_definitions( self._flux_implementation, self._ncp_implementation, self._eigenvalues_implementation, self._source_term_implementation, self._point_sources_implementation, self._pde_terms_without_state)
166 return super(GlobalAdaptiveTimeStep, self).user_action_set_includes +
"""
167#include "exahype2/dg/rusanov/Rusanov.h"
168#include "kernels/dg.h"
RKDG solver with Rusanov Riemann solver employing global adaptive time stepping.
_abstract_solver_user_declarations
__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.
_start_time_step_implementation
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...
_constructor_implementation
_volumetric_compute_kernel_call
_finish_time_step_implementation
_Riemann_compute_kernel_call
_multiply_with_inverted_mass_matrix_call
user_action_set_includes(self)
_compute_new_time_step_size
_solver_user_declarations
_add_solver_contributions_call
_abstract_solver_user_definitions
_volumetric_compute_kernel_call_stateless