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" 79 class IntegrationRule;
85 class FEInterpolation;
92 class UnknownNumberingScheme;
239 OOFEM_ERROR(
"No such DOF available on Element %d", number);
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);
509 {
OOFEM_ERROR(
"Missing support for computing unknown vector at local element coordinates\n"); }
520 virtual double computeVolumeAreaOrLength();
525 double computeMeanSize();
530 virtual double computeVolume();
535 virtual double computeArea();
540 virtual double computeLength();
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);
613 if ( ( i <= 0 ) || ( i > dofManArray.
giveSize() ) ) {
617 return domain->giveNode( dofManArray.
at(i) );
667 void setDofManagers(
const IntArray &dmans);
673 void setBodyLoads(
const IntArray &bodyLoads);
679 void setIntegrationRules(std :: vector< std :: unique_ptr< IntegrationRule > > irlist);
707 int giveRegionNumber();
710 virtual void postInitialize();
739 virtual void updateYourself(
TimeStep *tStep);
768 virtual bool isActivated(
TimeStep *tStep);
780 virtual bool isCast(
TimeStep *tStep);
790 virtual void initForNewStep();
803 virtual int giveSpatialDimension();
807 virtual int giveNumberOfBoundarySides();
823 if ( this->giveNumberOfIntegrationRules() == 0 ) {
826 return this->integrationRulesArray [ giveDefaultIntegrationRule() ].get();
867 virtual double giveLengthInDir(
const FloatArray &normalToCrackPlane) ;
882 double giveCharacteristicLengthForPlaneElements(
const FloatArray &normalToCrackPlane) ;
890 double giveCharacteristicLengthForAxisymmElements(
const FloatArray &normalToCrackPlane) ;
943 virtual int giveLocalCoordinateSystem(
FloatMatrix &answer);
966 virtual int mapStateVariables(
Domain &iOldDom,
const TimeStep &iTStep);
979 virtual int adaptiveFinish(
TimeStep *tStep);
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);
1122 virtual double predictRelativeComputationalCost();
1146 virtual void printOutputAt(FILE *file,
TimeStep *tStep);
1161 template<
class T >
void 1164 for (
auto &ir: integrationRulesArray ) {
1171 template<
class T,
class S >
void 1174 for (
auto &ir: integrationRulesArray ) {
1176 ( src->*f )(gp, _val);
virtual int giveDefaultIntegrationRule() const
Returns id of default integration rule.
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.
std::vector< std::unique_ptr< IntegrationRule > > & giveIntegrationRulesArray()
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.
virtual IntegrationRule * giveDefaultIntegrationRulePtr()
Access method for default integration rule.
int giveDofManagerNumber(int i) const
Translates local to global indices for dof managers.
virtual int computeNumberOfDofs()
Computes or simply returns total number of element's local DOFs.
virtual IntegrationRule * giveIntegrationRule(int i)
virtual int testElementExtension(ElementExtension ext)
Tests if the element implements required extension.
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...
virtual double giveRelativeSelfComputationalCost()
Returns the weight representing relative computational cost of receiver The reference element is tria...
virtual void showSparseMtrxStructure(CharType mtrx, oofegGraphicContext &gc, TimeStep *tStep)
Shows sparse structure.
Abstract class representing field of primary variables (those, which are unknown and are typically as...
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
int giveGlobalNumber() const
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
Class implementing element body load, acting over whole element volume (e.g., the dead weight)...
const IntArray & giveBodyLoadList() const
Returns receiver list of bodyloads.
void clear()
Clears receiver (zero size).
virtual void giveInternalDofManDofIDMask(int inode, IntArray &answer) const
Returns internal dofmanager dof mask for node.
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]
virtual void giveDofManDofIDMask(int inode, IntArray &answer) const
Returns dofmanager dof mask for node.
const IntArray & giveBoundaryLoadList() const
Returns receiver list of boundary loads.
Abstract base class for all finite elements.
virtual FEInterpolation * giveInterpolation(DofIDItem id) const
Returns the interpolation for the specific dof id.
Base class for dof managers.
int crossSection
Number of associated cross section.
virtual MaterialMode giveMaterialMode()
Returns material mode for receiver integration points.
virtual void giveLocalIntVarMaxMin(oofegGraphicContext &gc, TimeStep *tStep, double &emin, double &emax)
virtual void showExtendedSparseMtrxStructure(CharType mtrx, oofegGraphicContext &gc, TimeStep *tStep)
Shows extended sparse structure (for example, due to nonlocal interactions for tangent stiffness) ...
MaterialMode
Type representing material mode of integration point.
Class implementing an array of integers.
int & at(int i)
Coefficient access function.
MatResponseMode
Describes the character of characteristic material matrix.
virtual int giveNumberOfDofManagers() const
virtual FEInterpolation * giveInterpolation() const
virtual void computeGaussPoints()
Initializes the array of integration rules member variable.
virtual void drawScalar(oofegGraphicContext &gc, TimeStep *tStep)
Abstract base class representing integration rule.
void setParallelMode(elementParallelMode _mode)
Sets parallel mode of element.
int giveNumberOfIntegrationRules()
Base abstract class representing cross section in finite element mesh.
virtual int giveNumberOfNodes() const
Returns number of nodes of receiver.
Class representing a general abstraction for finite element interpolation class.
int activityTimeFunction
Element activity time function. If defined, nonzero value indicates active receiver, zero value inactive element.
virtual double computeVolumeAround(GaussPoint *gp)
Returns volume related to given integration point.
const IntArray & giveDofManArray() const
FloatMatrix elemLocalCS
Transformation material matrix, used in orthotropic and anisotropic materials, global->local transfor...
Abstract base class representing a boundary load (force, momentum, ...) that acts directly on a bound...
int globalNumber
In parallel mode, globalNumber contains globally unique DoFManager number.
void clear()
Clears the array (zero size).
ElementExtension
Type representing element extension.
int material
Number of associated material.
DofIDItem
Type representing particular dof type.
UnknownType
Type representing particular unknown (its physical meaning).
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...
virtual int checkConsistency()
Performs consistency check.
virtual void setCrossSection(int csIndx)
Sets the cross section model of receiver.
virtual void giveElementDofIDMask(IntArray &answer) const
Returns element dof mask for node.
Abstract base class for all material models.
elementParallelMode
In parallel mode, this type indicates the mode of element.
virtual int giveIntegrationRuleLocalCodeNumbers(IntArray &answer, IntegrationRule &ie)
Assembles the code numbers of given integration element (sub-patch) This is done by obtaining list of...
virtual DofManager * giveInternalDofManager(int i) const
Returns i-th internal element dof manager of the receiver.
virtual const char * giveClassName() const
virtual void updateInternalState(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
int numberOfGaussPoints
Number of integration points as specified by nip.
Class representing vector of real numbers.
elementParallelMode giveParallelMode() const
Return elementParallelMode of receiver.
virtual double giveCharacteristicSize(GaussPoint *gp, FloatArray &normalToCrackPlane, ElementCharSizeMethod method)
Returns characteristic element size for a given integration point and given direction.
Abstract base class representing a surface load (force, momentum, ...) that acts directly on a surfac...
Element is local, there are no contributions from other domains to this element.
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
virtual double giveParentElSize() const
Returns the size (length, area or volume depending on element type) of the parent element...
virtual double predictRelativeRedistributionCost()
Returns the relative redistribution cost of the receiver.
Class implementing element side having some DOFs in finite element mesh.
void setPartitionList(IntArray &pl)
Sets partition list of receiver.
virtual int giveNumberOfInternalDofManagers() const
virtual int giveNumberOfDofs()
virtual void drawDeformedGeometry(oofegGraphicContext &gc, TimeStep *tStep, UnknownType)
virtual double giveCharacteristicLength(const FloatArray &normalToCrackPlane)
Returns the size of element in the given direction, in some cases adjusted (e.g.
void setMaterial(int matIndx)
Sets the material of receiver.
void setGlobalNumber(int num)
Sets receiver globally unique number.
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
virtual elementParallelMode giveKnotSpanParallelMode(int) const
Returns the parallel mode for particular knot span of the receiver.
std::vector< std::unique_ptr< IntegrationRule > > integrationRulesArray
List of integration rules of receiver (each integration rule contains associated integration points a...
Element in active domain is only mirror of some remote element.
virtual void updateBeforeNonlocalAverage(TimeStep *tStep)
Updates internal element state (in all integration points of receiver) before nonlocal averaging take...
void ipEvaluator(T *src, void(T::*f)(GaussPoint *gp))
Integration point evaluator, loops over receiver IP's and calls given function (passed as f parameter...
int giveMaterialNumber() const
IntArray partitions
List of partition sharing the shared element or remote partition containing remote element counterpar...
const IntArray * givePartitionList() const
Returns partition list of receiver.
virtual void computeField(ValueModeType mode, TimeStep *tStep, const FloatArray &lcoords, FloatArray &answer)
Computes the unknown vector interpolated at the specified local coordinates.
the oofem namespace is to define a context or scope in which all oofem names are defined.
Class implementing node in finite element mesh.
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...
Node * giveNode(int i) const
Returns reference to the i-th node of element.
virtual void drawRawGeometry(oofegGraphicContext &gc, TimeStep *tStep)
Class representing integration point in finite element program.
IntArray boundaryLoadArray
Class representing solution step.
The top abstract class of all classes constituting the finite element mesh.
virtual void drawSpecial(oofegGraphicContext &gc, TimeStep *tStep)
int numberOfDofMans
Number of dofmanagers.
InternalStateMode
Determines the mode of internal variable.