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 <iosfwd>
9 :
10 : #include "Domain/Amr/Flag.hpp"
11 : #include "NumericalAlgorithms/Spectral/Mesh.hpp"
12 :
13 : /// \cond
14 : namespace PUP {
15 : class er;
16 : } // namespace PUP
17 : /// \endcond
18 :
19 : namespace amr {
20 : /// \brief Information about an element that is communicated by AMR actions
21 : ///
22 : /// \details amr::Actions::EvaluateRefinementCriteria and
23 : /// amr::Actions::UpdateAmrDecision communicate the desired
24 : /// amr::Flag%s and Mesh of an element.
25 : template <size_t VolumeDim>
26 1 : struct Info {
27 0 : Info();
28 0 : Info(std::array<Flag, VolumeDim> flags_in, Mesh<VolumeDim> new_mesh_in);
29 :
30 0 : std::array<Flag, VolumeDim> flags;
31 0 : Mesh<VolumeDim> new_mesh;
32 :
33 : /// Serialization for Charm++
34 : // NOLINTNEXTLINE(google-runtime-references)
35 1 : void pup(PUP::er& p);
36 : };
37 :
38 : /// Output operator for an Info.
39 : template <size_t VolumeDim>
40 1 : std::ostream& operator<<(std::ostream& os, const Info<VolumeDim>& info);
41 :
42 : template <size_t VolumeDim>
43 0 : bool operator==(const Info<VolumeDim>& lhs, const Info<VolumeDim>& rhs);
44 :
45 : template <size_t VolumeDim>
46 0 : bool operator!=(const Info<VolumeDim>& lhs, const Info<VolumeDim>& rhs);
47 : } // namespace amr
|