35 #include "../sm/Elements/Plates/qdkt.h" 36 #include "../sm/Materials/structuralms.h" 37 #include "../sm/CrossSections/structuralcrosssection.h" 99 double x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4;
100 this->
giveNodeCoordinates(x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4);
109 double l4 = sqrt(dx4*dx4+dy4*dy4);
113 double l5 = sqrt(dx5*dx5+dy5*dy5);
117 double l6 = sqrt(dx6*dx6+dy6*dy6);
121 double l7 = sqrt(dx7*dx7+dy7*dy7);
136 double T101 = -3./2./l4*c4;
137 double T102 = -1./4.*c4*c4+1./2.*s4*s4;
138 double T103 = -1./4.*c4*s4-1./2.*c4*s4;
139 double T104 = 3./2./l4*c4;
140 double T105 = -1./4.*c4*c4+1./2.*s4*s4;
141 double T106 = -1./4.*c4*s4-1./2.*c4*s4;
143 double T201 = -3./2./l4*s4;
144 double T202 = -1./4.*c4*s4-1./2.*c4*s4;
145 double T203 = -1./4.*s4*s4+1./2.*c4*c4;
146 double T204 = 3./2./l4*s4;
147 double T205 = -1./4.*c4*s4-1./2.*c4*s4;
148 double T206 = -1./4.*s4*s4+1./2.*c4*c4;
150 double T304 = -3./2./l5*c5;
151 double T305 = -1./4.*c5*c5+1./2.*s5*s5;
152 double T306 = -1./4.*c5*s5-1./2.*c5*s5;
153 double T307 = 3./2./l5*c5;
154 double T308 = -1./4.*c5*c5+1./2.*s5*s5;
155 double T309 = -1./4.*c5*s5-1./2.*c5*s5;
157 double T404 = -3./2./l5*s5;
158 double T405 = -1./4.*c5*s5-1./2.*c5*s5;
159 double T406 = -1./4.*s5*s5+1./2.*c5*c5;
160 double T407 = 3./2./l5*s5;
161 double T408 = -1./4.*c5*s5-1./2.*c5*s5;
162 double T409 = -1./4.*s5*s5+1./2.*c5*c5;
164 double T507 = -3./2./l6*c6;
165 double T508 = -1./4.*c6*c6+1./2.*s6*s6;
166 double T509 = -1./4.*c6*s6-1./2.*c6*s6;
167 double T510 = 3./2./l6*c6;
168 double T511 = -1./4.*c6*c6+1./2.*s6*s6;
169 double T512 = -1./4.*c6*s6-1./2.*c6*s6;
171 double T607 = -3./2./l6*s6;
172 double T608 = -1./4.*c6*s6-1./2.*c6*s6;
173 double T609 = -1./4.*s6*s6+1./2.*c6*c6;
174 double T610 = 3./2./l6*s6;
175 double T611 = -1./4.*c6*s6-1./2.*c6*s6;
176 double T612 = -1./4.*s6*s6+1./2.*c6*c6;
178 double T701 = 3./2./l7*c7;
179 double T702 = -1./4.*c7*c7+1./2.*s7*s7;
180 double T703 = -1./4.*c7*s7-1./2.*c7*s7;
181 double T710 = -3./2./l7*c7;
182 double T711 = -1./4.*c7*c7+1./2.*s7*s7;
183 double T712 = -1./4.*c7*s7-1./2.*c7*s7;
185 double T801 = 3./2./l7*s7;
186 double T802 = -1./4.*c7*s7-1./2.*c7*s7;
187 double T803 = -1./4.*s7*s7+1./2.*c7*c7;
188 double T810 = -3./2./l7*s7;
189 double T811 = -1./4.*c7*s7-1./2.*c7*s7;
190 double T812 = -1./4.*s7*s7+1./2.*c7*c7;
194 double N1dk = 0.25*(2.0*ksi+eta)*(1.0+eta);
195 double N2dk = 0.25*(2.0*ksi-eta)*(1.0+eta);
196 double N3dk = 0.25*(2.0*ksi+eta)*(1.0-eta);
197 double N4dk = 0.25*(2.0*ksi-eta)*(1.0-eta);
198 double N7dk = -ksi*(1.0-eta);
199 double N8dk = 0.5*(1.0-eta*eta);
200 double N5dk = -ksi*(1.0+eta);
201 double N6dk = -0.5*(1.0-eta*eta);
203 double N3de = 0.25*(2.0*eta+ksi)*(1.0-ksi);
204 double N4de = 0.25*(2.0*eta-ksi)*(1.0+ksi);
205 double N1de = 0.25*(2.0*eta+ksi)*(1.0+ksi);
206 double N2de = 0.25*(2.0*eta-ksi)*(1.0-ksi);
207 double N7de = -0.5*(1.0-ksi*ksi);
208 double N8de = -eta*(1.0+ksi);
209 double N5de = 0.5*(1.0-ksi*ksi);
210 double N6de = -eta*(1.0-ksi);
212 double detJ = 1./8.*((y4-y2)*(x3-x1)-(y3-y1)*(x4-x2))+
213 ksi/8*((y3-y4)*(x2-x1)-(y2-y1)*(x3-x4))+
214 eta/8*((y4-y1)*(x3-x2)-(y3-y2)*(x4-x1));
216 double dxdk = -1.0/detJ * ((y3-y2)+(y4-y1+ksi*(y1-y2+y3-y4)))/4.0;
217 double dxde = 1.0/detJ * ((y2-y1)+(y3-y4+eta*(y1-y2+y3-y4)))/4.0;
218 double dydk = 1.0/detJ * ((x3-x2)+(x4-x1+ksi*(x1-x2+x3-x4)))/4.0;
219 double dyde = -1.0/detJ * ((x2-x1)+(x3-x4+eta*(x1-x2+x3-x4)))/4.0;
221 double dN102 = N1dk*dxdk+N1de*dxde;
222 double dN104 = N2dk*dxdk+N2de*dxde;
223 double dN106 = N3dk*dxdk+N3de*dxde;
224 double dN108 = N4dk*dxdk+N4de*dxde;
225 double dN110 = N5dk*dxdk+N5de*dxde;
226 double dN112 = N6dk*dxdk+N6de*dxde;
227 double dN114 = N7dk*dxdk+N7de*dxde;
228 double dN116 = N8dk*dxdk+N8de*dxde;
230 double dN201 = -N1dk*dydk-N1de*dyde;
231 double dN203 = -N2dk*dydk-N2de*dyde;
232 double dN205 = -N3dk*dydk-N3de*dyde;
233 double dN207 = -N4dk*dydk-N4de*dyde;
234 double dN209 = -N5dk*dydk-N5de*dyde;
235 double dN211 = -N6dk*dydk-N6de*dyde;
236 double dN213 = -N7dk*dydk-N7de*dyde;
237 double dN215 = -N8dk*dydk-N8de*dyde;
242 answer.
at(1,1) = T201*dN110 + T801*dN116;
243 answer.
at(1,2) = T202*dN110 + T802*dN116;
244 answer.
at(1,3) = dN102 + T203*dN110 + T803*dN116;
245 answer.
at(1,4) = T204*dN110 + T404*dN112;
246 answer.
at(1,5) = T205*dN110 + T405*dN112;
247 answer.
at(1,6) = dN104 + T206*dN110 + T406*dN112;
248 answer.
at(1,7) = T407*dN112 + T607*dN114;
249 answer.
at(1,8) = T408*dN112 + T608*dN114;
250 answer.
at(1,9) = dN106 + T409*dN112 + T609*dN114;
251 answer.
at(1,10)= T610*dN114 + T810*dN116;
252 answer.
at(1,11)= T611*dN114 + T811*dN116;
253 answer.
at(1,12)= dN108 + T612*dN114 + T812*dN116;
255 answer.
at(2,1) = T101*dN209 + T701*dN215;
256 answer.
at(2,2) = dN201 + T102*dN209 + T702*dN215;
257 answer.
at(2,3) = T103*dN209 + T703*dN215;
258 answer.
at(2,4) = T104*dN209 + T304*dN211;
259 answer.
at(2,5) = dN203 + T105*dN209 + T305*dN211;
260 answer.
at(2,6) = T106*dN209 + T306*dN211;
261 answer.
at(2,7) = T307*dN211 + T507*dN213;
262 answer.
at(2,8) = dN205 + T308*dN211 + T508*dN213;
263 answer.
at(2,9) = T309*dN211 + T509*dN213;
264 answer.
at(2,10)= T510*dN213 + T710*dN215;
265 answer.
at(2,11)= dN207 + T511*dN213 + T711*dN215;
266 answer.
at(2,12)= T512*dN213 + T712*dN215;
268 answer.
at(3,1) = - T101*dN110 - T201*dN209 - T701*dN116 - T801*dN215;
269 answer.
at(3,2) = - dN102 - T102*dN110 - T202*dN209 - T702*dN116 - T802*dN215;
270 answer.
at(3,3) = - dN201 - T103*dN110 - T203*dN209 - T703*dN116 - T803*dN215;
271 answer.
at(3,4) = - T104*dN110 - T204*dN209 - T304*dN112 - T404*dN211;
272 answer.
at(3,5) = - dN104 - T105*dN110 - T205*dN209 - T305*dN112 - T405*dN211;
273 answer.
at(3,6) = - dN203 - T106*dN110 - T206*dN209 - T306*dN112 - T406*dN211;
274 answer.
at(3,7) = - T307*dN112 - T407*dN211 - T507*dN114 - T607*dN213;
275 answer.
at(3,8) = - dN106 - T308*dN112 - T408*dN211 - T508*dN114 - T608*dN213;
276 answer.
at(3,9) = - dN205 - T309*dN112 - T409*dN211 - T509*dN114 - T609*dN213;
277 answer.
at(3,10)= - T510*dN114 - T610*dN213 - T710*dN116 - T810*dN215;
278 answer.
at(3,11)= - dN108 - T511*dN114 - T611*dN213 - T711*dN116 - T811*dN215;
279 answer.
at(3,12)= - dN207 - T512*dN114 - T612*dN213 - T712*dN116 - T812*dN215;
319 double &y1,
double &y2,
double &y3,
double &y4,
320 double &z1,
double &z2,
double &z3,
double &z4)
356 answer = {D_w, R_u, R_v};
392 return detJ * weight;
445 answer.
add(dV * dens, ntf);
453 #define POINT_TOL 1.e-3 462 double x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4;
463 this->
giveNodeCoordinates(x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4);
469 for (
int i = 1; i <= 4; i++ ) {
481 midplZ = z1 * answer.
at(1) + z2 * answer.
at(2) + z3 * answer.
at(3) + z4 * answer.
at(4);
487 if ( elthick / 2.0 + midplZ - fabs( coords.
at(3) ) < -
POINT_TOL ) {
502 if ( type == IST_ShellForceTensor || type == IST_ShellStrainTensor ) {
503 if ( type == IST_ShellForceTensor ) {
511 answer.
at(4) = help.
at(5);
512 answer.
at(5) = help.
at(4);
515 }
else if ( type == IST_ShellMomentTensor || type == IST_CurvatureTensor ) {
516 if ( type == IST_ShellMomentTensor ) {
521 answer.
at(1) = help.
at(1);
522 answer.
at(2) = help.
at(2);
526 answer.
at(6) = help.
at(3);
576 double layerZeta, layerZCoord, top, bottom;
581 layerZCoord = 0.5 * ( ( 1. - layerZeta ) * bottom + ( 1. + layerZeta ) * top );
585 answer.
at(1) = masterGpStrain.
at(1) * layerZCoord;
586 answer.
at(2) = masterGpStrain.
at(2) * layerZCoord;
587 answer.
at(5) = masterGpStrain.
at(3) * layerZCoord;
588 answer.
at(3) = masterGpStrain.
at(5);
589 answer.
at(4) = masterGpStrain.
at(4);
596 answer = {1, 2, 3, 4, 5, 6};
597 }
else if ( iEdge == 2 ) {
598 answer = {4, 5, 6, 7, 8, 9};
599 }
else if ( iEdge == 3 ) {
600 answer = {7, 8, 9, 10, 11, 12};
601 }
else if ( iEdge == 4 ) {
602 answer = {10, 11, 12, 1, 2, 3};
626 double dx, dy, length;
640 length = sqrt(dx * dx + dy * dy);
642 answer.
at(1, 1) = 1.0;
643 answer.
at(2, 2) = dx / length;
644 answer.
at(2, 3) = -dy / length;
645 answer.
at(3, 2) = dy / length;
646 answer.
at(3, 3) = dx / length;
672 for (
int i = 1; i<=12; i++) {
721 EASValsSetEdgeFlag(
true);
722 EASValsSetFillStyle(FILL_SOLID);
737 go = CreateQuad3D(p);
738 EGWithMaskChangeAttributes(WIDTH_MASK | FILL_MASK | COLOR_MASK | EDGE_COLOR_MASK | EDGE_FLAG_MASK | LAYER_MASK, go);
739 EGAttachObject(go, ( EObjectP )
this);
740 EMAddGraphicsToModel(ESIModel(), go);
760 EASValsSetEdgeFlag(
true);
761 EASValsSetFillStyle(FILL_SOLID);
776 go = CreateQuad3D(p);
777 EGWithMaskChangeAttributes(WIDTH_MASK | FILL_MASK | COLOR_MASK | EDGE_COLOR_MASK | EDGE_FLAG_MASK | LAYER_MASK, go);
778 EMAddGraphicsToModel(ESIModel(), go);
786 int i, indx, result = 0;
790 double s [ 4 ], defScale;
798 for ( i = 1; i <= 4; i++ ) {
808 for ( i = 1; i <= 4; i++ ) {
809 s [ i - 1 ] = v [ i - 1 ].
at(indx);
813 for ( i = 0; i < 4; i++ ) {
829 tr = CreateQuadWD3D(p, s [ 0 ], s [ 1 ], s [ 2 ], s [ 3 ]);
830 EGWithMaskChangeAttributes(LAYER_MASK, tr);
831 EMAddGraphicsToModel(ESIModel(), tr);
836 for ( i = 0; i < 4; i++ ) {
842 p [ i ].z = s [ i ] * landScale;
846 p [ i ].z = s [ i ] * landScale;
850 if ( fabs(s [ i ]) < 1.0e-6 ) {
858 tr = CreateQuad3D(p);
859 EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | LAYER_MASK, tr);
862 tr = CreateQuadWD3D(p, s [ 0 ], s [ 1 ], s [ 2 ], s [ 3 ]);
863 EGWithMaskChangeAttributes(LAYER_MASK, tr);
866 EMAddGraphicsToModel(ESIModel(), tr);
876 for ( i = 0; i < 4; i++ ) {
890 for ( i = 0; i < 3; i++ ) {
891 pp [ i + 4 ].x = 0.5 * ( pp [ i ].x + pp [ i + 1 ].x );
892 pp [ i + 4 ].y = 0.5 * ( pp [ i ].y + pp [ i + 1 ].y );
893 pp [ i + 4 ].z = 0.5 * ( pp [ i ].z + pp [ i + 1 ].z );
896 pp [ 7 ].x = 0.5 * ( pp [ 3 ].x + pp [ 0 ].x );
897 pp [ 7 ].y = 0.5 * ( pp [ 3 ].y + pp [ 0 ].y );
898 pp [ 7 ].z = 0.5 * ( pp [ 3 ].z + pp [ 0 ].z );
900 pp [ 8 ].x = 0.25 * ( pp [ 0 ].x + pp [ 1 ].x + pp [ 2 ].x + pp [ 3 ].x );
901 pp [ 8 ].y = 0.25 * ( pp [ 0 ].y + pp [ 1 ].y + pp [ 2 ].y + pp [ 3 ].y );
902 pp [ 8 ].z = 0.25 * ( pp [ 0 ].z + pp [ 1 ].z + pp [ 2 ].z + pp [ 3 ].z );
905 const FloatArray &gpCoords = gp->giveNaturalCoordinates();
906 if ( ( gpCoords.
at(1) > 0. ) && ( gpCoords.
at(2) > 0. ) ) {
911 }
else if ( ( gpCoords.
at(1) < 0. ) && ( gpCoords.
at(2) > 0. ) ) {
916 }
else if ( ( gpCoords.
at(1) < 0. ) && ( gpCoords.
at(2) < 0. ) ) {
934 for ( i = 1; i <= 4; i++ ) {
935 s [ i - 1 ] = v [ 0 ].
at(indx);
938 for ( i = 0; i < 4; i++ ) {
939 p [ i ].x = pp [ ind.
at(i + 1) ].x;
940 p [ i ].y = pp [ ind.
at(i + 1) ].y;
941 p [ i ].z = pp [ ind.
at(i + 1) ].z;
945 tr = CreateQuadWD3D(p, s [ 0 ], s [ 1 ], s [ 2 ], s [ 3 ]);
946 EGWithMaskChangeAttributes(LAYER_MASK, tr);
947 EMAddGraphicsToModel(ESIModel(), tr);
CrossSection * giveCrossSection()
int testElementGraphicActivity(Element *)
Test if particular element passed fulfills various filtering criteria for its graphics output...
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
The element interface required by ZZNodalRecoveryModel.
virtual int global2local(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Default implementation using Newton's method to find the local coordinates.
virtual bool computeLocalCoordinates(FloatArray &answer, const FloatArray &gcoords)
Computes the element local coordinates from given global coordinates.
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.
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 computeGaussPoints()
Initializes the array of integration rules member variable.
virtual IntegrationRule * giveDefaultIntegrationRulePtr()
Access method for default integration rule.
ScalarAlgorithmType getScalarAlgo()
virtual double giveTransformationJacobian(const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the determinant of the transformation.
virtual FEInterpolation * giveInterpolation() const
The element interface required by ZZNodalRecoveryModel.
Abstract base class for "structural" finite elements with geometrical nonlinearities.
virtual void SPRNodalRecoveryMI_giveDofMansDeterminedByPatch(IntArray &answer, int pap)
void zero()
Sets all component to zero.
double & at(int i)
Coefficient access function.
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...
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
#define OOFEG_RAW_GEOMETRY_LAYER
This class implements a structural material status information.
void clear()
Clears receiver (zero size).
EPixel getElementEdgeColor()
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]
virtual void computeMidPlaneNormal(FloatArray &answer, const GaussPoint *gp)
Computes mid-plane normal of receiver at integration point.
virtual void computeNmatrixAt(const FloatArray &iLocCoord, FloatMatrix &answer)
Computes interpolation matrix for element unknowns.
static FEI2dQuadLin interp_lin
Element geometry approximation.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual double edgeGiveTransformationJacobian(int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the edge Jacobian of transformation between local and global coordinates.
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.
virtual void computeComponentArrayAt(FloatArray &answer, TimeStep *tStep, ValueModeType mode)
Computes boundary condition value - its components values at given time.
virtual int SetUpPointsOnSquare(int, MaterialMode mode)
Sets up receiver's integration points on unit square integration domain.
virtual double giveCoordinate(int i)
virtual double giveCharacteristicLength(const FloatArray &normalToCrackPlane)
Returns the size of element in the given direction, in some cases adjusted (e.g.
Class implementing an array of integers.
int & at(int i)
Coefficient access function.
MatResponseMode
Describes the character of characteristic material matrix.
#define OOFEG_DEFORMED_GEOMETRY_LAYER
virtual void giveDofManDofIDMask(int inode, IntArray &) const
Returns dofmanager dof mask for node.
virtual void drawRawGeometry(oofegGraphicContext &gc, TimeStep *tStep)
void rotatedWith(FloatMatrix &r, char mode)
Returns the receiver a rotated according the change-of-base matrix r.
Abstract base class representing integration rule.
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 void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int=1, int=ALL_STRAINS)
Computes the geometrical matrix of receiver in given integration point.
void beDifferenceOf(const FloatArray &a, const FloatArray &b)
Sets receiver to be a - b.
QDKTPlate(int n, Domain *d)
virtual SPRPatchType SPRNodalRecoveryMI_givePatchType()
virtual void give2dPlateStiffMtrx(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)=0
Method for computing 2d plate stiffness matrix.
int getInternalVarsDefGeoFlag()
EPixel getDeformedElementColor()
Class representing a general abstraction for finite element interpolation class.
InternalStateType giveIntVarType()
double giveNaturalCoordinate(int i) const
Returns i-th natural element coordinate of receiver.
virtual double computeSurfaceVolumeAround(GaussPoint *gp, int iSurf)
Computes volume related to integration point on local surface.
The element interface corresponding to ZZErrorEstimator.
virtual void computeLocalEdgeMapping(IntArray &edgeNodes, int iedge)
DofIDItem
Type representing particular dof type.
virtual int computeLoadGToLRotationMtrx(FloatMatrix &answer)
Returns transformation matrix from global coordinate system to local element coordinate system for el...
#define OOFEG_RAW_GEOMETRY_WIDTH
virtual double giveWeight()
Returns integration weight of receiver.
UnknownType
Type representing particular unknown (its physical meaning).
StructuralCrossSection * giveStructuralCrossSection()
Helper function which returns the structural cross-section for the element.
virtual void drawScalar(oofegGraphicContext &gc, TimeStep *tStep)
virtual void giveGeneralizedStress_Plate(FloatArray &answer, GaussPoint *gp, const FloatArray &generalizedStrain, TimeStep *tStep)=0
Wrapper around element definition to provide FEICellGeometry interface.
virtual double giveUpdatedCoordinate(int ic, TimeStep *tStep, double scale=1.)
Returns updated ic-th coordinate of receiver.
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.
void resize(int n)
Checks size of receiver towards requested bounds.
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.
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 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.
InternalStateMode giveIntVarMode()
void beNMatrixOf(const FloatArray &n, int nsd)
Assigns the receiver to be a repeated diagonal matrix.
virtual void giveSurfaceDofMapping(IntArray &answer, int iSurf) const
Assembles surface dof mapping mask, which provides mapping between surface local DOFs and "global" el...
virtual void computeBodyLoadVectorAt(FloatArray &answer, Load *forLoad, TimeStep *tStep, ValueModeType mode)
Computes the load vector due to body load acting on receiver, at given time step. ...
Class representing vector of real numbers.
Implementation of matrix containing floating point numbers.
virtual int computeLoadLSToLRotationMatrix(FloatMatrix &answer, int iSurf, GaussPoint *gp)
Returns transformation matrix from local surface c.s to element local coordinate system of load vecto...
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 int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in full form.
virtual IntegrationRule * GetSurfaceIntegrationRule(int iSurf)
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.
IntegrationPointStatus * giveMaterialStatus()
Returns reference to associated material status (NULL if not defined).
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
virtual int getRequiredNumberOfIntegrationPoints(integrationDomain dType, int approxOrder)
Abstract service.
virtual void computeSurfaceNMatrix(FloatMatrix &answer, int boundaryID, const FloatArray &lcoords)
Computes surface interpolation matrix.
virtual void giveNodeCoordinates(double &x1, double &x2, double &x3, double &x4, double &y1, double &y2, double &y3, double &y4, double &z1, double &z2, double &z3, double &z4)
void zero()
Zeroes all coefficients of receiver.
virtual bcGeomType giveBCGeoType() const
Returns geometry character of boundary condition.
#define OOFEG_DEFORMED_GEOMETRY_WIDTH
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 bool isActivated(TimeStep *tStep)
virtual FloatArray * giveCoordinates()
virtual double computeVolumeAround(GaussPoint *gp)
Returns volume related to given integration point.
void zero()
Zeroes all coefficient of receiver.
InterfaceType
Enumerative type, used to identify interface type.
void updateFringeTableMinMax(double *s, int size)
virtual double computeEdgeVolumeAround(GaussPoint *gp, int iEdge)
Computes volume related to integration point on local edge.
Load is base abstract class for all loads.
The element interface required by LayeredCrossSection.
int giveSize() const
Returns the size of receiver.
Abstract base class for all structural cross section models.
the oofem namespace is to define a context or scope in which all oofem names are defined.
virtual bcValType giveBCValType() const
Returns receiver load type.
Class implementing node in finite element mesh.
double normalize()
Normalizes receiver.
virtual Interface * giveInterface(InterfaceType it)
Interface requesting service.
Node * giveNode(int i) const
Returns reference to the i-th node of element.
virtual void SPRNodalRecoveryMI_giveSPRAssemblyPoints(IntArray &pap)
#define OOFEG_VARPLOT_PATTERN_LAYER
virtual void drawDeformedGeometry(oofegGraphicContext &gc, TimeStep *tStep, UnknownType type)
Class representing integration point in finite element program.
Class representing solution step.
int numberOfDofMans
Number of dofmanagers.
void add(const FloatArray &src)
Adds array src to receiver.
const FloatArray & giveNaturalCoordinates()
Returns coordinate array of receiver.
virtual Material * giveMaterial()
Class representing Gaussian-quadrature integration rule.
virtual void computeSurfaceNMatrixAt(FloatMatrix &answer, int iSurf, GaussPoint *gp)
virtual void computeStrainVectorInLayer(FloatArray &answer, const FloatArray &masterGpStrain, GaussPoint *masterGp, GaussPoint *slaveGp, TimeStep *tStep)
Computes full 3D strain vector in element layer.
void resize(int s)
Resizes receiver towards requested size.