OOFEM 3.0
Loading...
Searching...
No Matches
exportregion.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 exportregion_h
36#define exportregion_h
37
38#include "exportmodule.h"
39#include "intarray.h"
41#include "internalstatetype.h"
42#include "unknowntype.h"
43#include "element.h"
44
45
46
47#include <string>
48#include <list>
49
50using namespace std;
51namespace oofem {
55{
56public:
57 typedef uint8_t setMembershipGroupType;
58
60 {
61 numCells = 0;
62 numNodes = 0;
63 numSetGroups = 0;
64 }
65
66 void clear();
67
68 void setNumberOfNodes(int numNodes);
69 int giveNumberOfNodes() { return this->numNodes; }
70
71 void setNumberOfCells(int numCells);
72 int giveNumberOfCells() { return this->numCells; }
73
74 int giveNumberOfSetGroups() { return this->numSetGroups; }
75
76 void setConnectivity(int cellNum, IntArray &nodes);
77 IntArray &giveCellConnectivity(int cellNum) { return this->connectivity [ cellNum - 1 ]; }
78
79 void setCellType(int cellNum, int type) { this->elCellTypes.at(cellNum) = type; }
80 int giveCellType(int cellNum) { return this->elCellTypes.at(cellNum); }
81
82 void setOffset(int cellNum, int offset) { this->elOffsets.at(cellNum) = offset; }
83 int giveCellOffset(int cellNum) { return this->elOffsets.at(cellNum); }
84
85 void setNodeCoords(int nodeNum, const FloatArray &coords);
86 FloatArray &giveNodeCoords(int nodeNum) { return this->nodeCoords [ nodeNum - 1 ]; }
87
88 void setNumberOfPrimaryVarsToExport(const IntArray& primVars, int numNodes);
89 void setNumberOfLoadsToExport(int numVars, int numNodes);
90 void setNumberOfInternalVarsToExport(const IntArray& ists, int numNodes);
91 void setNumberOfInternalXFEMVarsToExport(int numVars, int numEnrichmentItems, int numNodes);
92 void setNumberOfCellVarsToExport(const IntArray& cellVars, int numCells);
94 this->numSetGroups = 1+numSets/8;
95 this->vertexSetMembership.resize(numNodes);
96 for ( int i = 0; i < numNodes; i++ ) {
97 this->vertexSetMembership [ i ].resize(numSetGroups, 0);
98 }
99 this->cellSetMembership.resize(numCells);
100 for ( int i = 0; i < numCells; i++ ) {
101 this->cellSetMembership [ i ].resize(numSetGroups, 0);
102 }
103 }
104
105 void setPrimaryVarInNode(UnknownType type, int nodeNum, FloatArray valueArray);
106 FloatArray &givePrimaryVarInNode(UnknownType type, int nodeNum) { return this->nodeVars [ type ] [ nodeNum - 1 ]; }
107
108 void setLoadInNode(int varNum, int nodeNum, FloatArray valueArray);
109 FloatArray &giveLoadInNode(int varNum, int nodeNum) { return this->nodeLoads [ varNum - 1 ] [ nodeNum - 1 ]; }
110
111 void setInternalVarInNode(InternalStateType type, int nodeNum, FloatArray valueArray);
112 FloatArray &giveInternalVarInNode (InternalStateType type, int nodeNum) { return this->nodeVarsFromIS [ type ] [ nodeNum - 1 ]; }
113
114 void setInternalXFEMVarInNode(int varNum, int eiNum, int nodeNum, FloatArray valueArray);
115 FloatArray &giveInternalXFEMVarInNode(int varNum, int eiNum, int nodeNum) { return this->nodeVarsFromXFEMIS [ varNum - 1 ] [ eiNum - 1 ] [ nodeNum - 1 ]; }
116
117 void setCellVar(InternalStateType type, int cellNum, FloatArray valueArray);
118 FloatArray &giveCellVar(InternalStateType type, int cellNum) { return this->cellVars [ type ] [ cellNum - 1 ]; }
119
120
121 const std::vector<setMembershipGroupType>& getVertexSetMembershipGroup(int inode) { return this->vertexSetMembership [ inode-1 ]; }
122 const std::vector<setMembershipGroupType>& getCellSetMembershipGroup(int icell) { return this->cellSetMembership [ icell-1 ]; }
123 void setVertexSetMembership(int set, int nodeNum) {
124 this->vertexSetMembership [ nodeNum - 1 ][ (set-1) / 8 ] |= 1 << ((set-1) % 8);
125 }
126 void setCellSetMembership(int set, int cellNum) {
127 this->cellSetMembership [ cellNum - 1 ][ (set-1) / 8 ] |= 1 << ((set-1) % 8);
128 }
129 IntArray& getMapG2L () {return this->mapG2L;}
130 IntArray& getMapL2G () {return this->mapL2G;}
131 //void setRegionCells(IntArray& cells) {this->regionElInd = cells;}
133
134 FloatMatrix getVertices () ;
135 IntArray getCellConnectivity ();
136 IntArray getCellTypes ();
137 FloatMatrix getPrimaryVertexValues (UnknownType u);
138 FloatMatrix getInternalVertexValues(InternalStateType u);
139 FloatMatrix getCellValues(InternalStateType u);
140
141
142private:
148 // dofman local->global and global->local region map
150 // region elements
152
153
154 std::vector< FloatArray >nodeCoords; // all the nodes in the piece [node][coords]
155 std::vector< IntArray >connectivity; // cell connectivity [cell][nodes]
156 std::map< UnknownType, std::vector< FloatArray > >nodeVars; // [field][node][valArray]
157 std::vector< std::vector< FloatArray > >nodeLoads; // [field][node][valArray]
158 std::map< InternalStateType, std::vector< FloatArray > >nodeVarsFromIS; // [field][node][valArray]
159 std::vector< std::vector< std::vector< FloatArray > > >nodeVarsFromXFEMIS; // [field][ei][node][valArray]
160 std::map< InternalStateType, std::vector< FloatArray > >cellVars; // [el][field][valArray]
161 // set membership (set membership for each vertex encoded into 8bit uint -? setGroups)
162 std::vector< std::vector<setMembershipGroupType> > vertexSetMembership; // [setGroup][vertex][membership]
163 std::vector< std::vector<setMembershipGroupType> > cellSetMembership; // [setGroup][cell][membership]
164
165};
166
167} // end namespace oofem
168#endif // exportregion_h
IntArray & getMapL2G()
FloatArray & givePrimaryVarInNode(UnknownType type, int nodeNum)
std::vector< std::vector< setMembershipGroupType > > cellSetMembership
void setCellType(int cellNum, int type)
std::vector< std::vector< FloatArray > > nodeLoads
std::map< UnknownType, std::vector< FloatArray > > nodeVars
FloatArray & giveInternalVarInNode(InternalStateType type, int nodeNum)
FloatArray & giveLoadInNode(int varNum, int nodeNum)
FloatArray & giveCellVar(InternalStateType type, int cellNum)
FloatArray & giveInternalXFEMVarInNode(int varNum, int eiNum, int nodeNum)
std::vector< std::vector< setMembershipGroupType > > vertexSetMembership
const std::vector< setMembershipGroupType > & getCellSetMembershipGroup(int icell)
std::vector< FloatArray > nodeCoords
std::map< InternalStateType, std::vector< FloatArray > > cellVars
FloatArray & giveNodeCoords(int nodeNum)
const std::vector< setMembershipGroupType > & getVertexSetMembershipGroup(int inode)
IntArray & getRegionCells()
void setVertexSetMembership(int set, int nodeNum)
IntArray & getMapG2L()
void setNumberOfSetMembershipsToExport(int numSets, int numNodes, int numCells)
void setOffset(int cellNum, int offset)
IntArray & giveCellConnectivity(int cellNum)
int giveCellType(int cellNum)
std::vector< std::vector< std::vector< FloatArray > > > nodeVarsFromXFEMIS
std::map< InternalStateType, std::vector< FloatArray > > nodeVarsFromIS
std::vector< IntArray > connectivity
uint8_t setMembershipGroupType
int giveCellOffset(int cellNum)
void setCellSetMembership(int set, int cellNum)
#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