77 answer.
at(1, 3 * i - 2) = dNdx.
at(i, 1);
78 answer.
at(2, 3 * i - 1) = dNdx.
at(i, 2);
79 answer.
at(3, 3 * i - 0) = dNdx.
at(i, 3);
81 answer.
at(5, 3 * i - 2) = answer.
at(4, 3 * i - 1) = dNdx.
at(i, 3);
82 answer.
at(6, 3 * i - 2) = answer.
at(4, 3 * i - 0) = dNdx.
at(i, 2);
83 answer.
at(6, 3 * i - 1) = answer.
at(5, 3 * i - 0) = dNdx.
at(i, 1);
103 answer.
at(1, 3 * i - 2) = dNdx.
at(i, 1);
104 answer.
at(2, 3 * i - 1) = dNdx.
at(i, 2);
105 answer.
at(3, 3 * i - 0) = dNdx.
at(i, 3);
106 answer.
at(4, 3 * i - 1) = dNdx.
at(i, 3);
107 answer.
at(7, 3 * i - 0) = dNdx.
at(i, 2);
108 answer.
at(5, 3 * i - 2) = dNdx.
at(i, 3);
109 answer.
at(8, 3 * i - 0) = dNdx.
at(i, 1);
110 answer.
at(6, 3 * i - 2) = dNdx.
at(i, 2);
111 answer.
at(9, 3 * i - 1) = dNdx.
at(i, 1);
123 stress_ident.
resize(9, 9);
127 this->
giveIPValue(stress, gp, IST_StressTensor, tStep);
145 stress_ident.
at(1, 1) = stress.
at(1);
146 stress_ident.
at(1, 5) = stress.
at(5);
147 stress_ident.
at(1, 6) = stress.
at(6);
149 stress_ident.
at(2, 2) = stress.
at(2);
150 stress_ident.
at(2, 4) = stress.
at(4);
151 stress_ident.
at(2, 9) = stress.
at(6);
153 stress_ident.
at(3, 3) = stress.
at(3);
154 stress_ident.
at(3, 7) = stress.
at(4);
155 stress_ident.
at(3, 8) = stress.
at(5);
157 stress_ident.
at(4, 2) = stress.
at(4);
158 stress_ident.
at(4, 4) = stress.
at(3);
159 stress_ident.
at(4, 9) = stress.
at(5);
161 stress_ident.
at(5, 1) = stress.
at(5);
162 stress_ident.
at(5, 5) = stress.
at(3);
163 stress_ident.
at(5, 6) = stress.
at(4);
165 stress_ident.
at(6, 1) = stress.
at(6);
166 stress_ident.
at(6, 5) = stress.
at(4);
167 stress_ident.
at(6, 6) = stress.
at(2);
169 stress_ident.
at(7, 3) = stress.
at(4);
170 stress_ident.
at(7, 7) = stress.
at(2);
171 stress_ident.
at(7, 8) = stress.
at(6);
173 stress_ident.
at(8, 3) = stress.
at(5);
174 stress_ident.
at(8, 7) = stress.
at(6);
175 stress_ident.
at(8, 8) = stress.
at(1);
177 stress_ident.
at(9, 2) = stress.
at(6);
178 stress_ident.
at(9, 4) = stress.
at(5);
179 stress_ident.
at(9, 9) = stress.
at(1);
230 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 ],
231 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 ],
232 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 ],
233 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 ],
234 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 ],
235 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 ]
239 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 ],
240 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 ],
241 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 ],
242 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 ],
243 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 ],
244 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 ]
262 { x(0) * x(0), x(1) * x(1), x(2) * x(2), x(1) * x(2), x(0) * x(2), x(0) * x(1) },
263 { y(0) * y(0), y(1) * y(1), y(2) * y(2), y(1) * y(2), y(0) * y(2), y(0) * y(1) },
264 { z(0) * z(0), z(1) * z(1), z(2) * z(2), z(1) * z(2), z(0) * z(2), z(0) * z(1) },
265 { 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) },
266 { 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) },
267 { 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) }
283 { x(0) * x(0), x(1) * x(1), x(2) * x(2), x(1) * x(2), x(0) * x(2), x(0) * x(1), x(2) * x(1), x(2) * x(0), x(1) * x(0) },
284 { y(0) * y(0), y(1) * y(1), y(2) * y(2), y(1) * y(2), y(0) * y(2), y(0) * y(1), y(2) * y(1), y(2) * y(0), y(1) * y(0) },
285 { z(0) * z(0), z(1) * z(1), z(2) * z(2), z(1) * z(2), z(0) * z(2), z(0) * z(1), z(2) * z(1), z(2) * z(0), z(1) * z(0) },
286 { y(0) * z(0), y(1) * z(1), y(2) * z(2), y(1) * z(2), y(0) * z(2), y(0) * z(1), y(2) * z(1), y(2) * z(0), y(1) * z(0) },
287 { x(0) * z(0), x(1) * z(1), x(2) * z(2), x(1) * z(2), x(0) * z(2), x(0) * z(1), x(2) * z(1), x(2) * z(0), x(1) * z(0) },
288 { x(0) * y(0), x(1) * y(1), x(2) * y(2), x(1) * y(2), x(0) * y(2), x(0) * y(1), x(2) * y(1), x(2) * y(0), x(1) * y(0) },
289 { z(0) * y(0), z(1) * y(1), z(2) * y(2), z(1) * y(2), z(0) * y(2), z(0) * y(1), z(2) * y(1), z(2) * y(0), z(1) * y(0) },
290 { z(0) * x(0), z(1) * x(1), z(2) * x(2), z(1) * x(2), z(0) * x(2), z(0) * x(1), z(2) * x(1), z(2) * x(0), z(1) * x(0) },
291 { y(0) * x(0), y(1) * x(1), y(2) * x(2), y(1) * x(2), y(0) * x(2), y(0) * x(1), y(2) * x(1), y(2) * x(0), y(1) * x(0) },
334 double determinant, weight, volume;
339 volume = determinant * weight;
371 const int ndofsn = 3;
375 answer.
resize(nodes.giveSize() * 3);
377 for (
int i = 1; i <= nodes.giveSize(); i++ ) {
378 answer.
at(i * ndofsn - 2) = nodes.at(i) * ndofsn - 2;
379 answer.
at(i * ndofsn - 1) = nodes.at(i) * ndofsn - 1;
380 answer.
at(i * ndofsn) = nodes.at(i) * ndofsn;
391 return determinant * weight;
398 OOFEM_ERROR(
"surface local coordinate system not supported");
413 answer.
resize(eNodes.giveSize() * 3);
414 for (
int i = 1; i <= eNodes.giveSize(); i++ ) {
415 answer.
at(i * 3 - 2) = eNodes.at(i) * 3 - 2;
416 answer.
at(i * 3 - 1) = eNodes.at(i) * 3 - 1;
417 answer.
at(i * 3) = eNodes.at(i) * 3;
446 OOFEM_ERROR(
"egde local coordinate system not supported");
virtual int setupIntegrationPoints(IntegrationRule &irule, int npoints, Element *element)
ParameterManager elementPPM
virtual double giveLengthInDir(const FloatArray &normalToCrackPlane)
virtual FEInterpolation * giveInterpolation() const
std::vector< std ::unique_ptr< IntegrationRule > > integrationRulesArray
FloatMatrix elemLocalCS
Transformation material matrix, used in orthotropic and anisotropic materials, global->local transfor...
CrossSection * giveCrossSection()
virtual IntegrationRule * giveDefaultIntegrationRulePtr()
virtual Element_Geometry_Type giveGeometryType() const =0
virtual int giveNumberOfNodes(const Element_Geometry_Type) const
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 * giveDomain() const
int number
Component number.
Index giveSize() const
Returns the size of receiver.
void beColumnOf(const FloatMatrix &mat, int col)
void beVectorProductOf(const FloatArray &v1, const FloatArray &v2)
void rotatedWith(const FloatMatrix &r, char mode='n')
static FloatMatrix fromIniList(std ::initializer_list< std ::initializer_list< double > >)
void resize(Index rows, Index cols)
*Sets size of receiver to be an empty matrix It will have zero rows and zero columns size void clear()
void plusProductUnsym(const FloatMatrix &a, const FloatMatrix &b, double dV)
void beProductOf(const FloatMatrix &a, const FloatMatrix &b)
void beNMatrixOf(const FloatArray &n, int nsd)
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 giveDofManDofIDMask(int inode, IntArray &answer) const override
void computeBHmatrixAt(GaussPoint *gp, FloatMatrix &answer) override
int computeNumberOfDofs() override
void giveSurfaceDofMapping(IntArray &answer, int) const override
double giveCharacteristicLength(const FloatArray &normalToCrackPlane) override
void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int lowerIndx=1, int upperIndx=ALL_STRAINS) override
Structural3DElement(int n, Domain *d)
int computeLoadLSToLRotationMatrix(FloatMatrix &answer, int, GaussPoint *gp) override
static ParamKey IPK_Structural3DElement_materialCoordinateSystem
[optional] Material coordinate system (local) for the element.
double computeSurfaceVolumeAround(GaussPoint *gp, int) override
void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override
void initializeFrom(InputRecord &ir, int priority) override
double computeVolumeAround(GaussPoint *gp) override
int computeLoadLEToLRotationMatrix(FloatMatrix &answer, int iEdge, GaussPoint *gp) override
MaterialMode giveMaterialMode() override
double computeEdgeVolumeAround(GaussPoint *gp, int iEdge) override
void computeConstitutiveMatrix_dPdF_At(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override
void giveEdgeDofMapping(IntArray &answer, int iEdge) const override
void computeInitialStressMatrix(FloatMatrix &answer, TimeStep *tStep) override
void computeStressVector(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep) override
void giveMaterialOrientationAt(FloatArray &x, FloatArray &y, FloatArray &z, const FloatArray &lcoords)
void computeGaussPoints() override
void computeSurfaceNMatrixAt(FloatMatrix &answer, int iSurf, GaussPoint *gp)
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 FloatMatrixF< 6, 6 > giveStiffnessMatrix_3d(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const =0
StructuralCrossSection * giveStructuralCrossSection()
Helper function which returns the structural cross-section for the element.
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
#define OOFEM_WARNING(...)
static FloatArray Vec6(const double &a, const double &b, const double &c, const double &d, const double &e, const double &f)
#define PM_CHECK_FLAG_AND_REPORT(_pm, _ir, _componentnum, _paramkey, _prio, _flag)