11 FixedTimeSteppingCodeSnippets,
24 normalised_time_step_size,
25 initial_conditions=PDETerms.User_Defined_Implementation,
26 boundary_conditions=PDETerms.User_Defined_Implementation,
27 refinement_criterion=PDETerms.Empty_Implementation,
28 flux=PDETerms.None_Implementation,
29 ncp=PDETerms.None_Implementation,
30 eigenvalues=PDETerms.None_Implementation,
31 riemann_solver=PDETerms.User_Defined_Implementation,
32 source_term=PDETerms.None_Implementation,
33 plot_grid_properties=False,
34 pde_terms_without_state=False,
39 This is the normalised time step size w.r.t. the coarsest admissible h value. If
40 the code employs AMR on top of it and refines further, it will automatically
41 downscale the time step size accordingly. So hand in a valid time step size w.r.t.
44 super(GlobalFixedTimeStep, self).
__init__(
53 pde_terms_without_state,
54 kernel_namespace=
"riemann",
67 initial_conditions=initial_conditions,
68 boundary_conditions=boundary_conditions,
69 refinement_criterion=refinement_criterion,
72 eigenvalues=eigenvalues,
73 riemann_solver=riemann_solver,
74 source_term=source_term,
79 initial_conditions=None,
80 boundary_conditions=None,
81 refinement_criterion=None,
89 additional_action_set_includes="",
90 additional_user_includes="",
93 If you pass in User_Defined, then the generator will create C++ stubs
94 that you have to befill manually. If you pass in None_Implementation, it
95 will create nop, i.e., no implementation or defaults. Any other string
96 is copied 1:1 into the implementation. If you pass in None, then the
97 set value so far won't be overwritten.
99 Please note that not all options are supported by all solvers.
101 This routine should be the very last invoked by the constructor.
103 if initial_conditions
is not None:
105 if boundary_conditions
is not None:
107 if refinement_criterion
is not None:
113 if eigenvalues
is not None:
115 if riemann_solver
is not None:
117 if source_term
is not None:
119 if memory_location
is not None:
131 solver_variant=SolverVariant.WithVirtualFunctions,
132 kernel_variant=KernelVariant.PatchWiseAoS,
142 solver_variant=SolverVariant.Stateless,
143 kernel_variant=KernelVariant.PatchWiseAoS,
148 == ReconstructedArrayMemoryLocation.HeapThroughTarchWithoutDelete
150 == ReconstructedArrayMemoryLocation.HeapWithoutDelete
152 == ReconstructedArrayMemoryLocation.ManagedSharedAcceleratorDeviceMemoryThroughTarchWithoutDelete
155 "Memory mode without appropriate delete chosen, i.e. this will lead to a memory leak"
171 solver_code_snippets.create_abstract_solver_user_declarations()
182 solver_code_snippets.create_abstract_solver_user_definitions()
203 solver_code_snippets.create_compute_time_step_size()
206 solver_code_snippets.create_compute_new_time_step_size()
210 solver_code_snippets.create_start_time_step_implementation()
213 solver_code_snippets.create_finish_time_step_implementation()
216 solver_code_snippets.create_abstract_solver_constructor_statements()
220 initial_conditions=initial_conditions,
221 boundary_conditions=boundary_conditions,
222 refinement_criterion=refinement_criterion,
223 memory_location=memory_location,
224 use_split_loop=use_split_loop,
225 additional_action_set_includes=additional_action_set_includes,
226 additional_user_includes=additional_user_includes,
232 super(GlobalFixedTimeStep, self).user_action_set_includes
234#include "exahype2/fv/riemann/Riemann.h"
239 result = super(GlobalFixedTimeStep, self).
__str__().rstrip(
"\n")
_abstract_solver_user_declarations
_boundary_conditions_implementation
_solver_user_declarations
_source_term_implementation
_compute_new_time_step_size
_initial_conditions_implementation
_start_time_step_implementation
_eigenvalues_implementation
_compute_kernel_call_stateless
_constructor_implementation
_reconstructed_array_memory_location
_refinement_criterion_implementation
_finish_time_step_implementation
_abstract_solver_user_definitions
Code snippet generator for fixed time stepping in the Runge-Kutta schemes.
Probably the simplest solver you could think off.
_refinement_criterion_implementation
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...
_reconstructed_array_memory_location
_boundary_conditions_implementation
_initial_conditions_implementation
_eigenvalues_implementation
_constructor_implementation
_riemann_solver_implementation
__init__(self, name, patch_size, unknowns, auxiliary_variables, min_volume_h, max_volume_h, normalised_time_step_size, initial_conditions=PDETerms.User_Defined_Implementation, boundary_conditions=PDETerms.User_Defined_Implementation, refinement_criterion=PDETerms.Empty_Implementation, flux=PDETerms.None_Implementation, ncp=PDETerms.None_Implementation, eigenvalues=PDETerms.None_Implementation, riemann_solver=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.
_reconstructed_array_memory_location
_abstract_solver_user_declarations
_boundary_conditions_implementation
_compute_new_time_step_size
_source_term_implementation
_refinement_criterion_implementation
_normalised_time_step_size
user_action_set_includes(self)
Add further includes to this property, if your action sets require some additional routines from othe...
_start_time_step_implementation
_solver_user_declarations
_initial_conditions_implementation
_abstract_solver_user_definitions
set_implementation(self, initial_conditions=None, boundary_conditions=None, refinement_criterion=None, flux=None, ncp=None, eigenvalues=None, riemann_solver=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...
_finish_time_step_implementation
_compute_kernel_call_stateless
create_compute_Riemann_kernel(flux_implementation, ncp_implementation, eigenvalues_implementation, riemann_solver_implementation, source_term_implementation, compute_max_eigenvalue_of_next_time_step, SolverVariant solver_variant, KernelVariant kernel_variant)
Return only the unqualified function call, i.e., without any namespaces.