35 #include "../sm/Elements/PlaneStress/trplanestressrotallman3d.h" 36 #include "../sm/CrossSections/structuralcrosssection.h" 37 #include "../sm/Materials/structuralms.h" 70 for (
int i = 0; i < 3; i++ ) {
77 for (
int i = 1; i <= 3; i++ ) {
78 lxy [ 3 ].at(i) = 0.5 * ( lxy [ 0 ].at(i) + lxy [ 1 ].at(i) );
79 lxy [ 4 ].at(i) = 0.5 * ( lxy [ 1 ].at(i) + lxy [ 2 ].at(i) );
80 lxy [ 5 ].at(i) = 0.5 * ( lxy [ 2 ].at(i) + lxy [ 0 ].at(i) );
90 std :: vector< FloatArray >lc;
103 D_u, D_v, D_w, R_u, R_v, R_w
124 e1.beDifferenceOf( * this->
giveNode(2)->giveCoordinates(), * this->
giveNode(1)->giveCoordinates() );
131 e3.beVectorProductOf(e1, help);
136 e2.beVectorProductOf(e3, e1);
141 for (
int i = 1; i <= 3; i++ ) {
166 for (
int i = 1; i <= 3; i++ ) {
191 answer.
at(1, 1) = charVect.
at(1);
192 answer.
at(2, 2) = charVect.
at(2);
193 answer.
at(1, 2) = charVect.
at(3);
194 answer.
at(2, 1) = charVect.
at(3);
199 answer.
at(1, 1) = charVect.
at(1);
200 answer.
at(2, 2) = charVect.
at(2);
201 answer.
at(1, 2) = charVect.
at(3) / 2.;
202 answer.
at(2, 1) = charVect.
at(3) / 2.;
222 if ( type == IST_ShellForceTensor || type == IST_ShellStrainTensor ) {
224 if ( type == IST_ShellForceTensor ) {
234 answer.
at(1) = globTensor.
at(1, 1);
235 answer.
at(2) = globTensor.
at(2, 2);
236 answer.
at(3) = globTensor.
at(3, 3);
237 answer.
at(4) = c * globTensor.
at(2, 3);
238 answer.
at(5) = c * globTensor.
at(1, 3);
239 answer.
at(6) = c * globTensor.
at(1, 2);
243 }
else if ( type == IST_ShellMomentTensor || type == IST_CurvatureTensor ) {
264 for (
int i = 1; i <= 3; i++ ) {
282 double dens, dV, load;
306 load = force.
at(1) * dens * dV / 3.0;
309 answer.
at(13) = load;
311 load = force.
at(2) * dens * dV / 3.0;
314 answer.
at(14) = load;
316 load = force.
at(3) * dens * dV / 3.0;
319 answer.
at(15) = load;
340 fprintf( file,
" GP %2d.%-2d :", i + 1, gp->giveNumber() );
342 this->
giveIPValue(v, gp, IST_ShellStrainTensor, tStep);
343 fprintf(file,
" strains ");
344 for (
auto &val : v ) {
345 fprintf(file,
" %.4e", val);
348 this->
giveIPValue(v, gp, IST_CurvatureTensor, tStep);
349 fprintf(file,
"\n curvatures ");
350 for (
auto &val : v ) {
351 fprintf(file,
" %.4e", val);
355 this->
giveIPValue(v, gp, IST_ShellForceTensor, tStep);
356 fprintf(file,
"\n stresses ");
357 for (
auto &val : v ) {
358 fprintf(file,
" %.4e", val);
361 this->
giveIPValue(v, gp, IST_ShellMomentTensor, tStep);
362 fprintf(file,
"\n moments ");
363 for (
auto &val : v ) {
364 fprintf(file,
" %.4e", val);
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in full form.
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in full form.
void giveCharacteristicTensor(FloatMatrix &answer, CharTensor type, GaussPoint *gp, TimeStep *tStep)
Wrapper around cell with vertex coordinates stored in FloatArray**.
double & at(int i)
Coefficient access function.
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
This class implements a structural material status information.
void clear()
Clears receiver (zero size).
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. ...
virtual void computeComponentArrayAt(FloatArray &answer, TimeStep *tStep, ValueModeType mode)
Computes boundary condition value - its components values at given time.
virtual MaterialMode giveMaterialMode()
Returns material mode for receiver integration points.
FloatMatrix * GtoLRotationMatrix
Transformation Matrix form GtoL(3,3) is stored at the element level for computation efficiency...
Class implementing an array of integers.
TrPlanestressRotAllman3d(int n, Domain *d)
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Prints output of receiver to stream, for given time step.
void rotatedWith(FloatMatrix &r, char mode)
Returns the receiver a rotated according the change-of-base matrix r.
void beDifferenceOf(const FloatArray &a, const FloatArray &b)
Sets receiver to be a - b.
virtual int computeLoadGToLRotationMtrx(FloatMatrix &answer)
Returns transformation matrix from global coordinate system to local element coordinate system for el...
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.
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
Receiver becomes the result of the product of aMatrix and anArray.
double at(int i, int j) const
Coefficient access function.
const FloatMatrix * computeGtoLRotationMatrix()
Class representing vector of real numbers.
Implementation of matrix containing floating point numbers.
virtual double give(CrossSectionProperty a, GaussPoint *gp)
Returns the value of cross section property at given point.
GaussPoint * getIntegrationPoint(int n)
Access particular integration point of receiver.
virtual double computeVolumeAround(GaussPoint *gp)
Returns volume related to given integration point.
virtual double giveTransformationJacobian(const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the determinant of the transformation.
const FloatArray & giveStressVector() const
Returns the const pointer to receiver's stress vector.
IntegrationPointStatus * giveMaterialStatus()
Returns reference to associated material status (NULL if not defined).
virtual void giveDofManDofIDMask(int inode, IntArray &) const
Returns dofmanager dof mask for node.
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
void zero()
Zeroes all coefficients of receiver.
virtual bcGeomType giveBCGeoType() const
Returns geometry character of boundary condition.
void computeLocalNodalCoordinates(std::vector< FloatArray > &lxy)
std::vector< std::unique_ptr< IntegrationRule > > integrationRulesArray
List of integration rules of receiver (each integration rule contains associated integration points a...
virtual FloatArray * giveCoordinates()
void zero()
Zeroes all coefficient of receiver.
Load is base abstract class for all loads.
int giveSize() const
Returns the size of receiver.
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.
Node * giveNode(int i) const
Returns reference to the i-th node of element.
const FloatArray & giveStrainVector() const
Returns the const pointer to receiver's strain vector.
Class representing integration point in finite element program.
Class representing solution step.
Class implements an triangular three-node plane- stress elasticity finite element with independentver...
const FloatArray & giveNaturalCoordinates()
Returns coordinate array of receiver.
virtual int SetUpPointsOnTriangle(int nPoints, MaterialMode mode)
Sets up receiver's integration points on triangular (area coords) integration domain.
Class representing Gaussian-quadrature integration rule.
void resize(int s)
Resizes receiver towards requested size.