41HydrationModelStatus :: printOutputAt(FILE *file,
TimeStep *tStep)
const
47HydrationModelStatus :: initTempStatus()
64HydrationModelStatus :: updateYourself(
TimeStep *tStep)
93HydrationModel :: HydrationModel() :
Material(0, nullptr)
102 if ( ( usefr ) && ( usefr <=
frMixed ) ) {
124 OOFEM_LOG_INFO(
"HydrationModel: Model parameters for Skanska C60/75 mixture.");
159 if (
cv || ( value >= 0 ) ) {
160 OOFEM_LOG_INFO(
"HydrationModel: Water consumption for hydration set to %.0f kg/m3",
we);
211HydrationModel :: affinity(
double ksi)
const
218 return aa * ( 1 - exp(-
ba * ksi) ) / ( 1 +
ca * pow(ksi,
da) );
222HydrationModel :: dAdksi(
double ksi)
const
229 double ksinad = pow(ksi,
da);
230 double enaksi = exp(-
ba * ksi);
232 return aa * (
ca *
da * ksinad * ( enaksi - 1 ) / ksi +
ba * enaksi * (
ca * ksinad + 1 ) ) / pow(1 +
ca * ksinad, 2);
236HydrationModel :: localResidual(
double dks)
const
243HydrationModel :: dksidT(
double ksi,
double T,
double h,
double dt)
const
253 double aux = dt * exp(-
ear / T) * ( 1 + h * h ) / 2;
258HydrationModel :: dksidh(
double ksi,
double T,
double h,
double dt)
const
265 double aux = dt * exp(-
ear / T);
266 return ( aux *
affinity(ksi) * h ) / ( 1 - aux *
dAdksi(ksi) * ( 1 + h * h ) / 2 );
308HydrationModel :: _giveCharacteristicValue(
double T,
double h, MatResponseMode rmode,
GaussPoint *gp,
TimeStep *tStep)
const
312 if ( rmode == IntSource || rmode == IntSource_hh || rmode == IntSource_ww || rmode == IntSource_wh || rmode == IntSource_hw ) {
322HydrationModel :: computeHydrationDegreeIncrement(
double ksi,
double T,
double h,
double dt)
347 if ( ksi + result > 1.0 ) {
349 OOFEM_LOG_INFO(
"temp=%.12f, dksi %.15f -> %f\n", T, result, 1.0 - ksi);
361HydrationModel :: computeIntSource(
double T,
double h,
GaussPoint *gp,
TimeStep *tStep, MatResponseMode rmode)
const
377 double dt = tStep->giveTimeIncrement() *
timeScale;
382 case IntSource_hh:
return -
le *
dksidT(ksi, T, h, dt);
384 case IntSource_ww:
return we *
dksidh(ksi, T, h, dt);
386 case IntSource_hw:
return -
le *
dksidh(ksi, T, h, dt);
388 case IntSource_wh:
return -
we *
dksidT(ksi, T, h, dt);
405 if ( mode == VM_Incremental ) {
420 double dksi, T = 0., h = 1.;
454HydrationModel :: regulafindroot()
const
456 double x0, y0, yl, xl = 0., xr = 1.;
468#ifdef VERBOSEFINDROOT
469 OOFEM_LOG_INFO(
"regulafindroot: x=%.15f, chyba %.15f \n", x0, y0);
477HydrationModel :: bintreefindroot()
const
479 double xl = 0., xr = 1., x0, y0;
482 x0 = ( xl + xr ) / 2;
490#ifdef VERBOSEFINDROOT
491 OOFEM_LOG_INFO(
"bintreefindroot: x=%.15f, chyba %.15f \n", x0, y0);
501HydrationModel :: mixedfindroot()
const
503 double x0 = 0., y0, xl = 0., xr = 1.;
508 x0 = ( xl + xr ) / 2;
529 }
else if ( y0 < 0 ) {
535#ifdef VERBOSEFINDROOT
544std::unique_ptr<MaterialStatus>
547 return std::make_unique<HydrationModelStatus>(gp);
552HydrationModelStatusInterface :: updateYourself(
TimeStep *tStep)
560HydrationModelStatusInterface :: printOutputAt(FILE *file,
TimeStep *tStep)
const
589 else if ( value >= -1. ) {
591 OOFEM_LOG_INFO(
"HydratingMaterial: Hydration degree set to %.2f.", -value);
626HydrationModelInterface :: giveHydrationDegree(
GaussPoint *gp,
TimeStep *tStep, ValueModeType mode)
const
virtual int read(int *data, std::size_t count)=0
Reads count integer values into array pointed by data.
virtual int write(const int *data, std::size_t count)=0
Writes count integer values from array pointed by data.
virtual Interface * giveInterface(InterfaceType t)
Index giveSize() const
Returns the size of receiver.
std ::unique_ptr< HydrationModel > hydrationModel
Reference to the associated hydrationModel instance.
double castAt
Material cast time - start of hydration.
double constantHydrationDegree
Constant hydration degree for analysis without hydration model.
HydrationModelStatus * giveHydrationModelStatus()
Returns the associated hydration model status.
std ::unique_ptr< MaterialStatus > hydrationModelStatus
Reference to associated hydration model status.
HydrationModelStatus * setHydrationModelStatus(std::unique_ptr< MaterialStatus > s)
Sets the associated hydration model status. Analogue to gp->setMaterialStatus.
double tempHydrationDegree
void setTempHydrationDegree(double v)
double giveHydrationDegree() const
Returns the non-temp hydration degree. Used for step restart and postprocessing.
void setHydrationDegree(double v)
double giveTempHydrationDegree() const
Returns the temp hydration degree.
double dAdksi(double ksi) const
Returns the derivation of chemical affinity dA~/dksi(ksi).
void setMixture(MixtureType mix)
Sets the mixture type and appropriate material parameters.
FindRootMethod useFindRoot
double computeHydrationDegreeIncrement(double ksi, double T, double h, double dt)
double we
Total water consumption for hydration [kg/m3].
double initialHydrationDegree
!! initial hydration degree - set in initialize From, but not used
double mixedfindroot() const
double ear
Activation term [K].
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
Creates and returns new HydrationModelStatus instance.
double regulafindroot() const
double bintreefindroot() const
double le
Latent heat [kJ/m3].
double giveHydrationDegree(GaussPoint *gp, TimeStep *tStep, ValueModeType mode) const
double auxksi
!! possible problem for parallel computation, performance???
MixtureType mixture
Used concrete mixture.
double timeScale
time scale - used for time input in other units than seconds
double affinity(double ksi) const
Returns the normalized chemical affinity A~(ksi) [1/s].
double computeIntSource(double T, double h, GaussPoint *gp, TimeStep *tStep, MatResponseMode rmode) const
Computes and returns the derivatives of the material-generated Internal Source with respect to the tm...
double aa
Normalized chemical affinity regression function coefficients.
MaterialStatus * giveStatus(GaussPoint *gp) const override
double cv
Input cement content kg/m3 for evaluation of total water consumption.
double dksidT(double ksi, double T, double h, double dt) const
double localResidual(double dks) const
double dksidh(double ksi, double T, double h, double dt) const
MaterialStatus(GaussPoint *g)
Material(int n, Domain *d)
double giveTimeIncrement()
Returns solution step associated time increment.
double giveTargetTime()
Returns target time.
void setTimeIncrement(double newDt)
Sets solution step time increment.
#define _IFT_HydrationModelInterface_castAt
#define _IFT_HydrationModel_timeScale
#define _IFT_HydrationModel_water
#define _IFT_HydrationModel_hheat
#define _IFT_HydrationModel_c60mix
#define _IFT_HydrationModel_hydration
#define ROOT_PRECISION_DKSI
#define _IFT_HydrationModel_cv
#define BINARY_TREE_STEPS
#define _IFT_HydrationModelInterface_hydration
#define OOFEM_LOG_INFO(...)
@ HydrationModelStatusInterfaceType
@ CIO_IOERR
General IO error.