21 static LoggerPtr logger(Logger::getLogger(
"pz.material.TPZMatLaplacian"));
31 for (
int i=0; i<dim; i++) {
72 for (
int i=0; i<
fDim; i++) {
74 fInvK(i,i) = STATE(1.)/diff;
92 out <<
"name of material : " <<
Name() <<
"\n";
93 out <<
"Laplace operator multiplier fK "<<
fK << endl;
94 out <<
"Forcing vector fXf " <<
fXf << endl;
96 out <<
"Base Class properties :";
116 int phr = phi.
Rows();
138 for(
int in = 0; in < phr; in++ ) {
140 ef(in, 0) += (STATE)weight * fXfLoc * (STATE)phi(in,0);
141 for(
int jn = 0; jn < phr; jn++ ) {
143 for(kd=0; kd<
fDim; kd++) {
144 ek(in,jn) += (STATE)weight*(KPerm*(STATE)(dphi(kd,in)*dphi(kd,jn)));
150 if ( !ek.
VerifySymmetry(1.e-10) ) cout << __PRETTY_FUNCTION__ <<
"\nMATRIZ NAO SIMETRICA" << endl;
171 int phr = phi.
Rows();
184 for(
int in = 0; in < phr; in++ ) {
186 ef(in, 0) += (STATE)weight * fXfLoc * (STATE)phi(in,0);
187 for(kd=0; kd<
fDim; kd++) {
188 ef(in,0) -= (STATE)weight*(
fK*(STATE)(dphi(kd,in)*data.
dsol[0](kd,0)));
210 int numprimalshape = data.
phi.
Rows()-numdual;
219 REAL ratiok = 1./kreal;
220 for(i=0; i<numvec; i++)
224 for (j=0; j<numvec; j++) {
230 ek(i,j) += weight*ratiok*data.
phi(ishapeind,0)*data.
phi(jshapeind,0)*prod;
243 for(iloc=0; iloc<
fDim; iloc++)
245 divwq += axesvec(iloc,0)*data.
dphix(iloc,ishapeind);
247 for (j=0; j<numdual; j++) {
248 REAL fact = (-1.)*weight*data.
phi(numprimalshape+j,0)*divwq;
249 ek(i,numvec+j) += fact;
250 ek(numvec+j,i) += fact;
253 for(i=0; i<numdual; i++)
255 ef(numvec+i,0) += (STATE)(weight*data.
phi(numprimalshape+i,0))*fXfLoc;
266 v2[0] = bc.
Val2()(0,0);
274 for(i=0; i<numvec; i++)
277 ef(i,0)+= (STATE)(
gBigNumber * phi(i,0) * weight) * v2[0];
278 for (j=0; j<numvec; j++) {
280 ek(i,j) +=
gBigNumber * phi(i,0) * phi(j,0) * weight;
287 for(in = 0 ; in < numvec; in++) {
288 ef(in,0) += (STATE)((-1.)* phi(in,0) * weight)*v2[0];
295 for(in = 0 ; in < numvec; in++) {
297 ef(in,0) += v2[0] * (STATE)(phi(in,0) * weight);
298 for (jn = 0; jn < numvec; jn++) {
300 ek(in,jn) += (STATE)(weight*phi(in,0)*phi(jn,0)) *bc.
Val1()(0,0);
310 if ( !ek.
VerifySymmetry( 1.e-3 ) ) cout << __PRETTY_FUNCTION__ <<
"\nMATRIZ NAO SIMETRICA" << endl;
335 int phr = phi.
Rows();
338 v2[0] = bc.
Val2()(0,0);
349 for(in = 0 ; in < phr; in++) {
350 ef(in,0) += (STATE)(
gBigNumber* phi(in,0) * weight) * v2[0];
351 for (jn = 0 ; jn < phr; jn++) {
352 ek(in,jn) +=
gBigNumber * phi(in,0) * phi(jn,0) * weight;
357 for(in = 0 ; in < phi.
Rows(); in++) {
358 ef(in,0) += v2[0] * (STATE)(phi(in,0) * weight);
362 for(in = 0 ; in < phi.
Rows(); in++) {
363 ef(in, 0) += v2[0] * (STATE)(phi(in, 0) * weight);
364 for (jn = 0 ; jn < phi.
Rows(); jn++) {
365 ek(in,jn) += bc.
Val1()(0,0) * (STATE)(phi(in,0) * phi(jn,0) * weight);
372 if ( !ek.
VerifySymmetry( 1.e-3 ) ) cout << __PRETTY_FUNCTION__ <<
"\nMATRIZ NAO SIMETRICA" << endl;
378 if(!strcmp(
"Solution",name.c_str()))
return 1;
379 if(!strcmp(
"Derivative",name.c_str()))
return 2;
380 if(!strcmp(
"KDuDx",name.c_str()))
return 3;
381 if(!strcmp(
"KDuDy",name.c_str()))
return 4;
382 if(!strcmp(
"KDuDz",name.c_str()))
return 5;
383 if(!strcmp(
"NormKDu",name.c_str()))
return 6;
384 if(!strcmp(
"MinusKGradU",name.c_str()))
return 7;
385 if(!strcmp(
"POrder",name.c_str()))
return 8;
386 if(!strcmp(
"Laplac",name.c_str()))
return 9;
387 if(!strcmp(
"Stress",name.c_str()))
return 10;
388 if(!strcmp(
"Flux",name.c_str()))
return 10;
389 if(!strcmp(
"Pressure",name.c_str()))
return 11;
391 if(!strcmp(
"ExactSolution",name.c_str()))
return 12;
392 if(!strcmp(
"ExactFlux",name.c_str()))
return 13;
393 if(!strcmp(
"Divergence",name.c_str()))
return 14;
394 if(!strcmp(
"ExactDiv",name.c_str()))
return 15;
396 if(!strcmp(
"PressureOmega1",name.c_str()))
return 16;
397 if(!strcmp(
"PressureOmega2",name.c_str()))
return 17;
398 if(!strcmp(
"FluxOmega1",name.c_str()))
return 18;
400 if(!strcmp(
"GradFluxX",name.c_str()))
return 19;
401 if(!strcmp(
"GradFluxY",name.c_str()))
return 20;
402 if(!strcmp(
"FluxL2",name.c_str()))
return 21;
403 if(!strcmp(
"Permeability",name.c_str()))
return 22;
408 if(var == 1)
return 1;
409 if(var == 2)
return 3;
410 if ((var == 3) || (var == 4) || (var == 5) || (var == 6))
return 1;
411 if (var == 7)
return fDim;
412 if (var == 8)
return 1;
413 if (var == 9)
return 1;
414 if (var==10)
return fDim;
415 if (var==11)
return 1;
417 if (var==12)
return 1;
418 if (var==13)
return fDim;
419 if (var==14)
return 1;
420 if (var==15)
return 1;
422 if (var==16)
return 1;
423 if (var==17)
return 1;
424 if (var==18)
return 3;
425 if (var==19)
return 3;
426 if (var==20)
return 3;
427 if (var==21)
return fDim;
428 if (var==22)
return 1;
440 int numbersol = data.
sol.
size();
441 if (numbersol != 1) {
453 #ifndef STATE_COMPLEX 476 Solout[0]=data.
sol[0][0];
477 Solout[1]=data.
sol[0][1];
483 for (
int i=0; i<
fDim; i++) {
484 Solout[i] = -perm*dsolxy(i,0);
491 Solout[0]=data.
sol[0][0];
492 Solout[1]=data.
sol[0][1];
497 Solout[0]=data.
sol[0][2];
500 Solout[0]=data.
sol[0][0];
507 Solout[0]=pressure[0];
521 Solout[0]=data.
dsol[0](0,0)+data.
dsol[0](1,1);
537 Solout[0]=data.
sol[0][2];
540 std::cout<<
"Pressao somente em Omega1"<<std::endl;
548 Solout[0]=data.
sol[0][0];
551 std::cout<<
"Pressao somente em omega2"<<std::endl;
558 Solout[0]=data.
sol[0][0];
559 Solout[1]=data.
sol[0][1];
566 Solout[0]=data.
dsol[0](0,0);
567 Solout[1]=data.
dsol[0](1,0);
568 Solout[2]=data.
dsol[0](2,0);
573 Solout[0]=data.
dsol[0](0,1);
574 Solout[1]=data.
dsol[0](1,1);
575 Solout[2]=data.
dsol[0](2,1);
579 std::cout<<
"Pressao somente em omega2"<<std::endl;
589 data.
sol[0][0] = data.
sol[0][2];
600 #ifndef STATE_COMPLEX 611 for(
id=0 ;
id<3;
id++) {
612 Solout[id] = dsoldx(
id,0);
619 Solout[0] = dsoldx(0,0) * this->
fK;
625 Solout[0] = dsoldx(1,0) * this->
fK;
631 Solout[0] = dsoldx(2,0) * this->
fK;
637 for(
id=0 ;
id<
fDim;
id++){
638 val += (DSol(
id,0) * this->
fK) * (DSol(
id,0) * this->
fK);
640 Solout[0] =
sqrt(val);
648 for(
id=0 ;
id<
fDim;
id++) {
649 Solout[id] = -1. * this->
fK * dsoldx(
id,0);
655 Solout[0] = DSol(2,0);
681 for (
int i=0; i<
fDim; i++) {
683 perm(i+fDim,i) = STATE(1.)/
fK;
690 std::stringstream sout;
692 sout <<
" Pto " << data.
x << std::endl;
693 sout<<
" pressao exata " <<u_exact <<std::endl;
694 sout<<
" pressao aprox " <<sol <<std::endl;
695 sout<<
" ---- "<<std::endl;
696 sout<<
" fluxo exato " <<du_exact<<std::endl;
697 sout<<
" fluxo aprox " <<dsol<<std::endl;
698 sout<<
" ---- "<<std::endl;
699 if(du_exact.
Rows()>
fDim) sout<<
" div exato " <<du_exact(2,0)<<std::endl;
700 sout<<
" div aprox " <<div<<std::endl;
708 REAL diffP =
abs(u_exact[0]-sol[0]);
709 values[0] = diffP*diffP;
712 for(
int id=0;
id<
fDim;
id++) {
713 REAL diffFlux =
abs(dsol[
id] - du_exact(
id,0));
714 values[1] +=
abs(
fK)*diffFlux*diffFlux;
719 REAL diffDiv =
abs(div[0] - du_exact(2,0));
720 values[2]=diffDiv*diffDiv;
722 values[3]= values[1]+values[2];
727 std::stringstream sout;
728 sout <<
" Erro pressao " << values[0]<< std::endl;
729 sout<<
"Erro fluxo " <<values[1]<<std::endl;
730 sout<<
" Erro div " <<values[2] <<std::endl;
752 for (
int i=0; i<
fDim; i++) {
753 for (
int j=0; j<
fDim; j++)
756 perm(fDim+i,j) = this->
fInvK(i,j);
768 for(
int i = 0; i < du_exact.
Rows(); i++){
769 values[2] +=
TPZExtractVal::val( (dudx(i,0) - du_exact(i,0))*(dudx(i,0) - du_exact(i,0)));
773 for (
int i=0; i<
fDim; i++) {
774 for (
int j=0; j<
fDim; j++) {
775 values[0] +=
TPZExtractVal::val((dudx(i,0) - du_exact(i,0))*perm(i,j)*(dudx(j,0) - du_exact(j,0)));
783 int numbersol = leftu.
size();
784 for (
int is=0; is<numbersol ; is++) {
787 STATE
f = bc.
Val2()(0,0);
788 jump[is][0] = leftu[is][0] -
f;
811 int &LeftPOrder=dataleft.
p;
812 int &RightPOrder=dataright.
p;
814 REAL &faceSize=data.
HSize;
817 int nrowl = phiL.
Rows();
818 int nrowr = phiR.
Rows();
827 for(il=0; il<nrowl; il++) {
828 REAL dphiLinormal = 0.;
829 for(
id=0;
id<
fDim;
id++) {
830 dphiLinormal += dphiL(
id,il)*normal[id];
832 for(jl=0; jl<nrowl; jl++) {
833 REAL dphiLjnormal = 0.;
834 for(
id=0;
id<
fDim;
id++) {
835 dphiLjnormal += dphiL(
id,jl)*normal[id];
837 ek(il,jl) += (STATE)(weight * ( this->
fSymmetry * (0.5)*dphiLinormal*phiL(jl,0)-(0.5)*dphiLjnormal*phiL(il,0))) * leftK;
842 for(ir=0; ir<nrowr; ir++) {
843 REAL dphiRinormal = 0.;
844 for(
id=0;
id<
fDim;
id++) {
845 dphiRinormal += dphiR(
id,ir)*normal[id];
847 for(jr=0; jr<nrowr; jr++) {
848 REAL dphiRjnormal = 0.;
849 for(
id=0;
id<
fDim;
id++) {
850 dphiRjnormal += dphiR(
id,jr)*normal[id];
852 ek(ir+nrowl,jr+nrowl) += (STATE)(weight * (this->
fSymmetry * ((-0.5) * dphiRinormal * phiR(jr) ) + (0.5) * dphiRjnormal * phiR(ir))) * rightK;
857 for(il=0; il<nrowl; il++) {
858 REAL dphiLinormal = 0.;
859 for(
id=0;
id<
fDim;
id++) {
860 dphiLinormal += dphiL(
id,il)*normal[id];
862 for(jr=0; jr<nrowr; jr++) {
863 REAL dphiRjnormal = 0.;
864 for(
id=0;
id<
fDim;
id++) {
865 dphiRjnormal += dphiR(
id,jr)*normal[id];
867 ek(il,jr+nrowl) += (STATE)weight * ((STATE)
fSymmetry * ((STATE)((-0.5) * dphiLinormal * phiR(jr)) * leftK ) - (STATE)((0.5) * dphiRjnormal * phiL(il))* rightK );
872 for(ir=0; ir<nrowr; ir++) {
873 REAL dphiRinormal = 0.;
874 for(
id=0;
id<
fDim;
id++) {
875 dphiRinormal += dphiR(
id,ir)*normal[id];
877 for(jl=0; jl<nrowl; jl++) {
878 REAL dphiLjnormal = 0.;
879 for(
id=0;
id<
fDim;
id++) {
880 dphiLjnormal += dphiL(
id,jl)*normal[id];
882 ek(ir+nrowl,jl) += (STATE)weight * (
883 (STATE)(
fSymmetry * (0.5) * dphiRinormal * phiL(jl)) * rightK + (STATE)((0.5) * dphiLjnormal * phiR(ir)) * leftK
889 if ( !ek.
VerifySymmetry(1.e-10) ) cout << __PRETTY_FUNCTION__ <<
"\nMATRIZ NAO SIMETRICA" << endl;
900 REAL penalty =
fPenaltyConstant * (0.5 * (
abs(leftK)*LeftPOrder*LeftPOrder +
abs(rightK)*RightPOrder*RightPOrder)) / faceSize;
905 for(il=0; il<nrowl; il++) {
906 for(jl=0; jl<nrowl; jl++) {
907 ek(il,jl) += weight * penalty * phiL(il,0) * phiL(jl,0);
912 for(ir=0; ir<nrowr; ir++) {
913 for(jr=0; jr<nrowr; jr++) {
914 ek(ir+nrowl,jr+nrowl) += weight * penalty * phiR(ir,0) * phiR(jr,0);
919 for(il=0; il<nrowl; il++) {
920 for(jr=0; jr<nrowr; jr++) {
921 ek(il,jr+nrowl) += -1.0 * weight * penalty * phiR(jr,0) * phiL(il,0);
926 for(ir=0; ir<nrowr; ir++) {
927 for(jl=0; jl<nrowl; jl++) {
928 ek(ir+nrowl,jl) += -1.0 * weight * penalty * phiL(jl,0) * phiR(ir,0);
936 REAL NormalFlux_i = 0.;
937 REAL NormalFlux_j = 0.;
940 for(il=0; il<nrowl; il++) {
942 for(
id=0;
id<
fDim;
id++) {
943 NormalFlux_i += dphiL(
id,il)*normal[id];
945 for(jl=0; jl<nrowl; jl++) {
947 for(
id=0;
id<
fDim;
id++) {
948 NormalFlux_j += dphiL(
id,jl)*normal[id];
950 ek(il,jl) += (STATE)(weight * ((1.)/penalty) * NormalFlux_i * NormalFlux_j) * leftK;
955 for(ir=0; ir<nrowr; ir++) {
957 for(
id=0;
id<
fDim;
id++) {
958 NormalFlux_i += dphiR(
id,ir)*normal[id];
960 for(jr=0; jr<nrowr; jr++) {
962 for(
id=0;
id<
fDim;
id++) {
963 NormalFlux_j += dphiR(
id,jr)*normal[id];
965 ek(ir+nrowl,jr+nrowl) += (STATE)(weight * ((1.)/penalty) * NormalFlux_i * NormalFlux_j) * rightK;
970 for(il=0; il<nrowl; il++) {
972 for(
id=0;
id<
fDim;
id++) {
973 NormalFlux_i += dphiL(
id,il)*normal[id];
975 for(jr=0; jr<nrowr; jr++) {
977 for(
id=0;
id<
fDim;
id++) {
978 NormalFlux_j += dphiR(
id,jr)*normal[id];
980 ek(il,jr+nrowl) += (STATE)((-1.) * weight * ((1.)/penalty) * NormalFlux_i * NormalFlux_j) * rightK;
985 for(ir=0; ir<nrowr; ir++) {
987 for(
id=0;
id<
fDim;
id++) {
988 NormalFlux_i += dphiR(
id,ir)*normal[id];
990 for(jl=0; jl<nrowl; jl++) {
992 for(
id=0;
id<
fDim;
id++) {
993 NormalFlux_j += dphiL(
id,jl)*normal[id];
995 ek(ir+nrowl,jl) += (STATE)((-1.) * weight * ((1.)/penalty) * NormalFlux_i * NormalFlux_j) * leftK;
1011 int POrder= dataleft.
p;
1012 REAL faceSize=data.
HSize;
1015 v2[0] = bc.
Val2()(0,0);
1025 nrowl = phiL.
Rows();
1030 for(il=0; il<nrowl; il++) {
1031 REAL dphiLinormal = 0.;
1032 for(
id=0;
id<
fDim;
id++) {
1033 dphiLinormal += dphiL(
id,il)*normal[id];
1035 ef(il,0) += (STATE)(weight*dphiLinormal*
fSymmetry)*
fK*v2[0];
1036 for(jl=0; jl<nrowl; jl++) {
1037 REAL dphiLjnormal = 0.;
1038 for(
id=0;
id<
fDim;
id++) {
1039 dphiLjnormal += dphiL(
id,jl)*normal[id];
1041 ek(il,jl) += (STATE)(weight*(fSymmetry * dphiLinormal * phiL(jl,0) - dphiLjnormal * phiL(il,0)))*
fK;
1046 for(il=0; il<nrowl; il++) {
1047 ef(il,0) += (STATE)(weight*phiL(il,0))*v2[0];
1052 PZError << __PRETTY_FUNCTION__ <<
" - Wrong boundary condition type\n";
1056 if ( !ek.
VerifySymmetry(1.e-10) ) cout << __PRETTY_FUNCTION__ <<
"\nMATRIZ NAO SIMETRICA" << endl;
1062 nrowl = phiL.
Rows();
1068 for(il=0; il<nrowl; il++) {
1069 ef(il,0) += (STATE)(weight*penalty*phiL(il,0))*v2[0];
1070 for(jl=0; jl<nrowl; jl++) {
1071 ek(il,jl) += weight * penalty * phiL(il,0) * phiL(jl,0);
1079 for(il=0; il<nrowl; il++)
1081 for(jl=0; jl<nrowl; jl++)
1083 ek(il,jl) += weight * outflow * phiL(il,0) * phiL(jl,0);
1090 PZError <<
"TPZMatLaplacian::Wrong boundary condition type\n";
1126 STATE laplacU = (STATE)0;
1128 laplacU = dsol(1,0);
1131 laplacU = dsol(2,0);
1134 REAL result =
abs(-this->
fK * laplacU - (fXfLoc));
1135 return (result*result);
Defines the interface which material objects need to implement for discontinuous Galerkin formulation...
virtual void Solution(TPZMaterialData &data, int var, TPZVec< STATE > &Solout)
Returns the solution associated with the var index based on the finite element approximation.
virtual void Execute(const TPZVec< REAL > &x, TPZVec< TVar > &f, TPZFMatrix< TVar > &df)
Performs function computation.
virtual int VariableIndex(const std::string &name) override
int ClassId() const override
Unique identifier for serialization purposes.
TPZManVector< REAL, 3 > normal
normal to the element at the integration point
virtual void Solution(TPZVec< STATE > &Sol, TPZFMatrix< STATE > &DSol, TPZFMatrix< REAL > &axes, int var, TPZVec< STATE > &Solout) 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
Implements a vector class which allows to use external storage provided by the user. Utility.
virtual void Flux(TPZVec< REAL > &x, TPZVec< STATE > &Sol, TPZFMatrix< STATE > &DSol, TPZFMatrix< REAL > &axes, TPZVec< STATE > &flux) override
Computes the value of the flux function to be used by ZZ error estimator.
clarg::argBool bc("-bc", "binary checkpoints", false)
bool fNeedsNeighborCenter
void Read(TPZStream &buf, void *context) override
Reads the element data from a stream.
STATE fXf
Forcing function value.
virtual void ContributeBCInterface(TPZMaterialData &data, TPZMaterialData &dataleft, REAL weight, TPZFMatrix< STATE > &ek, TPZFMatrix< STATE > &ef, TPZBndCond &bc) override
TPZMaterial & operator=(const TPZMaterial ©)
operator =
void ErrorsHdiv(TPZMaterialData &data, TPZVec< STATE > &u_exact, TPZFMatrix< STATE > &du_exact, TPZVec< REAL > &values) override
virtual int VariableIndex(const std::string &name)
Returns the variable index associated with the name.
void SetAllRequirements(bool set)
Set all flags at once.
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...
REAL fPenaltyConstant
Constant multiplier of penalty term, when required is set.
TPZGradSolVec dsol
vector of the derivatives of the solution at the integration point
MShapeFunctionType fShapeType
TinyFad< 8, T > abs(const TinyFad< 8, T > &in)
REAL val(STATE &number)
Returns value of the variable.
virtual void Errors(TPZVec< REAL > &x, TPZVec< STATE > &u, TPZFMatrix< STATE > &dudx, TPZFMatrix< REAL > &axes, TPZVec< STATE > &flux, 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...
int fDim
Problem dimension.
virtual void Resize(const int64_t newsize, const T &object)
Resizes the vector object.
TPZFMatrix< STATE > & Val2(int loadcase=0)
TPZFNMatrix< 220, REAL > phi
vector of shapefunctions (format is dependent on the value of shapetype)
virtual int ClassId() const override
Unique identifier for serialization purposes.
int p
maximum polinomial order of the shape functions
TPZFNMatrix< 660, REAL > dphix
values of the derivative of the shape functions
virtual void Print(std::ostream &out=std::cout)
Prints out the data associated with the material.
Contains declaration of TPZElementMatrix struct which associates an element matrix with the coeficien...
Contains the TPZBndCond class which implements a boundary condition for TPZMaterial objects...
TPZAutoPointer< TPZFunction< STATE > > & ForcingFunction()
Returns a procedure as source function for the material.
int Zero() override
Makes Zero all the elements.
int64_t size() const
Returns the number of elements of the vector.
virtual void Resize(const int64_t newsize, const T &object)
Resizes the vector object reallocating the necessary storage, copying the existing objects to the new...
virtual void Write(TPZStream &buf, int withclassid) const override
Saves the element data to a stream.
virtual void Read(TPZStream &buf, void *context) override
Reads the element data from a stream.
virtual void Write(const bool val)
void Write(TPZStream &buf, int withclassid) const override
Saves the element data to a stream.
virtual REAL ComputeSquareResidual(TPZVec< REAL > &X, TPZVec< STATE > &sol, TPZFMatrix< STATE > &dsol) override
Compute square of residual of the differential equation at one integration point. ...
Contains TPZMatrixclass which implements full matrix (using column major representation).
#define DebugStop()
Returns a message to user put a breakpoint in.
TPZAutoPointer< TPZFunction< STATE > > fForcingFunctionExact
Pointer to exact solution function, needed to calculate exact error.
TPZFNMatrix< 180 > fNormalVec
list of normal vectors
#define LOGPZ_DEBUG(A, B)
Define log for debug info.
This class defines the boundary condition for TPZMaterial objects.
void SetNonSymmetric()
Set material elliptic term as the Baumann's formulation, i.e. the non-symmetrical formulation...
int64_t Rows() const
Returns number of rows.
EPenaltyType fPenaltyType
Penalty term definition.
virtual int NStateVariables() const override
Returns the number of state variables associated with the material.
int numberdualfunctions
number of dual function (e.g. pressure in HDiv approximations)
expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ sqrt
TPZFNMatrix< 9, REAL > axes
axes indicating the directions of the derivatives of the shapefunctions
virtual void FillDataRequirements(TPZMaterialData &data) override
Fill material data parameter with necessary requirements for the.
TPZFMatrix< STATE > & Val1()
virtual std::string Name() override
Returns the name of the material.
Contains the TPZMaterialData class which implements an interface between TPZCompEl::CalcStiff and TPZ...
REAL HSize
measure of the size of the element
virtual int HasForcingFunction()
Directive that gives true if the material has a forcing function.
static REAL gBigNumber
Big number to penalization method, used for Dirichlet conditions.
int32_t Hash(std::string str)
Contains TPZMatrix<TVar>class, root matrix class.
virtual void Print(std::ostream &out) override
Prints out the data associated with the material.
virtual void BCInterfaceJump(TPZVec< REAL > &x, TPZSolVec &leftu, TPZBndCond &bc, TPZSolVec &jump) override
Computes interface jump from element to Dirichlet boundary condition.
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...
TPZMatLaplacian & operator=(const TPZMatLaplacian ©)
virtual ~TPZMatLaplacian()
virtual int NSolutionVariables(int var)
Returns the number of variables associated with the variable indexed by var.
virtual int VerifySymmetry(REAL tol=1.e-13) const
Checks if current matrix value is symmetric.
TPZFNMatrix< 9, STATE > fInvK
STATE fK
Coeficient which multiplies the Laplacian operator.
void SetNoPenalty()
Defines no penalty terms in ContributeInterface.
virtual void Multiply(const TPZFMatrix< TVar > &A, TPZFMatrix< TVar > &res, int opt=0) const
It mutiplies itself by TPZMatrix<TVar>A putting the result in res.
TPZAutoPointer< TPZFunction< STATE > > fForcingFunction
Pointer to forcing function, it is the right member at differential equation.
void Fill(const T ©, const int64_t from=0, const int64_t numelem=-1)
Will fill the elements of the vector with a copy object.
virtual void ContributeInterface(TPZMaterialData &data, TPZMaterialData &dataleft, TPZMaterialData &dataright, REAL weight, TPZFMatrix< STATE > &ek, TPZFMatrix< STATE > &ef) override
It computes a contribution to stiffness matrix and load vector at one integration point...
virtual int NSolutionVariables(int var) override
Returns the number of variables associated with the variable indexed by var.
TPZAutoPointer< TPZFunction< STATE > > fPermeabilityFunction
Pointer to forcing function, it is the Permeability and its inverse.
virtual int Dimension() const override
Returns the integrable dimension of the material.
Defines the interface for saving and reading data. Persistency.
int64_t NElements() const
Returns the number of elements of the vector.
Contains the TPZMatLaplacian class.
REAL fSymmetry
Symmetry coefficient of elliptic term.
virtual void ContributeHDiv(TPZMaterialData &data, REAL weight, TPZFMatrix< STATE > &ek, TPZFMatrix< STATE > &ef)
Compute the contribution at an integration point to the stiffness matrix of the HDiv formulation...
TPZManVector< std::pair< int, int64_t > > fVecShapeIndex
correspondence between normal vector index and index of the shape functions
void SetParameters(STATE diff, STATE f)
Set a uniform diffusion constant and external flux.
TPZSolVec sol
vector of the solutions at the integration point
virtual void ContributeBCHDiv(TPZMaterialData &data, REAL weight, TPZFMatrix< STATE > &ek, TPZFMatrix< STATE > &ef, TPZBndCond &bc)
TPZFNMatrix< 9, STATE > fTensorK
Tensor de permeabilidade.
virtual void FillDataRequirementsInterface(TPZMaterialData &data) override
Fill material data parameter with necessary requirements for the ContributeInterface method...
Implements an interface to register a class id and a restore function. Persistence.
#define PZError
Defines the output device to error messages and the DebugStop() function.
virtual void Read(bool &val)