OOFEM 3.0
Loading...
Searching...
No Matches
connectivitytable.h
Go to the documentation of this file.
1/*
2 *
3 * ##### ##### ###### ###### ### ###
4 * ## ## ## ## ## ## ## ### ##
5 * ## ## ## ## #### #### ## # ##
6 * ## ## ## ## ## ## ## ##
7 * ## ## ## ## ## ## ## ##
8 * ##### ##### ## ###### ## ##
9 *
10 *
11 * OOFEM : Object Oriented Finite Element Code
12 *
13 * Copyright (C) 1993 - 2025 Borek Patzak
14 *
15 *
16 *
17 * Czech Technical University, Faculty of Civil Engineering,
18 * Department of Structural Mechanics, 166 29 Prague, Czech Republic
19 *
20 * This library is free software; you can redistribute it and/or
21 * modify it under the terms of the GNU Lesser General Public
22 * License as published by the Free Software Foundation; either
23 * version 2.1 of the License, or (at your option) any later version.
24 *
25 * This program is distributed in the hope that it will be useful,
26 * but WITHOUT ANY WARRANTY; without even the implied warranty of
27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
28 * Lesser General Public License for more details.
29 *
30 * You should have received a copy of the GNU Lesser General Public
31 * License along with this library; if not, write to the Free Software
32 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
33 */
34
35#ifndef contable_h
36#define contable_h
37
38#include <vector>
39#include <list>
40#include <memory>
41
42#include "oofemenv.h"
43#include "intarray.h"
44#include "domain.h"
45#include "dofmanager.h"
46#include "elementgeometrytype.h"
47
48
49#ifdef _OPENMP
50#include <omp.h>
51#endif
52
53namespace oofem {
54class Domain;
55
63public:
64 struct elementRec {
67 };
68 // boundary entity internal; DOfManagers (ordering is interpolation dependent)
69 // number of dofmans determines the interpolation order on the entity, however,
70 // std::list<std::unique_ptr<DofManager>> dofMans;
71 // we also store the interpolation order explicitly
73 // elements sharing the boundary entity (OPTIONAL, required by DG)
74 // @TODO: We also need mapping from elements to boundary entities
75 std::list<elementRec> elements;
76 // @NOTE this may be redundant,
77 IntArray nodes; // nodes defining the boundary entity and its orientation
78 Element_Geometry_Type geomType; // geometry type of the boundary entity
79 int spatialDimension; // entity spatial dimension (1 for edge, 2 for surface)
80};
81
82
93{
94private:
97
99 std::vector< IntArray > nodalConnectivity;
102
107
108 // shared element boundary entities (edges & surfaces)
109 std::vector<std::unique_ptr<SharedBoundaryEntity>> sharedBoundaryEntities;
110
111#ifdef _OPENMP
112 omp_lock_t initLock;
113#endif
114#ifdef _MSC_VER
115 // workaround for MSVC (compile error)
116 // make the class noncopyable (since it contains vector<unique_ptr<SharedBoundaryEntity>)
117 ConnectivityTable(ConnectivityTable const &)=delete;
118 void operator=(ConnectivityTable const &)=delete;
119#endif
120public:
128 void reset();
129
130 void setDomain(Domain *ipDomain) { domain = ipDomain; }
131
136 void instanciateConnectivityTable();
141 const IntArray *giveDofManConnectivityArray(int dofman);
148 void giveElementNeighbourList(IntArray &answer, const IntArray &elemList);
154 void giveNodeNeighbourList(IntArray &answer, IntArray &nodeList);
160 void giveElementsWithNodes(IntArray &answer, const IntArray& nodes);
161
162
165 void buildElementColoring();
167 int getElementColor(int e);
168
169
171 void buildSharedBoundaryEntities(Domain *d);
173 SharedBoundaryEntity* giveBoundaryEntity(int id);
174};
175} // end namespace oofem
176#endif // conTable_h
bool elementColoringFlag
flag indicating assembled element coloring
Domain * domain
Pointer to domain to which receiver belongs to.
void setDomain(Domain *ipDomain)
std::vector< IntArray > nodalConnectivity
Nodal connectivity table for domain.
int nodalConnectivityFlag
Flag indicating assembled connectivity table for domain.
IntArray elementColoring
Element colors.
std::vector< std::unique_ptr< SharedBoundaryEntity > > sharedBoundaryEntities
std::list< elementRec > elements
Element_Geometry_Type geomType
#define OOFEM_EXPORT
Definition oofemcfg.h:7

This page is part of the OOFEM-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak Bořek Patzák
Project e-mail: oofem@fsv.cvut.cz
Generated at for OOFEM by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2011