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
|