14#include <fmt/ostream.h>
20#include "ioss_export.h"
22#if defined(SEACAS_HAVE_CGNS) && !defined(BUILT_IN_SIERRA)
43 ZoneConnectivity(std::string name,
int owner_zone, std::string donor_name,
int donor_zone,
48 : m_connectionName(std::move(name)), m_donorName(std::move(donor_name)),
49 m_transform(p_transform), m_ownerRangeBeg(range_beg), m_ownerRangeEnd(range_end),
50 m_ownerOffset(owner_offset), m_donorRangeBeg(donor_beg), m_donorRangeEnd(donor_end),
51 m_donorOffset(donor_offset), m_ownerZone(owner_zone), m_donorZone(donor_zone)
54 m_ownsSharedNodes = m_ownerZone < m_donorZone || m_donorZone == -1;
55 m_isActive = has_faces();
58 ZoneConnectivity(std::string name,
int owner_zone, std::string donor_name,
int donor_zone,
62 : m_connectionName(std::move(name)), m_donorName(std::move(donor_name)),
63 m_transform(p_transform), m_ownerRangeBeg(range_beg), m_ownerRangeEnd(range_end),
64 m_donorRangeBeg(donor_beg), m_donorRangeEnd(donor_end), m_ownerZone(owner_zone),
65 m_donorZone(donor_zone), m_ownsSharedNodes(owns_nodes), m_fromDecomp(from_decomp)
69 m_isActive = has_faces();
79 for (
int i = 0; i < 3; i++) {
80 snc *= (std::abs(m_ownerRangeEnd[i] - m_ownerRangeBeg[i]) + 1);
91 IOSS_NODISCARD std::array<IOSS_ZC_INT, 9> transform_matrix()
const;
105 std::string m_connectionName{};
106 std::string m_donorName{};
110 template <
class Archive>
void serialize(Archive &archive)
112 archive(m_connectionName, m_donorName, m_transform, m_ownerRangeBeg, m_ownerRangeEnd,
113 m_ownerOffset, m_donorRangeBeg, m_donorRangeEnd, m_donorOffset, m_ownerGUID,
114 m_donorGUID, m_ownerZone, m_donorZone, m_ownerProcessor, m_donorProcessor,
115 m_sameRange, m_ownsSharedNodes, m_fromDecomp, m_isActive);
132 size_t m_ownerGUID{};
133 size_t m_donorGUID{};
138 int m_ownerProcessor{-1};
139 int m_donorProcessor{-1};
140 bool m_sameRange{
false};
143 bool m_ownsSharedNodes{
false};
146 mutable bool m_fromDecomp{
false};
148 bool m_isActive{
true};
154 IOSS_EXPORT std::ostream &
operator<<(std::ostream &os,
const ZoneConnectivity &zgc);
157#if FMT_VERSION >= 90000
159 template <>
struct formatter<
Ioss::ZoneConnectivity> : ostream_formatter
#define IOSS_NODISCARD
Definition Ioss_CodeTypes.h:54
int IOSS_ZC_INT
Definition Ioss_ZoneConnectivity.h:30
The main namespace for the Ioss library.
Definition Ioad_DatabaseIO.C:40
std::ostream & operator<<(std::ostream &os, const BoundaryCondition &bc)
Definition Ioss_StructuredBlock.C:382
std::array< int, 3 > IJK_t
Definition Ioss_CodeTypes.h:24
Definition Ioss_ZoneConnectivity.h:37
ZoneConnectivity(const ZoneConnectivity ©_from)=default
ZoneConnectivity()=default
IOSS_NODISCARD bool is_from_decomp() const
Definition Ioss_ZoneConnectivity.h:102
IOSS_NODISCARD size_t get_shared_node_count() const
Definition Ioss_ZoneConnectivity.h:76
ZoneConnectivity(std::string name, int owner_zone, std::string donor_name, int donor_zone, const Ioss::IJK_t p_transform, const Ioss::IJK_t range_beg, const Ioss::IJK_t range_end, const Ioss::IJK_t donor_beg, const Ioss::IJK_t donor_end, const Ioss::IJK_t owner_offset=IJK_t(), const Ioss::IJK_t donor_offset=IJK_t())
Definition Ioss_ZoneConnectivity.h:43
void serialize(Archive &archive)
Definition Ioss_ZoneConnectivity.h:110
ZoneConnectivity(std::string name, int owner_zone, std::string donor_name, int donor_zone, Ioss::IJK_t p_transform, Ioss::IJK_t range_beg, Ioss::IJK_t range_end, Ioss::IJK_t donor_beg, Ioss::IJK_t donor_end, bool owns_nodes, bool from_decomp)
Definition Ioss_ZoneConnectivity.h:58
ZoneConnectivity & operator=(const ZoneConnectivity ©_from)=default
IOSS_NODISCARD bool is_active() const
Definition Ioss_ZoneConnectivity.h:103