8from .kernels
import create_compute_kernel_for_FD4_DSL
9from .kernels
import create_FD4_kernel_definitions_3d
23 name, patch_size, rk_order, unknowns, auxiliary_variables, min_meshcell_h, max_meshcell_h, time_step_relaxation,
24 reconstruction_with_rk=False,
25 flux=PDETerms.User_Defined_Implementation,
26 ncp=PDETerms.None_Implementation,
27 point_source=PDETerms.None_Implementation,
28 boundary_conditions=PDETerms.User_Defined_Implementation,
29 refinement_criterion=PDETerms.Empty_Implementation,
30 initial_conditions=PDETerms.User_Defined_Implementation,
31 source_term=PDETerms.None_Implementation,
32 eigenvalues=PDETerms.User_Defined_Implementation,
33 plot_grid_properties=False, KOSigma=8.0
39 time_step_relaxation: Float
40 Calibration factor of CFL condition. The Runge-Kutta order is multiplied
41 with this value following the formula for Cockburn-Shu damping. However,
42 also the actual polynomial order has to enter the chosen time step size
43 through an additional @f$ p^{-2} @f$ scaling. We expect the user to
44 incorporate such an additional scaling within time_step_relaxation.
48 if reconstruction_with_rk:
53 super(GlobalAdaptiveTimeStep,self).
__init__(name,
62 kernel_namespace=
"fd4"
72 eigenvalues=eigenvalues,
73 boundary_conditions=boundary_conditions,
74 refinement_criterion=refinement_criterion,
75 initial_conditions=initial_conditions,
76 source_term=source_term,
77 reconstruction_with_rk=reconstruction_with_rk )
81 flux=None, ncp=None, source_term=None, eigenvalues=None,
82 boundary_conditions=None,refinement_criterion=None,initial_conditions=None,
83 memory_location = None,
84 additional_action_set_includes = "",
85 additional_user_includes = "",
87 reconstruction_with_rk= False
90 If you pass in User_Defined, then the generator will create C++ stubs
91 that you have to befill manually. If you pass in None_Implementation, it
92 will create nop, i.e. no implementation or defaults. Any other string
93 is copied 1:1 into the implementation. If you pass in None, then the
94 set value so far won't be overwritten.
96 Please note that not all options are supported by all solvers.
98 This routine should be the very last invoked by the constructor.
101 flux, ncp, source_term, eigenvalues,
102 boundary_conditions, refinement_criterion, initial_conditions, memory_location, additional_action_set_includes, additional_user_includes)
104 if not KOSigma==
None: self.
_KO_Sigma = KOSigma
106 create_FD4_kernel_definitions_3d()
112 compute_max_eigenvalue_of_next_time_step =
True,
113 solver_variant = SolverVariant.WithVirtualFunctions,
114 kernel_variant = KernelVariant.PatchWiseAoSHeap,
118 if reconstruction_with_rk:
121 {{NUMBER_OF_GRID_CELLS_PER_PATCH_PER_AXIS}},
123 {{NUMBER_OF_UNKNOWNS}},
124 {{NUMBER_OF_AUXILIARY_VARIABLES}}
127 self.
_primary_variables_indices_primary_variables_indices =
"int primaryVarsIndices[25]={ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 53, 54};"
128 self.
_auxiliary_variables_indices_auxiliary_variables_indices =
"int auxiliaryVarsIndices[34]={23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,55,56,57,58}; "
152 return super(GlobalAdaptiveTimeStep, self).user_action_set_includes +
"""
153#include "kernels/FD4.h"
Code snippet generator for fixed time stepping in the Runge-Kutta schemes.
_abstract_solver_user_definitions
_reconstruction_kernel_call
_finish_time_step_implementation
_start_time_step_implementation
_compute_new_time_step_size
_solver_user_declarations
_primary_variables_indices
_abstract_solver_user_declarations
create_action_sets(self)
Create required action sets.
_auxiliary_variables_indices
_constructor_implementation
Probably the simplest solver you could think off.
set_implementation(self, flux, ncp, source_term, eigenvalues, boundary_conditions, refinement_criterion, initial_conditions, memory_location, 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
create_action_sets(self)
Call superclass routine and then reconfigure the update cell call.
_source_term_implementation
__init__(self, name, patch_size, rk_order, unknowns, auxiliary_variables, min_meshcell_h, max_meshcell_h, time_step_relaxation, reconstruction_with_rk=False, flux=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, eigenvalues=PDETerms.User_Defined_Implementation, plot_grid_properties=False, KOSigma=8.0)
Construct solver.
set_implementation(self, flux=None, ncp=None, source_term=None, eigenvalues=None, boundary_conditions=None, refinement_criterion=None, initial_conditions=None, memory_location=None, additional_action_set_includes="", additional_user_includes="", KOSigma=None, reconstruction_with_rk=False)
If you pass in User_Defined, then the generator will create C++ stubs that you have to befill manuall...
_reconstruction_kernel_call
_start_time_step_implementation
_abstract_solver_user_definitions
_solver_user_declarations
_primary_variables_indices
add_entries_to_text_replacement_dictionary(self, d)
d: Dictionary of string to string in/out argument
_constructor_implementation
_abstract_solver_user_declarations
_source_term_implementation
_compute_new_time_step_size
_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...
_auxiliary_variables_indices