9 #ifndef __PZ__pzmatmixedpoisson3d__ 10 #define __PZ__pzmatmixedpoisson3d__ 84 virtual std::string
Name()
override {
return "TPZMatMixedPoisson3D"; }
106 fTensorK.
Resize(fDim, fDim);
108 for(
int i = 0; i <
fDim; i++){
110 fInvK(i,i) = 1.0/perm;
127 fReactionTerm =
true;
141 fPermeabilityFunction = fp;
151 fReactionTermFunction = fp;
164 return 2*(elPMaxOrder+1);
170 int polorder = elPMaxOrder[0]*2;
175 if (forceorder > elPMaxOrder[0]) {
176 polorder = forceorder+elPMaxOrder[0];
181 void Print(std::ostream &out)
override;
317 fSecondIntegration=
true;
324 virtual int ClassId()
const override;
void Print(std::ostream &out) override
Prints out the data associated with the material.
TPZMatMixedPoisson3D & operator=(const TPZMatMixedPoisson3D ©)
Material which implements a Lagrange Multiplier.
void SetPermeabilityTensor(TPZFMatrix< REAL > K, TPZFMatrix< REAL > invK)
void ContributeWithoutSecondIntegration(TPZVec< TPZMaterialData > &datavec, REAL weight, TPZFMatrix< STATE > &ek, TPZFMatrix< STATE > &ef)
This method use piola contravariant mapping for nonlinear mappings.
virtual int IntegrationRuleOrder(int elPMaxOrder) const override
Gets the order of the integration rule necessary to integrate an element with polinomial order p...
TPZFMatrix< REAL > fTensorK
permeability tensor. Coeficient which multiplies the gradient operator
virtual void ContributeBC(TPZVec< TPZMaterialData > &datavec, REAL weight, TPZFMatrix< STATE > &ek, TPZFMatrix< STATE > &ef, TPZBndCond &bc) override
It computes a contribution to the stiffness matrix and load vector at one BC integration point...
clarg::argBool bc("-bc", "binary checkpoints", false)
void SetPermeabilityFunction(TPZAutoPointer< TPZFunction< STATE > > fp)
void SetPermeability(REAL perm)
void SetInternalFlux(REAL flux)
TPZFMatrix< REAL > fInvK
inverse of the permeability tensor.
void SetfReactionTermFunction(TPZAutoPointer< TPZFunction< STATE > > fp)
virtual void ContributeBC(TPZMaterialData &data, REAL weight, TPZFMatrix< STATE > &ek, TPZFMatrix< STATE > &ef, TPZBndCond &bc) override
It computes a contribution to the stiffness matrix and load vector at one BC integration point...
void UseSecondIntegrationByParts()
bool IsUsedSecondIntegration()
virtual void Contribute(TPZMaterialData &data, REAL weight, TPZFMatrix< STATE > &ek, TPZFMatrix< STATE > &ef) override
It computes a contribution to the stiffness matrix and load vector at one integration point...
virtual void FillBoundaryConditionDataRequirement(int type, TPZVec< TPZMaterialData > &datavec) override
This method defines which parameters need to be initialized in order to compute the contribution of t...
bool fSecondIntegration
Parameter to choose the second integration by parts in the variational formulation.
virtual int ClassId() const override
Define the class id associated with the class.
virtual void Contribute(TPZVec< TPZMaterialData > &datavec, REAL weight, TPZFMatrix< STATE > &ek, TPZFMatrix< STATE > &ef) override
It computes a contribution to the stiffness matrix and load vector at one integration point...
This abstract class defines the behaviour which each derived class needs to implement.
virtual int NStateVariables() const override
Returns the number of state variables associated with the material.
virtual void FillDataRequirements(TPZVec< TPZMaterialData > &datavec) override
It computes a contribution to stiffness matrix and load vector at one BC integration point...
#define DebugStop()
Returns a message to user put a breakpoint in.
This class defines the boundary condition for TPZMaterial objects.
void ErrorsHdiv(TPZMaterialData &data, TPZVec< STATE > &u_exact, TPZFMatrix< STATE > &du_exact, TPZVec< REAL > &values) override
virtual std::string Name() override
Returns the name of the material.
int64_t Rows() const
Returns number of rows.
TPZAutoPointer< TPZFunction< STATE > > PermeabilityFunction()
int Dimension() const override
Returns the integrable dimension of the material.
TPZAutoPointer< TPZFunction< STATE > > fPermeabilityFunction
Pointer to forcing function, it is the Permeability and its inverse.
TPZLagrangeMultiplier * fmatLagr
int VariableIndex(const std::string &name) override
virtual ~TPZMatMixedPoisson3D()
virtual TPZMaterial * NewMaterial() override
To create another material of the same type.
TPZAutoPointer< TPZFunction< STATE > > ReactionTermFunction()
void Errors(TPZVec< REAL > &x, TPZVec< STATE > &u, TPZFMatrix< STATE > &dudx, TPZFMatrix< REAL > &axes, TPZVec< STATE > &, TPZVec< STATE > &u_exact, TPZFMatrix< STATE > &du_exact, TPZVec< REAL > &values) override
Computes the error due to the difference between the interpolated flux and the flux computed based o...
TPZAutoPointer< TPZFunction< STATE > > fForcingFunction
Pointer to forcing function, it is the right member at differential equation.
REAL fvisc
fluid viscosity
void SetViscosity(REAL visc)
int64_t Cols() const
Returns number of cols.
virtual int IntegrationRuleOrder(TPZVec< int > &elPMaxOrder) const override
Gets the order of the integration rule necessary to integrate an element multiphysic.
int Resize(const int64_t newRows, const int64_t wCols) override
Redimension a matrix, but maintain your elements.
void SetDimension(int dim)
Contains the TPZDiscontinuousGalerkin class which implements the interface for discontinuous Galerkin...
void Solution(TPZVec< TPZMaterialData > &datavec, int var, TPZVec< STATE > &Solout) override
Returns the solution associated with the var index based on the finite element approximation.
Material to solve a mixed poisson problem 3D by multiphysics simulation.
TPZAutoPointer< TPZFunction< STATE > > fReactionTermFunction
Pointer to forcing function, it is the reaction term.
virtual int PolynomialOrder() const
Polynomial order of this function. In case of non-polynomial function it can be a reasonable approxim...
void SetReactionTerm(REAL alpha)
This class implements a reference counter mechanism to administer a dynamically allocated object...
int NSolutionVariables(int var) override
Returns the number of variables associated with the variable indexed by var.