IOSS 2.0
Ioss_DynamicTopologyObserver.h
Go to the documentation of this file.
1// Copyright(C) 2024, 2025 National Technology & Engineering Solutions
2// of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
3// NTESS, the U.S. Government retains certain rights in this software.
4//
5// See packages/seacas/LICENSE for details
6
7#pragma once
8
10
11#include "Ioss_CodeTypes.h"
12#include "Ioss_DBUsage.h"
13#include "Ioss_DatabaseIO.h" // for DatabaseIO
14#include "Ioss_ParallelUtils.h" // for ParallelUtils
15#include "Ioss_PropertyManager.h" // for PropertyManager
16#include "Ioss_Utils.h"
17#include "ioss_export.h"
18
19#include <cstddef> // for size_t, nullptr
20#include <cstdint> // for int64_t
21#include <iomanip>
22#include <sstream>
23#include <string> // for string, operator<
24
25namespace Ioss {
26 class Region;
28
29 class IOSS_EXPORT DynamicTopologyObserver
30 {
31 public:
32 explicit DynamicTopologyObserver(Region *region) : m_region(region) {}
33
34 virtual ~DynamicTopologyObserver() = default;
35
37 virtual void reset_topology_modification();
38 virtual void set_topology_modification(unsigned int type);
39 virtual void sync_topology_modification(unsigned int modFlag, unsigned int cumulativeModFlag);
40 IOSS_NODISCARD virtual unsigned int get_topology_modification() const;
41
42 IOSS_NODISCARD virtual unsigned int get_cumulative_topology_modification() const;
43 virtual void set_cumulative_topology_modification(unsigned int type);
44
46
47 IOSS_NODISCARD virtual bool is_topology_modified() const;
50
51 void set_automatic_restart(bool flag) { m_automaticRestart = flag; }
52 void set_restart_requested(bool flag) { m_restartRequested = flag; }
53
55 {
56 return std::string("CUMULATIVE_TOPOLOGY_MODIFICATION");
57 }
58
59 void register_region(Region *region);
61
62 void register_notifier(DynamicTopologyNotifier *notifier);
64
65 virtual void define_model();
66 virtual void write_model();
67 virtual void define_transient();
68
73
74 IOSS_NODISCARD virtual bool needs_new_output_file() const;
75
76 virtual void initialize_region();
77
78 protected:
79 Region *m_region{nullptr};
82
83 bool m_automaticRestart{false};
84 bool m_restartRequested{false};
85
87
88 void verify_region_is_registered() const;
89 IOSS_NODISCARD const ParallelUtils &util() const;
90 void synchronize_topology_modified_flags();
91
92 void set_topology_modification_nl(unsigned int type);
93
94 private:
96 };
97
98} // namespace Ioss
#define IOSS_NODISCARD
Definition Ioss_CodeTypes.h:56
Definition Ioss_DynamicTopologyNotifier.h:29
bool m_automaticRestart
Definition Ioss_DynamicTopologyObserver.h:83
virtual IOSS_NODISCARD bool is_restart_requested() const
Definition Ioss_DynamicTopologyObserver.h:49
virtual IOSS_NODISCARD unsigned int get_topology_modification() const
Definition Ioss_DynamicTopologyObserver.C:95
virtual IOSS_NODISCARD FileControlOption get_control_option() const
Definition Ioss_DynamicTopologyObserver.h:69
DynamicTopologyObserver(Region *region)
Definition Ioss_DynamicTopologyObserver.h:32
unsigned int m_topologyModification
Definition Ioss_DynamicTopologyObserver.h:80
void set_restart_requested(bool flag)
Definition Ioss_DynamicTopologyObserver.h:52
bool m_restartRequested
Definition Ioss_DynamicTopologyObserver.h:84
static IOSS_NODISCARD std::string topology_modification_change_name()
Definition Ioss_DynamicTopologyObserver.h:54
virtual void set_cumulative_topology_modification(unsigned int type)
Definition Ioss_DynamicTopologyObserver.C:85
virtual void reset_topology_modification()
Definition Ioss_DynamicTopologyObserver.C:126
virtual void set_topology_modification(unsigned int type)
Definition Ioss_DynamicTopologyObserver.C:113
DynamicTopologyNotifier * m_notifier
Definition Ioss_DynamicTopologyObserver.h:86
virtual void sync_topology_modification(unsigned int modFlag, unsigned int cumulativeModFlag)
Definition Ioss_DynamicTopologyObserver.C:106
Region * m_region
Definition Ioss_DynamicTopologyObserver.h:79
virtual void reset_topology_modification_all()
Definition Ioss_DynamicTopologyObserver.C:131
unsigned int m_cumulativeTopologyModification
Definition Ioss_DynamicTopologyObserver.h:81
virtual IOSS_NODISCARD bool is_topology_modified() const
Definition Ioss_DynamicTopologyObserver.C:144
virtual IOSS_NODISCARD bool is_automatic_restart() const
Definition Ioss_DynamicTopologyObserver.h:48
virtual ~DynamicTopologyObserver()=default
IOSS_NODISCARD Region * get_region() const
Definition Ioss_DynamicTopologyObserver.h:60
void set_automatic_restart(bool flag)
Definition Ioss_DynamicTopologyObserver.h:51
IOSS_NODISCARD int get_cumulative_topology_modification_field()
Definition Ioss_DynamicTopologyObserver.C:173
IOSS_NODISCARD DynamicTopologyNotifier * get_notifier() const
Definition Ioss_DynamicTopologyObserver.h:63
virtual IOSS_NODISCARD unsigned int get_cumulative_topology_modification() const
Definition Ioss_DynamicTopologyObserver.C:90
Definition Ioss_ParallelUtils.h:32
A grouping entity that contains other grouping entities.
Definition Ioss_Region.h:93
The main namespace for the Ioss library.
Definition Ioad_DatabaseIO.C:40
FileControlOption
Definition Ioss_DynamicTopology.h:46
@ CONTROL_NONE
Definition Ioss_DynamicTopology.h:46
@ TOPOLOGY_SAME
No change, also used for initialization.
Definition Ioss_DynamicTopology.h:28