128 return detJ * thickness * weight;
186 answer.
resize(eNodes.giveSize() * 2);
187 for (
int i = 1; i <= eNodes.giveSize(); i++ ) {
188 answer.
at(i * 2 - 1) = eNodes.at(i) * 2 - 1;
189 answer.
at(i * 2) = eNodes.at(i) * 2;
224 answer.
at(1, 1) = normal.
at(2);
225 answer.
at(1, 2) = normal.
at(1);
226 answer.
at(2, 1) = -normal.
at(1);
227 answer.
at(2, 2) = normal.
at(2);
252 answer.
at(1, i * 2 - 1) = dNdx.
at(i, 1);
253 answer.
at(2, i * 2 - 0) = dNdx.
at(i, 2);
255 answer.
at(3, 2 * i - 1) = dNdx.
at(i, 2);
256 answer.
at(3, 2 * i - 0) = dNdx.
at(i, 1);
275 answer.
at(1, 2 * i - 1) = dNdx.
at(i, 1);
276 answer.
at(2, 2 * i - 0) = dNdx.
at(i, 2);
277 answer.
at(3, 2 * i - 1) = dNdx.
at(i, 2);
278 answer.
at(4, 2 * i - 0) = dNdx.
at(i, 1);
292 e [ 0 ] * x [ 0 ] * x [ 0 ] + e [ 2 ] * x [ 0 ] * x [ 1 ] + e [ 1 ] * x [ 1 ] * x [ 1 ],
293 e [ 0 ] * y [ 0 ] * y [ 0 ] + e [ 2 ] * y [ 0 ] * y [ 1 ] + e [ 1 ] * y [ 1 ] * y [ 1 ],
294 2 * e [ 0 ] * x [ 0 ] * y [ 0 ] + 2 * e [ 1 ] * x [ 1 ] * y [ 1 ] + e [ 2 ] * ( x [ 1 ] * y [ 0 ] + x [ 0 ] * y [ 1 ] )
300 s [ 0 ] * x [ 0 ] * x [ 0 ] + 2 * s [ 2 ] * x [ 0 ] * y [ 0 ] + s [ 1 ] * y [ 0 ] * y [ 0 ],
301 s [ 0 ] * x [ 1 ] * x [ 1 ] + 2 * s [ 2 ] * x [ 1 ] * y [ 1 ] + s [ 1 ] * y [ 1 ] * y [ 1 ],
302 s [ 1 ] * y [ 0 ] * y [ 1 ] + s [ 0 ] * x [ 0 ] * x [ 1 ] + s [ 2 ] * ( x [ 1 ] * y [ 0 ] + x [ 0 ] * y [ 1 ] )
321 { x(0) * x(0), x(1) * x(1), x(0) * x(1) },
322 { y(0) * y(0), y(1) * y(1), y(0) * y(1) },
323 { 2 * x(0) * y(0), 2 * x(1) * y(1), x(1) * y(0) + x(0) * y(1) }
340 { x(0) * x(0), x(1) * x(1), x(0) * x(1), x(1) * x(0) },
341 { y(0) * y(0), y(1) * y(1), y(0) * y(1), y(1) * y(0) },
342 { x(0) * y(0), x(1) * y(1), x(0) * y(1), x(1) * y(0) },
343 { y(0) * x(0), y(1) * x(1), y(0) * x(1), y(1) * x(0) }
373 answer.
at(1, i * 2 - 1) = dNdx.
at(i, 1);
374 answer.
at(2, i * 2 - 0) = dNdx.
at(i, 2);
376 answer.
at(4, 2 * i - 1) = dNdx.
at(i, 2);
377 answer.
at(4, 2 * i - 0) = dNdx.
at(i, 1);
396 answer.
at(1, 2 * i - 1) = dNdx.
at(i, 1);
397 answer.
at(2, 2 * i - 0) = dNdx.
at(i, 2);
398 answer.
at(4, 2 * i - 1) = dNdx.
at(i, 2);
399 answer.
at(5, 2 * i - 0) = dNdx.
at(i, 1);
414 e [ 0 ] * x [ 0 ] * x [ 0 ] + e [ 3 ] * x [ 0 ] * x [ 1 ] + e [ 1 ] * x [ 1 ] * x [ 1 ],
415 e [ 0 ] * y [ 0 ] * y [ 0 ] + e [ 3 ] * y [ 0 ] * y [ 1 ] + e [ 1 ] * y [ 1 ] * y [ 1 ],
417 2 * e [ 0 ] * x [ 0 ] * y [ 0 ] + 2 * e [ 1 ] * x [ 1 ] * y [ 1 ] + e [ 3 ] * ( x [ 1 ] * y [ 0 ] + x [ 0 ] * y [ 1 ] )
421 s [ 0 ] * x [ 0 ] * x [ 0 ] + 2 * s [ 3 ] * x [ 0 ] * y [ 0 ] + s [ 1 ] * y [ 0 ] * y [ 0 ],
422 s [ 0 ] * x [ 1 ] * x [ 1 ] + 2 * s [ 3 ] * x [ 1 ] * y [ 1 ] + s [ 1 ] * y [ 1 ] * y [ 1 ],
424 y [ 1 ] * ( s [ 3 ] * x [ 0 ] + s [ 1 ] * y [ 0 ] ) + x [ 1 ] * ( s [ 0 ] * x [ 0 ] + s [ 3 ] * y [ 0 ] )
442 { x(0) * x(0), x(1) * x(1), 0, x(0) * x(1) },
443 { y(0) * y(0), y(1) * y(1), 0, y(0) * y(1) },
445 { 2 * x(0) * y(0), 2 * x(1) * y(1), 0, x(1) * y(0) + x(0) * y(1) }
464 { x(0) * x(0), x(1) * x(1), 0, x(0) * x(1), x(1) * x(0) },
465 { y(0) * y(0), y(1) * y(1), 0, y(0) * y(1), y(1) * y(0) },
467 { x(0) * y(0), x(1) * y(1), 0, x(0) * y(1), x(1) * y(0) },
468 { y(0) * x(0), y(1) * x(1), 0, y(0) * x(1), y(1) * x(0) }
505 return determinant * weight;
533 answer.
at(1, i * 2 - 1) = dNdx.
at(i, 1);
534 answer.
at(2, i * 2 - 0) = dNdx.
at(i, 2);
535 answer.
at(3, i * 2 - 1) =
N.at(i) / r;
536 answer.
at(6, 2 * i - 1) = dNdx.
at(i, 2);
537 answer.
at(6, 2 * i - 0) = dNdx.
at(i, 1);
558 answer.
resize(9, nRows * 2);
569 for (
int i = 1; i <= nRows * 2; i++ ) {
570 answer.
at(1, 2 * i - 2) = dnx.
at(i, 1);
571 answer.
at(2, 2 * i - 1) = dnx.
at(i, 2);
572 answer.
at(6, 2 * i - 2) = dnx.
at(i, 2);
573 answer.
at(9, 2 * i - 1) = dnx.
at(i, 1);
577 answer.
at(3, 2 * i + 1) = n.
at(i + 1) / r;
616 e [ 0 ] * x [ 0 ] * x [ 0 ] + e [ 5 ] * x [ 0 ] * x [ 1 ] + e [ 1 ] * x [ 1 ] * x [ 1 ],
617 e [ 0 ] * y [ 0 ] * y [ 0 ] + e [ 5 ] * y [ 0 ] * y [ 1 ] + e [ 1 ] * y [ 1 ] * y [ 1 ],
619 e [ 4 ] * y [ 0 ] + e [ 3 ] * y [ 1 ],
620 e [ 4 ] * x [ 0 ] + e [ 3 ] * x [ 1 ],
621 2 * e [ 0 ] * x [ 0 ] * y [ 0 ] + 2 * e [ 1 ] * x [ 1 ] * y [ 1 ] + e [ 5 ] * ( x [ 1 ] * y [ 0 ] + x [ 0 ] * y [ 1 ] )
625 s [ 0 ] * x [ 0 ] * x [ 0 ] + 2 * s [ 5 ] * x [ 0 ] * y [ 0 ] + s [ 1 ] * y [ 0 ] * y [ 0 ],
626 s [ 0 ] * x [ 1 ] * x [ 1 ] + 2 * s [ 5 ] * x [ 1 ] * y [ 1 ] + s [ 1 ] * y [ 1 ] * y [ 1 ],
628 s [ 4 ] * x [ 1 ] + s [ 3 ] * y [ 1 ],
629 s [ 4 ] * x [ 0 ] + s [ 3 ] * y [ 0 ],
630 y [ 1 ] * ( s [ 5 ] * x [ 0 ] + s [ 1 ] * y [ 0 ] ) + x [ 1 ] * ( s [ 0 ] * x [ 0 ] + s [ 5 ] * y [ 0 ] )
649 { x(0) * x(0), x(1) * x(1), 0, 0, 0, x(0) * x(1) },
650 { y(0) * y(0), y(1) * y(1), 0, 0, 0, y(0) * y(1) },
651 { 0, 0, 1, 0, 0, 0 },
652 { 0, 0, 0, y(1), y(0), 0 },
653 { 0, 0, 0, x(1), x(0), 0 },
654 { 2 * x(0) * y(0), 2 * x(1) * y(1), 0, 0, 0, x(1) * y(0) + x(0) * y(1) }
671 { x(0) * x(0), x(1) * x(1), 0, 0, 0, x(0) * x(1), 0, 0, x(1) * x(0) },
672 { y(0) * y(0), y(1) * y(1), 0, 0, 0, y(0) * y(1), 0, 0, y(1) * y(0) },
673 { 0, 0, 1, 0, 0, 0, 0, 0, 0 },
674 { 0, 0, 0, y(1), y(0), 0, 0, 0, 0 },
675 { 0, 0, 0, x(1), x(0), 0 },
676 { 2 * x(0) * y(0), 2 * x(1) * y(1), 0, 0, 0, x(1) * y(0) + x(0) * y(1) }
void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int lowerIndx=1, int upperIndx=ALL_STRAINS) override
void computeGaussPoints() override
double giveCharacteristicLength(const FloatArray &crackToNormalPlane) override
void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override
double computeVolumeAround(GaussPoint *gp) override
double computeEdgeVolumeAround(GaussPoint *gp, int iEdge) override
AxisymElement(int n, Domain *d)
void computeStressVector(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep) override
void computeConstitutiveMatrix_dPdF_At(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override
void computeBHmatrixAt(GaussPoint *gp, FloatMatrix &answer) override
virtual double give(CrossSectionProperty a, GaussPoint *gp) const
virtual int setupIntegrationPoints(IntegrationRule &irule, int npoints, Element *element)
double giveCoordinate(int i) const
double giveCharacteristicLengthForAxisymmElements(const FloatArray &normalToCrackPlane)
Node * giveNode(int i) const
virtual FEInterpolation * giveInterpolation() const
int numberOfDofMans
Number of dofmanagers.
void postInitialize() override
Performs post initialization steps.
std::vector< std ::unique_ptr< IntegrationRule > > integrationRulesArray
double giveCharacteristicLengthForPlaneElements(const FloatArray &normalToCrackPlane)
virtual int giveNumberOfDofManagers() const
FloatMatrix elemLocalCS
Transformation material matrix, used in orthotropic and anisotropic materials, global->local transfor...
CrossSection * giveCrossSection()
virtual Element_Geometry_Type giveGeometryType() const =0
virtual int giveNumberOfNodes(const Element_Geometry_Type) const
virtual void evalN(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const =0
virtual void giveJacobianMatrixAt(FloatMatrix &jacobianMatrix, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const
virtual double evaldNdx(FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const =0
Domain * domain
Link to domain object, useful for communicating with other FEM components.
int number
Component number.
void beColumnOf(const FloatMatrix &mat, int col)
void rotatedWith(const FloatMatrix &r, char mode='n')
void resize(Index rows, Index cols)
void zero()
Zeroes all coefficient of receiver.
int giveNumberOfRows() const
Returns number of rows of receiver.
double at(std::size_t i, std::size_t j) const
const FloatArray & giveNaturalCoordinates() const
Returns coordinate array of receiver.
double giveWeight()
Returns integration weight of receiver.
void initializeFrom(InputRecord &ir, int priority) override
NLStructuralElement(int n, Domain *d)
void computeConstitutiveMatrix_dPdF_At(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override
void computeBHmatrixAt(GaussPoint *gp, FloatMatrix &answer) override
void computeStressVector(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep) override
void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int lowerIndx=1, int upperIndx=ALL_STRAINS) override
PlaneStrainElement(int n, Domain *d)
void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override
PlaneStressElement(int n, Domain *d)
void computeConstitutiveMatrix_dPdF_At(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override
void computeStressVector(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep) override
void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override
void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int lowerIndx=1, int upperIndx=ALL_STRAINS) override
void computeBHmatrixAt(GaussPoint *gp, FloatMatrix &answer) override
virtual FEICellGeometry * giveCellGeometryWrapper()
void initializeFrom(InputRecord &ir, int priority) override
static ParamKey IPK_Structural2DElement_materialCoordinateSystem
[optional] Material coordinate system (local) for the element.
FEICellGeometry * cellGeometryWrapper
void giveDofManDofIDMask(int inode, IntArray &answer) const override
void giveMaterialOrientationAt(FloatArray &x, FloatArray &y, const FloatArray &lcoords)
int computeLoadLEToLRotationMatrix(FloatMatrix &answer, int iEdge, GaussPoint *gp) override
int computeNumberOfDofs() override
void computeGaussPoints() override
double computeEdgeVolumeAround(GaussPoint *gp, int iEdge) override
void giveEdgeDofMapping(IntArray &answer, int iEdge) const override
virtual ~Structural2DElement()
Destructor.
double computeVolumeAround(GaussPoint *gp) override
void postInitialize() override
Performs post initialization steps.
Structural2DElement(int n, Domain *d)
int giveNumberOfNodes() const override
double giveCharacteristicLength(const FloatArray &normalToCrackPlane) override
virtual FloatMatrixF< 9, 9 > giveStiffnessMatrix_dPdF_3d(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const =0
virtual FloatArrayF< 6 > giveRealStress_3d(const FloatArrayF< 6 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const =0
virtual FloatArrayF< 3 > giveRealStress_PlaneStress(const FloatArrayF< 3 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const =0
virtual FloatMatrixF< 4, 4 > giveStiffnessMatrix_PlaneStrain(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const =0
virtual FloatMatrixF< 4, 4 > giveStiffnessMatrix_dPdF_PlaneStress(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const =0
virtual FloatArrayF< 4 > giveRealStress_PlaneStrain(const FloatArrayF< 4 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const =0
virtual FloatMatrixF< 5, 5 > giveStiffnessMatrix_dPdF_PlaneStrain(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const =0
virtual FloatMatrixF< 6, 6 > giveStiffnessMatrix_3d(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const =0
virtual FloatMatrixF< 3, 3 > giveStiffnessMatrix_PlaneStress(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const =0
StructuralCrossSection * giveStructuralCrossSection()
Helper function which returns the structural cross-section for the element.
static FloatArray Vec2(const double &a, const double &b)
static FloatArray Vec6(const double &a, const double &b, const double &c, const double &d, const double &e, const double &f)
static FloatArray Vec4(const double &a, const double &b, const double &c, const double &d)
static FloatArray Vec3(const double &a, const double &b, const double &c)
#define PM_CHECK_FLAG_AND_REPORT(_pm, _ir, _componentnum, _paramkey, _prio, _flag)