45HeMoTKMaterial :: hasMaterialModeCapability(MaterialMode mode)
const
47 return mode == _2dHeMo || mode == _3dHeMo;
54 Material :: initializeFrom(ir);
76HeMoTKMaterial :: give(
int aProperty,
GaussPoint *gp)
const
78 return Material :: give(aProperty, gp);
90 ms->setTempTemperature(t);
91 ms->setTempTemperatureGradient(grad_t);
92 ms->setTempHeatFlux(ans_t);
94 ms->setTempHumidity(w);
95 ms->setTempHumidityGradient(grad_w);
96 ms->setTempHumidityFlux(ans_w);
98 return {ans_t, ans_w};
107 double w = status->giveTempHumidity();
110 if ( mode == Conductivity_ww ) {
112 }
else if ( mode == Conductivity_wh ) {
114 }
else if ( mode == Conductivity_hw ) {
116 }
else if ( mode == Conductivity_hh ) {
127HeMoTKMaterial :: giveCharacteristicValue(MatResponseMode mode,
135double HeMoTKMaterial :: computeCapacityCoeff(MatResponseMode mode,
GaussPoint *gp,
TimeStep *tStep)
const
137 if ( mode == Capacity_ww ) {
139 }
else if ( mode == Capacity_wh ) {
141 }
else if ( mode == Capacity_hw ) {
145 double w = status->giveTempHumidity();
147 }
else if ( mode == Capacity_hh ) {
151 double w = status->giveTempHumidity();
162HeMoTKMaterial :: giveHumidity(
GaussPoint *gp, ValueModeType mode)
const
167 double tempw = status->giveTempHumidity();
169 if ( mode == VM_Total ) {
171 }
else if ( mode == VM_Incremental ) {
173 }
else if ( mode == VM_Velocity ) {
182HeMoTKMaterial :: perm_ww(
double w,
double t)
const
194 return delta_gw * p_gws * dphi_dw;
198HeMoTKMaterial :: perm_wt(
double w,
double t)
const
207 return delta_gw * dpgw_dt;
212HeMoTKMaterial :: give_delta_gw(
double phi)
const
219 if ( phi < 0.2 || phi > 0.98 ) {
229HeMoTKMaterial :: sorption_isotherm(
double phi)
const
237 if ( phi < 0.2 || phi > 0.98 ) {
238 OOFEM_ERROR(
"Relative humidity %.3f is out of range", phi);
242 return w_h * pow( ( 1.0 - log(phi) /
a ), ( -1.0 /
n ) );
247HeMoTKMaterial :: inverse_sorption_isotherm(
double w)
const
257 double phi = exp(
a * ( 1.0 - pow( (
w_h / w ), (
n ) ) ) );
259 if ( phi < 0.2 || phi > 0.98 ) {
260 OOFEM_ERROR(
"Relative humidity %.3f is out of range", phi);
268HeMoTKMaterial :: give_dphi_dw(
double w)
const
278 return exp(
a * ( 1.0 - pow( (
w_h / w ),
n ) ) ) *
a *
n * pow(
w_h,
n) * pow( w, ( -1.0 -
n ) );
282HeMoTKMaterial :: give_dpgw_dt(
double t,
double phi)
const
290 double dp_gws_dt = exp( 23.5771 - 4042.9 / ( t - 37.58 ) ) * 4042.9 / ( t - 37.58 ) / ( t - 37.58 );
291 double dp_gw_dt = phi * dp_gws_dt;
297HeMoTKMaterial :: give_p_gws(
double t)
const
305 return exp( 23.5771 - 4042.9 / ( t - 37.58 ) );
309HeMoTKMaterial :: get_latent(
double w,
double t)
const
316HeMoTKMaterial :: get_b(
double w,
double t)
const
324 return por *
rho_gws * ( phi + ( 1 - sat ) * dphi_dw );
329HeMoTKMaterial :: get_sat(
double w,
double t)
const
337HeMoTKMaterial :: get_ceff(
double w,
double t)
const
345HeMoTKMaterial :: get_chi(
double w,
double t)
const
352HeMoTKMaterial :: isCharacteristicMtrxSymmetric(MatResponseMode mode)
const
354 if ( mode == Conductivity_ww || mode == Conductivity_hh || mode == Conductivity_hw || mode == Conductivity_wh ) {
357 OOFEM_ERROR(
"unknown mode (%s)", __MatResponseModeToString(mode) );
367 if ( type == IST_Humidity ) {
372 return TransportMaterial :: giveIPValue(answer, gp, type, tStep);
#define REGISTER_Material(class)
double latent
Latent heat of evaporation.
double rho
Volume density.
double get_sat(double w, double t) const
double delta_wet
Constant-water vapor permeability (obtained from experiments) [Bazant and Najjar, 1972].
double giveHumidity(GaussPoint *gp, ValueModeType mode) const override
double computeCapacityCoeff(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const
double chi_eff
Effective thermal conductivity.
double give_p_gws(double t) const
double a_0
Constant (obtained from experiments) [Bazant and Najjar, 1972].
double nn
Constant-exponent (obtained from experiments) [Bazant and Najjar, 1972].
double give_dpgw_dt(double t, double phi) const
double give_delta_gw(double phi) const
double get_ceff(double w, double t) const
double get_b(double w, double t) const
double get_chi(double w, double t) const
double rho_gws
Saturation volume density.
double a
Constant (obtained from experiments) [Pedersen, 1990].
double give_dphi_dw(double w) const
double inverse_sorption_isotherm(double w) const
double perm_ww(double w, double t) const
double c
Thermal capacity.
double get_latent(double w, double t) const
double perm_wt(double w, double t) const
double phi_c
Constant-relative humidity (obtained from experiments) [Bazant and Najjar, 1972].
double w_h
Constant water content (obtained from experiments) [Pedersen, 1990].
double n
Constant-exponent (obtained from experiments) [Pedersen, 1990].
double giveHumidity() const
Return last field.
double giveTempTemperature() const
Return last field.
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
#define _IFT_HeMoTKMaterial_a
#define _IFT_HeMoTKMaterial_c
#define _IFT_HeMoTKMaterial_n
#define _IFT_HeMoTKMaterial_nn
#define _IFT_HeMoTKMaterial_w_h
#define _IFT_HeMoTKMaterial_delta_wet
#define _IFT_HeMoTKMaterial_chi_eff
#define _IFT_HeMoTKMaterial_rho_gws
#define _IFT_HeMoTKMaterial_rho
#define _IFT_HeMoTKMaterial_phi_c
#define _IFT_HeMoTKMaterial_por
#define _IFT_HeMoTKMaterial_latent
#define _IFT_HeMoTKMaterial_a_0
FloatMatrixF< N, N > eye()
Constructs an identity matrix.