51LinQuad3DPlaneStress :: LinQuad3DPlaneStress(
int n,
Domain *aDomain) :
58LinQuad3DPlaneStress :: ~LinQuad3DPlaneStress()
92LinQuad3DPlaneStress :: computeLocalNodalCoordinates(std::vector< FloatArray > &lxy)
104 for (
int i = 0; i < 4; i++ ) {
105 const auto &nc = this->
giveNode(i + 1)->giveCoordinates();
111LinQuad3DPlaneStress :: giveDofManDofIDMask(
int inode,
IntArray &answer)
const
113 answer = {D_u, D_v, D_w};
120LinQuad3DPlaneStress :: computeGtoLRotationMatrix()
152 for (
int i = 1; i <= 3; i++ ) {
164LinQuad3DPlaneStress :: computeGtoLRotationMatrix(
FloatMatrix &answer)
177 for (
int i = 1; i <= 3; i++ ) {
185LinQuad3DPlaneStress :: computeLoadGToLRotationMtrx(
FloatMatrix &answer)
197 for (
int i = 1; i <= 3; i++ ) {
221 answer.
at(1, 1) = charVect.
at(1);
222 answer.
at(2, 2) = charVect.
at(2);
223 answer.
at(1, 2) = charVect.
at(3);
224 answer.
at(2, 1) = charVect.
at(3);
230 answer.
at(1, 1) = charVect.
at(1);
231 answer.
at(2, 2) = charVect.
at(2);
232 answer.
at(1, 2) = charVect.
at(3) / 2.;
233 answer.
at(2, 1) = charVect.
at(3) / 2.;
255 if ( type == IST_ShellForceTensor || type == IST_ShellStrainTensor ) {
257 if ( type == IST_ShellForceTensor ) {
266 answer.
at(1) = globTensor.
at(1, 1);
267 answer.
at(2) = globTensor.
at(2, 2);
268 answer.
at(3) = globTensor.
at(3, 3);
269 answer.
at(4) = c * globTensor.
at(2, 3);
270 answer.
at(5) = c * globTensor.
at(1, 3);
271 answer.
at(6) = c * globTensor.
at(1, 2);
274 }
else if ( type == IST_ShellMomentTensor || type == IST_CurvatureTensor ) {
278 return PlaneStress2d :: giveIPValue(answer, gp, type, tStep);
284LinQuad3DPlaneStress :: printOutputAt(FILE *file,
TimeStep *tStep)
294 fprintf( file,
" GP %2d.%-2d :", i + 1, gp->giveNumber() );
296 this->
giveIPValue(v, gp, IST_ShellStrainTensor, tStep);
297 fprintf(file,
" strains ");
298 for (
auto &val : v ) fprintf(file,
" %.4e", val);
306 this->
giveIPValue(v, gp, IST_ShellForceTensor, tStep);
307 fprintf(file,
"\n forces ");
308 for (
auto &val : v ) fprintf(file,
" %.4e", val);
#define REGISTER_Element(class)
Node * giveNode(int i) const
std::vector< std ::unique_ptr< IntegrationRule > > integrationRulesArray
void beDifferenceOf(const FloatArray &a, const FloatArray &b)
void beVectorProductOf(const FloatArray &v1, const FloatArray &v2)
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
IntegrationPointStatus * giveMaterialStatus(IntegrationPointStatusIDType key=IPSID_Default)
const FloatMatrix * computeGtoLRotationMatrix()
FEICellGeometry * giveCellGeometryWrapper() override
void computeLocalNodalCoordinates(std::vector< FloatArray > &lxy)
std ::vector< FloatArray > lc
Local vertex coordinates.
FloatMatrix * GtoLRotationMatrix
void giveCharacteristicTensor(FloatMatrix &answer, CharTensor type, GaussPoint *gp, TimeStep *tStep)
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
PlaneStress2d(int n, Domain *d)
Element_Geometry_Type giveGeometryType() const override
FEICellGeometry * cellGeometryWrapper
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.
@ SPRNodalRecoveryModelInterfaceType
@ ZZNodalRecoveryModelInterfaceType
@ SpatialLocalizerInterfaceType