91 if ( type != ExternalForcesVector ) {
111 if ( type != ExternalForcesVector ) {
158 double thickness = 1.0;
186 if ( type != ExternalForcesVector ) {
290 answer.
add(dV * dens, ntf);
343 answer.
resize(ndofs, ndofs);
359 if ( ipDensity != NULL ) {
361 density = * ipDensity;
365 mass += density * dV;
370 for (
int i = 1; i <= ndofs; i++ ) {
371 for (
int j = i; j <= ndofs; j++ ) {
374 if ( mask.
at(k) == 0 ) {
378 summ += n.
at(k, i) * n.
at(k, j);
381 answer.
at(i, j) += summ * density * dV;
416 int indx = 0, ldofs, dim;
421 answer.
resize(ndofs, ndofs);
432 for (
int j = 1; j <= nodeDofIDMask.
giveSize(); j++ ) {
435 for (
int k = 1; k <= ldofs; k++ ) {
437 answer.
at(indx, k) = 0.;
438 answer.
at(k, indx) = 0.;
442 if ( ( nodeDofIDMask.
at(j) != D_u ) && ( nodeDofIDMask.
at(j) != D_v ) && ( nodeDofIDMask.
at(j) != D_w ) ) {
444 answer.
at(indx, indx) = 0.;
445 }
else if ( nodeDofIDMask.
at(j) == D_u ) {
447 }
else if ( nodeDofIDMask.
at(j) == D_v ) {
449 }
else if ( nodeDofIDMask.
at(j) == D_w ) {
455 if ( indx != ldofs ) {
459 dim = dimFlag.
at(1) + dimFlag.
at(2) + dimFlag.
at(3);
461 for (
int k = 1; k <= ldofs; k++ ) {
462 summ += answer.
at(k, k);
465 answer.
times(dim * mass / summ);
486 for (
int i = 1; i <= nLoads; i++ ) {
491 answer.
add(temperature);
498 for (
int i = 1; i <= nbc; ++i ) {
502 if (( load = dynamic_cast< StructuralTemperatureLoad * >(bc) )) {
508 const IntArray &elements =
set->giveElementList();
510 if (elements.
contains(this->giveNumber() ) ) {
512 answer.
add(temperature);
539 for (
int i = 1; i <= nLoads; i++ ) {
544 answer.
add(eigenstrain);
550 for (
int i = 1; i <= nbc; ++i ) {
554 if (( load = dynamic_cast< StructuralEigenstrainLoad * >(bc) )) {
559 const IntArray &elements =
set->giveElementList();
561 if (elements.
contains(this->giveNumber() ) ) {
563 answer.
add(eigenstrain);
587 int iStartIndx, iEndIndx, jStartIndx, jEndIndx;
617 dij.
beSubMatrixOf(d, iStartIndx, iEndIndx, jStartIndx, jEndIndx);
626 if ( matStiffSymmFlag ) {
640 if ( matStiffSymmFlag ) {
648 if ( matStiffSymmFlag ) {
661 answer.
resize(ndofs, ndofs);
678 if ( matStiffSymmFlag ) {
692 if ( matStiffSymmFlag ) {
733 TimeStep *tStep,
int useUpdatedGpRecord)
760 if ( useUpdatedGpRecord == 1 ) {
805 TimeStep *tStep,
int useUpdatedGpRecord)
840 if ( useUpdatedGpRecord == 1 ) {
890 if ( mtrx == TangentStiffnessMatrix ) {
892 }
else if ( mtrx == SecantStiffnessMatrix ) {
894 }
else if ( mtrx == ElasticStiffnessMatrix ) {
896 }
else if ( mtrx == MassMatrix ) {
898 }
else if ( mtrx == LumpedMassMatrix ) {
900 }
else if ( mtrx == InitialStressMatrix ) {
916 if ( mtrx == ExternalForcesVector ) {
919 }
else if ( ( mtrx == InternalForcesVector ) && ( mode == VM_Total ) ) {
921 }
else if ( ( mtrx == LastEquilibratedInternalForcesVector ) && ( mode == VM_Total ) ) {
926 }
else if ( mtrx == LumpedMassMatrix ) {
931 answer [ i ] = M(i, i);
997 if ( !materialExt ) {
1031 answer.
resize(dim, dim * numNodes);
1050 double coeff, dii, lii = 0;
1067 if ( !( load->
giveSize() == size ) ) {
1077 for ( i = 1; i <= nkon; i++ ) {
1079 if ( ( ii > size ) || ( ii <= 0 ) ) {
1083 dii = stiff->
at(ii, ii);
1089 for ( j = 1; j <= size; j++ ) {
1090 coeff = -stiff->
at(j, ii) / dii;
1092 for ( k = 1; k <= size; k++ ) {
1093 stiff->
at(j, k) += stiff->
at(ii, k) * coeff;
1098 load->
at(j) += coeff * lii;
1102 gaussCoeff.
at(j) = coeff;
1106 for ( k = 1; k <= size; k++ ) {
1107 stiff->
at(ii, k) = 0.;
1108 stiff->
at(k, ii) = 0.;
1114 for ( j = 1; j <= size; j++ ) {
1115 for ( k = 1; k <= size; k++ ) {
1116 if ( ( ii != j ) && ( ii != k ) ) {
1117 mass->
at(j, k) += mass->
at(j, ii) * gaussCoeff.
at(k) +
1118 mass->
at(ii, k) * gaussCoeff.
at(j) +
1119 mass->
at(ii, ii) * gaussCoeff.
at(j) * gaussCoeff.
at(k);
1124 for ( k = 1; k <= size; k++ ) {
1125 mass->
at(ii, k) = 0.;
1126 mass->
at(k, ii) = 0.;
1136 if ( type == IST_DisplacementVector ) {
1153 locationArray.
clear();
1160 if ( interface == NULL ) {
1161 locationArray.
clear();
1165 auto integrationDomainList = interface->
1166 NonlocalMaterialStiffnessInterface_giveIntegrationDomainList(ip);
1168 for (
auto &lir : *integrationDomainList ) {
1169 lir.nearGp->giveElement()->giveLocationArray(elemLocArry, s);
1192 if ( interface == NULL ) {
1196 interface->NonlocalMaterialStiffnessInterface_addIPContribution(dest, s, ip, tStep);
1212 if ( interface == NULL ) {
1216 result &= interface->MMI_update(ip, tStep, & strain);
1259 if ( type == IST_DisplacementVector ) {
1276 if ( mtrx == TangentStiffnessMatrix ||
1277 mtrx == SecantStiffnessMatrix || mtrx == ElasticStiffnessMatrix ) {
1288 EASValsSetFillStyle(FILL_SOLID);
1291 for ( i = 1; i <= n; i++ ) {
1292 if ( loc.
at(i) == 0 ) {
1296 for ( j = i; j <= n; j++ ) {
1297 if ( loc.
at(j) == 0 ) {
1302 p [ 0 ].x = ( FPNum ) loc.
at(i) - 0.5;
1303 p [ 0 ].y = ( FPNum ) loc.
at(j) - 0.5;
1305 p [ 1 ].x = ( FPNum ) loc.
at(i) + 0.5;
1306 p [ 1 ].y = ( FPNum ) loc.
at(j) - 0.5;
1308 p [ 2 ].x = ( FPNum ) loc.
at(i) + 0.5;
1309 p [ 2 ].y = ( FPNum ) loc.
at(j) + 0.5;
1311 p [ 3 ].x = ( FPNum ) loc.
at(i) - 0.5;
1312 p [ 3 ].y = ( FPNum ) loc.
at(j) + 0.5;
1314 go = CreateQuad3D(p);
1315 EGWithMaskChangeAttributes(WIDTH_MASK | FILL_MASK | COLOR_MASK | LAYER_MASK, go);
1316 EMAddGraphicsToModel(ESIModel(), go);
1318 p [ 0 ].x = ( FPNum ) loc.
at(j) - 0.5;
1319 p [ 0 ].y = ( FPNum ) loc.
at(i) - 0.5;
1321 p [ 1 ].x = ( FPNum ) loc.
at(j) + 0.5;
1322 p [ 1 ].y = ( FPNum ) loc.
at(i) - 0.5;
1324 p [ 2 ].x = ( FPNum ) loc.
at(j) + 0.5;
1325 p [ 2 ].y = ( FPNum ) loc.
at(i) + 0.5;
1327 p [ 3 ].x = ( FPNum ) loc.
at(j) - 0.5;
1328 p [ 3 ].y = ( FPNum ) loc.
at(i) + 0.5;
1330 go = CreateQuad3D(p);
1331 EGWithMaskChangeAttributes(WIDTH_MASK | FILL_MASK | COLOR_MASK | LAYER_MASK, go);
1332 EMAddGraphicsToModel(ESIModel(), go);
1334 p [ 0 ].x = ( FPNum ) loc.
at(i);
1335 p [ 0 ].y = ( FPNum ) loc.
at(j);
1338 EASValsSetMType(SQUARE_MARKER);
1339 go = CreateMarker3D(p);
1340 EGWithMaskChangeAttributes(COLOR_MASK | LAYER_MASK | VECMTYPE_MASK, go);
1341 EMAddGraphicsToModel(ESIModel(), go);
1343 p [ 0 ].x = ( FPNum ) loc.
at(j);
1344 p [ 0 ].y = ( FPNum ) loc.
at(i);
1347 EASValsSetMType(SQUARE_MARKER);
1348 go = CreateMarker3D(p);
1349 EGWithMaskChangeAttributes(COLOR_MASK | LAYER_MASK | VECMTYPE_MASK, go);
1350 EMAddGraphicsToModel(ESIModel(), go);
1360 if ( mtrx == TangentStiffnessMatrix ) {
1366 if ( interface == NULL ) {
1369 interface->NonlocalMaterialStiffnessInterface_showSparseMtrxStructure(ip, gc, tStep);
static int giveSizeOfVoigtSymVector(MaterialMode mmode)
Returns the size of symmetric part of a reduced stress/strain vector according to given mode...
bool contains(int value) const
CrossSection * giveCrossSection()
virtual bool isImposed(TimeStep *tStep)
Returns nonzero if receiver representing BC is imposed at given time, otherwise returns zero...
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
Abstract base class for all nonlocal structural materials.
virtual bool isActivated(TimeStep *tStep)
MaterialMode giveMaterialMode()
Returns corresponding material mode of receiver.
int giveNumberOfColumns() const
Returns number of columns of receiver.
The representation of EngngModel default unknown numbering.
void subtract(const FloatArray &src)
Subtracts array src to receiver.
virtual void computeResultingIPTemperatureAt(FloatArray &answer, TimeStep *tStep, GaussPoint *gp, ValueModeType mode)
Computes at given time (tStep) the the resulting temperature component array.
EPixel getStandardSparseProfileColor()
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in full form.
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in full form.
virtual void evalN(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Evaluates the array of interpolation functions (shape functions) at given point.
#define OOFEG_SPARSE_PROFILE_WIDTH
void computeVectorOf(ValueModeType u, TimeStep *tStep, FloatArray &answer)
Returns local vector of unknowns.
virtual IntegrationRule * giveDefaultIntegrationRulePtr()
Access method for default integration rule.
virtual int computeNumberOfDofs()
Computes or simply returns total number of element's local DOFs.
virtual IntegrationRule * giveIntegrationRule(int i)
Domain * domain
Link to domain object, useful for communicating with other FEM components.
Base class for all matrices stored in sparse format.
int giveNumberOfBoundaryConditions() const
Returns number of boundary conditions in domain.
virtual void computeLumpedMassMatrix(FloatMatrix &answer, TimeStep *tStep)
Computes lumped mass matrix of receiver.
const FloatArray & giveSubPatchCoordinates()
Returns local sub-patch coordinates of the receiver.
virtual void createMaterialStatus(GaussPoint &iGP)=0
bool isEmpty() const
Checks if receiver is empty (i.e., zero sized).
Load is specified in global c.s.
virtual void createMaterialStatus()
std::unique_ptr< FloatArray > initialDisplacements
Initial displacement vector, describes the initial nodal displacements when element has been casted...
virtual void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)=0
Computes constitutive matrix of receiver.
double & at(int i)
Coefficient access function.
virtual void showExtendedSparseMtrxStructure(CharType mtrx, oofegGraphicContext &gc, TimeStep *tStep)
Shows extended sparse structure (for example, due to nonlocal interactions for tangent stiffness) ...
virtual int giveInternalStateAtNode(FloatArray &answer, InternalStateType type, InternalStateMode mode, int node, TimeStep *tStep)
Returns internal state variable (like stress,strain) at node of element in Reduced form...
void beSubMatrixOf(const FloatMatrix &src, int topRow, int bottomRow, int topCol, int bottomCol)
Assigns to the receiver the sub-matrix of another matrix.
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)...
virtual void updateBeforeNonlocAverage(const FloatArray &strainVector, GaussPoint *gp, TimeStep *tStep)=0
Declares the service updating local variables in given integration points, which take part in nonloca...
This class implements a structural material status information.
void clear()
Clears receiver (zero size).
int giveInterpolationOrder()
Returns the interpolation order.
virtual ~StructuralElement()
Destructor.
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]
virtual void giveDofManDofIDMask(int inode, IntArray &answer) const
Returns dofmanager dof mask for node.
virtual void computeValueAt(FloatArray &answer, TimeStep *tStep, const FloatArray &coords, ValueModeType mode)=0
Computes components values of load at given point - global coordinates (coordinates given)...
virtual void computeEdgeNMatrix(FloatMatrix &answer, int boundaryID, const FloatArray &lcoords)
computes edge interpolation matrix
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
#define OOFEG_SPARSE_PROFILE_LAYER
virtual void updateYourself(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
virtual CoordSystType giveCoordSystMode()
Returns receiver's coordinate system.
virtual void boundarySurfaceEvalN(FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Evaluates the array of edge interpolation functions (shape functions) at given point.
Abstract base class for all finite elements.
bool isSquare() const
Returns nonzero if receiver is square matrix.
virtual void giveNonlocalLocationArray(IntArray &locationArray, const UnknownNumberingScheme &us)
Returns the "nonlocal" location array of receiver.
virtual MaterialMode giveMaterialMode()
Returns material mode for receiver integration points.
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
virtual void computeComponentArrayAt(FloatArray &answer, TimeStep *tStep, ValueModeType mode)
Computes boundary condition value - its components values at given time.
virtual int computeLoadLEToLRotationMatrix(FloatMatrix &answer, int iEdge, GaussPoint *gp)
Returns transformation matrix from local edge c.s to element local coordinate system of load vector c...
virtual double giveCoordinate(int i)
virtual void computeNmatrixAt(const FloatArray &iLocCoord, FloatMatrix &answer)
Computes interpolation matrix for element unknowns.
virtual int adaptiveUpdate(TimeStep *tStep)
Updates the internal state variables stored in all IPs according to already mapped state...
Class implementing an array of integers.
int & at(int i)
Coefficient access function.
MatResponseMode
Describes the character of characteristic material matrix.
virtual double computeEdgeVolumeAround(GaussPoint *gp, int iEdge)
Computes volume related to integration point on local edge.
virtual void setupIRForMassMtrxIntegration(IntegrationRule &iRule)
Setup Integration Rule Gauss Points for Mass Matrix integration.
virtual int giveNumberOfDofManagers() const
virtual void giveCharMaterialStiffnessMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)=0
Computes the stiffness matrix of receiver in given integration point, respecting its history...
virtual FEInterpolation * giveInterpolation() const
virtual void showSparseMtrxStructure(CharType mtrx, oofegGraphicContext &gc, TimeStep *tStep)
Shows sparse structure.
void rotatedWith(FloatMatrix &r, char mode)
Returns the receiver a rotated according the change-of-base matrix r.
Abstract base class representing integration rule.
GeneralBoundaryCondition * giveBc(int n)
Service for accessing particular domain bc.
void condense(FloatMatrix *stiff, FloatMatrix *mass, FloatArray *load, IntArray *what)
General service for condensation of stiffness and optionally load vector and mass or initial stress m...
Class representing a general abstraction for finite element interpolation class.
void plusProductUnsym(const FloatMatrix &a, const FloatMatrix &b, double dV)
Adds to the receiver the product .
int activityTimeFunction
Element activity time function. If defined, nonzero value indicates active receiver, zero value inactive element.
virtual void computeLoadVector(FloatArray &answer, BodyLoad *load, CharType type, ValueModeType mode, TimeStep *tStep)
Computes the contribution of the given body load (volumetric).
virtual double computeVolumeAround(GaussPoint *gp)
Returns volume related to given integration point.
int giveSetNumber()
Gives the set number which boundary condition is applied to.
virtual void computeBodyLoadVectorAt(FloatArray &answer, Load *load, TimeStep *tStep, ValueModeType mode)
Computes the load vector due to body load acting on receiver, at given time step. ...
static void giveReducedSymVectorForm(FloatArray &answer, const FloatArray &vec, MaterialMode matMode)
Converts the full unsymmetric Voigt vector (2nd order tensor) to reduced form.
Abstract base class representing a boundary load (force, momentum, ...) that acts directly on a bound...
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual void computeBoundarySurfaceLoadVector(FloatArray &answer, BoundaryLoad *load, int boundary, CharType type, ValueModeType mode, TimeStep *tStep, bool global=true)
Computes the contribution of the given load at the given boundary surface in global coordinate system...
void computeStiffnessMatrix_withIRulesAsSubcells(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
virtual IntegrationRule * giveBoundaryEdgeIntegrationRule(int order, int boundary)
Returns boundary edge integration rule.
virtual CoordSystType giveCoordSystMode()
Returns receiver's coordinate system.
void clear()
Clears the array (zero size).
virtual void giveInternalForcesVector_withIRulesAsSubcells(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord=0)
virtual int computeLoadGToLRotationMtrx(FloatMatrix &answer)
Returns transformation matrix from global coordinate system to local element coordinate system for el...
virtual double giveWeight()
Returns integration weight of receiver.
virtual void boundaryLocal2Global(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Maps the local boundary coordinates to global.
virtual FormulationType giveFormulationType()
Specifies is load should take local or global coordinates.
void giveLocationArray(IntArray &locationArray, const UnknownNumberingScheme &s, IntArray *dofIds=NULL) const
Returns the location array (array of code numbers) of receiver for given numbering scheme...
StructuralCrossSection * giveStructuralCrossSection()
Helper function which returns the structural cross-section for the element.
void times(double f)
Multiplies receiver by factor f.
virtual void updateInternalState(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
Set of elements, boundaries, edges and/or nodes.
Abstract base class allowing to control the way, how equations are assigned to individual DOFs...
virtual void computeStressVector(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep)=0
Computes the stress vector of receiver at given integration point, at time step tStep.
Wrapper around element definition to provide FEICellGeometry interface.
virtual double boundaryEdgeGiveTransformationJacobian(int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Evaluates the determinant of the transformation Jacobian on the requested boundary.
virtual void boundaryEdgeEvalN(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Evaluates the basis functions on the requested boundary.
const char * __CharTypeToString(CharType _value)
virtual bool isCharacteristicMtrxSymmetric(MatResponseMode rMode)
Check for symmetry of stiffness matrix.
IntArray * giveBodyLoadArray()
Returns array containing load numbers of loads acting on element.
Set * giveSet(int n)
Service for accessing particular domain set.
virtual double boundarySurfaceGiveTransformationJacobian(int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Evaluates the edge jacobian of transformation between local and global coordinates.
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
Receiver becomes the result of the product of aMatrix and anArray.
virtual double giveUpdatedCoordinate(int ic, TimeStep *tStep, double scale=1.)
Returns updated ic-th coordinate of receiver.
IntArray bodyLoadArray
Array containing indexes of loads (body loads and boundary loads are kept separately), that apply on receiver.
virtual void computeStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
Compute strain vector of receiver evaluated at given integration point at given time step from elemen...
void plusProductSymmUpper(const FloatMatrix &a, const FloatMatrix &b, double dV)
Adds to the receiver the product .
virtual int giveInternalStateAtNode(FloatArray &answer, InternalStateType type, InternalStateMode mode, int node, TimeStep *tStep)
Returns internal state variable (like stress,strain) at node of element in Reduced form...
Abstract base class for all boundary conditions of problem.
const FloatArray & giveCoordinates() const
Gives coordinates of the receiver.
virtual int giveApproxOrder()=0
void beTProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
Receiver becomes the result of the product of aMatrix^T and anArray.
double at(int i, int j) const
Coefficient access function.
virtual void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
Computes numerically stiffness matrix of receiver.
virtual int giveIntegrationRuleLocalCodeNumbers(IntArray &answer, IntegrationRule &ie)
Assembles the code numbers of given integration element (sub-patch) This is done by obtaining list of...
void giveRealStresses(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep)
Computes the real stress vector for given strain and integration point.
void beNMatrixOf(const FloatArray &n, int nsd)
Assigns the receiver to be a repeated diagonal matrix.
virtual integrationDomain giveIntegrationDomain() const
Returns integration domain for receiver, used to initialize integration point over receiver volume...
Class representing vector of real numbers.
elementParallelMode giveParallelMode() const
Return elementParallelMode of receiver.
virtual void giveCharacteristicVector(FloatArray &answer, CharType type, ValueModeType mode, TimeStep *tStep)
Computes characteristic vector of receiver of requested type in given time step.
virtual int giveSpatialDimension()
Returns the element spatial dimension (1, 2, or 3).
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
virtual double give(CrossSectionProperty a, GaussPoint *gp)
Returns the value of cross section property at given point.
virtual void updateYourself(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
virtual IntegrationRule * giveBoundarySurfaceIntegrationRule(int order, int boundary)
Returns boundary surface integration rule.
const FloatArray & giveStressVector() const
Returns the const pointer to receiver's stress vector.
IntegrationPointStatus * giveMaterialStatus()
Returns reference to associated material status (NULL if not defined).
virtual void computeBoundaryEdgeLoadVector(FloatArray &answer, BoundaryLoad *load, int boundary, CharType type, ValueModeType mode, TimeStep *tStep, bool global=true)
Computes the contribution of the given load at the given boundary edge.
void assemble(const FloatArray &fe, const IntArray &loc)
Assembles the array fe (typically, the load vector of a finite element) into the receiver, using loc as location array.
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
virtual void computeSurfaceNMatrix(FloatMatrix &answer, int boundaryID, const FloatArray &lcoords)
Computes surface interpolation matrix.
virtual void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord=0)
Returns equivalent nodal forces vectors.
virtual int getRequiredNumberOfIntegrationPoints(integrationDomain dType, int approxOrder)
Abstract service.
void followedBy(const IntArray &b, int allocChunk=0)
Appends array b at the end of receiver.
int getSparseProfileMode()
void zero()
Zeroes all coefficients of receiver.
virtual bcGeomType giveBCGeoType() const
Returns geometry character of boundary condition.
StructuralElement(int n, Domain *d)
Constructor.
virtual void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int lowerIndx=1, int upperIndx=ALL_STRAINS)=0
Computes the geometrical matrix of receiver in given integration point.
virtual bool computeLocalCoordinates(FloatArray &answer, const FloatArray &gcoords)
Computes the element local coordinates from given global coordinates.
virtual void computeInitialStressMatrix(FloatMatrix &answer, TimeStep *tStep)
Computes initial stress matrix for linear stability problem.
std::vector< std::unique_ptr< IntegrationRule > > integrationRulesArray
List of integration rules of receiver (each integration rule contains associated integration points a...
virtual void computeField(ValueModeType mode, TimeStep *tStep, const FloatArray &lcoords, FloatArray &answer)
Computes the unknown vector interpolated at the specified local coordinates.
virtual int checkConsistency()
Performs consistency check.
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...
int setUpIntegrationPoints(integrationDomain intdomain, int nPoints, MaterialMode matMode)
Initializes the receiver.
virtual double computeSurfaceVolumeAround(GaussPoint *gp, int iSurf)
Computes volume related to integration point on local surface.
virtual void giveCharacteristicMatrix(FloatMatrix &answer, CharType, TimeStep *tStep)
Computes characteristic matrix of receiver of requested type in given time step.
void zero()
Zeroes all coefficient of receiver.
virtual int giveNumberOfIPForMassMtrxIntegration()
Return desired number of integration points for consistent mass matrix computation, if required.
virtual void computeMassMatrix(FloatMatrix &answer, TimeStep *tStep)
Computes mass matrix of receiver.
Load is base abstract class for all loads.
void beProductOf(const FloatMatrix &a, const FloatMatrix &b)
Assigns to the receiver product of .
virtual const char * giveClassName() const
virtual void boundaryEdgeLocal2Global(FloatArray &answer, int boundary, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Maps the local boundary coordinates to global.
int giveSize() const
Returns the size of receiver.
Abstract base class for all structural cross section models.
virtual void computeValueAt(FloatArray &answer, TimeStep *tStep, const FloatArray &coords, ValueModeType mode)
Computes components values of load at given point - global coordinates (coordinates given)...
the oofem namespace is to define a context or scope in which all oofem names are defined.
void assemble(const FloatMatrix &src, const IntArray &loc)
Assembles the contribution using localization array into receiver.
virtual void computePointLoadVectorAt(FloatArray &answer, Load *load, TimeStep *tStep, ValueModeType mode, bool global=true)
Computes point load vector contribution of receiver for given load (should has BoundaryLoad Base)...
void clear()
Sets size of receiver to be an empty matrix. It will have zero rows and zero columns size...
virtual bcValType giveBCValType() const
Returns receiver load type.
Class implementing node in finite element mesh.
Node * giveNode(int i) const
Returns reference to the i-th node of element.
virtual void computeResultingIPEigenstrainAt(FloatArray &answer, TimeStep *tStep, GaussPoint *gp, ValueModeType mode)
Computes at given time the resulting eigenstrain component array.
virtual void computeValueAt(FloatArray &answer, TimeStep *tStep, const FloatArray &coords, ValueModeType mode)
Computes components values of load at given point - global coordinates (coordinates given)...
int giveNumberOfRows() const
Returns number of rows of receiver.
Load * giveLoad(int n)
Service for accessing particular domain load.
void symmetrized()
Initializes the lower half of the receiver according to the upper half.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual void addNonlocalStiffnessContributions(SparseMtrx &dest, const UnknownNumberingScheme &s, TimeStep *tStep)
Adds the "nonlocal" contribution to stiffness matrix, to account for nonlocality of material model...
Class representing integration point in finite element program.
#define OOFEM_WARNING(...)
Class representing solution step.
virtual int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords)
Computes the global coordinates from given element's local coordinates.
InternalStateMode
Determines the mode of internal variable.
void add(const FloatArray &src)
Adds array src to receiver.
virtual void computeConsistentMassMatrix(FloatMatrix &answer, TimeStep *tStep, double &mass, const double *ipDensity=NULL)
Computes consistent mass matrix of receiver using numerical integration over element volume...
virtual void giveMassMtrxIntegrationgMask(IntArray &answer)
Returns mask indicating, which unknowns (their type and ordering is the same as element unknown vecto...
const FloatArray & giveNaturalCoordinates()
Returns coordinate array of receiver.
Class representing Gaussian-quadrature integration rule.
Abstract base class representing a point load (force, momentum, ...) that acts directly on or inside ...
void resize(int s)
Resizes receiver towards requested size.
void plusProduct(const FloatMatrix &b, const FloatArray &s, double dV)
Adds the product .