Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <array> 7 : #include <cstddef> 8 : #include <vector> 9 : 10 : /// \cond 11 : template <size_t Dim> 12 : struct ElementId; 13 : template <size_t Dim> 14 : class Mesh; 15 : template <size_t Dim> 16 : struct OrientationMap; 17 : namespace Spectral { 18 : enum class Quadrature; 19 : } // namespace Spectral 20 : /// \endcond 21 : 22 : namespace domain::Initialization { 23 : /// \ingroup InitializationGroup 24 : /// \brief Construct the initial Mesh of an Element. 25 : /// 26 : /// \details When constructing the Mesh of an Element, pass its id, and use the 27 : /// default argument for orientation. When constructing the mesh of a 28 : /// neighboring Element (when constructing mortars), pass the id and orientation 29 : /// of the neighbor. 30 : /// 31 : /// \param initial_extents the initial extents of each Block in the Domain 32 : /// \param element_id id of an Element or its neighbor 33 : /// \param quadrature the quadrature rule/grid point distribution 34 : /// \param orientation OrientationMap of (neighboring) `element_id` 35 : template <size_t Dim> 36 1 : Mesh<Dim> create_initial_mesh( 37 : const std::vector<std::array<size_t, Dim>>& initial_extents, 38 : const ElementId<Dim>& element_id, Spectral::Quadrature quadrature, 39 : const OrientationMap<Dim>& orientation = {}); 40 : } // namespace domain::Initialization