8from .kernels
import create_compute_Riemann_kernel_for_Rusanov
9from .kernels
import create_abstract_solver_declarations
10from .kernels
import create_abstract_solver_definitions
11from .kernels
import create_solver_declarations
12from .kernels
import create_solver_definitions
13from .kernels
import create_compute_time_step_size_for_fixed_time_stepping_with_subcycling
15from .kernels
import SolverVariant
16from .kernels
import KernelVariant
19from exahype2.solvers.kernels
import create_abstract_solver_user_declarations_for_fixed_time_stepping
20from exahype2.solvers.kernels
import create_abstract_solver_user_definitions_for_fixed_time_stepping
27 name, patch_size, unknowns, auxiliary_variables, min_volume_h, max_volume_h, time_step_size,
28 flux=PDETerms.User_Defined_Implementation,
29 ncp=PDETerms.None_Implementation,
30 eigenvalues=PDETerms.User_Defined_Implementation,
31 boundary_conditions=PDETerms.User_Defined_Implementation,
32 refinement_criterion=PDETerms.Empty_Implementation,
33 initial_conditions=PDETerms.User_Defined_Implementation,
34 source_term=PDETerms.None_Implementation,
35 plot_grid_properties=False,
36 interpolate_linearly_in_time=True,
37 pde_terms_without_state=False, overlap=1
41 This is the normalised time step size w.r.t. the coarsest admissible h value. If
42 the code employs AMR on top of it and refines further, it will automatically
43 downscale the time step size accordingly. So hand in a valid time step size w.r.t.
48 super(SubcyclingFixedTimeStepWithEnclaveTasking,self).
__init__(name,
56 pde_terms_without_state,
57 kernel_namespace=
"rusanov")
72 eigenvalues=eigenvalues,
73 boundary_conditions=boundary_conditions,
74 refinement_criterion=refinement_criterion,
75 initial_conditions=initial_conditions,
76 source_term=source_term)
82 boundary_conditions=None,refinement_criterion=None,initial_conditions=None,source_term=None,
83 memory_location = None,
84 use_split_loop = False,
85 additional_action_set_includes = "",
86 additional_user_includes = ""
89 If you pass in User_Defined, then the generator will create C++ stubs
90 that you have to befill manually. If you pass in None_Implementation, it
91 will create nop, i.e., no implementation or defaults. Any other string
92 is copied 1:1 into the implementation. If you pass in None, then the
93 set value so far won't be overwritten.
95 Please note that not all options are supported by all solvers.
97 This routine should be the very last invoked by the constructor.
108 compute_max_eigenvalue_of_next_time_step =
False,
109 solver_variant = SolverVariant.WithVirtualFunctions,
110 kernel_variant = KernelVariant.PatchWiseAoS
117 compute_max_eigenvalue_of_next_time_step =
False,
118 solver_variant = SolverVariant.Stateless,
119 kernel_variant = KernelVariant.PatchWiseAoS
126 compute_max_eigenvalue_of_next_time_step =
False,
127 solver_variant = SolverVariant.Stateless,
128 kernel_variant = KernelVariant.PatchWiseAoS
135 compute_max_eigenvalue_of_next_time_step =
False,
136 solver_variant = SolverVariant.Accelerator,
137 kernel_variant = KernelVariant.PatchWiseAoS
151 super(SubcyclingFixedTimeStepWithEnclaveTasking,self).
set_implementation(boundary_conditions, refinement_criterion, initial_conditions, memory_location, use_split_loop, additional_action_set_includes, additional_user_includes)
156 The actual action sets all are created by the superclass. So nothing
157 is to be done here. But we want to reset the actual updates and
158 projection, and these only happen if we are allowed to update
163 update_cell_guard =
"::exahype2::runTimeStepOnCell( fineGridCell" + self.
_name_name +
"CellLabel, fineGridFaces" + self.
_name_name +
"FaceLabel, repositories::getMinTimeStamp())"
176 return super(SubcyclingFixedTimeStepWithEnclaveTasking, self).user_action_set_includes +
"""
177#include "exahype2/TimeStepping.h"
178#include "exahype2/fv/rusanov/rusanov.h"
Enclave tasking variant of the Finite Volume scheme.
_fused_compute_kernel_call_stateless_cpu
set_implementation(self, boundary_conditions, refinement_criterion, initial_conditions, memory_location, use_split_loop, 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...
_fused_compute_kernel_call_stateless_gpu
_abstract_solver_user_declarations
_solver_user_declarations
_source_term_implementation
_compute_new_time_step_size
_start_time_step_implementation
_eigenvalues_implementation
_compute_kernel_call_stateless
_finish_time_step_implementation
_abstract_solver_user_definitions
create_action_sets(self)
The actual action sets all are created by the superclass.
_Riemann_solver_namespace
_abstract_solver_user_declarations
_start_time_step_implementation
_solver_user_declarations
create_data_structures(self)
This routine does not really add new data, but it heavily tailors when data are stored,...
_fused_compute_kernel_call_stateless_gpu
_source_term_implementation
_compute_new_time_step_size
set_implementation(self, flux=None, ncp=None, eigenvalues=None, boundary_conditions=None, refinement_criterion=None, initial_conditions=None, source_term=None, memory_location=None, use_split_loop=False, 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...
_eigenvalues_implementation
_finish_time_step_implementation
user_action_set_includes(self)
Add further includes to this property, if your action sets require some additional routines from othe...
_fused_compute_kernel_call_stateless_cpu
_interpolate_linearly_in_time
_compute_kernel_call_stateless
_abstract_solver_user_definitions
__init__(self, name, patch_size, unknowns, auxiliary_variables, min_volume_h, max_volume_h, time_step_size, flux=PDETerms.User_Defined_Implementation, ncp=PDETerms.None_Implementation, eigenvalues=PDETerms.User_Defined_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, interpolate_linearly_in_time=True, pde_terms_without_state=False, overlap=1)
time_step_size: Float This is the normalised time step size w.r.t.