+ \endhtmlonly +*/ +/// +/// Every tetrahedron of the mesh can uniquely be addressed by a five-tuple +/// of indices \f$\Big(i_t,i_s^{(1)},i_s^{(2)},i_d,i_r\Big)\f$. These +/// indices have the following meaning an (by our convention) the following +/// ranges: +/// +/// | index | range | indicates | +/// |:----------------:|:-----------------------------------------------:|:-----------------------------------| +/// | \f$i_t \f$ | \f$\Big\{ 0, 1, \ldots, 5 \Big\}\f$ | index of tetrahedron in grid cell | +/// | \f$i_s^{(1)}\f$ | \f$\Big\{ 0, 1, \ldots, n_\text{tan}-1\Big\}\f$ | first spherical node index | +/// | \f$i_s^{(2)}\f$ | \f$\Big\{ 0, 1, \ldots, n_\text{tan}-1\Big\}\f$ | second spherical node index | +/// | \f$i_d \f$ | \f$\Big\{ 0, 1, \ldots, 9 \Big\}\f$ | index of diamond | +/// | \f$i_r \f$ | \f$\Big\{ 0, 1, \ldots, n_\text{rad}-1\Big\}\f$ | index of radial layer (inside-out) | +/// +/// We denote by +/// +/// \f[ \mathcal{M}_\text{elem} : \Big(i_t,i_s^{(1)},i_s^{(2)},i_d,i_r\Big) \mapsto j_\text{elem} \f] +/// +/// the mapping that assigns to each such five-tuple a unique one-dimensional +/// index. We construct the mapping by counting the tetrahedra starting at +/// zero and going through the indices in the given order, with \f$i_t\f$ +/// being the fastest running and so on. +/// In a similar fashion each vertex of the grid can be addressed by +/// a four-tuple \f$\Big(i_s^{(1)},i_s^{(2)},i_d,i_r\Big)\f$. Here the indices +/// have an identical meaning as before, but slightly different ranges: +/// +/// | index | range | indicates | +/// |:----------------:|:---------------------------------------------:|:-----------------------------------| +/// | \f$i_s^{(1)}\f$ | \f$\Big\{ 0, 1, \ldots, n_\text{tan}\Big\}\f$ | first spherical node index | +/// | \f$i_s^{(2)}\f$ | \f$\Big\{ 0, 1, \ldots, n_\text{tan}\Big\}\f$ | second spherical node index | +/// | \f$i_d \f$ | \f$\Big\{ 0, 1, \ldots, 9 \Big\}\f$ | index of diamond | +/// | \f$i_r \f$ | \f$\Big\{ 0, 1, \ldots, n_\text{rad}\Big\}\f$ | index of radial layer (inside-out) | +/// +/// Additionally the representation of a vertex by such a four-tuple is +/// non-unique. Considering the spherical grid, we see that the north +/// and south pole belong to five diamonds each, while the remaining +/// ten points of the base icosahedron (pentagonal nodes) belong to +/// three diamonds each, and the remaining nodes along a diamond edge +/// always belong to two diamonds. To construct a unique mapping +/// +/// \f[ \mathcal{M}_\text{vert} : \Big(i_s^{(1)},i_s^{(2)},i_d,i_r\Big) \mapsto j_\text{vert} \f] +/// +/// we introduce the following conventions: +/// +/// - The spherical indices of north and south pole are given by (0,0) +/// - A diamond with index \f$i_d\f$ owns all nodes, which satisfy +/// \f{equation*}{\begin{split} +/// i_s^{(1)} &\in \Big\{ 0, 1, \ldots, n_\text{tan}-1\Big\}\\ +/// i_s^{(2)} &\in \Big\{ 1, \ldots, n_\text{tan}\Big\} +/// \end{split}\f} +/// on the northern hemisphere this excludes the upper and lower +/// left edge of the diamond. +/// - The above assignment leads to the poles not belonging to any +/// diamond. We assign the north pole to diamond #1 and the south +/// pole to diamond #6. +/// +/// The mapping \f$\mathcal{M}_\text{vert}\f$ is then constructed as +/// follows: +/// +/// - We first index the north pole on each radial layer, going from +/// \f$i_r=0\f$ up to \f$i_r=n_\text{rad}\f$. +/// - Then we do the same for all south poles. +/// - Then we go through all vertices assigning them indices +/// \f$j_\text{vert}\f$ starting from \f$2\cdot n_\text{rad}\f$. +/// The ordering again follows the given index ordering with, +/// this time, \f$i_s^{(1)}\f$ being the fastest running index. +/*! \htmlonly +