13 #include "DataStructures/DataBox/Tag.hpp"
14 #include "DataStructures/DataVector.hpp"
15 #include "DataStructures/Tensor/EagerMath/Magnitude.hpp"
19 #include "Domain/FunctionsOfTime/FunctionOfTime.hpp"
20 #include "Domain/FunctionsOfTime/Tags.hpp"
22 #include "Time/Tags.hpp"
41 tnsr::I<DataVector, Dim, Frame::Inertial>,
44 tnsr::I<DataVector, Dim, Frame::Inertial>>>;
50 template <
typename MapTagGr
idToInertial>
54 static constexpr
size_t dim = MapTagGridToInertial::dim;
63 const tnsr::I<DataVector, dim, Frame::Grid>& source_coords,
68 functions_of_time) noexcept {
70 if (not grid_to_inertial_map.is_identity()) {
71 *result = grid_to_inertial_map.coords_frame_velocity_jacobians(
72 source_coords, time, functions_of_time);
74 *result = std::nullopt;
79 tmpl::list<MapTagGridToInertial, Tags::Coordinates<dim, Frame::Grid>,
90 using return_type =
typename base::type;
94 const tnsr::I<DataVector, Dim, Frame::Grid>& source_coords,
96 tnsr::I<DataVector, Dim, Frame::Inertial>,
99 tnsr::I<DataVector, Dim, Frame::Inertial>>>&
100 grid_to_inertial_quantities) noexcept;
102 using argument_tags = tmpl::list<Tags::Coordinates<Dim, Frame::Grid>,
108 template <
size_t Dim>
115 static void function(
118 inv_jac_logical_to_inertial,
119 const ::InverseJacobian<DataVector, Dim, Frame::Logical, Frame::Grid>&
120 inv_jac_logical_to_grid,
122 tnsr::I<DataVector, Dim, Frame::Inertial>,
125 tnsr::I<DataVector, Dim, Frame::Inertial>>>&
126 grid_to_inertial_quantities) noexcept;
128 using argument_tags =
129 tmpl::list<Tags::InverseJacobian<Dim, Frame::Logical, Frame::Grid>,
137 template <
size_t Dim,
typename Frame = ::Frame::Inertial>
146 template <
size_t Dim>
152 static void function(
155 tnsr::I<DataVector, Dim, Frame::Inertial>,
158 tnsr::I<DataVector, Dim, Frame::Inertial>>>&
159 grid_to_inertial_quantities) noexcept;
161 using argument_tags = tmpl::list<CoordinatesMeshVelocityAndJacobians<Dim>>;
167 static std::string name() noexcept {
return "div(MeshVelocity)"; }