OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
igaelements.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 - 2013 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 igaelements_h
36 #define igaelements_h
37 
38 #include "iga/iga.h"
39 #include "iga/feibspline.h"
40 #include "iga/feinurbs.h"
41 #include "iga/feitspline.h"
42 #include "../sm/Elements/PlaneStress/planestresselementevaluator.h"
43 #include "../sm/Elements/3D/space3delementevaluator.h"
44 #include "floatarray.h"
45 #include "floatmatrix.h"
46 #include "matresponsemode.h"
47 #include "mathfem.h"
48 
49 #define _IFT_BsplinePlaneStressElement_Name "bsplineplanestresselement"
50 #define _IFT_NURBSPlaneStressElement_Name "nurbsplanestresselement"
51 #define _IFT_TSplinePlaneStressElement_Name "tsplineplanestresselement"
52 #define _IFT_NURBSSpace3dElement_Name "nurbs3delement"
53 
54 namespace oofem {
56 {
57 protected:
59 
60 public:
61  BsplinePlaneStressElement(int n, Domain * aDomain);
62 
64  virtual int checkConsistency();
65 
66  virtual void giveCharacteristicMatrix(FloatMatrix &answer, CharType mtrx, TimeStep *tStep) {
68  }
69  virtual void giveCharacteristicVector(FloatArray &answer, CharType type, ValueModeType mode, TimeStep *t) {
71  }
72 
73  virtual FEInterpolation *giveInterpolation() const { return const_cast< BSplineInterpolation * >(& this->interpolation); }
74  virtual Element *giveElement() { return this; }
75  virtual void giveDofManDofIDMask(int inode, IntArray &answer) const {
77  }
78  virtual int computeNumberOfDofs() { return numberOfDofMans * 2; }
80  // definition & identification
81  virtual const char *giveInputRecordName() const { return _IFT_BsplinePlaneStressElement_Name; }
82  virtual const char *giveClassName() const { return "BsplinePlaneStressElement"; }
83 
84 #ifdef __OOFEG
85  // Graphics output
86  virtual void drawScalar(oofegGraphicContext &gc, TimeStep *tStep);
88  drawIGAPatchDeformedGeometry(this, this, gc, tStep, ut);
89  }
90 #endif
91 
92 protected:
93  virtual int giveNsd() { return 2; }
94 };
95 
96 
98 {
99 protected:
101 
102 public:
103  NURBSPlaneStressElement(int n, Domain * aDomain);
104 
106  virtual int checkConsistency();
107 
108  virtual void giveCharacteristicMatrix(FloatMatrix &answer, CharType mtrx, TimeStep *tStep) {
110  }
111  virtual void giveCharacteristicVector(FloatArray &answer, CharType type, ValueModeType mode, TimeStep *t) {
113  }
114 
115  virtual FEInterpolation *giveInterpolation() const { return const_cast< NURBSInterpolation * >(& this->interpolation); }
116  virtual Element *giveElement() { return this; }
117  virtual void giveDofManDofIDMask(int inode, IntArray &answer) const {
119  }
120  virtual int computeNumberOfDofs() { return numberOfDofMans * 2; }
122  // definition & identification
123  virtual const char *giveInputRecordName() const { return _IFT_NURBSPlaneStressElement_Name; }
124  virtual const char *giveClassName() const { return "NURBSPlaneStressElement"; }
125 #ifdef __OOFEG
126  //
127  // Graphics output
128  //
129  virtual void drawScalar(oofegGraphicContext &gc, TimeStep *tStep);
131  drawIGAPatchDeformedGeometry(this, this, gc, tStep, ut);
132  }
133 
134 #endif
135 
136 protected:
137  virtual int giveNsd() { return 2; }
138 };
139 
140 
141 
143 {
144 protected:
146 
147 public:
148  TSplinePlaneStressElement(int n, Domain * aDomain);
149 
152  //PlaneStressStructuralElementEvaluator::initializeFrom(ir);
153  return IRRT_OK;
154  }
155 
156  virtual void giveCharacteristicMatrix(FloatMatrix &answer, CharType mtrx, TimeStep *tStep) {
158  }
159  virtual void giveCharacteristicVector(FloatArray &answer, CharType type, ValueModeType mode, TimeStep *t) {
161  }
162 
163  virtual FEInterpolation *giveInterpolation() const { return const_cast< TSplineInterpolation * >(& this->interpolation); }
164  virtual Element *giveElement() { return this; }
165  virtual void giveDofManDofIDMask(int inode, IntArray &answer) const {
167  }
168  virtual int computeNumberOfDofs() { return numberOfDofMans * 2; }
170  // definition & identification
171  virtual const char *giveInputRecordName() const { return _IFT_TSplinePlaneStressElement_Name; }
172  virtual const char *giveClassName() const { return "TSplinePlaneStressElement"; }
173 #ifdef __OOFEG
174  // Graphics output
175  virtual void drawScalar(oofegGraphicContext &gc, TimeStep *tStep);
176 #endif
177 
178 protected:
179  virtual int giveNsd() { return 2; }
180 };
181 
182 
184 {
185 protected:
187 
188 public:
189  NURBSSpace3dElement(int n, Domain * aDomain);
190 
192  virtual int checkConsistency();
193 
194  virtual void giveCharacteristicMatrix(FloatMatrix &answer, CharType mtrx, TimeStep *tStep) {
196  }
197  virtual void giveCharacteristicVector(FloatArray &answer, CharType type, ValueModeType mode, TimeStep *t) {
199  }
200 
201  virtual FEInterpolation *giveInterpolation() const { return const_cast< NURBSInterpolation * >(& this->interpolation); }
202  virtual Element *giveElement() { return this; }
203 
204  virtual void giveDofManDofIDMask(int inode, IntArray &answer) const {
206  }
207  virtual int computeNumberOfDofs() { return numberOfDofMans * 3; }
209  // definition & identification
210  virtual const char *giveInputRecordName() const { return _IFT_NURBSSpace3dElement_Name; }
211  virtual const char *giveClassName() const { return "NURBSSpace3dElement"; }
212 #ifdef __OOFEG
213  // Graphics output
214  virtual void drawScalar(oofegGraphicContext &gc, TimeStep *tStep);
216  drawIGAPatchDeformedGeometry(this, this, gc, tStep, ut);
217  }
218 #endif
219 
220 protected:
221  virtual int giveNsd() { return 3; }
222 };
223 } // end namespace oofem
224 #endif //igaelements_h
BSplineInterpolation interpolation
Definition: igaelements.h:58
void giveDofManDofIDMask(int inode, IntArray &answer) const
Interpolation for B-splines.
Definition: feibspline.h:60
#define _IFT_NURBSPlaneStressElement_Name
Definition: igaelements.h:50
virtual FEInterpolation * giveInterpolation() const
Definition: igaelements.h:73
Interpolation class for NURBS.
Definition: feinurbs.h:47
virtual void updateInternalState(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
Definition: igaelements.h:121
Class and object Domain.
Definition: domain.h:115
virtual int checkConsistency()
Performs consistency check.
Definition: igaelements.C:72
IGATSplineElement setups integration rules differently from IGAElement.
Definition: iga.h:123
virtual void giveCharacteristicVector(FloatArray &answer, CharType type, ValueModeType mode, TimeStep *t)
Computes characteristic vector of receiver of requested type in given time step.
Definition: igaelements.h:69
General purpose 3d structural element evaluator.
virtual const char * giveInputRecordName() const
Definition: igaelements.h:123
virtual int computeNumberOfDofs()
Computes or simply returns total number of element&#39;s local DOFs.
Definition: igaelements.h:168
virtual void updateInternalState(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
Definition: igaelements.h:208
virtual void giveCharacteristicVector(FloatArray &answer, CharType type, ValueModeType mode, TimeStep *tStep)
virtual FEInterpolation * giveInterpolation() const
Definition: igaelements.h:163
virtual FEInterpolation * giveInterpolation() const
Definition: igaelements.h:201
virtual void giveCharacteristicVector(FloatArray &answer, CharType type, ValueModeType mode, TimeStep *t)
Computes characteristic vector of receiver of requested type in given time step.
Definition: igaelements.h:111
virtual void giveCharacteristicMatrix(FloatMatrix &answer, CharType mtrx, TimeStep *tStep)
Definition: igaelements.h:156
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
Definition: valuemodetype.h:78
void giveDofManDofIDMask(int inode, IntArray &answer) const
virtual Element * giveElement()
Definition: igaelements.h:74
virtual void giveCharacteristicMatrix(FloatMatrix &answer, CharType mtrx, TimeStep *tStep)
Computes characteristic matrix of receiver of requested type in given time step.
Definition: igaelements.h:194
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]
virtual const char * giveClassName() const
Definition: igaelements.h:172
Abstract base class for all finite elements.
Definition: element.h:145
virtual Element * giveElement()
Definition: igaelements.h:202
virtual void giveCharacteristicMatrix(FloatMatrix &answer, CharType mtrx, TimeStep *tStep)
Computes characteristic matrix of receiver of requested type in given time step.
Definition: igaelements.h:66
Class implementing an array of integers.
Definition: intarray.h:61
virtual FEInterpolation * giveInterpolation() const
Definition: igaelements.h:115
virtual void drawDeformedGeometry(oofegGraphicContext &gc, TimeStep *tStep, UnknownType ut)
Definition: igaelements.h:87
virtual void giveCharacteristicMatrix(FloatMatrix &answer, CharType mtrx, TimeStep *tStep)
#define _IFT_TSplinePlaneStressElement_Name
Definition: igaelements.h:51
Class representing a general abstraction for finite element interpolation class.
Definition: feinterpol.h:132
virtual int computeNumberOfDofs()
Computes or simply returns total number of element&#39;s local DOFs.
Definition: igaelements.h:120
Implements base IGAElement, supposed to be a parent class of all elements with B-spline or NURBS base...
Definition: iga.h:96
virtual void drawDeformedGeometry(oofegGraphicContext &gc, TimeStep *tStep, UnknownType ut)
Definition: igaelements.h:130
virtual const char * giveClassName() const
Definition: igaelements.h:211
virtual const char * giveClassName() const
Definition: igaelements.h:82
virtual void giveDofManDofIDMask(int inode, IntArray &answer) const
Returns dofmanager dof mask for node.
Definition: igaelements.h:117
UnknownType
Type representing particular unknown (its physical meaning).
Definition: unknowntype.h:55
virtual void giveDofManDofIDMask(int inode, IntArray &answer) const
Returns dofmanager dof mask for node.
Definition: igaelements.h:165
virtual void updateInternalState(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
Definition: igaelements.h:79
friend void drawIGAPatchDeformedGeometry(Element *elem, StructuralElementEvaluator *se, oofegGraphicContext &gc, TimeStep *tStep, UnknownType)
Definition: iga.C:1006
IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: iga.C:212
virtual void giveDofManDofIDMask(int inode, IntArray &answer) const
Returns dofmanager dof mask for node.
Definition: igaelements.h:204
Class representing vector of real numbers.
Definition: floatarray.h:82
virtual const char * giveClassName() const
Definition: igaelements.h:124
virtual int computeNumberOfDofs()
Computes or simply returns total number of element&#39;s local DOFs.
Definition: igaelements.h:78
Implementation of matrix containing floating point numbers.
Definition: floatmatrix.h:94
IRResultType
Type defining the return values of InputRecord reading operations.
Definition: irresulttype.h:47
TSplineInterpolation interpolation
Definition: igaelements.h:145
virtual int computeNumberOfDofs()
Computes or simply returns total number of element&#39;s local DOFs.
Definition: igaelements.h:207
NURBSInterpolation interpolation
Definition: igaelements.h:186
virtual const char * giveInputRecordName() const
Definition: igaelements.h:81
virtual void giveCharacteristicVector(FloatArray &answer, CharType type, ValueModeType mode, TimeStep *t)
Definition: igaelements.h:159
CharType
Definition: chartype.h:87
virtual void giveDofManDofIDMask(int inode, IntArray &answer) const
Returns dofmanager dof mask for node.
Definition: igaelements.h:75
Class representing the general Input Record.
Definition: inputrecord.h:101
BsplinePlaneStressElement(int n, Domain *aDomain)
Definition: igaelements.C:62
virtual void drawDeformedGeometry(oofegGraphicContext &gc, TimeStep *tStep, UnknownType ut)
Definition: igaelements.h:215
#define _IFT_BsplinePlaneStressElement_Name
Definition: igaelements.h:49
virtual void drawScalar(oofegGraphicContext &gc, TimeStep *tStep)
Definition: igaelements.C:141
General purpose Plane stress structural element evaluator.
virtual void updateInternalState(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
Definition: igaelements.h:169
NURBSInterpolation interpolation
Definition: igaelements.h:100
virtual const char * giveInputRecordName() const
Definition: igaelements.h:210
virtual const char * giveInputRecordName() const
Definition: igaelements.h:171
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: igaelements.C:65
the oofem namespace is to define a context or scope in which all oofem names are defined.
virtual void giveCharacteristicVector(FloatArray &answer, CharType type, ValueModeType mode, TimeStep *t)
Computes characteristic vector of receiver of requested type in given time step.
Definition: igaelements.h:197
#define _IFT_NURBSSpace3dElement_Name
Definition: igaelements.h:52
virtual void giveCharacteristicMatrix(FloatMatrix &answer, CharType mtrx, TimeStep *tStep)
Computes characteristic matrix of receiver of requested type in given time step.
Definition: igaelements.h:108
Interpolation for T-splines.
Definition: feitspline.h:61
Class representing solution step.
Definition: timestep.h:80
virtual Element * giveElement()
Definition: igaelements.h:164
int numberOfDofMans
Number of dofmanagers.
Definition: element.h:149
virtual Element * giveElement()
Definition: igaelements.h:116
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: igaelements.h:150

This page is part of the OOFEM documentation. Copyright (c) 2011 Borek Patzak
Project e-mail: info@oofem.org
Generated at Tue Jan 2 2018 20:07:29 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011