46void SimpleVitrificationMaterial :: initializeFrom(
InputRecord &ir)
48 StructuralMaterial :: initializeFrom(ir);
66 StructuralMaterial :: giveInputRecord(input);
82int SimpleVitrificationMaterial :: checkConsistency()
89SimpleVitrificationMaterial :: computeTangent(
bool vitr)
const
91 const auto &activeNu = vitr ? this->
nu_r : this->
nu;
92 const auto &activeE = vitr ? this->
E_r : this->
E;
93 const auto &activeG = vitr ? this->
G_r : this->
G;
98 double nyz = activeNu.at(1);
99 double nxz = activeNu.at(2);
100 double nxy = activeNu.at(3);
102 double nzy = activeNu.at(1);
103 double nzx = activeNu.at(2);
104 double nyx = activeNu.at(3);
106 double eksi = 1. - ( nxy * nyx + nyz * nzy + nzx * nxz ) - ( nxy * nyz * nzx + nyx * nzy * nxz );
110 tangent.
at(1, 1) = activeE.at(1) * ( 1. - nyz * nzy ) / eksi;
111 tangent.
at(1, 2) = activeE.at(2) * ( nxy + nxz * nzy ) / eksi;
112 tangent.
at(1, 3) = activeE.at(3) * ( nxz + nyz * nxy ) / eksi;
113 tangent.
at(2, 2) = activeE.at(2) * ( 1. - nxz * nzx ) / eksi;
114 tangent.
at(2, 3) = activeE.at(3) * ( nyz + nyx * nxz ) / eksi;
115 tangent.
at(3, 3) = activeE.at(3) * ( 1. - nyx * nxy ) / eksi;
118 for (
int i = 1; i < 4; i++ ) {
119 for (
int j = 1; j < i; j++ ) {
120 tangent.
at(i, j) = tangent.
at(j, i);
124 tangent.
at(4, 4) = activeG.at(1);
125 tangent.
at(5, 5) = activeG.at(2);
126 tangent.
at(6, 6) = activeG.at(3);
134SimpleVitrificationMaterial :: give3dMaterialStiffnessMatrix(MatResponseMode mode,
GaussPoint *gp,
TimeStep *tStep)
const
147 auto deltaStrain = strain - thermalStrain -
FloatArrayF<6>(status->giveStrainVector());
152 auto deltaStress =
dot(d, deltaStrain);
154 auto stress = status->giveStressVector() + deltaStress;
157 status->letTempStrainVectorBe(strain);
158 status->letTempStressVectorBe(stress);
176std::unique_ptr<MaterialStatus> SimpleVitrificationMaterial :: CreateStatus(
GaussPoint *gp)
const
178 return std::make_unique<StructuralMaterialStatus>(gp);
#define REGISTER_Material(class)
double at(std::size_t i, std::size_t j) const
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
FloatArray E_r
Material parameters for the rubbery part of the model (before vitrification).
FloatArray E
Material parameters for the glassy part of the model (after vitrification).
double vitrTime
Vitrification time (when equal or larger than this time the material changes response).
FloatMatrixF< 6, 6 > computeTangent(bool vitr) const
FloatArrayF< 6 > computeStressIndependentStrainVector_3d(GaussPoint *gp, TimeStep *tStep, ValueModeType mode) const
double giveIntrinsicTime()
Returns intrinsic time, e.g. time in which constitutive model is evaluated.
double dot(const FloatArray &x, const FloatArray &y)
#define _IFT_SimpleVitrificationMaterial_E_r
#define _IFT_SimpleVitrificationMaterial_G_r
#define _IFT_SimpleVitrificationMaterial_vitrificationTime
Describes the time where the material switches response.
#define _IFT_SimpleVitrificationMaterial_E
#define _IFT_SimpleVitrificationMaterial_G
#define _IFT_SimpleVitrificationMaterial_alpha_r
#define _IFT_SimpleVitrificationMaterial_nu
#define _IFT_SimpleVitrificationMaterial_alpha
#define _IFT_SimpleVitrificationMaterial_nu_r