77 OOFEM_ERROR(
"tAlpha must be set to zero in ConcreteFCMViscoElastic material");
104 partialStrain = totalStrain;
112 partialStrain.
subtract(crackStrain);
143 if ( type == IST_TensileStrength ) {
147 }
else if ( type == IST_ResidualTensileStrength ) {
155 for (
int i = 1; i <= nCracks; i++ ) {
169 answer.
at(1) = sigma;
172 }
else if ( type == IST_CrackIndex ) {
230 double fcm, fcm28mod;
231 double equivalentTime;
239 fcm = exp(
fib_s * ( 1. - sqrt(28. * this->
timeFactor / equivalentTime) ) ) * fcm28mod;
247 }
else if ( fcm <= 20. ) {
313 Gf = Gf28 * ftm / ftm28;
363 helpMM = MaterialMode(_Unknown);
367 if ( rheoMat->
givePoissonsRatio() != this->linearElasticMaterial.givePoissonsRatio() ) {
368 OOFEM_ERROR(
"The Poisson ratio of the fracturing and viscoelastic material are not equal.");
372 OOFEM_ERROR(
"tAlpha must be set to zero in ConcreteFCMViscoElastic material");
405 fprintf(file,
"remark {Output for slave viscoelastic material}\n");
406 this->
slaveGpVisco->giveMaterialStatus()->printOutputAt(file, tStep);
#define REGISTER_Material(class)
void initTempStatus() override
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
void saveContext(DataStream &stream, ContextMode mode) override
void restoreContext(DataStream &stream, ContextMode mode) override
ConcreteFCMStatus(GaussPoint *g)
void updateYourself(TimeStep *tStep) override
void initTempStatus() override
double giveFractureEnergy() const
void setFractureEnergy(double new_Gf)
void updateYourself(TimeStep *tStep) override
void setTensileStrength(double new_ft)
std ::unique_ptr< GaussPoint > slaveGpVisco
ConcreteFCMViscoElasticStatus(GaussPoint *g)
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
void saveContext(DataStream &stream, ContextMode mode) override
GaussPoint * giveSlaveGaussPointVisco()
void restoreContext(DataStream &stream, ContextMode mode) override
double giveTensileStrength() const
MaterialStatus * giveStatus(GaussPoint *gp) const override
ConcreteFCMViscoElastic(int n, Domain *d)
void initializeFrom(InputRecord &ir) override
double giveFractureEnergy(GaussPoint *gp, TimeStep *tStep) const override
virtual double giveEquivalentTime(GaussPoint *gp, TimeStep *tStep) const
returns equivalent time (used to compute time-dependent ft and gf)
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
int checkConsistency(void) override
void giveRealStressVector(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep) const override
double giveTensileStrength(GaussPoint *gp, TimeStep *tStep) const override
comutes tensile strength
FloatArray computeStressIndependentStrainVector(GaussPoint *gp, TimeStep *tStep, ValueModeType mode) const override
int viscoMat
number of the viscoelastic material
double computeOverallElasticShearModulus(GaussPoint *gp, TimeStep *tStep) const override
returns overall shear modulus
double computeOverallElasticStiffness(GaussPoint *gp, TimeStep *tStep) const override
returns overall Young's modulus
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
double give(int aProperty, GaussPoint *gp) const override
double giveTensileStrength(GaussPoint *gp, TimeStep *tStep) const override
comutes tensile strength
virtual double giveFractureEnergy(GaussPoint *gp, TimeStep *tStep) const
void initializeFrom(InputRecord &ir) override
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
double Ft
Tensile strength.
ConcreteFCM(int n, Domain *d)
double give(int aProperty, GaussPoint *gp) const override
double Gf
Fracture energy.
double giveNormalCrackingStress(GaussPoint *gp, TimeStep *tStep, double eps_cr, int i) const override
computes normal stress associated with i-th crack direction
const FloatMatrix & giveL2GStrainVectorTransformationMtrx()
sets transformation matrix for stress transformation from global to local coordinate system
virtual int giveNumberOfCracks() const
returns number of cracks from the previous time step (equilibrated value)
virtual int giveNumberOfTempCracks() const
returns temporary number of cracks
double giveMaxCrackStrain(int icrack)
returns maximum crack strain for the i-th crack (equilibrated value)
const FloatArray & giveTempCrackStrainVector()
return temporary crack strain vector (max 6 components)
IsotropicLinearElasticMaterial linearElasticMaterial
void giveRealStressVector(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep) const override
Domain * domain
Link to domain object, useful for communicating with other FEM components.
virtual int checkConsistency()
void zero()
Zeroes all coefficients of receiver.
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
void subtract(const FloatArray &src)
bool hasMaterialStatus(IntegrationPointStatusIDType key=IPSID_Default) const
IntegrationPointStatus * setMaterialStatus(std::unique_ptr< IntegrationPointStatus > ptr, IntegrationPointStatusIDType key=IPSID_Default)
MaterialMode giveMaterialMode()
Returns corresponding material mode of receiver.
IntegrationPointStatus * giveMaterialStatus(IntegrationPointStatusIDType key=IPSID_Default)
virtual void restoreContext(DataStream &stream, ContextMode mode)
GaussPoint * gp
Associated integration point.
virtual void saveContext(DataStream &stream, ContextMode mode)
virtual void updateYourself(TimeStep *)
Dictionary propertyDictionary
virtual bool isActivated(TimeStep *tStep) const
void _generateStatusVariables(GaussPoint *) const
void initTempStatus() override
virtual double giveEModulus(GaussPoint *gp, TimeStep *tStep) const =0
Evaluation of the incremental modulus.
virtual double giveEquivalentTime(GaussPoint *gp, TimeStep *tStep) const
By default returns equivalent time in the middle of the time step.
void giveRealStressVector(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep) const override
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
FloatArray computeStressIndependentStrainVector(GaussPoint *gp, TimeStep *tStep, ValueModeType mode) const override
double givePoissonsRatio() const
Returns Poisson's ratio.
const FloatArray & giveStressVector() const
Returns the const pointer to receiver's stress vector.
static void computePrincipalValues(FloatArray &answer, const FloatArray &s, stressStrainPrincMode mode)
Common functions for convenience.
static void giveFullSymVectorForm(FloatArray &answer, const FloatArray &vec, MaterialMode matMode)
Converts the reduced unsymmetric Voigt vector (2nd order tensor) to full form.
#define _IFT_ConcreteFCMViscoElastic_stiffnessFactor
#define _IFT_ConcreteFCMViscoElastic_gf28
#define _IFT_ConcreteFCMViscoElastic_fcm28
#define _IFT_ConcreteFCMViscoElastic_fib_s
#define _IFT_ConcreteFCMViscoElastic_timeFactor
#define _IFT_ConcreteFCMViscoElastic_ft28
#define _IFT_ConcreteFCMViscoElastic_viscoMat
#define _IFT_ConcreteFCMViscoElastic_timedepfracturing
FloatArrayF< N > min(const FloatArrayF< N > &a, const FloatArrayF< N > &b)
FloatArrayF< N > max(const FloatArrayF< N > &a, const FloatArrayF< N > &b)
@ principal_stress
For computing principal stresses.