|
template<typename System , bool Linearized> |
using | get_fluxes_computer = tmpl::conditional_t< Linearized, typename detail::fluxes_computer_linearized< System >::type, typename System::fluxes_computer > |
| The System::fluxes_computer or the System::fluxes_computer_linearized , depending on the Linearized parameter. If the system has no fluxes_computer_linearized alias it is assumed that the linear flux is functionally identical to the non-linear flux, so the System::fluxes_computer is returned either way.
|
|
template<typename System , bool Linearized> |
using | get_fluxes_argument_tags = typename get_fluxes_computer< System, Linearized >::argument_tags |
| The argument_tags of either the System::fluxes_computer or the System::fluxes_computer_linearized , depending on the Linearized parameter.
|
|
template<typename System , bool Linearized> |
using | get_fluxes_volume_tags = typename get_fluxes_computer< System, Linearized >::volume_tags |
| The volume_tags of either the System::fluxes_computer or the System::fluxes_computer_linearized , depending on the Linearized parameter.
|
|
template<typename System , bool Linearized> |
using | get_fluxes_const_global_cache_tags = typename get_fluxes_computer< System, Linearized >::const_global_cache_tags |
| The const_global_cache_tags of either the System::fluxes_computer or the System::fluxes_computer_linearized , depending on the Linearized parameter.
|
|
template<typename System , bool Linearized> |
using | get_sources_computer = tmpl::conditional_t< Linearized, typename detail::sources_computer_linearized< System >::type, typename System::sources_computer > |
| The System::sources_computer or the System::sources_computer_linearized , depending on the Linearized parameter. If the system has no sources_computer_linearized alias it is assumed to be linear, so the System::sources_computer is returned either way.
|
|
template<typename System , bool Linearized> |
using | get_sources_argument_tags = typename tmpl::conditional_t< std::is_same_v< get_sources_computer< System, Linearized >, void >, detail::NoSourcesComputer, get_sources_computer< System, Linearized > >::argument_tags |
| The argument_tags of either the System::sources_computer or the System::sources_computer_linearized , depending on the Linearized parameter, or an empty list if the sources computer is void .
|
|
template<typename System , bool Linearized> |
using | get_sources_const_global_cache_tags = typename tmpl::conditional_t< std::is_same_v< get_sources_computer< System, Linearized >, void >, detail::NoSourcesComputer, get_sources_computer< System, Linearized > >::const_global_cache_tags |
| The const_global_cache_tags of either the System::sources_computer or the System::sources_computer_linearized , depending on the Linearized parameter, or an empty list if the sources computer is void .
|
|
Items related to composing nonlinear elliptic solver executables.
Functionality related to solving elliptic partial differential equations.
template<bool Linearized, typename ArgsTransform = void, typename BoundaryConditionClasses = tmpl::list<>, size_t Dim, typename DbTagsList , typename MapKeys , typename... FieldsAndFluxes>
void elliptic::apply_boundary_condition |
( |
const elliptic::BoundaryConditions::BoundaryCondition< Dim > & |
boundary_condition, |
|
|
const db::DataBox< DbTagsList > & |
box, |
|
|
const MapKeys & |
map_keys_to_direction, |
|
|
FieldsAndFluxes &&... |
fields_and_fluxes |
|
) |
| |
Apply the boundary_condition
to the fields_and_fluxes
with arguments from interface tags in the DataBox.
This functions assumes the arguments for the boundary_condition
are stored in the DataBox in tags domain::Tags::Faces<Dim, Tag>
. This may turn out not to be the most efficient setup, so code that uses the boundary conditions doesn't have to use this function but can procure the arguments differently. For example, future optimizations may involve storing a subset of arguments that don't change during an elliptic solve in direction-maps in the DataBox, and slicing other arguments to the interface every time the boundary conditions are applied.
The ArgsTransform
template parameter can be used to transform the set of argument tags for the boundary conditions further. It must be compatible with tmpl::transform
. For example, it may wrap the tags in another prefix. Set it to void
(default) to apply no transformation.
The BoundaryConditionClasses
can be used to list a set of classes derived from elliptic::BoundaryConditions::BoundaryCondition
that are iterated to determine the concrete type of boundary_condition
. It can be tmpl::list<>
(default) to use the classes listed in Metavariables::factory_creation
instead.