Skip to content
Snippets Groups Projects
Commit cf2519aa authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Add a global variables manager

It contains only a connectivity identifier manager (which will be
useful for parallel checker and checkpoint/restart mechanisms).

Connectivity has now a unique identifier
parent 1114f1e2
No related branches found
No related tags found
1 merge request!176Add HDF5 support
......@@ -6,6 +6,7 @@
#include <mesh/MeshDataManager.hpp>
#include <mesh/SynchronizerManager.hpp>
#include <utils/ExecutionStatManager.hpp>
#include <utils/GlobalVariableManager.hpp>
#include <utils/PugsUtils.hpp>
#include <utils/RandomEngine.hpp>
......@@ -24,9 +25,13 @@ main(int argc, char* argv[])
DualConnectivityManager::create();
DualMeshManager::create();
GlobalVariableManager::create();
parser(filename);
ExecutionStatManager::printInfo();
GlobalVariableManager::destroy();
DualMeshManager::destroy();
DualConnectivityManager::destroy();
MeshDataManager::destroy();
......
......@@ -2,12 +2,16 @@
#include <mesh/ConnectivityDescriptor.hpp>
#include <mesh/ItemValueUtils.hpp>
#include <utils/GlobalVariableManager.hpp>
#include <utils/Messenger.hpp>
#include <map>
template <size_t Dimension>
Connectivity<Dimension>::Connectivity() = default;
Connectivity<Dimension>::Connectivity() : m_id{GlobalVariableManager::instance().getAndIncrementConnectivityId()}
{
Assert(parallel::allReduceMin(m_id) == m_id, "Parallel connectivity with different ids");
}
template <size_t Dimension>
void
......
......@@ -50,6 +50,8 @@ class Connectivity final : public IConnectivity
}
private:
const size_t m_id;
size_t m_number_of_cells;
size_t m_number_of_faces;
size_t m_number_of_edges;
......@@ -115,6 +117,12 @@ class Connectivity final : public IConnectivity
friend class ConnectivityComputer;
public:
size_t
id() const
{
return m_id;
}
PUGS_INLINE
const ConnectivityMatrix&
getMatrix(const ItemType& item_type_0, const ItemType& item_type_1) const final
......
......@@ -10,6 +10,7 @@ add_library(
Exceptions.cpp
ExecutionStatManager.cpp
FPEManager.cpp
GlobalVariableManager.cpp
Messenger.cpp
Partitioner.cpp
PETScWrapper.cpp
......
#include <utils/GlobalVariableManager.hpp>
GlobalVariableManager* GlobalVariableManager::m_instance = nullptr;
void
GlobalVariableManager::create()
{
Assert(m_instance == nullptr);
m_instance = new GlobalVariableManager;
}
void
GlobalVariableManager::destroy()
{
Assert(m_instance != nullptr);
delete m_instance;
m_instance = nullptr;
}
#ifndef GLOBAL_VARIABLE_MANAGER_HPP
#define GLOBAL_VARIABLE_MANAGER_HPP
#include <utils/PugsAssert.hpp>
#include <utils/PugsMacros.hpp>
class GlobalVariableManager
{
private:
size_t m_connectivity_id = 0;
static GlobalVariableManager* m_instance;
explicit GlobalVariableManager() = default;
GlobalVariableManager(GlobalVariableManager&&) = delete;
GlobalVariableManager(const GlobalVariableManager&) = delete;
~GlobalVariableManager() = default;
public:
PUGS_INLINE
size_t
getAndIncrementConnectivityId()
{
return m_connectivity_id++;
}
PUGS_INLINE
static GlobalVariableManager&
instance()
{
Assert(m_instance != nullptr);
return *m_instance;
}
static void create();
static void destroy();
};
#endif // GLOBAL_VARIABLE_MANAGER_HPP
......@@ -8,6 +8,7 @@
#include <mesh/DualMeshManager.hpp>
#include <mesh/MeshDataManager.hpp>
#include <mesh/SynchronizerManager.hpp>
#include <utils/GlobalVariableManager.hpp>
#include <utils/Messenger.hpp>
#include <utils/PETScWrapper.hpp>
#include <utils/RandomEngine.hpp>
......@@ -95,6 +96,7 @@ main(int argc, char* argv[])
MeshDataManager::create();
DualConnectivityManager::create();
DualMeshManager::create();
GlobalVariableManager::create();
MeshDataBaseForTests::create();
......@@ -106,6 +108,7 @@ main(int argc, char* argv[])
MeshDataBaseForTests::destroy();
GlobalVariableManager::destroy();
DualMeshManager::destroy();
DualConnectivityManager::destroy();
MeshDataManager::destroy();
......
......@@ -8,6 +8,7 @@
#include <mesh/DualMeshManager.hpp>
#include <mesh/MeshDataManager.hpp>
#include <mesh/SynchronizerManager.hpp>
#include <utils/GlobalVariableManager.hpp>
#include <utils/Messenger.hpp>
#include <utils/PETScWrapper.hpp>
#include <utils/RandomEngine.hpp>
......@@ -54,6 +55,7 @@ main(int argc, char* argv[])
MeshDataManager::create();
DualConnectivityManager::create();
DualMeshManager::create();
GlobalVariableManager::create();
MeshDataBaseForTests::create();
......@@ -65,6 +67,7 @@ main(int argc, char* argv[])
MeshDataBaseForTests::destroy();
GlobalVariableManager::destroy();
DualMeshManager::destroy();
DualConnectivityManager::destroy();
MeshDataManager::destroy();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment