8from .kernels
import create_abstract_solver_declarations
9from .kernels
import create_abstract_solver_definitions
10from .kernels
import create_solver_declarations
11from .kernels
import create_solver_definitions
12from .kernels
import create_rusanov_kernel_definitions
13from .kernels
import create_compute_Riemann_kernel_for_Rusanov_dsl
15from .kernels
import SolverVariant
16from .kernels
import KernelVariant
23 name, patch_size, unknowns, auxiliary_variables, min_volume_h, max_volume_h, normalised_time_step_size,
24 flux=PDETerms.User_Defined_Implementation,
25 ncp=PDETerms.None_Implementation,
26 eigenvalues=PDETerms.User_Defined_Implementation,
27 boundary_conditions=PDETerms.User_Defined_Implementation,
28 refinement_criterion=PDETerms.Empty_Implementation,
29 initial_conditions=PDETerms.User_Defined_Implementation,
30 source_term=PDETerms.None_Implementation,
31 plot_grid_properties=False,
32 pde_terms_without_state=False, overlap=1
36 This is the normalised time step size w.r.t. the coarsest admissible h value. If
37 the code employs AMR on top of it and refines further, it will automatically
38 downscale the time step size accordingly. So hand in a valid time step size w.r.t.
41 super(GlobalFixedTimeStepWithEnclaveTasking,self).
__init__(name,
49 pde_terms_without_state,
50 kernel_namespace=
"rusanov")
60 eigenvalues=eigenvalues,
61 boundary_conditions=boundary_conditions,
62 refinement_criterion=refinement_criterion,
63 initial_conditions=initial_conditions,
64 source_term=source_term)
70 boundary_conditions=None,refinement_criterion=None,initial_conditions=None,source_term=None,
71 memory_location = None,
72 use_split_loop = False,
73 additional_action_set_includes = "",
74 additional_user_includes = ""
77 If you pass in User_Defined, then the generator will create C++ stubs
78 that you have to befill manually. If you pass in None_Implementation, it
79 will create nop, i.e., no implementation or defaults. Any other string
80 is copied 1:1 into the implementation. If you pass in None, then the
81 set value so far won't be overwritten.
83 Please note that not all options are supported by all solvers.
85 This routine should be the very last invoked by the constructor.
92 create_rusanov_kernel_definitions()
98 compute_max_eigenvalue_of_next_time_step =
False,
99 solver_variant = SolverVariant.WithVirtualFunctions,
100 kernel_variant = KernelVariant.PatchWiseAoS
107 compute_max_eigenvalue_of_next_time_step =
False,
108 solver_variant = SolverVariant.Stateless,
109 kernel_variant = KernelVariant.PatchWiseAoS
116 compute_max_eigenvalue_of_next_time_step =
True,
117 solver_variant = SolverVariant.Stateless,
118 kernel_variant = KernelVariant.PatchWiseAoS
125 compute_max_eigenvalue_of_next_time_step =
True,
126 solver_variant = SolverVariant.Accelerator,
127 kernel_variant = KernelVariant.PatchWiseAoS
147 super(GlobalFixedTimeStepWithEnclaveTasking,self).
set_implementation(boundary_conditions, refinement_criterion, initial_conditions, memory_location, use_split_loop, additional_action_set_includes, additional_user_includes)
156 return super(GlobalFixedTimeStepWithEnclaveTasking, self).user_action_set_includes +
"""
157#include "kernels/rusanov.h"
Enclave tasking variant of the Finite Volume scheme.
_fused_compute_kernel_call_stateless_cpu
_optimise_patch_storage_for_global_time_stepping(self)
Make storage and loading more restrictive such that enclave data are not held in-between primary and ...
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
_constructor_implementation
_finish_time_step_implementation
_abstract_solver_user_definitions
Code snippet generator for fixed time stepping in the Runge-Kutta schemes.
_fused_compute_kernel_call_stateless_gpu
_constructor_implementation
_start_time_step_implementation
_eigenvalues_implementation
_compute_new_time_step_size
_compute_kernel_call_stateless
_abstract_solver_user_definitions
_abstract_solver_user_declarations
user_action_set_includes(self)
Add further includes to this property, if your action sets require some additional routines from othe...
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...
_source_term_implementation
_fused_compute_kernel_call_stateless_cpu
__init__(self, name, patch_size, unknowns, auxiliary_variables, min_volume_h, max_volume_h, normalised_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, pde_terms_without_state=False, overlap=1)
time_step_size: Float This is the normalised time step size w.r.t.
_solver_user_declarations
create_data_structures(self)
This routine does not really add new data, but it heavily tailors when data are stored,...
_finish_time_step_implementation
_normalised_time_step_size