127 return detJ * thickness * weight;
188 for (
int i = 1; i <= eNodes.
giveSize(); i++ ) {
189 answer.
at(i * 2 - 1) = eNodes.
at(i) * 2 - 1;
190 answer.
at(i * 2) = eNodes.
at(i) * 2;
225 answer.
at(1, 1) = normal.
at(2);
226 answer.
at(1, 2) = normal.
at(1);
227 answer.
at(2, 1) = -normal.
at(1);
228 answer.
at(2, 2) = normal.
at(2);
256 answer.
at(1, i * 2 - 1) = dNdx.
at(i, 1);
257 answer.
at(2, i * 2 - 0) = dNdx.
at(i, 2);
259 answer.
at(3, 2 * i - 1) = dNdx.
at(i, 2);
260 answer.
at(3, 2 * i - 0) = dNdx.
at(i, 1);
279 answer.
at(1, 2 * i - 1) = dNdx.
at(i, 1);
280 answer.
at(2, 2 * i - 0) = dNdx.
at(i, 2);
281 answer.
at(3, 2 * i - 1) = dNdx.
at(i, 2);
282 answer.
at(4, 2 * i - 0) = dNdx.
at(i, 1);
298 e(0) * x(0) * x(0) + e(2) * x(0) * x(1) + e(1) * x(1) * x(1),
299 e(0) * y(0) * y(0) + e(2) * y(0) * y(1) + e(1) * y(1) * y(1),
300 2 * e(0) * x(0) * y(0) + 2 * e(1) * x(1) * y(1) + e(2) * ( x(1) * y(0) + x(0) * y(1) )
306 s(0) * x(0) * x(0) + 2 * s(2) * x(0) * y(0) + s(1) * y(0) * y(0),
307 s(0) * x(1) * x(1) + 2 * s(2) * x(1) * y(1) + s(1) * y(1) * y(1),
308 s(1) * y(0) * y(1) + s(0) * x(0) * x(1) + s(2) * ( x(1) * y(0) + x(0) * y(1) )
327 { x(0) * x(0), x(1) * x(1), x(0) * x(1) },
328 { y(0) * y(0), y(1) * y(1), y(0) * y(1) },
329 { 2 * x(0) * y(0), 2 * x(1) * y(1), x(1) * y(0) + x(0) * y(1) }
362 answer.
at(1, i * 2 - 1) = dNdx.
at(i, 1);
363 answer.
at(2, i * 2 - 0) = dNdx.
at(i, 2);
365 answer.
at(4, 2 * i - 1) = dNdx.
at(i, 2);
366 answer.
at(4, 2 * i - 0) = dNdx.
at(i, 1);
385 answer.
at(1, 2 * i - 1) = dNdx.
at(i, 1);
386 answer.
at(2, 2 * i - 0) = dNdx.
at(i, 2);
387 answer.
at(4, 2 * i - 1) = dNdx.
at(i, 2);
388 answer.
at(5, 2 * i - 0) = dNdx.
at(i, 1);
404 e(0) * x(0) * x(0) + e(3) * x(0) * x(1) + e(1) * x(1) * x(1),
405 e(0) * y(0) * y(0) + e(3) * y(0) * y(1) + e(1) * y(1) * y(1),
407 2 * e(0) * x(0) * y(0) + 2 * e(1) * x(1) * y(1) + e(3) * ( x(1) * y(0) + x(0) * y(1) )
411 s(0) * x(0) * x(0) + 2 * s(3) * x(0) * y(0) + s(1) * y(0) * y(0),
412 s(0) * x(1) * x(1) + 2 * s(3) * x(1) * y(1) + s(1) * y(1) * y(1),
414 y(1) * ( s(3) * x(0) + s(1) * y(0) ) + x(1) * ( s(0) * x(0) + s(3) * y(0) )
432 { x(0) * x(0), x(1) * x(1), 0, x(0) * x(1) },
433 { y(0) * y(0), y(1) * y(1), 0, y(0) * y(1) },
435 { 2 * x(0) * y(0), 2 * x(1) * y(1), 0, x(1) * y(0) + x(0) * y(1) }
470 double determinant = fabs( static_cast< FEInterpolation2d * >( this->
giveInterpolation() )->
474 return determinant * weight;
503 answer.
at(1, i * 2 - 1) = dNdx.
at(i, 1);
504 answer.
at(2, i * 2 - 0) = dNdx.
at(i, 2);
505 answer.
at(3, i * 2 - 1) = N.
at(i) / r;
506 answer.
at(6, 2 * i - 1) = dNdx.
at(i, 2);
507 answer.
at(6, 2 * i - 0) = dNdx.
at(i, 1);
528 answer.
resize(9, nRows * 2);
539 for (
int i = 1; i <= nRows * 2; i++ ) {
540 answer.
at(1, 2 * i - 2) = dnx.
at(i, 1);
541 answer.
at(2, 2 * i - 1) = dnx.
at(i, 2);
542 answer.
at(6, 2 * i - 2) = dnx.
at(i, 2);
543 answer.
at(9, 2 * i - 1) = dnx.
at(i, 1);
547 answer.
at(3, 2 * i + 1) = n.
at(i + 1) / r;
587 e(0) * x(0) * x(0) + e(5) * x(0) * x(1) + e(1) * x(1) * x(1),
588 e(0) * y(0) * y(0) + e(5) * y(0) * y(1) + e(1) * y(1) * y(1),
590 e(4) * y(0) + e(3) * y(1),
591 e(4) * x(0) + e(3) * x(1),
592 2 * e(0) * x(0) * y(0) + 2 * e(1) * x(1) * y(1) + e(5) * ( x(1) * y(0) + x(0) * y(1) )
596 s(0) * x(0) * x(0) + 2 * s(5) * x(0) * y(0) + s(1) * y(0) * y(0),
597 s(0) * x(1) * x(1) + 2 * s(5) * x(1) * y(1) + s(1) * y(1) * y(1),
599 s(4) * x(1) + s(3) * y(1),
600 s(4) * x(0) + s(3) * y(0),
601 y(1) * ( s(5) * x(0) + s(1) * y(0) ) + x(1) * ( s(0) * x(0) + s(5) * y(0) )
620 { x(0) * x(0), x(1) * x(1), 0, 0, 0, x(0) * x(1) },
621 { y(0) * y(0), y(1) * y(1), 0, 0, 0, y(0) * y(1) },
622 { 0, 0, 1, 0, 0, 0 },
623 { 0, 0, 0, y(1), y(0), 0 },
624 { 0, 0, 0, x(1), x(0), 0 },
625 { 2 * x(0) * y(0), 2 * x(1) * y(1), 0, 0, 0, x(1) * y(0) + x(0) * y(1) }
virtual FEICellGeometry * giveCellGeometryWrapper()
Returns the Cell Geometry Wrapper.
CrossSection * giveCrossSection()
virtual void giveStiffnessMatrix_PlaneStrain(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)=0
virtual void postInitialize()
Performs post initialization steps.
virtual void evalN(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Evaluates the array of interpolation functions (shape functions) at given point.
virtual void giveRealStress_PlaneStress(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep)=0
virtual void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int lowerIndx=1, int upperIndx=ALL_STRAINS)
Computes the geometrical matrix of receiver in given integration point.
virtual double computeEdgeVolumeAround(GaussPoint *gp, int iEdge)
Computes volume related to integration point on local edge.
virtual double giveCharacteristicLength(const FloatArray &crackToNormalPlane)
Returns the size of element in the given direction, in some cases adjusted (e.g.
Abstract base class for "structural" finite elements with geometrical nonlinearities.
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...
double & at(int i)
Coefficient access function.
Class representing a general abstraction for surface finite element interpolation class...
Class representing a general abstraction for cell geometry.
AxisymElement(int n, Domain *d)
virtual void computeBHmatrixAt(GaussPoint *gp, FloatMatrix &answer)
virtual void computeBHmatrixAt(GaussPoint *gp, FloatMatrix &answer)
Computes a matrix which, multiplied by the column matrix of nodal displacements, gives the displaceme...
virtual void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
Computes constitutive matrix of receiver.
virtual double giveCoordinate(int i)
void giveMaterialOrientationAt(FloatArray &x, FloatArray &y, const FloatArray &lcoords)
Class implementing an array of integers.
int & at(int i)
Coefficient access function.
MatResponseMode
Describes the character of characteristic material matrix.
virtual double giveCharacteristicLength(const FloatArray &normalToCrackPlane)
Returns the size of element in the given direction, in some cases adjusted (e.g.
virtual int giveNumberOfNodes() const
Returns number of nodes of receiver.
virtual int giveNumberOfNodes() const
Returns the number of geometric nodes of the receiver.
virtual int giveNumberOfDofManagers() const
virtual FEInterpolation * giveInterpolation() const
void beColumnOf(const FloatMatrix &mat, int col)
Reciever will be set to a given column in a matrix.
virtual double computeEdgeVolumeAround(GaussPoint *gp, int iEdge)
Computes volume related to integration point on local edge.
Class representing a general abstraction for finite element interpolation class.
bool isNotEmpty() const
Tests for empty matrix.
FloatMatrix elemLocalCS
Transformation material matrix, used in orthotropic and anisotropic materials, global->local transfor...
PlaneStrainElement(int n, Domain *d)
virtual double giveWeight()
Returns integration weight of receiver.
virtual void giveRealStress_PlaneStrain(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep)=0
StructuralCrossSection * giveStructuralCrossSection()
Helper function which returns the structural cross-section for the element.
#define _IFT_Structural2DElement_materialCoordinateSystem
[optional] Support for material directions based on element orientation.
virtual void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int lowerIndx=1, int upperIndx=ALL_STRAINS)
Computes the geometrical matrix of receiver in given integration point.
void rotatedWith(const FloatMatrix &r, char mode= 'n')
Returns the receiver 'a' transformed using give transformation matrix r.
PlaneStressElement(int n, Domain *d)
Wrapper around element definition to provide FEICellGeometry interface.
virtual void giveStiffnessMatrix_PlaneStress(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)=0
double giveCharacteristicLengthForAxisymmElements(const FloatArray &normalToCrackPlane)
Returns the size of an axisymmetric element in the given direction if the direction is in the XY plan...
virtual ~Structural2DElement()
Destructor.
virtual void computeGaussPoints()
Initializes the array of integration rules member variable.
double at(int i, int j) const
Coefficient access function.
void resize(int n)
Checks size of receiver towards requested bounds.
virtual double computeVolumeAround(GaussPoint *gp)
Returns volume related to given integration point.
virtual void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
Computes constitutive matrix of receiver.
virtual int setupIntegrationPoints(IntegrationRule &irule, int npoints, Element *element)
Sets up integration rule for the given element.
int numberOfGaussPoints
Number of integration points as specified by nip.
virtual void computeStressVector(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep)
Computes the stress vector of receiver at given integration point, at time step tStep.
virtual void giveRealStress_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep)=0
Class representing vector of real numbers.
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.
Structural2DElement(int n, Domain *d)
Constructor.
double giveCharacteristicLengthForPlaneElements(const FloatArray &normalToCrackPlane)
Returns the size of element in the given direction if the direction is in the XY plane, otherwise gives the mean size defined as the square root of the element area.
virtual void giveJacobianMatrixAt(FloatMatrix &jacobianMatrix, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Gives the jacobian matrix at the local coordinates.
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
virtual void postInitialize()
Performs post initialization steps.
virtual void computeStressVector(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep)
Computes the stress vector of receiver at given integration point, at time step tStep.
Base class for planar 2D elements.
virtual void computeStressVector(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep)
Computes the stress vector of receiver at given integration point, at time step tStep.
virtual void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
Computes constitutive matrix of receiver.
std::vector< std::unique_ptr< IntegrationRule > > integrationRulesArray
List of integration rules of receiver (each integration rule contains associated integration points a...
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual double computeVolumeAround(GaussPoint *gp)
Returns volume related to given integration point.
void zero()
Zeroes all coefficient of receiver.
virtual void giveEdgeDofMapping(IntArray &answer, int iEdge) const
Assembles edge dof mapping mask, which provides mapping between edge local DOFs and "global" element ...
virtual int computeNumberOfDofs()
Computes or simply returns total number of element's local DOFs.
FEICellGeometry * cellGeometryWrapper
To facilitate the transformation of 2d elements into 3d, the complexity of transformation from 3d to ...
virtual void giveStiffnessMatrix_3d(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)=0
Method for computing the stiffness matrix.
the oofem namespace is to define a context or scope in which all oofem names are defined.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual void giveDofManDofIDMask(int inode, IntArray &answer) const
Returns dofmanager dof mask for node.
double normalize()
Normalizes receiver.
Node * giveNode(int i) const
Returns reference to the i-th node of element.
virtual void computeGaussPoints()
Initializes the array of integration rules member variable.
virtual void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int lowerIndx=1, int upperIndx=ALL_STRAINS)
Computes the geometrical matrix of receiver in given integration point.
int giveNumberOfRows() const
Returns number of rows of receiver.
Class representing integration point in finite element program.
Class representing solution step.
int numberOfDofMans
Number of dofmanagers.
virtual double evaldNdx(FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
Evaluates the matrix of derivatives of interpolation functions (shape functions) at given point...
virtual void computeBHmatrixAt(GaussPoint *gp, FloatMatrix &answer)
Computes a matrix which, multiplied by the column matrix of nodal displacements, gives the displaceme...
const FloatArray & giveNaturalCoordinates()
Returns coordinate array of receiver.
Class representing Gaussian-quadrature integration rule.