OOFEM 3.0
Loading...
Searching...
No Matches
element.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 element_h
36#define element_h
37
38#include "femcmpnn.h"
39#include "error.h"
40#include "chartype.h"
41#include "domain.h"
42#include "dofmanager.h"
43#include "floatmatrix.h"
44#include "integrationdomain.h"
45#include "materialmode.h"
46#include "elementgeometrytype.h"
47#include "valuemodetype.h"
48#include "internalstatemode.h"
49#include "internalstatetype.h"
50#include "elementextension.h"
52#include "matresponsemode.h"
53#include "unknowntype.h"
54#include "integrationrule.h"
55#include "dofiditem.h"
56#include "floatarray.h"
57
58#include <cstdio>
59#include <vector>
60#include <memory>
61
62namespace oofem {
63class TimeStep;
64class Node;
65class Material;
66class IntegrationRule;
67class GaussPoint;
68class IntArray;
69class CrossSection;
70class ElementSide;
71class FEInterpolation;
72class Load;
73class BoundaryLoad;
74class BodyLoad;
75class SurfaceLoad;
76class EdgeLoad;
77class PrimaryField;
79class ParamKey;
80
91
92
133{
134protected:
157 std::vector< std :: unique_ptr< IntegrationRule > > integrationRulesArray;
158
161
164
171
176
179
185
196
197public:
208
209
210public:
216 Element(int n, Domain * aDomain);
217 Element(const Element& src) = delete;
218 Element &operator = (const Element &src) = delete;
220 virtual ~Element();
221
224
228 void giveLocationArray(IntArray &locationArray, const UnknownNumberingScheme &s, IntArray *dofIds = NULL) const;
229 void giveLocationArray(IntArray &locationArray, const IntArray &dofIDMask, const UnknownNumberingScheme &s, IntArray *dofIds = NULL) const;
234 virtual void giveBoundaryLocationArray(IntArray &locationArray, const IntArray &bNodes, const UnknownNumberingScheme &s, IntArray *dofIds = NULL);
235 virtual void giveBoundaryLocationArray(IntArray &locationArray, const IntArray &bNodes, const IntArray &dofIDMask, const UnknownNumberingScheme &s, IntArray *dofIds = NULL);
239 virtual int giveNumberOfDofs() { return 0; }
243 virtual int giveNumberOfInternalDofManagers() const { return 0; }
249 virtual DofManager *giveInternalDofManager(int i) const {
250 OOFEM_ERROR("No such DOF available on Element %d", number);
251 }
252 virtual void setInternalDofManager(int num, std::unique_ptr<DofManager> dm) {}
253
255
262
270 virtual void giveCharacteristicMatrix(FloatMatrix &answer, CharType type, TimeStep *tStep);
280 virtual void giveCharacteristicVector(FloatArray &answer, CharType type, ValueModeType mode, TimeStep *tStep);
289 virtual double giveCharacteristicValue(CharType type, TimeStep *tStep);
291
296
304 virtual void computeLoadVector(FloatArray &answer, BodyLoad *load, CharType type, ValueModeType mode, TimeStep *tStep);
320 virtual void computeBoundarySurfaceLoadVector(FloatArray &answer, BoundaryLoad *load, int boundary, CharType type, ValueModeType mode, TimeStep *tStep, bool global=true);
330 virtual void computeTangentFromSurfaceLoad(FloatMatrix &answer, BoundaryLoad *load, int boundary, MatResponseMode rmode, TimeStep *tStep);
340 virtual void computeTangentFromEdgeLoad(FloatMatrix &answer, BoundaryLoad *load, int boundary, MatResponseMode rmode, TimeStep *tStep);
355 virtual void computeBoundaryEdgeLoadVector(FloatArray &answer, BoundaryLoad *load, int edge, CharType type, ValueModeType mode, TimeStep *tStep, bool global=true);
356
361 const IntArray& giveBodyLoadList() const {return this->bodyLoadArray;}
365 const IntArray& giveBoundaryLoadList() const {return this->boundaryLoadArray;}
366
368
371
387 void computeVectorOf(ValueModeType u, TimeStep *tStep, FloatArray &answer);
388 void computeVectorOf(const IntArray &dofIDMask, ValueModeType u, TimeStep *tStep, FloatArray &answer, bool padding = false);
397 void computeBoundaryVectorOf(const IntArray &bNodes, const IntArray &dofIDMask, ValueModeType u, TimeStep *tStep, FloatArray &answer, bool padding = false);
410 void computeVectorOf(PrimaryField &field, const IntArray &dofIDMask, ValueModeType u, TimeStep *tStep, FloatArray &answer, bool padding = false);
418 void computeVectorOfPrescribed(ValueModeType u, TimeStep *tStep, FloatArray &answer);
429 void computeVectorOfPrescribed(const IntArray &dofIDMask, ValueModeType type, TimeStep *tStep, FloatArray &answer);
430
436 virtual int computeNumberOfDofs() { return 0; }
442 virtual int computeNumberOfGlobalDofs();
447 int computeNumberOfPrimaryMasterDofs();
455 virtual bool computeGtoLRotationMatrix(FloatMatrix &answer);
462 virtual bool giveRotationMatrix(FloatMatrix &answer);
475 virtual bool computeDofTransformationMatrix(FloatMatrix &answer, const IntArray &nodes, bool includeInternal);
488 virtual void giveDofManDofIDMask(int inode, IntArray &answer) const { answer.clear(); }
501 virtual void giveInternalDofManDofIDMask(int inode, IntArray &answer) const
502 { answer.clear(); }
503
510 virtual void giveElementDofIDMask(IntArray &answer) const { this->giveDofManDofIDMask(1, answer); }
520 virtual void computeField(ValueModeType mode, TimeStep *tStep, const FloatArray &lcoords, FloatArray &answer)
521 { OOFEM_ERROR("Missing support for computing unknown vector at local element coordinates\n"); }
522
530 virtual double computeVolumeAround(GaussPoint *gp) { return 0.; }
532 virtual double computeVolumeAreaOrLength();
537 double computeMeanSize();
542 virtual double computeVolume();
547 virtual double computeArea();
552 virtual double computeLength();
553 // If the need arises;
554 /*
555 * Computes the length of an edge.
556 * @param iedge Edge number.
557 * @return Edge length.
558 */
559 //virtual double computeEdgeLength(int iedge) { return 0.0; }
560 /*
561 * Computes the area of a surface.
562 * @param isurf Surface number.
563 * @param Surface area.
564 */
565 //virtual double computeSurfaceArea(int isurf) { return 0.0; }
572 virtual IntArray giveBoundaryEdgeNodes(int boundary, bool includeHierarchical=false) const;
579 virtual IntArray giveBoundarySurfaceNodes(int boundary, bool includeHierarchical=false) const;
586 virtual IntArray giveBoundaryNodes(int boundary) const;
593 virtual std::unique_ptr<IntegrationRule> giveBoundaryEdgeIntegrationRule(int order, int boundary);
600 virtual std::unique_ptr<IntegrationRule> giveBoundarySurfaceIntegrationRule(int order, int boundary);
601
602
603 // data management
609 int giveDofManagerNumber(int i) const { return dofManArray.at(i); }
611 const IntArray &giveDofManArray() const { return dofManArray; }
616 void addDofManager(DofManager *dMan);
621 DofManager *giveDofManager(int i) const;
629 inline Node *giveNode(int i) const
630 {
631#ifdef DEBUG
632 if ( ( i <= 0 ) || ( i > dofManArray.giveSize() ) ) {
633 OOFEM_ERROR("Node is not defined");
634 }
635#endif
636 return domain->giveNode( dofManArray.at(i) );
637 }
638
646 virtual ElementSide *giveSide(int i) const;
648 virtual FEInterpolation *giveInterpolation() const { return NULL; }
660 virtual const FEInterpolation *getGeometryInterpolation() const { return giveInterpolation(); }
661
663 virtual Material *giveMaterial();
665 int giveMaterialNumber() const {return material;}
667 CrossSection *giveCrossSection();
668
669
673 int getActivityTimeFunctionNumber(){ return this->activityTimeFunction; }
674
675
680 void setActivityTimeFunctionNumber(int funcIndx){ this->activityTimeFunction = funcIndx; }
681
686 void setMaterial(int matIndx) { this->material = matIndx; }
687
692 virtual void setCrossSection(int csIndx) { this->crossSection = csIndx; }
693
695 virtual int giveNumberOfDofManagers() const { return numberOfDofMans; }
697 void setNumberOfDofManagers(int i) {this->numberOfDofMans = i;}
703 virtual int giveNumberOfNodes() const { return numberOfDofMans; }
708 void setDofManagers(const IntArray &dmans);
714 void setDofManager(int id, int dm);
715
720 void setBodyLoads(const IntArray &bodyLoads);
721
726 void setIntegrationRules(std :: vector< std :: unique_ptr< IntegrationRule > > irlist);
733 virtual integrationDomain giveIntegrationDomain() const;
738 virtual MaterialMode giveMaterialMode() { return _Unknown; }
748 { return 0; }
749
750 // Returns number of sides (which have unknown dofs) of receiver
751 //int giveNumberOfSides () {return numberOfSides;}
752
754 int giveRegionNumber();
755
769 virtual void updateInternalState(TimeStep *tStep) { }
783 virtual void updateYourself(TimeStep *tStep);
784 // initialization to state given by initial conditions
793 virtual void initializeYourself(TimeStep *timeStepWhenICApply) { }
794
807 int checkConsistency() override { return 1; }
808
812 virtual bool isActivated(TimeStep *tStep);
813
824 virtual bool isCast(TimeStep *tStep);
825
826 // time step initialization (required for some non-linear solvers)
834 virtual void initForNewStep();
846 virtual Element_Geometry_Type giveEdgeGeometryType(int id) const;
857 virtual int giveSpatialDimension();
862 virtual int giveNumberOfBoundarySides();
866 virtual int giveNumberOfEdges() const;
870 virtual int giveNumberOfSurfaces() const;
871
880 virtual int giveDefaultIntegrationRule() const { return 0; }
887 if ( this->giveNumberOfIntegrationRules() == 0 ) {
888 return NULL;
889 } else {
890 return this->integrationRulesArray [ giveDefaultIntegrationRule() ].get();
891 }
892 }
893
894 int giveNumberOfIntegrationRules() { return (int)this->integrationRulesArray.size(); }
899 virtual IntegrationRule *giveIntegrationRule(int i) { return integrationRulesArray [ i ].get(); }
900
901 std::vector< std :: unique_ptr< IntegrationRule > > &giveIntegrationRulesArray() {return integrationRulesArray;}
902
910 virtual int testElementExtension(ElementExtension ext) { return 0; }
912
915
923 virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep);
924 int giveGlobalIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep);
925
926 // characteristic length in gp (for some material models)
931 virtual double giveLengthInDir(const FloatArray &normalToCrackPlane) ;
938 virtual double giveCharacteristicLength(const FloatArray &normalToCrackPlane) { OOFEM_ERROR("Function not overloaded, which probably means that the crack band approach should not be used for this element"); }
946 double giveCharacteristicLengthForPlaneElements(const FloatArray &normalToCrackPlane) ;
954 double giveCharacteristicLengthForAxisymmElements(const FloatArray &normalToCrackPlane) ;
965 virtual double giveCharacteristicSize(GaussPoint *gp, FloatArray &normalToCrackPlane, ElementCharSizeMethod method) { return giveCharacteristicLength(normalToCrackPlane); }
970 virtual double giveParentElSize() const { return 0.0; }
984 virtual void updateBeforeNonlocalAverage(TimeStep *tStep) { }
991 virtual int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords);
999 virtual bool computeLocalCoordinates(FloatArray &answer, const FloatArray &gcoords);
1007 virtual int giveLocalCoordinateSystem(FloatMatrix &answer);
1008
1013 virtual void giveLocalCoordinateSystemVector(InternalStateType isttype, FloatArray &answer);
1014
1021 virtual void computeMidPlaneNormal(FloatArray &answer, const GaussPoint *gp);
1029 virtual int adaptiveMap(Domain *oldd, TimeStep *tStep);
1036 virtual int mapStateVariables(Domain &iOldDom, const TimeStep &iTStep);
1043 virtual int adaptiveUpdate(TimeStep *tStep) { return 1; }
1049 virtual int adaptiveFinish(TimeStep *tStep);
1050
1059 void updateLocalNumbering(EntityRenumberingFunctor &f) override;
1060
1062 template< class T > void ipEvaluator( T *src, void ( T :: *f )( GaussPoint *gp ) );
1064 template< class T, class S > void ipEvaluator(T *src, void ( T :: *f )( GaussPoint *, S & ), S &_val);
1065
1067
1068
1069#ifdef __OOFEG
1070 //
1071 // Graphics output
1072 //
1073 virtual void drawYourself(oofegGraphicContext &gc, TimeStep *tStep);
1074 virtual void drawAnnotation(oofegGraphicContext &gc, TimeStep *tStep);
1077 virtual void drawScalar(oofegGraphicContext &gc, TimeStep *tStep) { }
1078 virtual void drawSpecial(oofegGraphicContext &gc, TimeStep *tStep) { }
1079 // added in order to hide IP element details from oofeg
1080 // to determine the max and min local values, when recovery does not takes place
1081 virtual void giveLocalIntVarMaxMin(oofegGraphicContext &gc, TimeStep *tStep, double &emin, double &emax) { emin = emax = 0.0; }
1082
1095 virtual int giveInternalStateAtNode(FloatArray &answer, InternalStateType type, InternalStateMode mode,
1096 int node, TimeStep *tStep);
1109 int side, TimeStep *tStep)
1110 {
1111 answer.clear();
1112 return 0;
1113 }
1114
1119
1120#endif
1121
1125 int giveLabel() const { return globalNumber; }
1129 int giveGlobalNumber() const { return globalNumber; }
1134 void setGlobalNumber(int num) { globalNumber = num; }
1135
1158 int packUnknowns(DataStream &buff, TimeStep *tStep);
1166 int unpackAndUpdateUnknowns(DataStream &buff, TimeStep *tStep);
1173 int estimatePackSize(DataStream &buff);
1178 const IntArray *givePartitionList() const { return & partitions; }
1192 virtual double predictRelativeComputationalCost();
1199 virtual double giveRelativeSelfComputationalCost() { return 1.0; }
1203 virtual double predictRelativeRedistributionCost() { return 1.0; }
1204
1205public:
1207 IntArray *giveBodyLoadArray();
1209 IntArray *giveBoundaryLoadArray();
1210
1211 // Overloaded methods:
1212 void initializeFrom(InputRecord &ir, int priority) override;
1213 void initializeFinish() override;
1215 void postInitialize() override;
1216 void giveInputRecord(DynamicInputRecord &input) override;
1217 void saveContext(DataStream &stream, ContextMode mode) override;
1218 void restoreContext(DataStream &stream, ContextMode mode) override;
1219 const char *giveClassName() const override { return "Element"; }
1220
1221 void printOutputAt(FILE *file, TimeStep *tStep) override;
1222
1223 virtual const IntArray giveLocation() {IntArray answer(0); return answer;}
1224 virtual void recalculateCoordinates(int nodeNumber, FloatArray &coords){;}
1225
1226
1227 // global edge/surface management
1231 void setSharedEdgeID(int iedge, int globalID) {
1232 if (this->globalEdgeIDs.isEmpty()) {
1233 this->globalEdgeIDs.resize(this->giveNumberOfEdges());
1234 }
1235 this->globalEdgeIDs.at(iedge)=globalID;
1236 }
1237 void setSharedSurfaceID(int isurf, int globalID) {
1238 if (this->globalSurfaceIDs.isEmpty()) {
1239 this->globalSurfaceIDs.resize(this->giveNumberOfSurfaces());
1240 }
1241 this->globalSurfaceIDs.at(isurf)=globalID;
1242 }
1243 const IntArray* giveSharedEdgeIDs() const {return &(this->globalEdgeIDs);}
1244 const IntArray* giveSharedSurfaceIDs() const {return &(this->globalSurfaceIDs);}
1245
1246 protected:
1255 virtual void computeGaussPoints() { }
1256};
1257
1258template< class T > void
1259Element :: ipEvaluator( T *src, void ( T :: *f )( GaussPoint *gp ) )
1260{
1261 for ( auto &ir: integrationRulesArray ) {
1262 for ( GaussPoint *gp: *ir ) {
1263 ( src->*f )(gp);
1264 }
1265 }
1266}
1267
1268template< class T, class S > void
1269Element :: ipEvaluator(T *src, void ( T :: *f )( GaussPoint *, S & ), S &_val)
1270{
1271 for ( auto &ir: integrationRulesArray ) {
1272 for ( GaussPoint *gp: *ir ) {
1273 ( src->*f )(gp, _val);
1274 }
1275 }
1276}
1277
1278} // end namespace oofem
1279#endif //element_h
virtual void giveElementDofIDMask(IntArray &answer) const
Definition element.h:510
void setMaterial(int matIndx)
Definition element.h:686
void setActivityTimeFunctionNumber(int funcIndx)
Definition element.h:680
int giveGlobalNumber() const
Definition element.h:1129
Node * giveNode(int i) const
Definition element.h:629
static ParamKey IPK_Element_crosssect
Definition element.h:199
IntArray boundaryLoadArray
Definition element.h:147
virtual void updateBeforeNonlocalAverage(TimeStep *tStep)
Definition element.h:984
virtual void drawRawGeometry(oofegGraphicContext &gc, TimeStep *tStep)
Definition element.h:1075
virtual double giveCharacteristicLength(const FloatArray &normalToCrackPlane)
Definition element.h:938
virtual void computeGaussPoints()
Definition element.h:1255
void setSharedEdgeID(int iedge, int globalID)
Definition element.h:1231
virtual void giveBoundaryLocationArray(IntArray &locationArray, const IntArray &bNodes, const UnknownNumberingScheme &s, IntArray *dofIds=NULL)
Definition element.C:485
IntArray globalEdgeIDs
Definition element.h:190
virtual int giveNumberOfDofs()
Definition element.h:239
void setNumberOfDofManagers(int i)
Sets number of element dof managers.
Definition element.h:697
IntArray dofManArray
Array containing dofmanager numbers.
Definition element.h:138
virtual const IntArray giveLocation()
Definition element.h:1223
static ParamKey IPK_Element_nodes
Definition element.h:200
virtual FEInterpolation * giveInterpolation() const
Definition element.h:648
virtual FEInterpolation * giveInterpolation(DofIDItem id) const
Definition element.h:655
virtual elementParallelMode giveKnotSpanParallelMode(int) const
Definition element.h:1146
static ParamKey IPK_Element_bodyload
Definition element.h:201
virtual int giveNumberOfBoundarySides()
Returns number of boundaries (entities of element_dimension-1: points, edges, surfaces).
Definition element.C:1430
void setSharedSurfaceID(int isurf, int globalID)
Definition element.h:1237
virtual void giveInternalDofManDofIDMask(int inode, IntArray &answer) const
Definition element.h:501
virtual int giveSpatialDimension()
Definition element.C:1391
int getActivityTimeFunctionNumber()
Definition element.h:673
virtual int giveNumberOfNodes() const
Definition element.h:703
virtual void giveLocalIntVarMaxMin(oofegGraphicContext &gc, TimeStep *tStep, double &emin, double &emax)
Definition element.h:1081
const IntArray & giveDofManArray() const
Definition element.h:611
virtual int giveNumberOfInternalDofManagers() const
Definition element.h:243
virtual int giveNumberOfSurfaces() const
Definition element.C:1519
const IntArray * giveSharedEdgeIDs() const
Definition element.h:1243
virtual double giveCharacteristicSize(GaussPoint *gp, FloatArray &normalToCrackPlane, ElementCharSizeMethod method)
Definition element.h:965
virtual void setInternalDofManager(int num, std::unique_ptr< DofManager > dm)
Definition element.h:252
virtual double giveParentElSize() const
Definition element.h:970
virtual Element_Geometry_Type giveSurfaceGeometryType(int id) const
Returns the receiver surface geometry type.
Definition element.C:1583
virtual int computeNumberOfDofs()
Definition element.h:436
static ParamKey IPK_Element_activityTimeFunction
Definition element.h:206
virtual void giveDofManDofIDMask(int inode, IntArray &answer) const
Definition element.h:488
virtual void setCrossSection(int csIndx)
Definition element.h:692
virtual int giveNumberOfEdges() const
Definition element.C:1476
std::vector< std ::unique_ptr< IntegrationRule > > & giveIntegrationRulesArray()
Definition element.h:901
const IntArray & giveBodyLoadList() const
Definition element.h:361
virtual MaterialMode giveMaterialMode()
Definition element.h:738
static ParamKey IPK_Element_nip
Definition element.h:207
virtual void drawScalar(oofegGraphicContext &gc, TimeStep *tStep)
Definition element.h:1077
const IntArray & giveBoundaryLoadList() const
Definition element.h:365
int giveNumberOfIntegrationRules()
Definition element.h:894
virtual void showSparseMtrxStructure(CharType mtrx, oofegGraphicContext &gc, TimeStep *tStep)
Shows sparse structure.
Definition element.h:1116
void giveLocationArray(IntArray &locationArray, const UnknownNumberingScheme &s, IntArray *dofIds=NULL) const
Definition element.C:429
virtual const FEInterpolation * getGeometryInterpolation() const
Definition element.h:660
virtual double giveRelativeSelfComputationalCost()
Definition element.h:1199
Element(const Element &src)=delete
virtual int giveIntegrationRuleLocalCodeNumbers(IntArray &answer, IntegrationRule &ie)
Definition element.h:747
int numberOfDofMans
Number of dofmanagers.
Definition element.h:136
int giveMaterialNumber() const
Definition element.h:665
virtual int adaptiveUpdate(TimeStep *tStep)
Definition element.h:1043
int activityTimeFunction
Element activity time function. If defined, nonzero value indicates active receiver,...
Definition element.h:163
IntArray partitions
Definition element.h:184
virtual int giveInternalStateAtSide(FloatArray &answer, InternalStateType type, InternalStateMode mode, int side, TimeStep *tStep)
Definition element.h:1108
const IntArray * givePartitionList() const
Definition element.h:1178
virtual IntegrationRule * giveIntegrationRule(int i)
Definition element.h:899
std::vector< std ::unique_ptr< IntegrationRule > > integrationRulesArray
Definition element.h:157
static ParamKey IPK_Element_remote
Definition element.h:205
elementParallelMode giveParallelMode() const
Definition element.h:1139
int material
Number of associated material.
Definition element.h:140
virtual DofManager * giveInternalDofManager(int i) const
Definition element.h:249
int crossSection
Number of associated cross section.
Definition element.h:142
const char * giveClassName() const override
Definition element.h:1219
int numberOfGaussPoints
Definition element.h:175
virtual void recalculateCoordinates(int nodeNumber, FloatArray &coords)
Definition element.h:1224
virtual void initializeYourself(TimeStep *timeStepWhenICApply)
Definition element.h:793
virtual int giveNumberOfDofManagers() const
Definition element.h:695
IntArray globalSurfaceIDs
Definition element.h:195
virtual void updateInternalState(TimeStep *tStep)
Definition element.h:769
FloatMatrix elemLocalCS
Transformation material matrix, used in orthotropic and anisotropic materials, global->local transfor...
Definition element.h:160
static ParamKey IPK_Element_boundaryload
Definition element.h:202
virtual IntegrationRule * giveDefaultIntegrationRulePtr()
Definition element.h:886
virtual void drawDeformedGeometry(oofegGraphicContext &gc, TimeStep *tStep, UnknownType)
Definition element.h:1076
void setGlobalNumber(int num)
Definition element.h:1134
virtual Element_Geometry_Type giveEdgeGeometryType(int id) const
Returns the receiver edge geometry type.
Definition element.C:1557
Element(int n, Domain *aDomain)
Definition element.C:86
virtual int testElementExtension(ElementExtension ext)
Definition element.h:910
int giveDofManagerNumber(int i) const
Definition element.h:609
static ParamKey IPK_Element_partitions
Definition element.h:204
static ParamKey IPK_Element_mat
Definition element.h:198
virtual void computeField(ValueModeType mode, TimeStep *tStep, const FloatArray &lcoords, FloatArray &answer)
Definition element.h:520
virtual void drawSpecial(oofegGraphicContext &gc, TimeStep *tStep)
Definition element.h:1078
static ParamKey IPK_Element_lcs
Definition element.h:203
void setParallelMode(elementParallelMode _mode)
Sets parallel mode of element.
Definition element.h:1141
const IntArray * giveSharedSurfaceIDs() const
Definition element.h:1244
void setPartitionList(IntArray &pl)
Definition element.h:1182
virtual double computeVolumeAround(GaussPoint *gp)
Definition element.h:530
int checkConsistency() override
Definition element.h:807
virtual void showExtendedSparseMtrxStructure(CharType mtrx, oofegGraphicContext &gc, TimeStep *tStep)
Shows extended sparse structure (for example, due to nonlocal interactions for tangent stiffness).
Definition element.h:1118
elementParallelMode parallel_mode
Determines the parallel mode of the element.
Definition element.h:178
int giveLabel() const
Definition element.h:1125
virtual int giveDefaultIntegrationRule() const
Definition element.h:880
IntArray bodyLoadArray
Definition element.h:147
virtual double predictRelativeRedistributionCost()
Definition element.h:1203
virtual Element_Geometry_Type giveGeometryType() const =0
Domain * domain
Link to domain object, useful for communicating with other FEM components.
Definition femcmpnn.h:79
int number
Component number.
Definition femcmpnn.h:77
FEMComponent(int n, Domain *d)
Definition femcmpnn.h:88
void resize(int n)
Definition intarray.C:73
bool isEmpty() const
Definition intarray.h:217
int & at(std::size_t i)
Definition intarray.h:104
#define OOFEM_ERROR(...)
Definition error.h:79
#define S(p)
Definition mdm.C:469
long ContextMode
Definition contextmode.h:43
elementParallelMode
Definition element.h:87
@ Element_remote
Element in active domain is only mirror of some remote element.
Definition element.h:89
@ Element_local
Element is local, there are no contributions from other domains to this element.
Definition element.h:88
InternalStateMode
Determines the mode of internal variable.
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]
#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