GEOSX
MeshLevel.hpp
Go to the documentation of this file.
1 /*
2  * ------------------------------------------------------------------------------------------------------------
3  * SPDX-License-Identifier: LGPL-2.1-only
4  *
5  * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC
6  * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University
7  * Copyright (c) 2018-2020 Total, S.A
8  * Copyright (c) 2019- GEOSX Contributors
9  * All rights reserved
10  *
11  * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
12  * ------------------------------------------------------------------------------------------------------------
13  */
14 
19 #ifndef GEOSX_MESH_MESHLEVEL_HPP_
20 #define GEOSX_MESH_MESHLEVEL_HPP_
21 
22 #include "NodeManager.hpp"
23 #include "EdgeManager.hpp"
24 #include "ElementRegionManager.hpp"
25 #include "FaceManager.hpp"
26 
27 namespace geosx
28 {
29 class ElementRegionManager;
30 
39 {
40 public:
41 
47  MeshLevel( string const & name,
48  Group * const parent );
49  virtual ~MeshLevel() override;
50 
61  localIndex_array & nodeAdjacencyList,
62  localIndex_array & edgeAdjacencyList,
63  localIndex_array & faceAdjacencyList,
65  integer const depth );
66 
67 
68  virtual void InitializePostInitialConditions_PostSubGroups( Group * const ) override;
69 
71 
72  struct viewStructKeys
73  {
74  dataRepository::ViewKey meshLevel = { "meshLevel" };
75  } viewKeys;
76 
77  struct groupStructKeys
78  {
79  dataRepository::GroupKey vertexManager = { "vertexManager" };
80  dataRepository::GroupKey cellManager = { "cellManager" };
81 
82  static constexpr auto nodeManagerString = "nodeManager";
83  static constexpr auto edgeManagerString = "edgeManager";
84  static constexpr auto faceManagerString = "faceManager";
85 
86  // This key is defined in problem manager:
87  static constexpr auto elemManagerString = "ElementRegions";
88 
89  static constexpr auto embSurfEdgeManagerString = "embeddedSurfacesEdgeManager";
90 
91  dataRepository::GroupKey nodeManager = {nodeManagerString};
92  dataRepository::GroupKey edgeManager = {edgeManagerString};
93  dataRepository::GroupKey faceManager = {faceManagerString};
94  dataRepository::GroupKey elemManager = {elemManagerString};
95  dataRepository::GroupKey embSurfEdgeManager = {embSurfEdgeManagerString};
96  } groupKeys;
97 
99 
103 
109  NodeManager const * getNodeManager() const { return &m_nodeManager; }
113  NodeManager * getNodeManager() { return &m_nodeManager; }
114 
119  EdgeManager const * getEdgeManager() const { return &m_edgeManager; }
123  EdgeManager * getEdgeManager() { return &m_edgeManager; }
124 
129  FaceManager const * getFaceManager() const { return &m_faceManager; }
133  FaceManager * getFaceManager() { return &m_faceManager; }
134 
139  ElementRegionManager const * getElemManager() const { return &m_elementManager; }
143  ElementRegionManager * getElemManager() { return &m_elementManager; }
144 
149  EdgeManager const & getEmbdSurfEdgeManager() const { return m_embSurfEdgeManager; }
150 
154  EdgeManager & getEmbdSurfEdgeManager() { return m_embSurfEdgeManager; }
155 
157 
158 private:
159 
161  NodeManager m_nodeManager;
163  EdgeManager m_edgeManager;
165  FaceManager m_faceManager;
167  ElementRegionManager m_elementManager;
169  EdgeManager m_embSurfEdgeManager;
170 
171 };
172 
173 } /* namespace geosx */
174 
175 #endif /* GEOSX_MESH_MESHLEVEL_HPP_ */
EdgeManager & getEmbdSurfEdgeManager()
Get the edge Manager related to the embedded surfaces grid.
Definition: MeshLevel.hpp:154
virtual void InitializePostInitialConditions_PostSubGroups(Group *const) override
Called by InitializePostInitialConditions() after to initializing sub-Groups.
Class facilitating the representation of a multi-level discretization of a MeshBody.
Definition: MeshLevel.hpp:38
MeshLevel(string const &name, Group *const parent)
Constructor for the MeshLevel object.
The NodeManager class provides an interface to ObjectManagerBase in order to manage node data...
Definition: NodeManager.hpp:47
void GenerateAdjacencyLists(arrayView1d< localIndex const > const &seedNodeList, localIndex_array &nodeAdjacencyList, localIndex_array &edgeAdjacencyList, localIndex_array &faceAdjacencyList, ElementRegionManager::ElementViewAccessor< ReferenceWrapper< localIndex_array > > &elementAdjacencyList, integer const depth)
Collects the nodes, edges, faces, and elements that are adjacent to a given list of nodes...
This class serves to provide a "view" of a multidimensional array.
Definition: ArrayView.hpp:67
FaceManager * getFaceManager()
Get the face manager.
Definition: MeshLevel.hpp:133
ElementRegionManager const * getElemManager() const
Get the element region manager.
Definition: MeshLevel.hpp:139
Group::wrapperMap::KeyIndex ViewKey
Type alias for KeyIndexT type used for wrapper lookups.
Definition: Group.hpp:1545
std::int32_t integer
Signed integer type.
Definition: DataTypes.hpp:122
contains the added group access keys to be bound with class in group hierarchy
NodeManager * getNodeManager()
Get the node manager.
Definition: MeshLevel.hpp:113
This class provides an interface to ObjectManagerBase in order to manage edge data.
Definition: EdgeManager.hpp:42
ElementRegionManager * getElemManager()
Get the element region manager.
Definition: MeshLevel.hpp:143
EdgeManager const & getEmbdSurfEdgeManager() const
Get the edge Manager related to the embedded surfaces grid.
Definition: MeshLevel.hpp:149
EdgeManager const * getEdgeManager() const
Get the edge manager.
Definition: MeshLevel.hpp:119
The ElementRegionManager class provides an interface to ObjectManagerBase in order to manage ElementR...
The FaceManager class provides an interface to ObjectManagerBase in order to manage face data...
Definition: FaceManager.hpp:40
FaceManager const * getFaceManager() const
Get the face manager.
Definition: MeshLevel.hpp:129
This class provides a fixed dimensional resizeable array interface in addition to an interface simila...
Definition: Array.hpp:55
EdgeManager * getEdgeManager()
Get the edge manager.
Definition: MeshLevel.hpp:123
NodeManager const * getNodeManager() const
Get the node manager.
Definition: MeshLevel.hpp:109