85 for (
int i = 1; i <
iso_h.giveSize(); i++ ) {
86 if ( (
iso_h.at(i) < 0. ) || (
iso_h.at(i) > 1. ) ) {
136 for (
int i = 1; i <
perm_h.giveSize(); i++ ) {
175 for (
int i = 1; i <
capPerm_h.giveSize(); i++ ) {
191 for (
int i = 1; i <
capPerm_wV.giveSize(); i++ ) {
222 for (
int i = 2; i <=
iso_h.giveSize(); i++ ) {
223 if ( ( humidity -
iso_h.at(i) ) < tol ) {
228 return 1. / (
dd * ( 1. - humidity ) );
230 return wf * (
b - 1. ) *
b / ( (
b - humidity ) * (
b - humidity ) );
232 return rhodry *
uh / (
A *
nn * humidity * pow( ( 1 - log(humidity) /
A ), ( 1 /
nn + 1 ) ) );
234 double nominator, denominator;
235 nominator =
c *
k *
Vm *
rhodry * ( 1. +
k *
k * humidity * humidity *
c -
k *
k * humidity * humidity );
236 denominator = ( 1. -
k * humidity ) * ( 1. -
k * humidity ) * ( 1. + (
c - 1. ) *
k * humidity ) * ( 1. + (
c - 1. ) *
k * humidity );
237 return nominator / denominator;
239 if ( humidity <= (
hx -
dx ) ) {
241 }
else if ( humidity >= (
hx +
dx ) ) {
247 return wf *
vG_m *
vG_b / humidity * pow( ( pow( ( -
vG_b * log(humidity) ), ( 1. / ( 1. -
vG_m ) ) ) + 1. ), ( -
vG_m - 1 ) ) * ( 1. / ( 1. -
vG_m ) * pow( ( -
vG_b * log(humidity) ), (
vG_m / ( 1. -
vG_m ) ) ) );
262 for (
int i = 1; i <=
iso_h.giveSize(); i++ ) {
263 if ( ( humidity -
iso_h.at(i) ) < tol ) {
268 return wf - log(1. - humidity) /
dd;
270 return wf * (
b - 1. ) * humidity / (
b - humidity );
272 return rhodry *
uh * pow( ( 1. - log(humidity) /
A ), ( -1. /
nn ) );
274 return rhodry *
c *
k *
Vm * humidity / ( ( 1. -
k * humidity ) * (
c - 1. ) *
k * humidity );
276 if ( humidity <= (
hx -
dx ) ) {
278 }
else if ( humidity >= (
hx +
dx ) ) {
284 return wf * pow( ( pow( ( -
vG_b * log(humidity) ), ( 1. / ( 1. -
vG_m ) ) ) + 1. ), -
vG_m);
299 for (
int i = 1; i <=
perm_h.giveSize(); i++ ) {
300 if ( ( humidity -
perm_h.at(i) ) < tol ) {
305 return C1 * (
alpha0 + ( 1. -
alpha0 ) / ( 1. + pow( ( 1. - humidity ) / ( 1. -
hC ),
n ) ) );
307 double power = pow( 10.,
gammah * ( humidity - 1. ) );
319 return temper_factor * Dw * dw_dh + deltap * p_sat;
335 for (
int i = 1; i <=
capPerm_h.giveSize(); i++ ) {
336 if ( ( humidity -
capPerm_h.at(i) ) < tol ) {
344 for (
int i = 1; i <=
capPerm_wV.giveSize(); i++ ) {
369 double delta = this->
timeScale * 2.0 * 1.e-7 * pow(temperature, 0.81) / this->
PL;
370 return delta / this->
mu;
379 temperature -= 273.15;
382 if ( temperature < 0. ) {
390 return 611. * exp( a * temperature / ( T0 + temperature ) );
402 return pow(64. / ( temperature - 229. ), -1.532);
411 if ( this->
T_TF != 0 ) {
414 temperature = this->
T;
428 if ( tempState > 1.0 || tempState < 0.0 ) {
429 OOFEM_ERROR(
"Relative humidity %.3f is out of range", tempState);
438 return this->
wn != 0.;
445 if ( mode == VM_Total || mode == VM_TotalIntrinsic ) {
448 OOFEM_ERROR(
"Undefined mode %s\n", __ValueModeTypeToString(mode) );
#define REGISTER_Material(class)
Domain * giveDomain() const
Domain * domain
Link to domain object, useful for communicating with other FEM components.
void initializeFrom(InputRecord &ir) override
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
double computeTemperatureEffectOnViscosity(GaussPoint *gp, TimeStep *tStep) const
evaluate temperature effect on water viscosity - liquid water capillary conduction
double vG_b
parameters of vanGenuchten isotherm
double T
constant temperature [K]
double rhodry
density of the dry solid phase
ScalarFunction alpha
Function of degree of hydration.
double giveHumidity(GaussPoint *gp, ValueModeType mode) const override
FloatArray perm_h
values of the multilinear permeability
enum oofem::NlIsoMoistureMaterial::isothermType Isotherm
double alphah
permeability parameters according to Xi, Bazant & Jennings
double capillary_transport_coef
parameter in liquid conduction
FloatArray capPerm_h
values of the multilinear capillary transport function
FloatArray iso_h
values of the multilinear isotherm
double Abs
water absorption coefficient [kg m^-2 s^-0.5]
double hx
values of the bilinear isotherm
double uh
parameters of the isotherm proposed by P. Freiesleben Hansen (Coupled moisture/heat transport in cros...
double c
parameters of the BSB isotherm
double wn
Nonevaporable water content per m3 of concrete at complete hydration.
double giveMoistureCapacity(GaussPoint *gp, TimeStep *tStep) const override
evaluates slope of the sorption isotherm
double timeScale
= 1 for analysis in seconds, = 86400 for analysis in days, etc.
int T_TF
explicitly prescribed evolution of temperature by a time function (e.g. piecewise-linear dfined exter...
bool hasInternalSource() const override
double PL
ambient atmospheric pressure [Pa]
double computeCapTranspCoeff(double humidity) const
double dd
parameters of the Ricken isotherm
double moistureCapacity
values of the linear isotherm
void initializeFrom(InputRecord &ir) override
double computeVaporDiffusionCoeff(GaussPoint *gp, TimeStep *tStep) const
compute vapor diffusion coefficient in air [kg m^-1 s^-1 Pa^-1]
double giveTemperature(GaussPoint *gp, TimeStep *tStep) const
returns temperature in [K]
double wf
parameters of the Kuenzel isotherm
void computeInternalSourceVector(FloatArray &val, GaussPoint *gp, TimeStep *tStep, ValueModeType mode) const override
enum oofem::NlIsoMoistureMaterial::permeabilityType Permeability
double mu
water vapor diffusion resistance [-]
enum oofem::NlIsoMoistureMaterial::capillaryTransportType CapillaryTransport
double givePermeability(GaussPoint *gp, TimeStep *tStep) const override
double giveMoistureContent(double humidity) const override
double computeSaturationWaterVaporPressure(GaussPoint *gp, TimeStep *tStep) const
compute saturation water vapor pressure
double C1
"permeability" according to Bazant
double giveTimeIncrement()
Returns solution step associated time increment.
double giveTargetTime()
Returns target time.
FloatArrayF< N > max(const FloatArrayF< N > &a, const FloatArrayF< N > &b)
#define _IFT_NlIsoMoistureMaterial_iso_h
#define _IFT_NlIsoMoistureMaterial_capa
#define _IFT_NlIsoMoistureMaterial_iso_offset
#define _IFT_NlIsoMoistureMaterial_vg_m
#define _IFT_NlIsoMoistureMaterial_rhoh2o
#define _IFT_NlIsoMoistureMaterial_capperm_h
#define _IFT_NlIsoMoistureMaterial_timescale
#define _IFT_NlIsoMoistureMaterial_gammah
#define _IFT_NlIsoMoistureMaterial_alpha
#define _IFT_NlIsoMoistureMaterial_alphah
#define _IFT_NlIsoMoistureMaterial_capperm_wv
#define _IFT_NlIsoMoistureMaterial_vm
#define _IFT_NlIsoMoistureMaterial_hc
#define _IFT_NlIsoMoistureMaterial_nn
#define _IFT_NlIsoMoistureMaterial_k
#define _IFT_NlIsoMoistureMaterial_t
#define _IFT_NlIsoMoistureMaterial_capillarytransporttype
#define _IFT_NlIsoMoistureMaterial_iso_wh
#define _IFT_NlIsoMoistureMaterial_c1
#define _IFT_NlIsoMoistureMaterial_permeabilitytype
#define _IFT_NlIsoMoistureMaterial_a
#define _IFT_NlIsoMoistureMaterial_perm_h
#define _IFT_NlIsoMoistureMaterial_wn
#define _IFT_NlIsoMoistureMaterial_vg_b
#define _IFT_NlIsoMoistureMaterial_capil_coef
#define _IFT_NlIsoMoistureMaterial_alpha0
#define _IFT_NlIsoMoistureMaterial_c
#define _IFT_NlIsoMoistureMaterial_hx
#define _IFT_NlIsoMoistureMaterial_capperm_dwh
#define _IFT_NlIsoMoistureMaterial_ttf
#define _IFT_NlIsoMoistureMaterial_isothermtype
#define _IFT_NlIsoMoistureMaterial_pl
#define _IFT_NlIsoMoistureMaterial_perm_ch
#define _IFT_NlIsoMoistureMaterial_b
#define _IFT_NlIsoMoistureMaterial_mu
#define _IFT_NlIsoMoistureMaterial_wf
#define _IFT_NlIsoMoistureMaterial_rhodry
#define _IFT_NlIsoMoistureMaterial_dx
#define _IFT_NlIsoMoistureMaterial_capperm_dwwv
#define _IFT_NlIsoMoistureMaterial_betah
#define _IFT_NlIsoMoistureMaterial_n
#define _IFT_NlIsoMoistureMaterial_uh
#define _IFT_NlIsoMoistureMaterial_dd
#define _IFT_NlIsoMoistureMaterial_abs