63 OOFEM_ERROR(
"cannot transform coordinates - size mismatch");
84 std :: vector< FloatArray > lc = {
Vec2(x[0], y[0]),
Vec2(x[1], y[1]),
Vec2(x[2], y[2])};
120TrPlaneStrRot3d :: giveDofManDofIDMask(
int inode,
IntArray &answer)
const
122 answer = {D_u, D_v, D_w, R_u, R_v, R_w};
127TrPlaneStrRot3d :: computeGtoLRotationMatrix()
159 for (
int i = 1; i <= 3; i++ ) {
184 for (
int i = 1; i <= 3; i++ ) {
210 answer.
at(1, 1) = charVect.
at(1) * h;
211 answer.
at(2, 2) = charVect.
at(2) * h;
212 answer.
at(1, 2) = charVect.
at(3) * h;
213 answer.
at(2, 1) = charVect.
at(3) * h;
218 answer.
at(3, 3) = charVect.
at(4);
223 answer.
at(1, 1) = charVect.
at(1);
224 answer.
at(2, 2) = charVect.
at(2);
225 answer.
at(1, 2) = charVect.
at(3) / 2.;
226 answer.
at(2, 1) = charVect.
at(3) / 2.;
231 answer.
at(3, 3) = charVect.
at(4);
252 if ( type == IST_CurvatureTensor || type == IST_ShellStrainTensor ) {
253 if ( type == IST_CurvatureTensor ) {
261 answer.
at(1) = globTensor.
at(1, 1);
262 answer.
at(2) = globTensor.
at(2, 2);
263 answer.
at(3) = globTensor.
at(3, 3);
264 answer.
at(4) = 2 * globTensor.
at(2, 3);
265 answer.
at(5) = 2 * globTensor.
at(1, 3);
266 answer.
at(6) = 2 * globTensor.
at(1, 2);
269 }
else if ( type == IST_ShellMomentTensor || type == IST_ShellForceTensor ) {
270 if ( type == IST_ShellMomentTensor ) {
278 answer.
at(1) = globTensor.
at(1, 1);
279 answer.
at(2) = globTensor.
at(2, 2);
280 answer.
at(3) = globTensor.
at(3, 3);
281 answer.
at(4) = globTensor.
at(2, 3);
282 answer.
at(5) = globTensor.
at(1, 3);
283 answer.
at(6) = globTensor.
at(1, 2);
287 return TrPlaneStrRot :: giveIPValue(answer, gp, type, tStep);
292TrPlaneStrRot3d :: computeLoadGToLRotationMtrx(
FloatMatrix &answer)
304 for (
int i = 1; i <= 3; i++ ) {
322 double dens, dV, load;
347 load = force.
at(1) * dens * dV / 3.0;
352 load = force.
at(2) * dens * dV / 3.0;
357 load = force.
at(6) * dens * dV / 3.0;
383 0, 1, 5, 6, 7, 11, 12, 13, 17
386 for (
int i = 0; i < 3; i++ ) {
387 for (
int j = 0; j < 9; j++ ) {
388 answer(ri [ i ], ci [ j ]) = ne(i, j);
394TrPlaneStrRot3d :: giveSurfaceDofMapping(
IntArray &answer,
int iSurf)
const
417TrPlaneStrRot3d :: computeSurfaceVolumeAround(
GaussPoint *gp,
int iSurf)
431TrPlaneStrRot3d :: printOutputAt(FILE *file,
TimeStep *tStep)
441 fprintf( file,
" GP %2d.%-2d :", i + 1, gp->giveNumber() );
443 this->
giveIPValue(v, gp, IST_ShellStrainTensor, tStep);
444 fprintf(file,
" strains ");
445 for (
auto &val : v ) fprintf(file,
" %.4e", val);
447 this->
giveIPValue(v, gp, IST_CurvatureTensor, tStep);
448 fprintf(file,
"\n curvatures ");
449 for (
auto &val : v ) fprintf(file,
" %.4e", val);
452 this->
giveIPValue(v, gp, IST_ShellForceTensor, tStep);
453 fprintf(file,
"\n stresses ");
454 for (
auto &val : v ) fprintf(file,
" %.4e", val);
456 this->
giveIPValue(v, gp, IST_ShellMomentTensor, tStep);
457 fprintf(file,
"\n moments ");
458 for (
auto &val : v ) fprintf(file,
" %.4e", val);
#define REGISTER_Element(class)
Node * giveNode(int i) const
std::vector< std ::unique_ptr< IntegrationRule > > integrationRulesArray
Index giveSize() const
Returns the size of receiver.
void beDifferenceOf(const FloatArray &a, const FloatArray &b)
void zero()
Zeroes all coefficients of receiver.
void rotatedWith(FloatMatrix &r, char mode)
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
void beVectorProductOf(const FloatArray &v1, const FloatArray &v2)
void subtract(const FloatArray &src)
void rotatedWith(const FloatMatrix &r, char mode='n')
void resize(Index rows, Index cols)
void zero()
Zeroes all coefficient of receiver.
double at(std::size_t i, std::size_t j) const
int SetUpPointsOnTriangle(int nPoints, MaterialMode mode) override
const FloatArray & giveNaturalCoordinates() const
Returns coordinate array of receiver.
IntegrationPointStatus * giveMaterialStatus(IntegrationPointStatusIDType key=IPSID_Default)
double giveWeight()
Returns integration weight of receiver.
virtual bcGeomType giveBCGeoType() const
virtual bcValType giveBCValType() const
void zero()
Sets all component to zero.
GaussPoint * getIntegrationPoint(int n)
virtual void computeComponentArrayAt(FloatArray &answer, TimeStep *tStep, ValueModeType mode)
StructuralCrossSection * giveStructuralCrossSection()
Helper function which returns the structural cross-section for the element.
const FloatArray & giveStrainVector() const
Returns the const pointer to receiver's strain vector.
const FloatArray & giveStressVector() const
Returns the const pointer to receiver's stress vector.
void giveNodeCoordinates(FloatArray &x, FloatArray &y) override
const FloatMatrix * computeGtoLRotationMatrix()
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
void giveLocalCoordinates(FloatArray &answer, const FloatArray &global)
double computeVolumeAround(GaussPoint *gp) override
int computeLoadGToLRotationMtrx(FloatMatrix &answer) override
FloatMatrix GtoLRotationMatrix
void giveCharacteristicTensor(FloatMatrix &answer, CharTensor type, GaussPoint *gp, TimeStep *tStep)
void computeNmatrixAt(const FloatArray &iLocCoord, FloatMatrix &answer) override
TrPlaneStrRot(int, Domain *)
static FloatArray Vec2(const double &a, const double &b)
@ BodyLoadBGT
Distributed body load.