112 if ( cemType == 1 ) {
114 }
else if ( cemType == 2 ) {
116 }
else if ( cemType == 3 ) {
128 double alpha_ds1, alpha_ds2;
130 if ( cemType == 1 ) {
133 }
else if ( cemType == 2 ) {
136 }
else if ( cemType == 3 ) {
146 if ( this->
h0 >= 500 ) {
148 }
else if ( this->
h0 >= 300 ) {
149 this->
kh = 0.75 - 0.05 * (
h0 - 300. ) / 200.;
150 }
else if ( this->
h0 >= 200 ) {
151 this->
kh = 0.85 - 0.10 * (
h0 - 200. ) / 100.;
152 }
else if ( this->
h0 >= 100 ) {
153 this->
kh = 1.00 - 0.15 * (
h0 - 100. ) / 100.;
159 double beta_RH = 1.55 * ( 1. - henv * henv * henv );
160 this->
eps_cd_0 = -0.85e-6 * ( ( 220. + 110. * alpha_ds1 ) * exp(-alpha_ds2 * this->
fcm28 * ( this->
stiffnessFactor / 1.e6 ) / 10.) * beta_RH );
180 if ( cemType == 1 ) {
182 }
else if ( cemType == 2 ) {
184 }
else if ( cemType == 3 ) {
191 double alpha_1, alpha_2, alpha_3;
200 this->
phi_RH = ( 1. + alpha_1 * ( 1. - henv ) / ( 0.1 * pow(this->
h0, 1. / 3.) ) ) * alpha_2;
204 this->
beta_H = 1.5 * this->
h0 * ( 1. + pow( ( 1.2 * henv ), 18. ) ) + 250. * alpha_3;
205 this->
beta_H =
min(this->beta_H, 1500. * alpha_3);
214 this->
phi_RH = 1. + ( 1. - henv ) / ( 0.1 * pow(this->
h0, 1. / 3.) );
218 this->
beta_H = 1.5 * this->
h0 * ( 1. + pow( ( 1.2 * henv ), 18. ) ) + 250.;
236 double beta = exp( this->
s * ( 1. - sqrt( 28. / ( age / this->
timeFactor ) ) ) );
238 return beta * this->
fcm28;
248 Ecm_at_age = pow( ( fcm_at_age / this->
fcm28 ), 0.3 ) * this->
Ecm28;
281 double beta_t0, beta_c;
282 double t_prime_equiv;
287 t_prime_equiv = t_prime;
291 beta_t0 = 1. / ( 0.1 + pow(t_prime_equiv / this->
timeFactor, 0.2) );
294 beta_c = pow( ( ( t - t_prime ) / ( this->
beta_H * this->
timeFactor + t - t_prime ) ), 0.3 );
314 double initMaturity, incrMaturity;
315 double averageTemperature;
324 averageTemperature = et.
at(1);
330 averageTemperature =
min(averageTemperature, 80.);
331 averageTemperature =
max(averageTemperature, 0.);
333 incrMaturity = exp( -1. * ( 4000. / ( 273. + averageTemperature ) - 13.65 ) ) * tStep->
giveTimeIncrement();
339 return initMaturity + incrMaturity / 2.;
352 age = maturity * pow( ( 9. / ( 2. + pow(maturity, 1.2) ) + 1. ), this->
alpha_T_cement );
374 double chainStiffness = 0.;
387 sum = 1. / chainStiffness;
393 if ( t_halfstep <= 0. ) {
394 OOFEM_ERROR(
"attempt to evaluate material stiffness at negative age");
400 chainStiffness = 1. / sum;
403 return chainStiffness;
432 OOFEM_WARNING(
"begOfTimeOfInterest was chosen bigger than 1 days, reseting its value to 1 days (could have lead to big errors in the numerical integration of the stiffness of the zeroth Kelvin unit (the retardation spectrum is very steep)");
449 OOFEM_WARNING(
"endOfTimeOfInterest was chosen bigger than 10.000 days, reseting to 10.000 days (the retardation spectrum is almost zero afterwards)");
464 for (
int mu = 1; mu <= this->
nUnits; mu++ ) {
478 return 1. + 0.555 * exp( -4. * pow( ( this->
tau1 * pow( 10.,
double( mu - 1 ) ) / ( this->
beta_H * this->
timeFactor ) ), 2. ) );
503 ddPhi = n * ( n - 1. ) * pow( f, ( n - 2. ) ) * df * df + n *pow( f, ( n - 1. ) ) * ddf;
505 L = -4. * tau * tau * ddPhi;
523 double equivalentAge;
528 equivalentAge = atTime;
539 double tau0 = this->
tau1 / sqrt(10.0);
541 this->
EspringVal = 1. / ( ( log(10.) / 3. ) * (
556 for (
int mu = 1; mu <= this->
nUnits; mu++ ) {
557 tauMu = this->
tau1 * pow( 10.,
double( mu - 1 ) );
562 answer.
times(coefficient);
582 if ( ( mode != VM_Total ) && ( mode != VM_Incremental ) ) {
592 if ( mode == VM_Incremental ) {
595 if ( dryingTimeNow > 0. ) {
609 if ( dryingTimeNow > 0. ) {
628 if ( answer.
at(1) != answer.
at(1) ) {
640 if ( ( mode == _3dShell ) || ( mode == _3dBeam ) || ( mode == _2dPlate ) || ( mode == _2dBeam ) ) {
649 if ( tNow > tThen ) {
653 double beta_ds_now, beta_ds_then;
655 beta_ds_now = tNow / ( tNow + 0.04 * pow(this->
h0, 3. / 2.) );
656 beta_ds_then = tThen / ( tThen + 0.04 * pow(this->
h0, 3. / 2.) );
658 dEpsSh = ( beta_ds_now - beta_ds_then ) * this->
kh * this->
eps_cd_0;
660 fullAnswer.
at(1) = fullAnswer.
at(2) = fullAnswer.
at(3) = dEpsSh;
674 if ( ( mode == _3dShell ) || ( mode == _3dBeam ) || ( mode == _2dPlate ) || ( mode == _2dBeam ) ) {
684 if ( tNow > tThen ) {
688 double beta_as_now, beta_as_then;
690 beta_as_now = 1. - exp( -0.2 * sqrt(tNow) );
691 beta_as_then = 1. - exp( -0.2 * sqrt(tThen) );
693 dEpsAu = ( beta_as_now - beta_as_then ) * this->
eps_ca_infty;
695 fullAnswer.
at(1) = fullAnswer.
at(2) = fullAnswer.
at(3) = dEpsAu;
static int giveSizeOfVoigtSymVector(MaterialMode mmode)
Returns the size of symmetric part of a reduced stress/strain vector according to given mode...
double h0
effective thickness [mm]
virtual double giveEModulus(GaussPoint *gp, TimeStep *tStep)
Evaluation of the incremental modulus.
MaterialMode giveMaterialMode()
Returns corresponding material mode of receiver.
double relMatAge
Physical age of the material at simulation time = 0.
ec2ShrinkageType
shrinkage option
virtual void computeResultingIPTemperatureAt(FloatArray &answer, TimeStep *tStep, GaussPoint *gp, ValueModeType mode)
Computes at given time (tStep) the the resulting temperature component array.
#define _IFT_Eurocode2CreepMaterial_shType
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
Returns material status of receiver in given integration point.
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
virtual bool isActivated(TimeStep *tStep)
virtual void giveShrinkageStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep, ValueModeType mode)
Computes, for the given integration point, the strain vector induced by stress-independent shrinkage...
double t0
duration of curing [day, sec, ...]
void setTempConcreteMaturity(double src)
void computeElasticityStrengthParams(int)
sets parameters for elasticity and strength according to formulas from EC
double computeRetardationTimeCorrection(int mu)
computes correction factor which multiplies the retardation times
virtual void computeCharCoefficients(FloatArray &answer, double tPrime, GaussPoint *gp, TimeStep *tStep)
Evaluation of characteristic moduli of the Kelvin chain.
void computeIncrementOfDryingShrinkageVector(FloatArray &answer, GaussPoint *gp, double tNow, double tThen)
computes increment of drying shrinkage - the shrinkage strain is isotropic
double s
parameter determined by cement type
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
double eps_cd_0
asymptotic value of drying shrinkage at zero relative humidity, B.11 in EC2
double & at(int i)
Coefficient access function.
int max(int i, int j)
Returns bigger value form two given decimals.
double evaluateSpectrumAt(double tau)
evaluates retardation spectrum at given time (t-t')
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
double begOfTimeOfInterest
Time from which the model should give a good approximation. Optional field. Default value is 0...
double alpha_T_cement
influence of cement type on concrete equivalent age, B.9 in EC2
double tempMaturity
temperature-dependent equivalent age, maturity (temporary value)
#define _IFT_Eurocode2CreepMaterial_h0
double giveTargetTime()
Returns target time.
#define _IFT_Eurocode2CreepMaterial_temperatureDependent
Element * giveElement()
Returns corresponding element to receiver.
double maturity
temperature-dependent equivalent age, maturity (equilibrated value)
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
MaterialMode
Type representing material mode of integration point.
virtual double giveEModulus(GaussPoint *gp, TimeStep *tStep)
Evaluation of the incremental modulus.
void computeShrinkageParams(int, double)
sets parameters for shrinkage according to formulas from EC
double Ecm28
Young's modulus at 28 days default [MPa].
#define _IFT_Eurocode2CreepMaterial_spectrum
virtual int read(int *data, int count)=0
Reads count integer values into array pointed by data.
virtual void computeCharTimes()
computes retardation times of the aging Kelvin chain
FloatArray charTimes
Characteristic times of individual units (relaxation or retardation times).
double giveTimeIncrement()
Returns solution step associated time increment.
bool temperatureDependent
switch for temperature dependence of concrete maturity (default option is off)
bool isTheFirstStep()
Check if receiver is first step.
#define _IFT_Eurocode2CreepMaterial_fcm28
virtual void computeCharCoefficients(FloatArray &answer, double tPrime, GaussPoint *gp, TimeStep *tStep)
Evaluation of the moduli of individual units.
virtual double computeConcreteStrengthAtAge(double age)
evaluates concrete strength at given age
virtual int write(const int *data, int count)=0
Writes count integer values from array pointed by data.
double timeFactor
Scaling factor transforming the simulation time units into days (gives the number of simulation time ...
Abstract base class for all "structural" finite elements.
virtual void giveRealStressVector(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep)
Computes the real stress vector for given total strain and integration point.
double endOfTimeOfInterest
Time (age???) up to which the model should give a good approximation.
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
static void giveReducedSymVectorForm(FloatArray &answer, const FloatArray &vec, MaterialMode matMode)
Converts the full unsymmetric Voigt vector (2nd order tensor) to reduced form.
#define _IFT_Eurocode2CreepMaterial_t0
double eps_ca_infty
asymptotic value of autogenous shrinakge, 3.12 in EC2
virtual MaterialStatus * CreateStatus(GaussPoint *gp) const
Creates new copy of associated status and inserts it into given integration point.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
double tau1
fixed retardation time of the first unit
virtual double computeMeanElasticModulusAtAge(double age)
evaluates concrete mean elastic modulus at given age
double fcm28
mean compressive strength at 28 days default - to be specified in units of the analysis (e...
This class implements associated Material Status to KelvinChainMaterial.
double giveTemperature() const
double beta_fcm
drying creep coefficient
double giveIntrinsicTime()
Returns intrinsic time, e.g. time in which constitutive model is evaluated.
virtual double computeCreepCoefficient(double t, double t_prime, GaussPoint *gp, TimeStep *tStep)
Evaluation of the compliance function (according to appendix B from the EC)
double stiffnessFactor
factor unifying stiffnesses (Ecm is predicted from fcm...)
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
Abstract base class representing a material status information.
double phi_RH
drying creep coefficient
void computeIncrementOfAutogenousShrinkageVector(FloatArray &answer, GaussPoint *gp, double tNow, double tThen)
computes increment of autogenous shrinkage - the shrinkage strain is isotropic
Class representing vector of real numbers.
double beta_H
drying creep coefficient
IRResultType
Type defining the return values of InputRecord reading operations.
double temperature
temperature (equilibrated value)
bool retardationSpectrumApproximation
If true, analysis of retardation spectrum is used for evaluation of Kelvin units moduli If false...
double EspringVal
stiffness of the zeroth Kelvin unit
#define _IFT_Eurocode2CreepMaterial_cemType
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
virtual void giveRealStressVector(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep)
Computes the real stress vector for given total strain and integration point.
void zero()
Zeroes all coefficients of receiver.
virtual double computeEquivalentAge(GaussPoint *gp, TimeStep *tStep)
implements B.9
void times(double s)
Multiplies receiver with scalar.
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
double giveConcreteMaturity() const
This class implements associated Material Status to Eurocode2CreepMaterial.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Domain * giveDomain() const
enum oofem::Eurocode2CreepMaterial::ec2ShrinkageType shType
int min(int i, int j)
Returns smaller value from two given decimals.
#define _IFT_Eurocode2CreepMaterial_henv
REGISTER_Material(DummyMaterial)
double castingTime
Casting time.
Eurocode2CreepMaterialStatus(int n, Domain *d, GaussPoint *g, int nunits)
virtual double computeEquivalentMaturity(GaussPoint *gp, TimeStep *tStep)
implements B.10
the oofem namespace is to define a context or scope in which all oofem names are defined.
double tempTemperature
temperature (temporary value)
virtual double computeCreepFunction(double t, double t_prime, GaussPoint *gp, TimeStep *tStep)
Evaluation of the compliance function.
int nUnits
Number of (Maxwell or Kelvin) units in the rheologic chain.
void setTempTemperature(double src)
Class representing integration point in finite element program.
#define OOFEM_WARNING(...)
double kh
drying shrinkage coefficient
Class representing solution step.
void add(const FloatArray &src)
Adds array src to receiver.
void computeCreepParams(int, double)
sets parameters for creep according to formulas from EC
void resize(int s)
Resizes receiver towards requested size.
#define _IFT_Eurocode2CreepMaterial_stiffnessFactor