37 #include "../sm/Elements/structuralelement.h" 39 #include "../sm/Materials/structuralms.h" 47 #define ZERO_LENGTH 1.e-6 128 if ( !( ( size == 0 ) || ( size == 6 ) ) ) {
129 OOFEM_WARNING(
"Warning: lcs in material %d is not properly defined, will be assumed as global",
135 double n1 = 0.0, n2 = 0.0;
138 for (
int j = 1; j <= 3; j++ ) {
140 n1 += triplets.
at(j) * triplets.
at(j);
142 n2 += triplets.
at(j + 3) * triplets.
at(j + 3);
147 for (
int j = 1; j <= 3; j++ ) {
178 if ( !( ( size == 0 ) || ( size == 3 ) ) ) {
179 OOFEM_WARNING(
"scs in material %d is not properly defined, will be assumed as global",
239 if ( aProperty ==
NYzx ) {
243 if ( aProperty ==
NYzy ) {
247 if ( aProperty ==
NYyx ) {
276 double eksi, nxz, nyz, nxy, nzx, nzy, nyx;
285 eksi = 1. - ( nxy * nyx + nyz * nzy + nzx * nxz ) - ( nxy * nyz * nzx + nyx * nzy * nxz );
290 answer.
at(1, 1) = this->
give(
Ex, gp) * ( 1. - nyz * nzy ) / eksi;
291 answer.
at(1, 2) = this->
give(
Ey, gp) * ( nxy + nxz * nzy ) / eksi;
292 answer.
at(1, 3) = this->
give(
Ez, gp) * ( nxz + nyz * nxy ) / eksi;
293 answer.
at(2, 2) = this->
give(
Ey, gp) * ( 1. - nxz * nzx ) / eksi;
294 answer.
at(2, 3) = this->
give(
Ez, gp) * ( nyz + nyx * nxz ) / eksi;
295 answer.
at(3, 3) = this->
give(
Ez, gp) * ( 1. - nyx * nxy ) / eksi;
298 for (
int i = 1; i < 4; i++ ) {
299 for (
int j = 1; j < i; j++ ) {
300 answer.
at(i, j) = answer.
at(j, i);
340 if ( elementCsFlag ) {
354 OOFEM_ERROR(
"element normal parallel to plane normal encountered");
358 for (
int i = 1; i < 4; i++ ) {
377 if ( elementCsFlag ) {
coordinate system of principal axes is specified in shell coordinate system this is defined as follow...
#define _IFT_OrthotropicLinearElasticMaterial_talphay
MaterialMode giveMaterialMode()
Returns corresponding material mode of receiver.
virtual void giveThermalDilatationVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
Returns a vector of coefficients of thermal dilatation in direction of each material principal (local...
#define _IFT_OrthotropicLinearElasticMaterial_talphaz
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
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 give3dMaterialStiffnessMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Computes full 3d material stiffness matrix at given integration point, time, respecting load history ...
#define _IFT_OrthotropicLinearElasticMaterial_gxy
double & at(int aKey)
Returns the value of the pair which key is aKey.
double & at(int i)
Coefficient access function.
#define _IFT_OrthotropicLinearElasticMaterial_nyxz
void clear()
Clears receiver (zero size).
double preCastStiffnessReduction
artificial isotropic damage to reflect reduction in stiffness for time < castingTime.
#define _IFT_OrthotropicLinearElasticMaterial_nyxy
FloatMatrix * localCoordinateSystem
Dictionary propertyDictionary
Property dictionary.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Element * giveElement()
Returns corresponding element to receiver.
static void giveStrainVectorTranformationMtrx(FloatMatrix &answer, const FloatMatrix &base, bool transpose=false)
Computes 3d strain vector transformation matrix from standard vector transformation matrix...
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
FloatArray * helpPlaneNormal
Coordinate system of principal axes is specified in global coordinate system (general).
MatResponseMode
Describes the character of characteristic material matrix.
#define _IFT_OrthotropicLinearElasticMaterial_lcs
void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
#define _IFT_OrthotropicLinearElasticMaterial_scs
virtual double give(int aProperty, GaussPoint *gp)
Returns the value of material property 'aProperty'.
void giveTensorRotationMatrix(FloatMatrix &answer, GaussPoint *gp)
Abstract base class for all "structural" finite elements.
#define _IFT_OrthotropicLinearElasticMaterial_ey
#define _IFT_OrthotropicLinearElasticMaterial_ex
#define _IFT_OrthotropicLinearElasticMaterial_nyyz
void giveRotationMatrix(FloatMatrix &answer, GaussPoint *gp)
void times(double f)
Multiplies receiver by factor f.
void rotatedWith(const FloatMatrix &r, char mode= 'n')
Returns the receiver 'a' transformed using give transformation matrix r.
#define _IFT_OrthotropicLinearElasticMaterial_gxz
#define _IFT_OrthotropicLinearElasticMaterial_talphax
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
Receiver becomes the result of the product of aMatrix and anArray.
#define _IFT_OrthotropicLinearElasticMaterial_gyz
virtual int giveLocalCoordinateSystem(FloatMatrix &answer)
Returns local coordinate system of receiver Required by material models with ortho- and anisotrophy...
double at(int i, int j) const
Coefficient access function.
double giveIntrinsicTime()
Returns intrinsic time, e.g. time in which constitutive model is evaluated.
virtual double give(int aProperty, GaussPoint *gp)
Returns the value of material property 'aProperty'.
Pair * add(int aKey, double value)
Adds a new Pair with given keyword and value into receiver.
Class representing vector of real numbers.
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
double computeNorm() const
Computes the norm (or length) of the vector.
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
#define _IFT_OrthotropicLinearElasticMaterial_ez
void zero()
Zeroes all coefficient of receiver.
void beUnitMatrix()
Sets receiver to unity matrix.
REGISTER_Material(DummyMaterial)
double castingTime
Casting time.
void beProductOf(const FloatMatrix &a, const FloatMatrix &b)
Assigns to the receiver product of .
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 void give3dLocalMaterialStiffnessMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Computes local 3d stiffness matrix of the receiver.
double normalize()
Normalizes receiver.
Class representing integration point in finite element program.
#define OOFEM_WARNING(...)
virtual void computeMidPlaneNormal(FloatArray &answer, const GaussPoint *gp)
Computes mid-plane normal of receiver at integration point.
Class representing solution step.
Unknown coordinate system.