15 static LoggerPtr logger(Logger::getLogger(
"pz.material.poisson3d.materialcoupling"));
38 int nrowH1=phiH1.
Rows();
44 REAL leftX0=data.
normal[0];
45 REAL leftX1=data.
normal[1];
46 REAL leftX2=data.
normal[2];
49 for(
int ilinha=0; ilinha<numvec; ilinha++) {
55 for(
int jcol=0; jcol<nrowH1; jcol++) {
57 REAL prod1 = phiHdiv(ishapeind,0)*phiH1(jcol,0)*prod;
61 if (logger->isDebugEnabled())
63 std::stringstream sout;
64 sout <<
"prod phiHdiv[ " <<ishapeind <<
"]= " << phiHdiv(ishapeind,0)<<
" phiH1[ "<< jcol <<
"] = " << phiH1(jcol,0)<< std::endl;
68 ekCouple(ilinha,jcol)+= weight * prod1;
69 ek(ilinha,numdual+ numvec+jcol) += weight * (prod1);
72 if (logger->isDebugEnabled())
74 std::stringstream sout;
75 sout <<
"-- PosJ " << numdual+ numvec+jcol<< std::endl;
79 ek(jcol+numvec+numdual,ilinha) += weight *(-prod1);
83 ekCouple.
Print(
"Matriz teste Acoplamento",std::cout);
86 std::stringstream sout;
87 ekCouple.
Print(
"Matriz teste Acoplamento",sout);
104 int nrowR=phixR.
Rows();
105 int nrowL=phixL.
Rows();
108 std::cout <<
"numero de funcoes de Hdiv( direita ) " << nrowR<<std::endl;
109 std::cout <<
"numero de funcoes de de pressao(direita) " << numdual<<std::endl;
110 std::cout <<
"numero de funcoes de H1 (esquerda ) " << nrowL<<std::endl;
112 if (logger->isDebugEnabled())
114 std::stringstream sout;
115 sout <<
"numero de funcoes de Hdiv( direita ) " << nrowR<<std::endl;
116 sout <<
"numero de funcoes de de pressao(direita) " << numdual<<std::endl;
117 sout <<
"numero de funcoes de H1 (esquerda ) " << nrowL<<std::endl;
122 for(
int ir=0; ir<nrowR-1; ir++) {
124 for(
int jl=0; jl<nrowL; jl++) {
125 REAL prod1 = phixR(ishapeind,0)* phixL(jl);
127 if (logger->isDebugEnabled())
129 std::stringstream sout;
130 sout <<
"produto das phis " << prod1<<std::endl;
134 ek(ir,numvec+jl) += weight * prod1;
135 ek(numvec+jl,ir) += weight *(-prod1);
141 if (logger->isDebugEnabled())
143 std::stringstream sout;
144 ek.
Print(
"Matriz de Acoplamento",sout);
TPZManVector< REAL, 3 > normal
normal to the element at the integration point
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.
virtual ~TPZMaterialCoupling()
Destructor.
int ClassId() const override
Unique identifier for serialization purposes.
Contains the TPZMatPoisson3d class.
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.
Implemented a Poisson Problem coupling the interpolation spaces H(div) and H1.
TPZFNMatrix< 180 > fNormalVec
list of normal vectors
virtual void ContributeInterface2(TPZMaterialData &data, TPZMaterialData &dataleft, TPZMaterialData &dataright, REAL weight, TPZFMatrix< REAL > &ek, TPZFMatrix< REAL > &ef)
#define LOGPZ_DEBUG(A, B)
Define log for debug info.
int64_t Rows() const
Returns number of rows.
int numberdualfunctions
number of dual function (e.g. pressure in HDiv approximations)
virtual void InitMaterialData(TPZMaterialData &data)
Contains the TPZMaterialData class which implements an interface between TPZCompEl::CalcStiff and TPZ...
int32_t Hash(std::string str)
Contains TPZMatrix<TVar>class, root matrix class.
virtual void ContributeInterface(TPZMaterialData &data, TPZMaterialData &dataleft, TPZMaterialData &dataright, REAL weight, TPZFMatrix< STATE > &ek, TPZFMatrix< STATE > &ef) override
Method to possibilite the coupling between H(div) and H1.
virtual void Print(std::ostream &out) const
int64_t NElements() const
Returns the number of elements of the vector.
virtual int NStateVariables() const override
Returns the number of state variables associated with the material.
TPZManVector< std::pair< int, int64_t > > fVecShapeIndex
correspondence between normal vector index and index of the shape functions
TPZMaterialCoupling()
Default constructor.