OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
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 - 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 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 "floatmatrix.h"
43 #include "integrationdomain.h"
44 #include "materialmode.h"
45 #include "elementgeometrytype.h"
46 #include "valuemodetype.h"
47 #include "internalstatemode.h"
48 #include "internalstatetype.h"
49 #include "elementextension.h"
51 #include "matresponsemode.h"
52 #include "unknowntype.h"
53 #include "integrationrule.h"
54 #include "dofiditem.h"
55 #include "floatarray.h"
56 
57 #include <cstdio>
58 #include <vector>
59 #include <memory>
60 
62 
63 #define _IFT_Element_mat "mat"
64 #define _IFT_Element_crosssect "crosssect"
65 #define _IFT_Element_nodes "nodes"
66 #define _IFT_Element_bodyload "bodyloads"
67 #define _IFT_Element_boundaryload "boundaryloads"
68 #define _IFT_Element_lcs "lcs"
69 #define _IFT_Element_partitions "partitions"
70 #define _IFT_Element_remote "remote"
71 #define _IFT_Element_activityTimeFunction "activityltf"
72 #define _IFT_Element_nip "nip"
73 
74 
75 namespace oofem {
76 class TimeStep;
77 class Node;
78 class Material;
79 class IntegrationRule;
80 class GaussPoint;
81 class FloatMatrix;
82 class IntArray;
83 class CrossSection;
84 class ElementSide;
85 class FEInterpolation;
86 class Load;
87 class BoundaryLoad;
88 class BodyLoad;
89 class SurfaceLoad;
90 class EdgeLoad;
91 class PrimaryField;
92 class UnknownNumberingScheme;
93 
103 };
104 
105 
145 class OOFEM_EXPORT Element : public FEMComponent
146 {
147 protected:
150  IntArray dofManArray;
153  int material;
160  IntArray bodyLoadArray, boundaryLoadArray;
170  std::vector< std :: unique_ptr< IntegrationRule > > integrationRulesArray;
171 
174 
177 
184 
189 
192 
198 
199 public:
205  Element(int n, Domain * aDomain);
206  Element(const Element& src) = delete;
207  Element &operator = (const Element &src) = delete;
209  virtual ~Element();
210 
217  void giveLocationArray(IntArray &locationArray, const UnknownNumberingScheme &s, IntArray *dofIds = NULL) const;
218  void giveLocationArray(IntArray &locationArray, const IntArray &dofIDMask, const UnknownNumberingScheme &s, IntArray *dofIds = NULL) const;
223  virtual void giveBoundaryLocationArray(IntArray &locationArray, const IntArray &bNodes, const UnknownNumberingScheme &s, IntArray *dofIds = NULL);
224  virtual void giveBoundaryLocationArray(IntArray &locationArray, const IntArray &bNodes, const IntArray &dofIDMask, const UnknownNumberingScheme &s, IntArray *dofIds = NULL);
228  virtual int giveNumberOfDofs() { return 0; }
232  virtual int giveNumberOfInternalDofManagers() const { return 0; }
238  virtual DofManager *giveInternalDofManager(int i) const {
239  OOFEM_ERROR("No such DOF available on Element %d", number);
240  return NULL;
241  }
243 
258  virtual void giveCharacteristicMatrix(FloatMatrix &answer, CharType type, TimeStep *tStep);
268  virtual void giveCharacteristicVector(FloatArray &answer, CharType type, ValueModeType mode, TimeStep *tStep);
277  virtual double giveCharacteristicValue(CharType type, TimeStep *tStep);
279 
292  virtual void computeLoadVector(FloatArray &answer, BodyLoad *load, CharType type, ValueModeType mode, TimeStep *tStep);
308  virtual void computeBoundarySurfaceLoadVector(FloatArray &answer, BoundaryLoad *load, int boundary, CharType type, ValueModeType mode, TimeStep *tStep, bool global=true);
318  virtual void computeTangentFromSurfaceLoad(FloatMatrix &answer, SurfaceLoad *load, int boundary, MatResponseMode rmode, TimeStep *tStep);
328  virtual void computeTangentFromEdgeLoad(FloatMatrix &answer, EdgeLoad *load, int boundary, MatResponseMode rmode, TimeStep *tStep);
343  virtual void computeBoundaryEdgeLoadVector(FloatArray &answer, BoundaryLoad *load, int edge, CharType type, ValueModeType mode, TimeStep *tStep, bool global=true);
344 
349  const IntArray& giveBodyLoadList() const {return this->bodyLoadArray;}
353  const IntArray& giveBoundaryLoadList() const {return this->boundaryLoadArray;}
354 
356 
375  void computeVectorOf(ValueModeType u, TimeStep *tStep, FloatArray &answer);
376  void computeVectorOf(const IntArray &dofIDMask, ValueModeType u, TimeStep *tStep, FloatArray &answer, bool padding = false);
385  void computeBoundaryVectorOf(const IntArray &bNodes, const IntArray &dofIDMask, ValueModeType u, TimeStep *tStep, FloatArray &answer, bool padding = false);
398  void computeVectorOf(PrimaryField &field, const IntArray &dofIDMask, ValueModeType u, TimeStep *tStep, FloatArray &answer, bool padding = false);
406  void computeVectorOfPrescribed(ValueModeType u, TimeStep *tStep, FloatArray &answer);
417  void computeVectorOfPrescribed(const IntArray &dofIDMask, ValueModeType type, TimeStep *tStep, FloatArray &answer);
418 
424  virtual int computeNumberOfDofs() { return 0; }
430  virtual int computeNumberOfGlobalDofs();
435  int computeNumberOfPrimaryMasterDofs();
443  virtual bool computeGtoLRotationMatrix(FloatMatrix &answer);
450  virtual bool giveRotationMatrix(FloatMatrix &answer);
463  virtual bool computeDofTransformationMatrix(FloatMatrix &answer, const IntArray &nodes, bool includeInternal);
476  virtual void giveDofManDofIDMask(int inode, IntArray &answer) const { answer.clear(); }
489  virtual void giveInternalDofManDofIDMask(int inode, IntArray &answer) const
490  { answer.clear(); }
498  virtual void giveElementDofIDMask(IntArray &answer) const { this->giveDofManDofIDMask(1, answer); }
508  virtual void computeField(ValueModeType mode, TimeStep *tStep, const FloatArray &lcoords, FloatArray &answer)
509  { OOFEM_ERROR("Missing support for computing unknown vector at local element coordinates\n"); }
518  virtual double computeVolumeAround(GaussPoint *gp) { return 0.; }
520  virtual double computeVolumeAreaOrLength();
525  double computeMeanSize();
530  virtual double computeVolume();
535  virtual double computeArea();
540  virtual double computeLength();
541  // If the need arises;
542  /*
543  * Computes the length of an edge.
544  * @param iedge Edge number.
545  * @return Edge length.
546  */
547  //virtual double computeEdgeLength(int iedge) { return 0.0; }
548  /*
549  * Computes the area of a surface.
550  * @param isurf Surface number.
551  * @param Surface area.
552  */
553  //virtual double computeSurfaceArea(int isurf) { return 0.0; }
559  virtual void giveBoundaryEdgeNodes (IntArray& bNodes, int boundary);
565  virtual void giveBoundarySurfaceNodes (IntArray& bNodes, int boundary);
572  virtual IntegrationRule* giveBoundaryEdgeIntegrationRule (int order, int boundary);
579  virtual IntegrationRule* giveBoundarySurfaceIntegrationRule (int order, int boundary);
580 
581 
582 
583 
584  // data management
590  int giveDofManagerNumber(int i) const { return dofManArray.at(i); }
592  const IntArray &giveDofManArray() const { return dofManArray; }
597  void addDofManager(DofManager *dMan);
602  DofManager *giveDofManager(int i) const;
610  inline Node *giveNode(int i) const
611  {
612 #ifdef DEBUG
613  if ( ( i <= 0 ) || ( i > dofManArray.giveSize() ) ) {
614  OOFEM_ERROR("Node is not defined");
615  }
616 #endif
617  return domain->giveNode( dofManArray.at(i) );
618  }
619 
627  virtual ElementSide *giveSide(int i) const;
629  virtual FEInterpolation *giveInterpolation() const { return NULL; }
638  virtual Material *giveMaterial();
640  int giveMaterialNumber() const {return material;}
642  CrossSection *giveCrossSection();
647  void setMaterial(int matIndx) { this->material = matIndx; }
648 
653  virtual void setCrossSection(int csIndx) { this->crossSection = csIndx; }
654 
656  virtual int giveNumberOfDofManagers() const { return numberOfDofMans; }
662  virtual int giveNumberOfNodes() const { return numberOfDofMans; }
667  void setDofManagers(const IntArray &dmans);
668 
673  void setBodyLoads(const IntArray &bodyLoads);
674 
679  void setIntegrationRules(std :: vector< std :: unique_ptr< IntegrationRule > > irlist);
686  virtual integrationDomain giveIntegrationDomain() const;
691  virtual MaterialMode giveMaterialMode() { return _Unknown; }
701  { return 0; }
702 
703  // Returns number of sides (which have unknown dofs) of receiver
704  //int giveNumberOfSides () {return numberOfSides;}
705 
707  int giveRegionNumber();
708 
710  virtual void postInitialize();
711 
725  virtual void updateInternalState(TimeStep *tStep) { }
739  virtual void updateYourself(TimeStep *tStep);
740  // initialization to state given by initial conditions
749  virtual void initializeYourself(TimeStep *timeStepWhenICApply) { }
750 
763  virtual int checkConsistency() { return 1; }
764 
768  virtual bool isActivated(TimeStep *tStep);
769 
780  virtual bool isCast(TimeStep *tStep);
781 
782  // time step initialization (required for some non-linear solvers)
790  virtual void initForNewStep();
797  virtual Element_Geometry_Type giveGeometryType() const;
803  virtual int giveSpatialDimension();
807  virtual int giveNumberOfBoundarySides();
816  virtual int giveDefaultIntegrationRule() const { return 0; }
823  if ( this->giveNumberOfIntegrationRules() == 0 ) {
824  return NULL;
825  } else {
826  return this->integrationRulesArray [ giveDefaultIntegrationRule() ].get();
827  }
828  }
830  int giveNumberOfIntegrationRules() { return (int)this->integrationRulesArray.size(); }
835  virtual IntegrationRule *giveIntegrationRule(int i) { return integrationRulesArray [ i ].get(); }
836 
837  std::vector< std :: unique_ptr< IntegrationRule > > &giveIntegrationRulesArray() {return integrationRulesArray;}
838 
846  virtual int testElementExtension(ElementExtension ext) { return 0; }
848 
859  virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep);
860  int giveGlobalIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep);
861 
862  // characteristic length in gp (for some material models)
867  virtual double giveLengthInDir(const FloatArray &normalToCrackPlane) ;
874  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"); return 0.; }
882  double giveCharacteristicLengthForPlaneElements(const FloatArray &normalToCrackPlane) ;
890  double giveCharacteristicLengthForAxisymmElements(const FloatArray &normalToCrackPlane) ;
901  virtual double giveCharacteristicSize(GaussPoint *gp, FloatArray &normalToCrackPlane, ElementCharSizeMethod method) { return giveCharacteristicLength(normalToCrackPlane); }
906  virtual double giveParentElSize() const { return 0.0; }
920  virtual void updateBeforeNonlocalAverage(TimeStep *tStep) { }
927  virtual int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords);
935  virtual bool computeLocalCoordinates(FloatArray &answer, const FloatArray &gcoords);
943  virtual int giveLocalCoordinateSystem(FloatMatrix &answer);
944 
951  virtual void computeMidPlaneNormal(FloatArray &answer, const GaussPoint *gp);
959  virtual int adaptiveMap(Domain *oldd, TimeStep *tStep);
966  virtual int mapStateVariables(Domain &iOldDom, const TimeStep &iTStep);
973  virtual int adaptiveUpdate(TimeStep *tStep) { return 1; }
979  virtual int adaptiveFinish(TimeStep *tStep);
980 
989  virtual void updateLocalNumbering(EntityRenumberingFunctor &f);
990 
992  template< class T > void ipEvaluator( T *src, void ( T :: *f )( GaussPoint *gp ) );
994  template< class T, class S > void ipEvaluator(T *src, void ( T :: *f )( GaussPoint *, S & ), S &_val);
995 
997 
998 
999 #ifdef __OOFEG
1000  //
1001  // Graphics output
1002  //
1003  virtual void drawYourself(oofegGraphicContext &gc, TimeStep *tStep);
1004  virtual void drawAnnotation(oofegGraphicContext &gc, TimeStep *tStep);
1005  virtual void drawRawGeometry(oofegGraphicContext &gc, TimeStep *tStep) { }
1007  virtual void drawScalar(oofegGraphicContext &gc, TimeStep *tStep) { }
1008  virtual void drawSpecial(oofegGraphicContext &gc, TimeStep *tStep) { }
1009  // added in order to hide IP element details from oofeg
1010  // to determine the max and min local values, when recovery does not takes place
1011  virtual void giveLocalIntVarMaxMin(oofegGraphicContext &gc, TimeStep *tStep, double &emin, double &emax) { emin = emax = 0.0; }
1012 
1025  virtual int giveInternalStateAtNode(FloatArray &answer, InternalStateType type, InternalStateMode mode,
1026  int node, TimeStep *tStep);
1039  int side, TimeStep *tStep)
1040  {
1041  answer.clear();
1042  return 0;
1043  }
1044 
1046  virtual void showSparseMtrxStructure(CharType mtrx, oofegGraphicContext &gc, TimeStep *tStep) { }
1049 
1050 #endif
1051 
1055  int giveLabel() const { return globalNumber; }
1059  int giveGlobalNumber() const { return globalNumber; }
1064  void setGlobalNumber(int num) { globalNumber = num; }
1065 
1069  elementParallelMode giveParallelMode() const { return parallel_mode; }
1071  void setParallelMode(elementParallelMode _mode) { parallel_mode = _mode; }
1076  virtual elementParallelMode giveKnotSpanParallelMode(int) const { return parallel_mode; }
1088  int packUnknowns(DataStream &buff, TimeStep *tStep);
1096  int unpackAndUpdateUnknowns(DataStream &buff, TimeStep *tStep);
1103  int estimatePackSize(DataStream &buff);
1108  const IntArray *givePartitionList() const { return & partitions; }
1112  void setPartitionList(IntArray &pl) { partitions = pl; }
1122  virtual double predictRelativeComputationalCost();
1129  virtual double giveRelativeSelfComputationalCost() { return 1.0; }
1133  virtual double predictRelativeRedistributionCost() { return 1.0; }
1134 
1135 public:
1137  IntArray *giveBodyLoadArray();
1139  IntArray *giveBoundaryLoadArray();
1140 
1141  // Overloaded methods:
1142  virtual IRResultType initializeFrom(InputRecord *ir);
1143  virtual void giveInputRecord(DynamicInputRecord &input);
1144  virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj = NULL);
1145  virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj = NULL);
1146  virtual void printOutputAt(FILE *file, TimeStep *tStep);
1147  virtual const char *giveClassName() const { return "Element"; }
1148 
1149 protected:
1158  virtual void computeGaussPoints() { }
1159 };
1160 
1161 template< class T > void
1162 Element :: ipEvaluator( T *src, void ( T :: *f )( GaussPoint *gp ) )
1163 {
1164  for ( auto &ir: integrationRulesArray ) {
1165  for ( GaussPoint *gp: *ir ) {
1166  ( src->*f )(gp);
1167  }
1168  }
1169 }
1170 
1171 template< class T, class S > void
1172 Element :: ipEvaluator(T *src, void ( T :: *f )( GaussPoint *, S & ), S &_val)
1173 {
1174  for ( auto &ir: integrationRulesArray ) {
1175  for ( GaussPoint *gp: *ir ) {
1176  ( src->*f )(gp, _val);
1177  }
1178  }
1179 }
1180 
1181 } // end namespace oofem
1182 #endif //element_h
virtual int giveDefaultIntegrationRule() const
Returns id of default integration rule.
Definition: element.h:816
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
virtual void initializeYourself(TimeStep *timeStepWhenICApply)
Initialization according to state given by initial conditions.
Definition: element.h:749
std::vector< std::unique_ptr< IntegrationRule > > & giveIntegrationRulesArray()
Definition: element.h:837
integrationDomain
Used by integrator class to supply integration points for proper domain to be integrated (Area...
elementParallelMode parallel_mode
Determines the parallel mode of the element.
Definition: element.h:191
Class and object Domain.
Definition: domain.h:115
virtual IntegrationRule * giveDefaultIntegrationRulePtr()
Access method for default integration rule.
Definition: element.h:822
int giveDofManagerNumber(int i) const
Translates local to global indices for dof managers.
Definition: element.h:590
virtual int computeNumberOfDofs()
Computes or simply returns total number of element&#39;s local DOFs.
Definition: element.h:424
virtual IntegrationRule * giveIntegrationRule(int i)
Definition: element.h:835
virtual int testElementExtension(ElementExtension ext)
Tests if the element implements required extension.
Definition: element.h:846
Element_Geometry_Type
Enumerative type used to classify element geometry Possible values are: EGT_point - point in space EG...
virtual int adaptiveUpdate(TimeStep *tStep)
Updates the internal state variables stored in all IPs according to already mapped state...
Definition: element.h:973
virtual double giveRelativeSelfComputationalCost()
Returns the weight representing relative computational cost of receiver The reference element is tria...
Definition: element.h:1129
virtual void showSparseMtrxStructure(CharType mtrx, oofegGraphicContext &gc, TimeStep *tStep)
Shows sparse structure.
Definition: element.h:1046
Abstract class representing field of primary variables (those, which are unknown and are typically as...
Definition: primaryfield.h:104
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
Definition: datastream.h:54
int giveGlobalNumber() const
Definition: element.h:1059
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
Definition: valuemodetype.h:78
Class implementing element body load, acting over whole element volume (e.g., the dead weight)...
Definition: bodyload.h:49
const IntArray & giveBodyLoadList() const
Returns receiver list of bodyloads.
Definition: element.h:349
void clear()
Clears receiver (zero size).
Definition: floatarray.h:206
virtual void giveInternalDofManDofIDMask(int inode, IntArray &answer) const
Returns internal dofmanager dof mask for node.
Definition: element.h:489
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]
virtual void giveDofManDofIDMask(int inode, IntArray &answer) const
Returns dofmanager dof mask for node.
Definition: element.h:476
const IntArray & giveBoundaryLoadList() const
Returns receiver list of boundary loads.
Definition: element.h:353
Abstract base class for all finite elements.
Definition: element.h:145
virtual FEInterpolation * giveInterpolation(DofIDItem id) const
Returns the interpolation for the specific dof id.
Definition: element.h:636
Base class for dof managers.
Definition: dofmanager.h:113
int crossSection
Number of associated cross section.
Definition: element.h:155
virtual MaterialMode giveMaterialMode()
Returns material mode for receiver integration points.
Definition: element.h:691
#define S(p)
Definition: mdm.C:481
virtual void giveLocalIntVarMaxMin(oofegGraphicContext &gc, TimeStep *tStep, double &emin, double &emax)
Definition: element.h:1011
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:1048
MaterialMode
Type representing material mode of integration point.
Definition: materialmode.h:89
Class implementing an array of integers.
Definition: intarray.h:61
int & at(int i)
Coefficient access function.
Definition: intarray.h:103
MatResponseMode
Describes the character of characteristic material matrix.
virtual int giveNumberOfDofManagers() const
Definition: element.h:656
virtual FEInterpolation * giveInterpolation() const
Definition: element.h:629
virtual void computeGaussPoints()
Initializes the array of integration rules member variable.
Definition: element.h:1158
virtual void drawScalar(oofegGraphicContext &gc, TimeStep *tStep)
Definition: element.h:1007
Abstract base class representing integration rule.
void setParallelMode(elementParallelMode _mode)
Sets parallel mode of element.
Definition: element.h:1071
int giveNumberOfIntegrationRules()
Definition: element.h:830
Base abstract class representing cross section in finite element mesh.
Definition: crosssection.h:107
virtual int giveNumberOfNodes() const
Returns number of nodes of receiver.
Definition: element.h:662
Class representing a general abstraction for finite element interpolation class.
Definition: feinterpol.h:132
int activityTimeFunction
Element activity time function. If defined, nonzero value indicates active receiver, zero value inactive element.
Definition: element.h:176
virtual double computeVolumeAround(GaussPoint *gp)
Returns volume related to given integration point.
Definition: element.h:518
const IntArray & giveDofManArray() const
Definition: element.h:592
FloatMatrix elemLocalCS
Transformation material matrix, used in orthotropic and anisotropic materials, global->local transfor...
Definition: element.h:173
Abstract base class representing a boundary load (force, momentum, ...) that acts directly on a bound...
Definition: boundaryload.h:110
int globalNumber
In parallel mode, globalNumber contains globally unique DoFManager number.
Definition: element.h:183
#define OOFEM_ERROR(...)
Definition: error.h:61
void clear()
Clears the array (zero size).
Definition: intarray.h:177
ElementExtension
Type representing element extension.
int material
Number of associated material.
Definition: element.h:153
DofIDItem
Type representing particular dof type.
Definition: dofiditem.h:86
UnknownType
Type representing particular unknown (its physical meaning).
Definition: unknowntype.h:55
Abstract base class allowing to control the way, how equations are assigned to individual DOFs...
Abstract base class representing an edge load (force, momentum, ...) that acts directly on a edge bou...
Definition: boundaryload.h:200
virtual int checkConsistency()
Performs consistency check.
Definition: element.h:763
virtual void setCrossSection(int csIndx)
Sets the cross section model of receiver.
Definition: element.h:653
virtual void giveElementDofIDMask(IntArray &answer) const
Returns element dof mask for node.
Definition: element.h:498
Abstract base class for all material models.
Definition: material.h:95
elementParallelMode
In parallel mode, this type indicates the mode of element.
Definition: element.h:100
virtual int giveIntegrationRuleLocalCodeNumbers(IntArray &answer, IntegrationRule &ie)
Assembles the code numbers of given integration element (sub-patch) This is done by obtaining list of...
Definition: element.h:700
virtual DofManager * giveInternalDofManager(int i) const
Returns i-th internal element dof manager of the receiver.
Definition: element.h:238
virtual const char * giveClassName() const
Definition: element.h:1147
virtual void updateInternalState(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
Definition: element.h:725
int numberOfGaussPoints
Number of integration points as specified by nip.
Definition: element.h:188
Class representing vector of real numbers.
Definition: floatarray.h:82
elementParallelMode giveParallelMode() const
Return elementParallelMode of receiver.
Definition: element.h:1069
virtual double giveCharacteristicSize(GaussPoint *gp, FloatArray &normalToCrackPlane, ElementCharSizeMethod method)
Returns characteristic element size for a given integration point and given direction.
Definition: element.h:901
Abstract base class representing a surface load (force, momentum, ...) that acts directly on a surfac...
Definition: boundaryload.h:218
Element is local, there are no contributions from other domains to this element.
Definition: element.h:101
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
virtual double giveParentElSize() const
Returns the size (length, area or volume depending on element type) of the parent element...
Definition: element.h:906
CharType
Definition: chartype.h:87
virtual double predictRelativeRedistributionCost()
Returns the relative redistribution cost of the receiver.
Definition: element.h:1133
Class representing the general Input Record.
Definition: inputrecord.h:101
Class implementing element side having some DOFs in finite element mesh.
Definition: elementside.h:60
void setPartitionList(IntArray &pl)
Sets partition list of receiver.
Definition: element.h:1112
virtual int giveNumberOfInternalDofManagers() const
Definition: element.h:232
virtual int giveNumberOfDofs()
Definition: element.h:228
virtual void drawDeformedGeometry(oofegGraphicContext &gc, TimeStep *tStep, UnknownType)
Definition: element.h:1006
virtual double giveCharacteristicLength(const FloatArray &normalToCrackPlane)
Returns the size of element in the given direction, in some cases adjusted (e.g.
Definition: element.h:874
void setMaterial(int matIndx)
Sets the material of receiver.
Definition: element.h:647
void setGlobalNumber(int num)
Sets receiver globally unique number.
Definition: element.h:1064
Class representing the a dynamic Input Record.
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
Definition: contextmode.h:43
virtual elementParallelMode giveKnotSpanParallelMode(int) const
Returns the parallel mode for particular knot span of the receiver.
Definition: element.h:1076
std::vector< std::unique_ptr< IntegrationRule > > integrationRulesArray
List of integration rules of receiver (each integration rule contains associated integration points a...
Definition: element.h:170
Element in active domain is only mirror of some remote element.
Definition: element.h:102
virtual void updateBeforeNonlocalAverage(TimeStep *tStep)
Updates internal element state (in all integration points of receiver) before nonlocal averaging take...
Definition: element.h:920
void ipEvaluator(T *src, void(T::*f)(GaussPoint *gp))
Integration point evaluator, loops over receiver IP&#39;s and calls given function (passed as f parameter...
Definition: element.h:1162
int giveMaterialNumber() const
Definition: element.h:640
IntArray partitions
List of partition sharing the shared element or remote partition containing remote element counterpar...
Definition: element.h:197
int giveSize() const
Definition: intarray.h:203
const IntArray * givePartitionList() const
Returns partition list of receiver.
Definition: element.h:1108
virtual void computeField(ValueModeType mode, TimeStep *tStep, const FloatArray &lcoords, FloatArray &answer)
Computes the unknown vector interpolated at the specified local coordinates.
Definition: element.h:508
int giveLabel() const
Definition: element.h:1055
the oofem namespace is to define a context or scope in which all oofem names are defined.
Class implementing node in finite element mesh.
Definition: node.h:87
virtual int giveInternalStateAtSide(FloatArray &answer, InternalStateType type, InternalStateMode mode, int side, TimeStep *tStep)
Returns internal state variable (like stress,strain) at side of element in Reduced form If side is po...
Definition: element.h:1038
Node * giveNode(int i) const
Returns reference to the i-th node of element.
Definition: element.h:610
virtual void drawRawGeometry(oofegGraphicContext &gc, TimeStep *tStep)
Definition: element.h:1005
Class representing integration point in finite element program.
Definition: gausspoint.h:93
IntArray boundaryLoadArray
Definition: element.h:160
Class representing solution step.
Definition: timestep.h:80
The top abstract class of all classes constituting the finite element mesh.
Definition: femcmpnn.h:76
virtual void drawSpecial(oofegGraphicContext &gc, TimeStep *tStep)
Definition: element.h:1008
int numberOfDofMans
Number of dofmanagers.
Definition: element.h:149
InternalStateMode
Determines the mode of internal variable.

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:28 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011