66 if ( result !=
IRRT_OK )
return result;
126 if (( mode == VM_Total) || (mode == VM_TotalIntrinsic)) {
137 if ( mode == Capacity ) {
139 }
else if ( mode == IntSource ) {
144 return this->
activationEnergy / ( 8.314 * tempStateVec * tempStateVec ) * exp(1. / stateVec - 1. / tempStateVec);
170 if ( conduct < 0.3 || conduct > 5 ) {
171 OOFEM_WARNING(
"Weird concrete thermal conductivity %f W/m/K\n", conduct);
180 double capacityConcrete;
186 capacityConcrete = 0.;
189 capacityConcrete = 0.;
195 if ( capacityConcrete < 500 || capacityConcrete > 2000 ) {
196 OOFEM_WARNING(
"Weird concrete heat capacity %f J/kg/K\n", capacityConcrete);
199 return capacityConcrete;
205 double concreteBulkDensity;
211 concreteBulkDensity = 0.;
214 concreteBulkDensity = 0.;
220 if ( concreteBulkDensity < 1000 || concreteBulkDensity > 4000 ) {
221 OOFEM_WARNING(
"Weird concrete density %f kg/m3\n", concreteBulkDensity);
224 return concreteBulkDensity;
232 if ( type == IST_HydrationDegree ) {
273 double castingTime = this->giveCastingTime();
282 if ( targTime - castingTime <= 0 ) {
292 if ( this->hydrationModelType == 1 ) {
298 }
else if ( this->hydrationModelType == 2 ) {
300 double alphaTrialOld, alphaTrialNew = 0.0;
302 double timeStep = ( evalTime - time ) / this->minModelTimeStepIntegrations;
303 if ( timeStep > this->maxModelIntegrationTime ) {
304 timeStep = this->maxModelIntegrationTime;
308 while ( time < evalTime ) {
309 if ( time + timeStep > evalTime ) {
310 timeStep = evalTime - time;
319 for (
int i = 0; i < 4; i++ ) {
321 alphaTrialOld = alphaTrialNew;
326 OOFEM_ERROR(
"Unknown hydration model type %d", this->hydrationModelType);
330 ms->
power *= 1000 * this->massCement;
340 return exp( this->activationEnergy / 8.314 * ( 1. / ( 273.15 + this->referenceTemperature ) - 1. / ( 273.15 + ms->
giveTempField().
at(1) ) ) );
345 double result = this->B1 * ( this->B2 / this->DoHInf + DoH ) * ( this->DoHInf - DoH ) * exp(-this->eta * DoH / this->DoHInf);
351 if ( this->P1 != 0. && DoH >= this->DoH1 ) {
352 result *= 1. + this->P1 * ( DoH - this->DoH1 );
383 fprintf(file,
" status {");
384 fprintf( file,
"EvaluatingTime %e DoH %f HeatPower %f [W/m3 of concrete] Temperature %f conductivity %f capacity %f density %f", tStep->
giveIntrinsicTime(), this->
giveDoHActual(), this->
power, this->
giveTempField().
at(1), mat->
giveIsotropicConductivity(this->
gp, tStep), mat->
giveConcreteCapacity(this->
gp, tStep), mat->
giveConcreteDensity(this->
gp, tStep) );
385 fprintf(file,
"}\n");
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
const FloatArray & giveTempField()
Return last field.
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
double affinity25(double alpha)
Return affinity scaled to 25C.
#define _IFT_HydratingConcreteMat_P1
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
Returns material status of receiver in given integration point.
double activationEnergy
Activation energy of concrete (default 38400 J/mol/K).
GaussPoint * gp
Associated integration point.
double reinforcementDegree
Degree of reinforcement, if defined, reinforcement effect for conductivity and capacity is accounted ...
This class implements various phenomenological and affinity hydration models.
Domain * domain
Link to domain object, useful for communicating with other FEM components.
#define _IFT_HydratingConcreteMat_B2
double & at(int i)
Coefficient access function.
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
int conductivityType
Use different methods to evaluate material conductivity, capacity, or density.
const char * __MatResponseModeToString(MatResponseMode _value)
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in Reduced form.
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
double giveTargetTime()
Returns target time.
#define _IFT_HydratingConcreteMat_conductivitytype
double lastEquivalentTime
double lastDegreeOfHydration
This class implements a transport material status information.
virtual double giveConcreteDensity(GaussPoint *gp, TimeStep *tStep)
#define _IFT_HydratingConcreteMat_eta
HydratingConcreteMat(int n, Domain *d)
virtual ~HydratingConcreteMatStatus()
MatResponseMode
Describes the character of characteristic material matrix.
int hydrationModelType
Type of hydration model, e.g. exponential curve, Cervera's model.
#define _IFT_HydratingConcreteMat_beta
HydratingConcreteMatStatus(int n, Domain *d, GaussPoint *g)
double giveDoHActual()
Returns actual degree of hydration at last known equilibrium.
double giveTimeIncrement()
Returns solution step associated time increment.
double tau
Parameters for exponential affinity hydration model summarized in A.K.
virtual ~HydratingConcreteMat()
int giveNumber()
Returns receiver's number.
const FloatArray & giveField()
Return last field.
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
virtual double giveConcreteCapacity(GaussPoint *gp, TimeStep *tStep)
double massCement
Mass of cement in kg per 1m3 of concrete.
double Qpot
Potential heat of hydration, for ordinary Portland cement approximately 500 J/g.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in Reduced form.
double maxModelIntegrationTime
This class implements an isotropic linear heat material.
Material * giveMaterial()
Returns reference to material associated to related element of receiver.
#define _IFT_HydratingConcreteMat_massCement
#define _IFT_HydratingConcreteMat_hydrationModelType
double giveIntrinsicTime()
Returns intrinsic time, e.g. time in which constitutive model is evaluated.
#define _IFT_HydratingConcreteMat_DoH1
#define _IFT_HydratingConcreteMat_referenceTemperature
virtual MaterialStatus * CreateStatus(GaussPoint *gp) const
Creates new copy of associated status and inserts it into given integration point.
#define _IFT_HydratingConcreteMat_reinforcementDegree
virtual double giveIsotropicConductivity(GaussPoint *gp, TimeStep *tStep)
Abstract base class representing a material status information.
double maturity
A scalar containing maturity (integration of temperature over time)
Class representing vector of real numbers.
#define _IFT_HydratingConcreteMat_B1
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual void computeInternalSourceVector(FloatArray &val, GaussPoint *gp, TimeStep *tStep, ValueModeType mode)
Computes the internal source vector of receiver.
double GivePower(TimeStep *tStep, GaussPoint *gp, ValueModeType mode)
IRResultType
Type defining the return values of InputRecord reading operations.
#define _IFT_HydratingConcreteMat_activationEnergy
#define _IFT_HydratingConcreteMat_densitytype
double DoH1
Optional extension to slag-rich, high-blended cements.
#define _IFT_HydratingConcreteMat_DoHInf
HydratingConcreteMatStatus stores degree of hydration in each integration point.
#define _IFT_HydratingConcreteMat_maxModelIntegrationTime
double minModelTimeStepIntegrations
Minimum number of integration steps for hydration model within a given timeStep.
#define _IFT_HydratingConcreteMat_qpot
double scaleTemperature(GaussPoint *gp)
virtual double giveCharacteristicValue(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Computes the characteristic value of receiver in given integration point, respecting its history...
virtual double give(int aProperty, GaussPoint *gp, TimeStep *tStep)
double B1
Parameters for affinity hydration model inspired by Cervera et al.
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
double referenceTemperature
Reference temperature for hydration model.
REGISTER_Material(DummyMaterial)
virtual double giveMaturityT0()
bool isIcApply()
Check if receiver is solution step when initial conditions should apply.
the oofem namespace is to define a context or scope in which all oofem names are defined.
Class representing integration point in finite element program.
#define _IFT_HydratingConcreteMat_capacitytype
#define OOFEM_WARNING(...)
Class representing solution step.
#define _IFT_HydratingConcreteMat_tau
#define _IFT_HydratingConcreteMat_minModelTimeStepIntegrations
const char * __ValueModeTypeToString(ValueModeType _value)
void resize(int s)
Resizes receiver towards requested size.