OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
latticetransmat.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 library is free software; you can redistribute it and/or
21  * modify it under the terms of the GNU Lesser General Public
22  * License as published by the Free Software Foundation; either
23  * version 2.1 of the License, or (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 GNU
28  * Lesser General Public License for more details.
29  *
30  * You should have received a copy of the GNU Lesser General Public
31  * License along with this library; if not, write to the Free Software
32  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
33  */
34 
35 #ifndef latticetransmat_h
36 #define latticetransmat_h
37 
38 #include "transportmaterial.h"
39 #include "dictionary.h"
40 #include "floatarray.h"
41 #include "floatmatrix.h"
42 #include "cltypes.h"
43 #include "matstatus.h"
44 
46 
47 #define _IFT_LatticeTransportMaterial_Name "latticetransmat"
48 #define _IFT_LatticeTransportMaterial_vis "vis"
49 #define _IFT_LatticeTransportMaterial_k "k"
50 #define _IFT_LatticeTransportMaterial_thetas "thetas"
51 #define _IFT_LatticeTransportMaterial_thetar "thetar"
52 #define _IFT_LatticeTransportMaterial_contype "contype"
53 #define _IFT_LatticeTransportMaterial_m "m"
54 #define _IFT_LatticeTransportMaterial_a "a"
55 #define _IFT_LatticeTransportMaterial_thetam "thetam"
56 #define _IFT_LatticeTransportMaterial_paev "paev"
57 #define _IFT_LatticeTransportMaterial_ctor "ctor"
58 #define _IFT_LatticeTransportMaterial_clim "clim"
59 #define _IFT_LatticeTransportMaterial_c "c"
60 
61 
62 namespace oofem {
67 {
68 protected:
70  double mass;
71  double oldPressure;
72 
73 public:
78 
79  void printOutputAt(FILE *, TimeStep *);
80 
82  double givePressure() { return field.at(1); }
83 
84  double giveOldPressure() { return oldPressure; }
85 
87  void setMass(double input) { this->mass = input; }
88 
90  double giveMass() { return this->mass; }
91 
92  virtual void updateYourself(TimeStep *tStep);
93 
94  virtual void initTempStatus();
95 
96  virtual const char *giveClassName() const { return "LatticeTransportMaterialStatus"; }
97 };
98 
103 {
104 protected:
106  double viscosity;
107 
109  double paramM;
110 
112  double paramA;
113 
115  double permeability;
116 
118  double porosity;
119 
121  double density;
122 
124  int conType;
125 
127  int capacity;
128 
130  double thetaS;
131 
133  double thetaR;
134 
136  double thetaM;
137 
140 
142  double crackLimit;
143 
144 
147 
150 
151 public:
153 
155 
156  virtual void giveFluxVector(FloatArray &answer, GaussPoint *gp, const FloatArray &grad, const FloatArray &field, TimeStep *tStep);
157 
158  virtual void giveCharacteristicMatrix(FloatMatrix &answer,
159  MatResponseMode mode,
160  GaussPoint *gp,
161  TimeStep *tStep) {; }
162 
163  virtual double giveCharacteristicValue(MatResponseMode mode,
164  GaussPoint *gp,
165  TimeStep *tStep);
166 
173  double computeConductivity(double suction, GaussPoint *gp, TimeStep *tStep);
174 
180  double computeCapacity(double suction, GaussPoint *gp);
181 
188  double computeMass(FloatArray &stateVector, GaussPoint *gp);
189 
190  virtual const char *giveInputRecordName() const { return _IFT_LatticeTransportMaterial_Name; }
191  virtual const char *giveClassName() const { return "LatticeTransportMaterial"; }
192 
194 
195  virtual double give(int, GaussPoint *gp);
196 
197  virtual MaterialStatus *CreateStatus(GaussPoint *gp) const;
198 };
199 } // end namespace oofem
200 #endif
int conType
Type of conductivity and capcity laws.
This class implements a transport constitutive model for saturated and unsaturated porous materials f...
GaussPoint * gp
Associated integration point.
Class and object Domain.
Definition: domain.h:115
double crackTortuosity
crack tortuosity
double thetaS
Relative saturated water content.
This class implements associated Material Status to LatticeTransportMaterial.
LatticeTransportMaterialStatus(int n, Domain *d, GaussPoint *g)
Constructor.
virtual const char * giveClassName() const
double & at(int i)
Coefficient access function.
Definition: floatarray.h:131
LatticeTransportMaterial(int n, Domain *d)
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
virtual const char * giveClassName() const
This class implements a transport material status information.
virtual void giveCharacteristicMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Computes characteristic matrix of receiver in given integration point.
MaterialMode
Type representing material mode of integration point.
Definition: materialmode.h:89
MatResponseMode
Describes the character of characteristic material matrix.
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
double paramA
Parameter of van Genuchten law.
double viscosity
Viscosity of fluid.
virtual ~LatticeTransportMaterialStatus()
Destructor.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: matstatus.h:140
FloatArray field
Vector containing the last equilibrated field. The physical meaning corresponds to temperature...
double suctionAirEntry
suction air entry value
int capacity
Type of conductivity and capcity laws.
double thetaR
Residual water content.
double givePressure()
Returns pressure.
Abstract base class representing a material status information.
Definition: matstatus.h:84
virtual const char * giveInputRecordName() const
Class representing vector of real numbers.
Definition: floatarray.h:82
double porosity
Porosity of porous material.
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 mass
Liquid mass in element.
#define _IFT_LatticeTransportMaterial_Name
Class representing the general Input Record.
Definition: inputrecord.h:101
void printOutputAt(FILE *, TimeStep *)
Print receiver's output to given stream.
Abstract base class for all constitutive models for transport problems.
MaterialMode matMode
Material mode for convenient access.
double thetaM
modified water content
double permeability
Intrinsic permeability of porous material.
the oofem namespace is to define a context or scope in which all oofem names are defined.
double paramM
Parameter of van Genuchten law.
void setMass(double input)
Sets the mass.
Class representing integration point in finite element program.
Definition: gausspoint.h:93
double density
Density of fluid.
Class representing solution step.
Definition: timestep.h:80

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