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