49#define ZERO_LENGTH 1.e-6
54OrthotropicLinearElasticMaterial :: initializeFrom(
InputRecord &ir)
60 LinearElasticMaterial :: initializeFrom(ir);
124 if ( !( ( size == 0 ) || ( size == 6 ) ) ) {
125 OOFEM_WARNING(
"Warning: lcs in material %d is not properly defined, will be assumed as global",
131 double n1 = 0.0, n2 = 0.0;
134 for (
int j = 1; j <= 3; j++ ) {
136 n1 += triplets.
at(j) * triplets.
at(j);
138 n2 += triplets.
at(j + 3) * triplets.
at(j + 3);
143 for (
int j = 1; j <= 3; j++ ) {
174 if ( !( ( size == 0 ) || ( size == 3 ) ) ) {
175 OOFEM_WARNING(
"scs in material %d is not properly defined, will be assumed as global",
206 double nzx = nxz * ez / ex;
207 double nzy = nyz * ez / ey;
208 double nyx = nxy * ey / ex;
209 double eksi = 1. - ( nxy * nyx + nyz * nzy + nzx * nxz ) - ( nxy * nyz * nzx + nyx * nzy * nxz );
212 tangent.at(1, 1) = ex * ( 1. - nyz * nzy ) / eksi;
213 tangent.at(1, 2) = ey * ( nxy + nxz * nzy ) / eksi;
214 tangent.at(1, 3) = ez * ( nxz + nyz * nxy ) / eksi;
215 tangent.at(2, 2) = ey * ( 1. - nxz * nzx ) / eksi;
216 tangent.at(2, 3) = ez * ( nyz + nyx * nxz ) / eksi;
217 tangent.at(3, 3) = ez * ( 1. - nyx * nxy ) / eksi;
232 Material :: giveInputRecord(input);
258OrthotropicLinearElasticMaterial :: give(
int aProperty,
GaussPoint *gp)
const
260 if ( aProperty ==
NYzx ) {
264 if ( aProperty ==
NYzy ) {
268 if ( aProperty ==
NYyx ) {
272 return this->Material :: give(aProperty, gp);
277OrthotropicLinearElasticMaterial :: give3dMaterialStiffnessMatrix(MatResponseMode mode,
287 return rotate(t, rotationMatrix);
292OrthotropicLinearElasticMaterial :: giveTensorRotationMatrix(
GaussPoint *gp)
const
298 if ( gp->giveMaterialMode() == _1dMat ) {
304 int elementCsFlag = element->giveLocalCoordinateSystem(elementCs_);
307 elementCs = elementCs_;
317 if ( elementCsFlag ) {
324 element->computeMidPlaneNormal(elementNormal, gp);
329 OOFEM_ERROR(
"element normal parallel to plane normal encountered");
332 auto helpy =
cross(elementNormal, helpx);
334 for (
int i = 1; i < 4; i++ ) {
335 cs.
at(i, 1) = helpx.at(i);
336 cs.
at(i, 2) = helpy.at(i);
337 cs.
at(i, 3) = elementNormal.
at(i);
352 if ( elementCsFlag ) {
353 return dot(elementCs, cs);
365OrthotropicLinearElasticMaterial :: giveRotationMatrix(
GaussPoint *gp)
const
379OrthotropicLinearElasticMaterial :: giveThermalDilatationVector(
GaussPoint *gp,
TimeStep *tStep)
const
#define REGISTER_Material(class)
Index giveSize() const
Returns the size of receiver.
double at(std::size_t i, std::size_t j) const
void computesSubTangents()
FloatMatrixF< 6, 6 > tangent
Preconstructed 3d tangent.
FloatArrayF< 6 > alpha
Thermal expansion.
double preCastStiffnessReduction
artificial isotropic damage to reflect reduction in stiffness for time < castingTime.
Dictionary propertyDictionary
double give(int aProperty, GaussPoint *gp) const override
FloatArrayF< 3 > helpPlaneNormal
FloatMatrixF< 3, 3 > localCoordinateSystem
FloatMatrixF< 6, 6 > giveRotationMatrix(GaussPoint *gp) const
FloatMatrixF< 3, 3 > giveTensorRotationMatrix(GaussPoint *gp) const
static FloatMatrixF< 6, 6 > giveStrainVectorTranformationMtrx(const FloatMatrixF< 3, 3 > &base, bool transpose=false)
double giveIntrinsicTime()
Returns intrinsic time, e.g. time in which constitutive model is evaluated.
#define OOFEM_WARNING(...)
double norm(const FloatArray &x)
@ localCS
Coordinate system of principal axes is specified in global coordinate system (general).
@ unknownCS
Unknown coordinate system.
FloatArrayF< 3 > cross(const FloatArrayF< 3 > &x, const FloatArrayF< 3 > &y)
Computes $ x \cross y $.
FloatMatrixF< M, M > rotate(FloatMatrixF< N, N > &a, const FloatMatrixF< N, M > &r)
Computes .
double dot(const FloatArray &x, const FloatArray &y)
FloatMatrixF< N, N > eye()
Constructs an identity matrix.
#define _IFT_OrthotropicLinearElasticMaterial_scs
#define _IFT_OrthotropicLinearElasticMaterial_nyyz
#define _IFT_OrthotropicLinearElasticMaterial_lcs
#define _IFT_OrthotropicLinearElasticMaterial_talphaz
#define _IFT_OrthotropicLinearElasticMaterial_talphay
#define _IFT_OrthotropicLinearElasticMaterial_nyxz
#define _IFT_OrthotropicLinearElasticMaterial_ey
#define _IFT_OrthotropicLinearElasticMaterial_gxz
#define _IFT_OrthotropicLinearElasticMaterial_nyxy
#define _IFT_OrthotropicLinearElasticMaterial_talphax
#define _IFT_OrthotropicLinearElasticMaterial_gyz
#define _IFT_OrthotropicLinearElasticMaterial_ex
#define _IFT_OrthotropicLinearElasticMaterial_gxy
#define _IFT_OrthotropicLinearElasticMaterial_ez