Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <cstddef>
7 :
8 : #include "DataStructures/DataBox/Tag.hpp"
9 : #include "DataStructures/Tensor/IndexType.hpp"
10 : #include "Domain/Structure/DirectionMap.hpp"
11 : #include "Evolution/DgSubcell/Tags/Coordinates.hpp"
12 : #include "Evolution/DgSubcell/Tags/Jacobians.hpp"
13 :
14 : namespace evolution::dg::subcell::Tags {
15 : /// Inverse Jacobian data stored in the ghost zone.
16 : ///
17 : /// The `DirectionalIdMap` stores the grid coordinates and logical to grid
18 : /// inverse Jacobians in the ghost zone to avoid recomputing these data when
19 : /// full Jacobians are needed. We store the grid coordinates to be able to
20 : /// compute the grid to inertial Jacobian at each time step.
21 : template <size_t Dim>
22 1 : struct GhostZoneInverseJacobian : db::SimpleTag {
23 0 : using type = DirectionMap<
24 : Dim, Variables<tmpl::list<Coordinates<Dim, Frame::Grid>,
25 : evolution::dg::subcell::fd::Tags::
26 : InverseJacobianLogicalToGrid<Dim>>>>;
27 : };
28 : } // namespace evolution::dg::subcell::Tags
|