47 if ( ( mode == _2dHeMo ) || ( mode == _3dHeMo ) ) {
97 double w = field.
at(2);
98 double t = field.
at(1);
103 for (
int i = 1; i <= size; ++i ) {
104 grad_w.
at(i) = grad.
at(i);
106 for (
int i = size + 1; i <= size * 2; ++i ) {
107 grad_t.
at(i) = grad.
at(i);
134 if ( ( mode == Conductivity_ww ) || ( mode == Conductivity_hh ) || ( mode == Conductivity_hw ) || ( mode == Conductivity_wh ) ) {
156 this->
matcond2d(answer, gp, mode, tStep);
160 this->
matcond3d(answer, gp, mode, tStep);
177 double k = 0.0, w = 0.0, t = 0.0;
192 if ( mode == Conductivity_ww ) {
194 }
else if ( mode == Conductivity_wh ) {
196 }
else if ( mode == Conductivity_hw ) {
198 }
else if ( mode == Conductivity_hh ) {
216 double k = 0.0, w = 0.0, t = 0.0;
231 if ( mode == Conductivity_ww ) {
233 }
else if ( mode == Conductivity_wh ) {
235 }
else if ( mode == Conductivity_hw ) {
237 }
else if ( mode == Conductivity_hh ) {
258 double k = 0.0, w = 0.0, t = 0.0;
273 if ( mode == Conductivity_ww ) {
275 }
else if ( mode == Conductivity_wh ) {
277 }
else if ( mode == Conductivity_hw ) {
279 }
else if ( mode == Conductivity_hh ) {
300 if ( mode == Capacity_ww ) {
302 }
else if ( mode == Capacity_wh ) {
304 }
else if ( mode == Capacity_hw ) {
317 }
else if ( mode == Capacity_hh ) {
349 if ( mode == VM_Total ) {
351 }
else if ( mode == VM_Incremental ) {
353 }
else if ( mode == VM_Velocity ) {
371 double k_ww, phi, delta_gw, dphi_dw, p_gws;
378 k_ww = delta_gw * p_gws * dphi_dw;
389 double k_wt, phi, delta_gw, dpgw_dt;
395 k_wt = delta_gw * dpgw_dt;
411 if ( ( phi < 0.2 ) || ( phi > 0.98 ) ) {
434 if ( ( phi < 0.2 ) || ( phi > 0.98 ) ) {
435 OOFEM_ERROR(
"Relative humidity %.3f is out of range", phi);
439 w =
w_h * pow( ( 1.0 - log(phi) /
a ), ( -1.0 /
n ) );
459 phi = exp(
a * ( 1.0 - pow( (
w_h / w ), (
n ) ) ) );
461 if ( ( phi < 0.2 ) || ( phi > 0.98 ) ) {
462 OOFEM_ERROR(
"Relative humidity %.3f is out of range", phi);
483 dphi_dw = exp(
a * ( 1.0 - pow( (
w_h / w ),
n ) ) ) *
a *
n * pow(
w_h,
n) * pow( w, ( -1.0 -
n ) );
496 double dp_gw_dt, dp_gws_dt;
499 dp_gws_dt = exp( 23.5771 - 4042.9 / ( t - 37.58 ) ) * 4042.9 / ( t - 37.58 ) / ( t - 37.58 );
501 dp_gw_dt = phi * dp_gws_dt;
518 p_gws = exp( 23.5771 - 4042.9 / ( t - 37.58 ) );
541 double b, sat, phi, dphi_dw;
547 b =
por *
rho_gws * ( phi + ( 1 - sat ) * dphi_dw );
594 if ( ( mode == Conductivity_ww ) || ( mode == Conductivity_hh ) || ( mode == Conductivity_hw ) || ( mode == Conductivity_wh ) ) {
607 if ( type == IST_Humidity ) {
double sorption_isotherm(double phi)
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
MaterialMode giveMaterialMode()
Returns corresponding material mode of receiver.
const FloatArray & giveTempField()
Return last field.
double nn
Constant-exponent (obtained from experiments) [Bazant and Najjar, 1972].
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
Returns material status of receiver in given integration point.
#define _IFT_HeMoTKMaterial_n
double give_dphi_dw(double w)
void matcond3d(FloatMatrix &d, GaussPoint *gp, MatResponseMode mode, TimeStep *tStep)
double & at(int i)
Coefficient access function.
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
#define _IFT_HeMoTKMaterial_nn
void matcond2d(FloatMatrix &d, GaussPoint *gp, MatResponseMode mode, TimeStep *tStep)
double give_p_gws(double t)
double get_sat(double w, double t)
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.
This class implements a transport material status information.
MaterialMode
Type representing material mode of integration point.
MatResponseMode
Describes the character of characteristic material matrix.
virtual void giveCharacteristicMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Computes characteristic matrix of receiver in given integration point.
void matcond1d(FloatMatrix &d, GaussPoint *gp, MatResponseMode mode, TimeStep *tStep)
void beScaled(double s, const FloatArray &b)
Sets receiver to be .
virtual double give(int aProperty, GaussPoint *gp)
Returns the value of material property 'aProperty'.
virtual int hasMaterialModeCapability(MaterialMode mode)
Tests if material supports material mode.
#define _IFT_HeMoTKMaterial_phi_c
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in Reduced form.
const FloatArray & giveField()
Return last field.
double w_h
Constant water content (obtained from experiments) [Pedersen, 1990].
virtual double give(int aProperty, GaussPoint *gp)
Returns the value of material property 'aProperty'.
#define _IFT_HeMoTKMaterial_delta_wet
double giveHumidity(GaussPoint *gp, ValueModeType mode)
Returns positive value of humidity, use VM_Velocity for previous (equilibrated) value.
void addSubVector(const FloatArray &src, int si)
Adds the given vector as sub-vector to receiver.
double a
Constant (obtained from experiments) [Pedersen, 1990].
void setTempField(FloatArray newField)
Set field.
bool isEmpty() const
Returns true if receiver is empty.
double at(int i, int j) const
Coefficient access function.
double give_delta_gw(double phi)
#define _IFT_HeMoTKMaterial_rho
double get_b(double w, double t)
double get_ceff(double w, double t)
void setTempGradient(FloatArray grad)
Set gradient.
Class representing vector of real numbers.
Implementation of matrix containing floating point numbers.
double computeCapacityCoeff(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
double c
Thermal capacity.
IRResultType
Type defining the return values of InputRecord reading operations.
#define _IFT_HeMoTKMaterial_chi_eff
virtual double giveCharacteristicValue(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Computes the characteristic value of receiver in given integration point, respecting its history...
#define _IFT_HeMoTKMaterial_a
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
double phi_c
Constant-relative humidity (obtained from experiments) [Bazant and Najjar, 1972]. ...
#define _IFT_HeMoTKMaterial_w_h
#define _IFT_HeMoTKMaterial_c
double n
Constant-exponent (obtained from experiments) [Pedersen, 1990].
void setTempFlux(FloatArray w)
Set flux.
double get_latent(double w, double t)
double chi_eff
Effective thermal conductivity.
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
double get_chi(double w, double t)
#define _IFT_HeMoTKMaterial_a_0
double perm_wt(double w, double t)
void zero()
Zeroes all coefficients of receiver.
double give_dpgw_dt(double t, double phi)
double latent
Latent heat of evaporation.
virtual void giveFluxVector(FloatArray &answer, GaussPoint *gp, const FloatArray &grad, const FloatArray &field, TimeStep *tStep)
Returns the flux for the field and its gradient.
double a_0
Constant (obtained from experiments) [Bazant and Najjar, 1972].
double delta_wet
Constant-water vapor permeability (obtained from experiments) [Bazant and Najjar, 1972]...
REGISTER_Material(DummyMaterial)
int giveSize() const
Returns the size of receiver.
the oofem namespace is to define a context or scope in which all oofem names are defined.
#define _IFT_HeMoTKMaterial_por
double perm_ww(double w, double t)
double rho_gws
Saturation volume density.
#define _IFT_HeMoTKMaterial_rho_gws
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Class representing integration point in finite element program.
double rho
Volume density.
Class representing solution step.
virtual bool isCharacteristicMtrxSymmetric(MatResponseMode rMode)
Returns true if stiffness matrix of receiver is symmetric Default implementation returns true...
#define _IFT_HeMoTKMaterial_latent
double inverse_sorption_isotherm(double w)
void resize(int s)
Resizes receiver towards requested size.
void computeConductivityMtrx(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)