OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
hemokunzelmat.h
Go to the documentation of this file.
1 /*
2  *
3  * ##### ##### ###### ###### ### ###
4  * ## ## ## ## ## ## ## ### ##
5  * ## ## ## ## #### #### ## # ##
6  * ## ## ## ## ## ## ## ##
7  * ## ## ## ## ## ## ## ##
8  * ##### ##### ## ###### ## ##
9  *
10  *
11  * OOFEM : Object Oriented Finite Element Code
12  *
13  * Copyright (C) 1993 - 2013 Borek Patzak
14  *
15  *
16  *
17  * Czech Technical University, Faculty of Civil Engineering,
18  * Department of Structural Mechanics, 166 29 Prague, Czech Republic
19  *
20  * This program is free software; you can redistribute it and/or modify
21  * it under the terms of the GNU General Public License as published by
22  * the Free Software Foundation; either version 2 of the License, or
23  * (at your option) any later version.
24  *
25  * This program is distributed in the hope that it will be useful,
26  * but WITHOUT ANY WARRANTY; without even the implied warranty of
27  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28  * GNU General Public License for more details.
29  *
30  * You should have received a copy of the GNU General Public License
31  * along with this program; if not, write to the Free Software
32  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
33  */
34 
35 #ifndef hemokunzelmat_h
36 #define hemokunzelmat_h
37 
38 #include "transportmaterial.h"
39 
41 
42 #define _IFT_HeMoKunzelMaterial_Name "hemokunzel"
43 #define _IFT_HeMoKunzelMaterial_iso_type "iso_type"
44 #define _IFT_HeMoKunzelMaterial_permeability_type "permeability_type"
45 #define _IFT_HeMoKunzelMaterial_iso_a "iso_a"
46 #define _IFT_HeMoKunzelMaterial_iso_n "iso_n"
47 #define _IFT_HeMoKunzelMaterial_iso_wh "iso_wh"
48 #define _IFT_HeMoKunzelMaterial_iso_b "iso_b"
49 #define _IFT_HeMoKunzelMaterial_mu "mu"
50 #define _IFT_HeMoKunzelMaterial_pl "pl"
51 #define _IFT_HeMoKunzelMaterial_a "a"
52 #define _IFT_HeMoKunzelMaterial_lambda0 "lambda0"
53 #define _IFT_HeMoKunzelMaterial_b "b"
54 #define _IFT_HeMoKunzelMaterial_rhoh2o "rhoh2o"
55 #define _IFT_HeMoKunzelMaterial_cs "cs"
56 #define _IFT_HeMoKunzelMaterial_cw "cw"
57 #define _IFT_HeMoKunzelMaterial_hv "hv"
58 #define _IFT_HeMoKunzelMaterial_perm_h "perm_h"
59 #define _IFT_HeMoKunzelMaterial_perm_dwh "perm_dw(h)"
60 #define _IFT_HeMoKunzelMaterial_perm_wv "perm_wv"
61 #define _IFT_HeMoKunzelMaterial_perm_dwwv "perm_dw(wv)"
62 
63 
64 namespace oofem {
68 {
69 protected:
70 
72 
79 
80  double A;
81 
82  double iso_wh;
83  double iso_n;
84  double iso_a;
85  double iso_b;
86 
87  double mu;
88  double PL;
89 
90  double lambda0;
91  double b;
92  double rho;
93  double rhoH2O;
94  double cs;
95  double cw;
96  double hv;
97 
98 
99 
100 
101 
102 public:
103 
111  virtual ~HeMoKunzelMaterial() { }
112 
113  virtual void giveFluxVector(FloatArray &answer, GaussPoint *gp, const FloatArray &grad, const FloatArray &field, TimeStep *tStep);
114 
115  virtual void giveCharacteristicMatrix(FloatMatrix &answer,
116  MatResponseMode mode,
117  GaussPoint *gp,
118  TimeStep *atTime);
119 
120  virtual double giveCharacteristicValue(MatResponseMode mode,
121  GaussPoint *gp,
122  TimeStep *atTime);
123 
125 
127 
128  virtual double give(int aProperty, GaussPoint *gp);
129 
130  virtual int hasMaterialModeCapability(MaterialMode mode);
131 
132  // identification
133  virtual const char *giveInputRecordName() const { return _IFT_HeMoKunzelMaterial_Name; }
134  virtual const char *giveClassName() const { return "HeMoKunzelMaterial"; }
135 
137  double sorptionIsotherm(double h);
138 
140  double sorptionIsothermDerivative(double h);
141 
142  double computeWaterVaporPerm(double T);
143  double computeSatVaporPressure(double T);
144  double computeSatVaporPressureDerivative(double T);
145  double computeDw(double h);
146 
147 
148 protected:
149  void computeConductivityMtrx(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *atTime);
150  void matcond1d(FloatMatrix &d, GaussPoint *gp, MatResponseMode mode, TimeStep *atTime);
151  void matcond2d(FloatMatrix &d, GaussPoint *gp, MatResponseMode mode, TimeStep *atTime);
152  void matcond3d(FloatMatrix &d, GaussPoint *gp, MatResponseMode mode, TimeStep *atTime);
153 
154  double computeCapacityCoeff(MatResponseMode mode, GaussPoint *gp, TimeStep *atTime);
155 
156  double perm_mm(double h, double T);
157  double perm_mh(double h, double T);
158  double perm_hm(double h, double T);
159  double perm_hh(double h, double T);
160 
161 
162  // post-processing, poi export
163  virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *atTime);
164  virtual double giveHumidity(GaussPoint *gp, ValueModeType mode);
165 };
166 } // end namespace oofem
167 #endif // hemokunzelmat_h
double sorptionIsotherm(double h)
returns water content (in kg/m^3)
FloatArray perm_h
values of the multilinear permeability
Definition: hemokunzelmat.h:75
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
enum oofem::HeMoKunzelMaterial::permeabilityType Permeability
double computeCapacityCoeff(MatResponseMode mode, GaussPoint *gp, TimeStep *atTime)
double sorptionIsothermDerivative(double h)
computes derivative of the moisture storage function (sorption isotherm) with respect to relative hum...
Class and object Domain.
Definition: domain.h:115
HeMoKunzelMaterial(int n, Domain *d)
Constructor.
virtual double giveHumidity(GaussPoint *gp, ValueModeType mode)
Returns positive value of humidity if implemented and enabled in derived material, -1 otherwise.
void computeConductivityMtrx(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *atTime)
virtual void giveFluxVector(FloatArray &answer, GaussPoint *gp, const FloatArray &grad, const FloatArray &field, TimeStep *tStep)
Returns the flux for the field and its gradient.
void matcond3d(FloatMatrix &d, GaussPoint *gp, MatResponseMode mode, TimeStep *atTime)
double iso_a
Parameter of Hansen's isotherm.
Definition: hemokunzelmat.h:84
double iso_wh
Parameter of Hansen's/Kunzel's isotherm - max. adsorbed water content [kg/m^3].
Definition: hemokunzelmat.h:82
double b
thermal conductivity supplement [-]
Definition: hemokunzelmat.h:91
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
Definition: valuemodetype.h:78
double PL
ambient atmospheric pressure [Pa]
Definition: hemokunzelmat.h:88
double A
water absorption coefficient [kg m^-2 s^-0.5]
Definition: hemokunzelmat.h:80
double perm_mm(double h, double T)
virtual const char * giveClassName() const
MaterialMode
Type representing material mode of integration point.
Definition: materialmode.h:89
double lambda0
thermal conductivity [W m^-1 K^-1]
Definition: hemokunzelmat.h:90
MatResponseMode
Describes the character of characteristic material matrix.
enum oofem::HeMoKunzelMaterial::isothermType Isotherm
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *atTime)
Returns the integration point corresponding value in Reduced form.
double cw
specific heat capacity of liquid water [J kg^-1 K^-1]
Definition: hemokunzelmat.h:95
void matcond1d(FloatMatrix &d, GaussPoint *gp, MatResponseMode mode, TimeStep *atTime)
double cs
specific heat capacity of the building material [J kg^-1 K^-1]
Definition: hemokunzelmat.h:94
double computeSatVaporPressureDerivative(double T)
virtual void giveCharacteristicMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *atTime)
Computes characteristic matrix of receiver in given integration point.
virtual bool isCharacteristicMtrxSymmetric(MatResponseMode rMode)
Returns true if stiffness matrix of receiver is symmetric Default implementation returns true...
double computeDw(double h)
double perm_hm(double h, double T)
double iso_n
Parameter of Hansen's isotherm - exponent.
Definition: hemokunzelmat.h:83
double rho
bulk density of dry building material [kg m^-3]
Definition: hemokunzelmat.h:92
virtual double giveCharacteristicValue(MatResponseMode mode, GaussPoint *gp, TimeStep *atTime)
Computes the characteristic value of receiver in given integration point, respecting its history...
virtual int hasMaterialModeCapability(MaterialMode mode)
Tests if material supports material mode.
Definition: hemokunzelmat.C:45
double hv
latent heat of phase change/evaporation enthalpy of pure water [J/kg]
Definition: hemokunzelmat.h:96
double computeSatVaporPressure(double T)
Class representing vector of real numbers.
Definition: floatarray.h:82
double perm_mh(double h, double T)
virtual ~HeMoKunzelMaterial()
Destructor.
Implementation of matrix containing floating point numbers.
Definition: floatmatrix.h:94
IRResultType
Type defining the return values of InputRecord reading operations.
Definition: irresulttype.h:47
double perm_hh(double h, double T)
double computeWaterVaporPerm(double T)
Class representing the general Input Record.
Definition: inputrecord.h:101
Abstract base class for all constitutive models for transport problems.
double iso_b
Parameter of Kunzel's isotherm.
Definition: hemokunzelmat.h:85
void matcond2d(FloatMatrix &d, GaussPoint *gp, MatResponseMode mode, TimeStep *atTime)
#define _IFT_HeMoKunzelMaterial_Name
Definition: hemokunzelmat.h:42
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: hemokunzelmat.C:56
virtual const char * giveInputRecordName() const
the oofem namespace is to define a context or scope in which all oofem names are defined.
double rhoH2O
water density [kg m^-3]
Definition: hemokunzelmat.h:93
double mu
water vapor diffusion resistance [-]
Definition: hemokunzelmat.h:87
Class representing integration point in finite element program.
Definition: gausspoint.h:93
Class representing solution step.
Definition: timestep.h:80
virtual double give(int aProperty, GaussPoint *gp)
Returns the value of material property 'aProperty'.

This page is part of the OOFEM documentation. Copyright (c) 2011 Borek Patzak
Project e-mail: info@oofem.org
Generated at Tue Jan 2 2018 20:07:29 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011