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 <cstdint> 9 : #include <vector> 10 : 11 : /// \cond 12 : template <size_t Dim> 13 : struct Block; 14 : template <size_t Dim> 15 : struct Element; 16 : template <size_t Dim> 17 : struct ElementId; 18 : template <size_t Dim> 19 : class Mesh; 20 : namespace domain { 21 : enum class Topology : uint8_t; 22 : } // namespace domain 23 : namespace Spectral { 24 : enum class Basis : uint8_t; 25 : enum class Quadrature : uint8_t; 26 : } // namespace Spectral 27 : /// \endcond 28 : 29 : namespace domain { 30 : /// \ingroup InitializationGroup 31 : /// \brief Construct the initial Mesh of an Element. 32 : /// 33 : /// \param initial_extents initial extents for Elements in each Block of the 34 : /// Domain 35 : /// \param element Element 36 : /// \param i1_basis the Spectral::Basis used for dimensions with Topology::I1 37 : /// \param i1_quadrature the Spectral::Quadrature for dimensions with 38 : /// Topology::I1 39 : template <size_t Dim> 40 1 : Mesh<Dim> create_initial_mesh( 41 : const std::vector<std::array<size_t, Dim>>& initial_extents, 42 : const Element<Dim>& element, Spectral::Basis i1_basis, 43 : Spectral::Quadrature i1_quadrature); 44 : 45 : /// \ingroup InitializationGroup 46 : /// \brief Construct the initial Mesh of an Element from its Block and 47 : /// ElementId. 48 : /// 49 : /// \param initial_extents initial extents for Elements in each Block of the 50 : /// Domain 51 : /// \param block the Block of the Element 52 : /// \param element_id the ElementId of the Element 53 : /// \param i1_basis the Spectral::Basis used for dimensions with Topology::I1 54 : /// \param i1_quadrature the Spectral::Quadrature for dimensions with 55 : /// Topology::I1 56 : template <size_t Dim> 57 1 : Mesh<Dim> create_initial_mesh( 58 : const std::vector<std::array<size_t, Dim>>& initial_extents, 59 : const Block<Dim>& block, const ElementId<Dim>& element_id, 60 : Spectral::Basis i1_basis, Spectral::Quadrature i1_quadrature); 61 : 62 : /// \ingroup InitializationGroup 63 : /// \brief Create a new array of topologies to account for potential radial 64 : /// refinement of Bn topologies. 65 : /// 66 : /// \param topologies initial topologies of the Element 67 : /// \param element_id the ElementId of the Element 68 : template <size_t Dim> 69 1 : std::array<domain::Topology, Dim> refine_Bn_topology( 70 : const std::array<domain::Topology, Dim>& topologies, 71 : const ElementId<Dim>& element_id); 72 : 73 : } // namespace domain