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 Spectral { 21 : enum class Basis : uint8_t; 22 : enum class Quadrature : uint8_t; 23 : } // namespace Spectral 24 : /// \endcond 25 : 26 : namespace domain { 27 : /// \ingroup InitializationGroup 28 : /// \brief Construct the initial Mesh of an Element. 29 : /// 30 : /// \param initial_extents initial extents for Elements in each Block of the 31 : /// Domain 32 : /// \param element Element 33 : /// \param i1_basis the Spectral::Basis used for dimensions with Topology::I1 34 : /// \param i1_quadrature the Spectral::Quadrature for dimensions with 35 : /// Topology::I1 36 : template <size_t Dim> 37 1 : Mesh<Dim> create_initial_mesh( 38 : const std::vector<std::array<size_t, Dim>>& initial_extents, 39 : const Element<Dim>& element, Spectral::Basis i1_basis, 40 : Spectral::Quadrature i1_quadrature); 41 : 42 : /// \ingroup InitializationGroup 43 : /// \brief Construct the initial Mesh of an Element from its Block and 44 : /// ElementId. 45 : /// 46 : /// \param initial_extents initial extents for Elements in each Block of the 47 : /// Domain 48 : /// \param block the Block of the Element 49 : /// \param element_id the ElementId of the Element 50 : /// \param i1_basis the Spectral::Basis used for dimensions with Topology::I1 51 : /// \param i1_quadrature the Spectral::Quadrature for dimensions with 52 : /// Topology::I1 53 : template <size_t Dim> 54 1 : Mesh<Dim> create_initial_mesh( 55 : const std::vector<std::array<size_t, Dim>>& initial_extents, 56 : const Block<Dim>& block, const ElementId<Dim>& element_id, 57 : Spectral::Basis i1_basis, Spectral::Quadrature i1_quadrature); 58 : } // namespace domain