72 answer.
at(1, 3 * i - 2) = dNdx.
at(i, 1);
73 answer.
at(2, 3 * i - 1) = dNdx.
at(i, 2);
74 answer.
at(3, 3 * i - 0) = dNdx.
at(i, 3);
76 answer.
at(5, 3 * i - 2) = answer.
at(4, 3 * i - 1) = dNdx.
at(i, 3);
77 answer.
at(6, 3 * i - 2) = answer.
at(4, 3 * i - 0) = dNdx.
at(i, 2);
78 answer.
at(6, 3 * i - 1) = answer.
at(5, 3 * i - 0) = dNdx.
at(i, 1);
98 answer.
at(1, 3 * i - 2) = dNdx.
at(i, 1);
99 answer.
at(2, 3 * i - 1) = dNdx.
at(i, 2);
100 answer.
at(3, 3 * i - 0) = dNdx.
at(i, 3);
101 answer.
at(4, 3 * i - 1) = dNdx.
at(i, 3);
102 answer.
at(7, 3 * i - 0) = dNdx.
at(i, 2);
103 answer.
at(5, 3 * i - 2) = dNdx.
at(i, 3);
104 answer.
at(8, 3 * i - 0) = dNdx.
at(i, 1);
105 answer.
at(6, 3 * i - 2) = dNdx.
at(i, 2);
106 answer.
at(9, 3 * i - 1) = dNdx.
at(i, 1);
152 e(0) * x(0) * x(0) + e(5) * x(0) * x(1) + e(1) * x(1) * x(1) + e(4) * x(0) * x(2) + e(3) * x(1) * x(2) + e(2) * x(2) * x(2),
153 e(0) * y(0) * y(0) + e(5) * y(0) * y(1) + e(1) * y(1) * y(1) + e(4) * y(0) * y(2) + e(3) * y(1) * y(2) + e(2) * y(2) * y(2),
154 e(0) * z(0) * z(0) + e(5) * z(0) * z(1) + e(1) * z(1) * z(1) + e(4) * z(0) * z(2) + e(3) * z(1) * z(2) + e(2) * z(2) * z(2),
155 2 * e(0) * y(0) * z(0) + e(4) * y(2) * z(0) + 2 * e(1) * y(1) * z(1) + e(3) * y(2) * z(1) + e(5) * ( y(1) * z(0) + y(0) * z(1) ) + ( e(4) * y(0) + e(3) * y(1) + 2 * e(2) * y(2) ) * z(2),
156 2 * e(0) * x(0) * z(0) + e(4) * x(2) * z(0) + 2 * e(1) * x(1) * z(1) + e(3) * x(2) * z(1) + e(5) * ( x(1) * z(0) + x(0) * z(1) ) + ( e(4) * x(0) + e(3) * x(1) + 2 * e(2) * x(2) ) * z(2),
157 2 * e(0) * x(0) * y(0) + e(4) * x(2) * y(0) + 2 * e(1) * x(1) * y(1) + e(3) * x(2) * y(1) + e(5) * ( x(1) * y(0) + x(0) * y(1) ) + ( e(4) * x(0) + e(3) * x(1) + 2 * e(2) * x(2) ) * y(2)
161 s(0) * x(0) * x(0) + 2 * s(5) * x(0) * y(0) + s(1) * y(0) * y(0) + 2 * ( s(4) * x(0) + s(3) * y(0) ) * z(0) + s(2) * z(0) * z(0),
162 s(0) * x(1) * x(1) + 2 * s(5) * x(1) * y(1) + s(1) * y(1) * y(1) + 2 * ( s(4) * x(1) + s(3) * y(1) ) * z(1) + s(2) * z(1) * z(1),
163 s(0) * x(2) * x(2) + 2 * s(5) * x(2) * y(2) + s(1) * y(2) * y(2) + 2 * ( s(4) * x(2) + s(3) * y(2) ) * z(2) + s(2) * z(2) * z(2),
164 y(2) * ( s(5) * x(1) + s(1) * y(1) + s(3) * z(1) ) + x(2) * ( s(0) * x(1) + s(5) * y(1) + s(4) * z(1) ) + ( s(4) * x(1) + s(3) * y(1) + s(2) * z(1) ) * z(2),
165 y(2) * ( s(5) * x(0) + s(1) * y(0) + s(3) * z(0) ) + x(2) * ( s(0) * x(0) + s(5) * y(0) + s(4) * z(0) ) + ( s(4) * x(0) + s(3) * y(0) + s(2) * z(0) ) * z(2),
166 y(1) * ( s(5) * x(0) + s(1) * y(0) + s(3) * z(0) ) + x(1) * ( s(0) * x(0) + s(5) * y(0) + s(4) * z(0) ) + ( s(4) * x(0) + s(3) * y(0) + s(2) * z(0) ) * z(1)
184 { x(0) * x(0), x(1) * x(1), x(2) * x(2), x(1) * x(2), x(0) * x(2), x(0) * x(1) },
185 { y(0) * y(0), y(1) * y(1), y(2) * y(2), y(1) * y(2), y(0) * y(2), y(0) * y(1) },
186 { z(0) * z(0), z(1) * z(1), z(2) * z(2), z(1) * z(2), z(0) * z(2), z(0) * z(1) },
187 { 2 * y(0) * z(0), 2 * y(1) * z(1), 2 * y(2) * z(2), y(2) * z(1) + y(1) * z(2), y(2) * z(0) + y(0) * z(2), y(1) * z(0) + y(0) * z(1) },
188 { 2 * x(0) * z(0), 2 * x(1) * z(1), 2 * x(2) * z(2), x(2) * z(1) + x(1) * z(2), x(2) * z(0) + x(0) * z(2), x(1) * z(0) + x(0) * z(1) },
189 { 2 * x(0) * y(0), 2 * x(1) * y(1), 2 * x(2) * y(2), x(2) * y(1) + x(1) * y(2), x(2) * y(0) + x(0) * y(2), x(1) * y(0) + x(0) * y(1) }
199 answer = {D_u, D_v, D_w};
229 double determinant, weight, volume;
234 volume = determinant * weight;
271 const int ndofsn = 3;
274 computeLocalSurfaceMapping(nodes, iSurf);
278 for (
int i = 1; i <= nodes.
giveSize(); i++ ) {
279 answer.
at(i * ndofsn - 2) = nodes.
at(i) * ndofsn - 2;
280 answer.
at(i * ndofsn - 1) = nodes.
at(i) * ndofsn - 1;
281 answer.
at(i * ndofsn) = nodes.
at(i) * ndofsn;
288 double determinant, weight, volume;
289 determinant = fabs( static_cast< FEInterpolation3d* > ( this->
giveInterpolation() )->
293 volume = determinant * weight;
303 OOFEM_ERROR(
"surface local coordinate system not supported");
325 for (
int i = 1; i <= eNodes.
giveSize(); i++ ) {
326 answer.
at(i * 3 - 2) = eNodes.
at(i) * 3 - 2;
327 answer.
at(i * 3 - 1) = eNodes.
at(i) * 3 - 1;
328 answer.
at(i * 3) = eNodes.
at(i) * 3;
358 OOFEM_ERROR(
"egde local coordinate system not supported");
CrossSection * giveCrossSection()
virtual void giveDofManDofIDMask(int inode, IntArray &answer) const
Returns dofmanager dof mask for node.
virtual MaterialMode giveMaterialMode()
Returns material mode for receiver integration points.
void beVectorProductOf(const FloatArray &v1, const FloatArray &v2)
Computes vector product (or cross product) of vectors given as parameters, , and stores the result in...
virtual void computeBHmatrixAt(GaussPoint *gp, FloatMatrix &answer)
Computes a matrix which, multiplied by the column matrix of nodal displacements, gives the displaceme...
Abstract base class for "structural" finite elements with geometrical nonlinearities.
void giveMaterialOrientationAt(FloatArray &x, FloatArray &y, FloatArray &z, const FloatArray &lcoords)
virtual void giveSurfaceDofMapping(IntArray &answer, int) const
Assembles surface dof mapping mask, which provides mapping between surface local DOFs and "global" el...
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 void computeSurfaceNMatrixAt(FloatMatrix &answer, int iSurf, GaussPoint *gp)
virtual int giveNumberOfNodes() const
Returns the number of geometric nodes of the receiver.
virtual FEInterpolation * giveInterpolation() const
virtual double computeEdgeVolumeAround(GaussPoint *gp, int iEdge)
Computes volume related to integration point on local edge.
void beColumnOf(const FloatMatrix &mat, int col)
Reciever will be set to a given column in a matrix.
virtual void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
Computes constitutive matrix of receiver.
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...
virtual void computeGaussPoints()
Initializes the array of integration rules member variable.
virtual double giveWeight()
Returns integration weight of receiver.
StructuralCrossSection * giveStructuralCrossSection()
Helper function which returns the structural cross-section for the element.
void rotatedWith(const FloatMatrix &r, char mode= 'n')
Returns the receiver 'a' transformed using give transformation matrix r.
Wrapper around element definition to provide FEICellGeometry interface.
virtual double giveCharacteristicLength(const FloatArray &normalToCrackPlane)
Returns the size of element in the given direction, in some cases adjusted (e.g.
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...
Structural3DElement(int n, Domain *d)
Constructor.
virtual double giveLengthInDir(const FloatArray &normalToCrackPlane)
Default implementation returns length of element projection into specified direction.
double at(int i, int j) const
Coefficient access function.
void resize(int n)
Checks size of receiver towards requested bounds.
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.
void beNMatrixOf(const FloatArray &n, int nsd)
Assigns the receiver to be a repeated diagonal matrix.
virtual void giveRealStress_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep)=0
virtual int computeLoadLSToLRotationMatrix(FloatMatrix &answer, int, GaussPoint *gp)
Returns transformation matrix from local surface c.s to element local coordinate system of load vecto...
Class representing vector of real numbers.
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
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.
Class representing a general abstraction for surface finite element interpolation class...
virtual double computeSurfaceVolumeAround(GaussPoint *gp, int)
Computes volume related to integration point on local surface.
virtual void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int lowerIndx=1, int upperIndx=ALL_STRAINS)
Computes the geometrical matrix of receiver in given integration point.
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 int computeNumberOfDofs()
Computes or simply returns total number of element's local DOFs.
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 double computeVolumeAround(GaussPoint *gp)
Returns volume related to given integration point.
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 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.
double normalize()
Normalizes receiver.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
int giveNumberOfRows() const
Returns number of rows of receiver.
Class representing integration point in finite element program.
#define _IFT_Structural3DElement_materialCoordinateSystem
[optional] Support for material directions based on element orientation.
Class representing solution step.
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...
const FloatArray & giveNaturalCoordinates()
Returns coordinate array of receiver.
Class representing Gaussian-quadrature integration rule.