13 static LoggerPtr porousLogger(Logger::getLogger(
"material.pzPoro"));
17 template <
class T,
class TMEM>
24 std::stringstream sout;
25 sout <<
">>> TPZMatPorous<TBASEPOROUS(T, TMEM)>() constructor called ***";
32 template <
class T,
class TMEM>
39 std::stringstream sout;
40 sout <<
">>> TPZMatPorous<TBASEPOROUS(T, TMEM)>(int id) constructor called with id = " <<
id <<
" ***";
47 template <
class T,
class TMEM>
57 std::stringstream sout;
58 sout <<
">>> TPZMatPorous<T>() copy constructor called ***";
64 template <
class T,
class TMEM>
70 template <
class T,
class TMEM>
74 out <<
"\n with template argurment TBASEPOROUS(T, TMEM) = " <<
TBASEPOROUS(T, TMEM)::
Name();
75 out <<
"\n Delta Time: " <<
fDeltaT;
76 out <<
"\n Permeability: " <<
fk;
77 out <<
"\n Fluid viscosity: " <<
fMu;
78 out <<
"\n Porous medium constant strain Storage Coeff: " <<
fStorageEps;
80 out <<
"\n Base material Data:\n";
84 template <
class T,
class TMEM>
91 template <
class T,
class TMEM>
99 template <
class T,
class TMEM>
125 template <
class T,
class TMEM>
137 const int phr = phi.
Rows();
152 std::stringstream sout;
153 sout <<
">>> TPZMatPorous<T, TMEM >::Contribute ***";
154 if(
fTime ==
Last_CT) sout <<
" Last State Contribution";
164 axesT.Multiply(dphi,dphiXYZ);
168 for(in = 0; in < phr; in++) {
181 ( dphiXYZ(0,in)*dPp[0] +
182 dphiXYZ(1,in)*dPp[1] +
183 dphiXYZ(2,in)*dPp[2] )
187 (
phi(in, 0) * data.
dsol[0](0, 0) +
188 phi(in, 0) * data.
dsol[0](1, 1) +
189 phi(in, 0) * data.
dsol[0](2, 2) );
191 ef(in*nstate+dim,0) += weight *
val;
198 ef(in*nstate+0,0) += weight * Q[0];
199 ef(in*nstate+1,0) += weight * Q[1];
200 ef(in*nstate+2,0) += weight * Q[2];
202 for( jn = 0; jn < phr; jn++ ) {
209 ek(in * nstate + 0, jn * nstate + dim) -= Q[0];
210 ek(in * nstate + 1, jn * nstate + dim) -= Q[1];
211 ek(in * nstate + 2, jn * nstate + dim) -= Q[2];
218 ek(in * nstate + dim, jn * nstate + 0) += Q[0];
219 ek(in * nstate + dim, jn * nstate + 1) += Q[1];
220 ek(in * nstate + dim, jn * nstate + 2) += Q[2];
227 ( dphiXYZ(0,in)*dphiXYZ(0,jn) +
228 dphiXYZ(1,in)*dphiXYZ(1,jn) +
229 dphiXYZ(2,in)*dphiXYZ(2,jn) )
232 ek(in * nstate + dim, jn * nstate + dim) += weight *
val;
240 std::stringstream sout;
241 sout <<
"*** TPZMatPorous<T>::Contribute ***";
242 sout <<
"ek Matrix before base classe contribution: ";
252 std::stringstream sout;
253 sout <<
"<<< TPZMatPorous<T>::Contribute ***";
254 sout <<
"ek Matrix after base classe contribution: ";
261 template <
class T,
class TMEM>
271 std::stringstream sout;
272 sout <<
">>> TPZMatPorous<T>::ContributeBC *** with bc.Type()=" << bc.
Type();
278 const REAL BIGNUMBER = 1.e12;
283 const int phr = phi.Rows();
287 v1 = bc.
Val1()(dim, dim);
288 v2 = bc.
Val2()(dim, 0);
293 for(in = 0 ; in < phr; in++) {
294 ef(nstate * in + dim,0) += BIGNUMBER * (v1 - v1) *
phi(in,0) * weight * v2;
295 for (jn = 0 ; jn < phr; jn++) {
296 ek(nstate * in + dim,nstate * jn + dim) += BIGNUMBER *
phi(in,0) *
phi(jn,0) * weight * v2;
302 for(in = 0 ; in < phi.Rows(); in++)
303 ef(nstate * in + dim,0) += - v1 *
phi(in,0) * weight;
310 std::stringstream sout;
311 sout <<
"<<< TPZMatPorous<T>::ContributeBC *** No Flow BC of Type " << bc.
Type()
312 <<
" - Verifying mechanical BC Types in the parent class...";
323 template <
class T,
class TMEM>
329 template <
class T,
class TMEM>
338 template <
class T,
class TMEM>
348 template <
class T,
class TMEM>
354 template <
class T,
class TMEM>
357 return "TPZMatPorous<TBASEPOROUS(T, TMEM)>";
360 template <
class T,
class TMEM>
372 template <
class T,
class TMEM>
386 template <
class T,
class TMEM>
388 const REAL &StorageEps,
399 template <
class T,
class TMEM>
406 template <
class T,
class TMEM>
417 Pp += data.
sol[0][dim];
418 for(i = 0; i < dim; i++)dPp[i] += data.
dsol[0](i, dim);
421 template <
class T,
class TMEM>
430 for(i = 0; i < dim; i++)
437 template <
class T,
class TMEM>
virtual void Execute(const TPZVec< REAL > &x, TPZVec< TVar > &f, TPZFMatrix< TVar > &df)
Performs function computation.
virtual int NSolutionVariables(int var) override
virtual void Contribute(TPZMaterialData &data, REAL weight, TPZFMatrix< REAL > &ek, TPZFMatrix< REAL > &ef) override
Contains definitions to LOGPZ_DEBUG, LOGPZ_INFO, LOGPZ_WARN, LOGPZ_ERROR and LOGPZ_FATAL, and the implementation of the inline InitializePZLOG(string) function using log4cxx library or not. It must to be called out of "#ifdef LOG4CXX" scope.
TPZManVector< REAL, 3 > x
value of the coordinate at the integration point
TPZManVector< REAL, 3 > m_force
clarg::argBool bc("-bc", "binary checkpoints", false)
TPZFNMatrix< 660, REAL > dphi
values of the derivative of the shape functions over the master element
virtual void Write(TPZStream &buf, int withclassid) const override
TPZGradSolVec dsol
vector of the derivatives of the solution at the integration point
virtual std::string Name() override
virtual int VariableIndex(const std::string &name) override
REAL val(STATE &number)
Returns value of the variable.
virtual void Read(TPZStream &buf, void *context) override
virtual void Contribute(TPZMaterialData &data, REAL weight, TPZFMatrix< STATE > &ek, TPZFMatrix< STATE > &ef)=0
It computes a contribution to the stiffness matrix and load vector at one integration point...
void SetPorePressure(const REAL Pp)
TPZFMatrix< STATE > & Val2(int loadcase=0)
TPZFNMatrix< 220, REAL > phi
vector of shapefunctions (format is dependent on the value of shapetype)
void SetUp(const REAL &k, const REAL &Mu, const REAL &StorageEps, const REAL &Alpha, const REAL &Rhof)
Initializes the poroelastic material coefficients.
TPZFNMatrix< 660, REAL > dphix
values of the derivative of the shape functions
virtual void Solution(TPZMaterialData &data, int var, TPZVec< REAL > &Solout) override
This abstract class defines the behaviour which each derived class needs to implement.
virtual void FillDataRequirements(TPZMaterialData &data) override
Implements an porous media material to be used together with elastic elastoplastic mechanical counter...
bool fUpdateMem
Flag to indicate whether the memory data are to be updated in an assemble loop.
void UpdatePorePressure(TPZMaterialData &data)
virtual void ContributeBC(TPZMaterialData &data, REAL weight, TPZFMatrix< REAL > &ek, TPZFMatrix< REAL > &ef, TPZBndCond &bc) override
#define LOGPZ_INFO(A, B)
Define log for informations.
#define LOGPZ_DEBUG(A, B)
Define log for debug info.
This class defines the boundary condition for TPZMaterial objects.
#define TBASEPOROUS(T, TMEM)
int64_t Rows() const
Returns number of rows.
TPZFNMatrix< 9, REAL > axes
axes indicating the directions of the derivatives of the shapefunctions
TPZFMatrix< STATE > & Val1()
int intGlobPtIndex
global point index
virtual void ContributeBC(TPZMaterialData &data, REAL weight, TPZFMatrix< STATE > &ek, TPZFMatrix< STATE > &ef, TPZBndCond &bc)=0
It computes a contribution to the stiffness matrix and load vector at one BC integration point...
virtual void Errors(TPZVec< REAL > &x, TPZVec< REAL > &u, TPZFMatrix< REAL > &dudx, TPZFMatrix< REAL > &axes, TPZVec< REAL > &flux, TPZVec< REAL > &u_exact, TPZFMatrix< REAL > &du_exact, TPZVec< REAL > &values) override
virtual void Print(std::ostream &out=std::cout, const int memory=0) override
virtual ~TPZMatPorous()
Default destructor.
TMEM fDefaultMem
Default memory settings.
TPZAutoPointer< TPZFunction< STATE > > fForcingFunction
Pointer to forcing function, it is the right member at differential equation.
virtual void Print(std::ostream &out) const
Defines the interface for saving and reading data. Persistency.
virtual TPZMaterial * NewMaterial() override
void ComputePorePressure(TPZMaterialData &data, REAL &Pp, TPZVec< REAL > &dPp)
virtual TMEM & MemItem(const int i) const
TPZSolVec sol
vector of the solutions at the integration point
void Transpose(TPZMatrix< TVar > *const T) const override
It makes *T the transpose of current matrix.
virtual int NStateVariables() const override
virtual int Dimension() const override