47 StructuralMaterial :: initializeFrom(ir);
57 StructuralMaterial :: giveInputRecord(input);
62LinearElasticMaterial :: computesSubTangents()
73 c(0,0), c(0,1), c(0,5),
74 c(1,0), c(1,1), c(1,5),
75 c(5,0), c(5,1), c(5,5),
82LinearElasticMaterial :: give3dMaterialStiffnessMatrix(MatResponseMode mode,
111 auto strainVector = strain - thermalStrain;
112 stress =
dot(d, strainVector);
115 auto strainIncrement = strain - thermalStrain -
FloatArrayF<6>(status->giveStrainVector());
117 stress =
dot(d, strainIncrement) + status->giveStressVector();
121 status->letTempStrainVectorBe(strain);
122 status->letTempStressVectorBe(stress);
134 d.at(1, 1) -= d.at(1, 3) * d.at(3, 1) / d.at(3, 3);
135 d.at(2, 1) -= d.at(2, 3) * d.at(3, 1) / d.at(3, 3);
136 d.at(1, 2) -= d.at(1, 3) * d.at(3, 2) / d.at(3, 3);
137 d.at(2, 2) -= d.at(2, 3) * d.at(3, 2) / d.at(3, 3);
148 strainVector = strain - thermalStrain;
149 stress =
dot(d, strainVector);
152 auto strainIncrement = strain - thermalStrain -
FloatArrayF<6>(status->giveStrainVector());
154 stress =
dot(d, strainIncrement) + status->giveStressVector();
157 stress =
dot(d, strainVector);
160 status->letTempStrainVectorBe(strain);
161 status->letTempStressVectorBe(stress);
180 auto strainIncrement = strainVector - status->giveStrainVector();
183 answer.
add( status->giveStressVector() );
187 status->letTempStrainVectorBe(reducedStrain);
188 status->letTempStressVectorBe(answer);
206 auto strainIncrement = strainVector - status->giveStrainVector();
209 answer.
add( status->giveStressVector() );
213 status->letTempStrainVectorBe(reducedStrain);
214 status->letTempStressVectorBe(answer);
237 answer.
at(1) = reducedStrain.
at(1);
238 answer.
at(2) = reducedStrain.
at(2);
243 strainIncrement.
beDifferenceOf( reducedStrain, status->giveStrainVector() );
245 answer.
at(1) = strainIncrement.
at(1);
246 answer.
at(2) = strainIncrement.
at(2);
258 status->letTempStrainVectorBe(reducedStrain);
259 status->letTempStressVectorBe(answer);
278 strainIncrement.
beDifferenceOf( strainVector, status->giveStrainVector() );
281 answer.
add( status->giveStressVector() );
285 status->letTempStrainVectorBe(reducedStrain);
286 status->letTempStressVectorBe(answer);
305 strainIncrement.
beDifferenceOf( strainVector, status->giveStrainVector() );
308 answer.
add( status->giveStressVector() );
312 status->letTempStrainVectorBe(reducedStrain);
313 status->letTempStressVectorBe(answer);
332 auto strainIncrement = strainVector - status->giveStrainVector();
335 answer.
add( status->giveStressVector() );
339 status->letTempStrainVectorBe(reducedStrain);
340 status->letTempStressVectorBe(answer);
348 StructuralMaterial :: giveFullVectorFormF(fullFv, reducedF, _PlaneStrain);
362 StructuralMaterial :: giveFullSymVectorForm(fullStressV, stressV, _PlaneStrain);
375 eshelbyStress(0, 0) += energyDens;
376 eshelbyStress(1, 1) += energyDens;
377 eshelbyStress(2, 2) += energyDens;
382 StructuralMaterial :: giveReducedVectorForm(answer, eshelbyStressV, _PlaneStrain);
399 if ( type == IST_ElasticStrainTensor ) {
402 }
else if ( type == IST_ThermalStrainTensor ) {
405 }
else if ( type == IST_CreepStrainTensor ) {
409 }
else if ( type == IST_FreeEnergyDensity ) {
414 return StructuralMaterial :: giveIPValue(answer, gp, type, tStep);
419std::unique_ptr<MaterialStatus>
422 return std::make_unique<StructuralMaterialStatus>(gp);
virtual int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords)
double & at(std::size_t i)
double dotProduct(const FloatArray &x) const
void beDifferenceOf(const FloatArray &a, const FloatArray &b)
void zero()
Zeroes all coefficients of receiver.
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
void beVectorForm(const FloatMatrix &aMatrix)
void add(const FloatArray &src)
void beMatrixFormOfStress(const FloatArray &aArray)
void beMatrixForm(const FloatArray &aArray)
void beTProductOf(const FloatMatrix &a, const FloatMatrix &b)
const FloatArray & giveNaturalCoordinates() const
Returns coordinate array of receiver.
Element * giveElement()
Returns corresponding element to receiver.
FloatMatrixF< 4, 4 > tangentPlaneStrain
FloatMatrixF< 3, 3 > tangentPlaneStress
double giveEnergyDensity(GaussPoint *gp, TimeStep *tStep)
virtual double giveShearModulus() const
FloatMatrixF< 6, 6 > tangent
Preconstructed 3d tangent.
FloatMatrixF< 6, 6 > give3dMaterialStiffnessMatrix(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
FloatArrayF< 6 > alpha
Thermal expansion.
double preCastStiffnessReduction
artificial isotropic damage to reflect reduction in stiffness for time < castingTime.
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
const FloatArray & giveStrainVector() const
Returns the const pointer to receiver's strain vector.
const FloatArray & giveTempStressVector() const
Returns the const pointer to receiver's temporary stress vector.
const FloatArray & giveTempStrainVector() const
Returns the const pointer to receiver's temporary strain vector.
virtual FloatMatrixF< 3, 3 > givePlaneStressStiffMtrx(MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep) const
virtual FloatMatrixF< 5, 5 > givePlateLayerStiffMtrx(MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep) const
void giveStressDependentPartOfStrainVector(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrainVector, TimeStep *tStep, ValueModeType mode) const
virtual FloatMatrixF< 1, 1 > give1dStressStiffMtrx(MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep) const
FloatArrayF< 6 > computeStressIndependentStrainVector_3d(GaussPoint *gp, TimeStep *tStep, ValueModeType mode) const
virtual FloatMatrixF< 2, 2 > give2dBeamLayerStiffMtrx(MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep) const
virtual FloatMatrixF< 3, 3 > giveFiberStiffMtrx(MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep) const
double giveIntrinsicTime()
Returns intrinsic time, e.g. time in which constitutive model is evaluated.
#define _IFT_LinearElasticMaterial_preCastStiffRed
double dot(const FloatArray &x, const FloatArray &y)
FloatMatrixF< N, N > inv(const FloatMatrixF< N, N > &mat, double zeropiv=1e-24)
Computes the inverse.