83 OOFEM_WARNING(
"thetaM cannot be smaller than thetaS. Choose thetaM=thetaS.");
113 double suction = field.
at(1);
122 if ( aProperty ==
'k' ) {
124 }
else if ( ( aProperty ==
HeatCapaCoeff ) || ( aProperty ==
'c' ) ) {
125 return ( this->
give(
'd', gp) );
140 if ( mode == Capacity ) {
142 }
else if ( mode == Conductivity ) {
163 double relativePermeability = 0.;
164 double conductivity = 0.;
166 double saturation, partOne, partTwo, numerator, denominator;
169 relativePermeability = 1.;
171 partOne = pow( suction / this->
paramA, 1. / ( 1. - this->
paramM ) );
177 numerator = ( 1. - pow(1. - pow(partTwo * saturation, 1 / this->
paramM), this->
paramM) );
178 denominator = ( 1. - pow(1. - pow(partTwo, 1 / this->
paramM), this->
paramM) );
180 relativePermeability = sqrt(saturation) * pow( ( numerator ) / ( denominator ), 2.0 );
209 if ( couplingFlag == 1 && coupledModels.
at(1) != 0 && !tStep->
isTheFirstStep() ) {
213 for (
int i = 1; i <= crackLengths.
giveSize(); i++) {
214 if ( couplingNumbers.
at(i) != 0 ) {
217 crackWidths.
at(i) = 0.;
230 double crackContribution = 0.;
232 for (
int i = 1; i <= crackLengths.
giveSize(); i++) {
234 crackContribution += pow(crackWidths.
at(i), 3.) / crackLengths.
at(i);
236 printf(
"Limit is activated\n");
237 crackContribution += pow(
crackLimit, 3.) / crackLengths.
at(i);
243 conductivity += crackContribution;
245 return this->
density * conductivity;
265 double partThree = pow(1. + pow( suction / this->
paramA, 1. / ( 1. - this->
paramM ) ), -this->
paramM - 1.);
266 cap = ( this->
thetaM - this->
thetaR ) * partOne * partTwo * partThree;
286 fprintf(File,
" state");
288 for (
auto &val : field ) {
289 fprintf( File,
" %.4e", val );
292 fprintf(File,
" mass %.8e", mass);
307 oldPressure = field.at(1);
virtual EngngModel * giveSlaveProblem(int i)
Returns i-th slave problem.
int conType
Type of conductivity and capcity laws.
MaterialMode giveMaterialMode()
Returns corresponding material mode of receiver.
const FloatArray & giveTempField()
Return last field.
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
double crackLimit
crack limit
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
Returns material status of receiver in given integration point.
Domain * domain
Link to domain object, useful for communicating with other FEM components.
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.
double & at(int i)
Coefficient access function.
#define _IFT_LatticeTransportMaterial_thetar
EngngModel * giveEngngModel()
Returns engineering model to which receiver is associated.
#define _IFT_LatticeTransportMaterial_paev
Element * giveElement()
Returns corresponding element to receiver.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
This class implements a transport material status information.
Class implementing an array of integers.
int & at(int i)
Coefficient access function.
MatResponseMode
Describes the character of characteristic material matrix.
#define _IFT_LatticeTransportMaterial_c
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
double paramA
Parameter of van Genuchten law.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
double computeConductivity(double suction, GaussPoint *gp, TimeStep *tStep)
Computes the conductivity.
double viscosity
Viscosity of fluid.
bool isTheFirstStep()
Check if receiver is first step.
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 double giveCharacteristicValue(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Computes the characteristic value of receiver in given integration point, respecting its history...
virtual double giveCrackWidth()
virtual void giveFluxVector(FloatArray &answer, GaussPoint *gp, const FloatArray &grad, const FloatArray &field, TimeStep *tStep)
Returns the flux for the field and its gradient.
Element * giveElement(int n)
Service for accessing particular domain fe element.
#define _IFT_LatticeTransportMaterial_contype
double suctionAirEntry
suction air entry value
#define _IFT_LatticeTransportMaterial_thetam
#define _IFT_LatticeTransportMaterial_ctor
int capacity
Type of conductivity and capcity laws.
void setTempField(FloatArray newField)
Set field.
Implementation of general sequence (staggered) problem.
EngngModel * giveMasterEngngModel()
Returns the master engnmodel.
double thetaR
Residual water content.
virtual double give(int, GaussPoint *gp)
Returns the value of material property 'aProperty'.
Abstract base class representing a material status information.
Class representing vector of real numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
#define _IFT_LatticeTransportMaterial_k
double mass
Liquid mass in element.
void printOutputAt(FILE *, TimeStep *)
Print receiver's output to given stream.
#define _IFT_LatticeTransportMaterial_a
MaterialMode matMode
Material mode for convenient access.
Domain * giveDomain() const
double thetaM
modified water content
double permeability
Intrinsic permeability of porous material.
REGISTER_Material(DummyMaterial)
This class implements the base of a special lattice element following the concepts orginally develope...
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_LatticeTransportMaterial_vis
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
#define _IFT_LatticeTransportMaterial_thetas
double paramM
Parameter of van Genuchten law.
double computeCapacity(double suction, GaussPoint *gp)
Computes the capacity.
#define _IFT_LatticeTransportMaterial_m
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
void setMass(double input)
Sets the mass.
#define _IFT_LatticeTransportMaterial_clim
Class representing integration point in finite element program.
#define OOFEM_WARNING(...)
double density
Density of fluid.
Class representing solution step.
virtual MaterialStatus * CreateStatus(GaussPoint *gp) const
Creates new copy of associated status and inserts it into given integration point.
void resize(int s)
Resizes receiver towards requested size.