27 template <
class TagList>
44 template <
typename Tag,
typename Dim,
typename Frame,
typename = std::
nullptr_t>
47 template <
typename Tag,
typename Dim,
typename Frame>
54 static std::string name() noexcept {
return "deriv(" + Tag::name() +
")"; }
56 template <
typename Tag,
typename Dim,
typename Frame>
62 static std::string name() noexcept {
return "deriv(" + Tag::name() +
")"; }
79 template <
typename DerivativeTags,
typename VariableTags,
size_t Dim>
82 logical_partial_derivatives_of_u,
83 const Variables<VariableTags>& u,
const Mesh<Dim>& mesh) noexcept;
85 template <
typename DerivativeTags,
typename VariableTags,
size_t Dim>
103 template <
typename DerivativeTags,
size_t Dim,
typename DerivativeFrame>
106 Tags::deriv, DerivativeTags, tmpl::size_t<Dim>, DerivativeFrame>>*>
108 const std::array<Variables<DerivativeTags>, Dim>&
109 logical_partial_derivatives_of_u,
110 const InverseJacobian<DataVector, Dim, Frame::Logical, DerivativeFrame>&
111 inverse_jacobian) noexcept;
113 template <
typename DerivativeTags,
typename VariableTags,
size_t Dim,
114 typename DerivativeFrame>
117 Tags::deriv, DerivativeTags, tmpl::size_t<Dim>, DerivativeFrame>>*>
119 const Variables<VariableTags>& u,
const Mesh<Dim>& mesh,
120 const InverseJacobian<DataVector, Dim, Frame::Logical, DerivativeFrame>&
121 inverse_jacobian) noexcept;
123 template <
typename DerivativeTags,
typename VariableTags,
size_t Dim,
124 typename DerivativeFrame>
126 const Variables<VariableTags>& u,
const Mesh<Dim>& mesh,
127 const InverseJacobian<DataVector, Dim, Frame::Logical, DerivativeFrame>&
128 inverse_jacobian) noexcept
130 tmpl::size_t<Dim>, DerivativeFrame>>;
148 template <
typename VariablesTag,
typename InverseJacobianTag,
152 deriv, db::variables_tag_with_tags_list<VariablesTag, DerivTags>,
153 tmpl::size_t<tmpl::back<
154 typename db::item_type<InverseJacobianTag>::index_list>::dim>,
156 typename db::item_type<InverseJacobianTag>::index_list>::Frame>,
159 using inv_jac_indices =
161 static constexpr
auto Dim = tmpl::back<inv_jac_indices>::dim;
162 using deriv_frame =
typename tmpl::back<inv_jac_indices>::Frame;
166 Tags::deriv, DerivTags, tmpl::size_t<Dim>, deriv_frame>> (*function)(
167 const ::Variables<typename db::item_type<VariablesTag>::tags_list>&,
169 const ::InverseJacobian<DataVector, Dim, Frame::Logical, deriv_frame>&) =
173 using argument_tags =
174 tmpl::list<VariablesTag, Tags::Mesh<Dim>, InverseJacobianTag>;
Covariant, or Lower index.
void logical_partial_derivatives(gsl::not_null< std::array< Variables< DerivativeTags >, Dim > *> logical_partial_derivatives_of_u, const Variables< VariableTags > &u, const Mesh< Dim > &mesh) noexcept
Compute the partial derivatives of each variable with respect to the logical coordinate.
Marks a DataBoxTag as being a compute item that executes a function.
Definition: DataBoxTag.hpp:155
Holds the number of grid points, basis, and quadrature in each direction of the computational grid...
Definition: Mesh.hpp:49
Tags for the DataBox inherit from this type.
Definition: DataBoxTag.hpp:65
Defines the type alias Requires.
A collection of useful type traits.
Definition: TensorExpression.hpp:115
void partial_derivatives(gsl::not_null< Variables< db::wrap_tags_in< Tags::deriv, DerivativeTags, tmpl::size_t< Dim >, DerivativeFrame >> *> du, const std::array< Variables< DerivativeTags >, Dim > &logical_partial_derivatives_of_u, const InverseJacobian< DataVector, Dim, Frame::Logical, DerivativeFrame > &inverse_jacobian) noexcept
Compute the partial derivatives of each variable with respect to the coordinates of DerivativeFrame...
Prefix indicating spatial derivatives.
Definition: PartialDerivatives.hpp:45
constexpr bool is_a_v
Definition: TypeTraits.hpp:543
Indicates the Frame that a TensorIndexType is in.
Definition: IndexType.hpp:36
Stores a collection of function values.
Definition: DataVector.hpp:46
Wraps the template metaprogramming library used (brigand)
typename DataBox_detail::item_type_impl< TagList, Tag >::type item_type
Get the type that is returned by the Tag. If it is a base tag then a TagList must be passed as a seco...
Definition: DataBoxTag.hpp:410
Marks an item as being a prefix to another tag.
Definition: DataBoxTag.hpp:112
typename Requires_detail::requires_impl< B >::template_error_type_failed_to_meet_requirements_on_template_parameters Requires
Express requirements on the template parameters of a function or class, replaces std::enable_if_t ...
Definition: Requires.hpp:67
::Tensor< typename Tensor::type, tmpl::push_front< typename Tensor::symmetry, tmpl::int32_t< 1+tmpl::fold< typename Tensor::symmetry, tmpl::int32_t< 0 >, tmpl::max< tmpl::_state, tmpl::_element > >::value > >, tmpl::push_front< typename Tensor::index_list, SpatialIndex< VolumeDim, Ul, Fr > >> prepend_spatial_index
Add a spatial index to the front of a Tensor.
Definition: Metafunctions.hpp:85
Defines classes SimpleTag, PrefixTag, ComputeTag and several functions for retrieving tag info...
Defines type traits, some of which are future STL type_traits header.
Require a pointer to not be a nullptr
Definition: ConservativeFromPrimitive.hpp:12