32 std::ofstream
CE (
"debugContributeErros.txt" );
44 int numbersol = data.
sol.
size();
53 STATE LaplacLaplac = dsol(8,0);
61 this->
fXf = result[0];
63 CE <<
"x: "<< x[0]<<
","<<x[1]<<std::endl;
64 CE <<
"sol: "<< sol[0]<<
","<<sol[1]<<
","<<sol[2]<<
","<<sol[3]<<std::endl;
65 CE <<
"weight: "<< weight <<std::endl;
66 CE <<
"LaplacLaplac: "<< LaplacLaplac <<std::endl;
74 CE <<
"f: "<<f <<std::endl;
78 nk[0] += weight *( f - LaplacLaplac )*(Z1-Z);
79 nk[1] += weight *( f - LaplacLaplac )*(u_exactd[0]-Z);
88 int LeftPOrder = dataleft.
p;
89 int RightPOrder = dataright.
p;
90 int numbersol = dataleft.
sol.
size();
99 STATE faceSize=data.
HSize;
117 graduL[0] = dsolL(0,0);
118 graduL[1] = dsolL(1,0);
120 graduR[0] = dsolR(0,0);
121 graduR[1] = dsolR(1,0);
122 STATE LaplacianoUL =dsolL(2,0);
123 STATE LaplacianoUR =dsolR(2,0);
124 STATE GRADLaplacianoUL[2];
125 GRADLaplacianoUL[0] =dsolL(3,0);
126 GRADLaplacianoUL[1] =dsolL(4,0);
127 STATE GRADLaplacianoUR[2];
128 GRADLaplacianoUR[0] =dsolR(3,0);
129 GRADLaplacianoUR[1] =dsolR(4,0);
132 STATE dualhpL = solL[2];
133 STATE dualhpR = solR[2];
134 STATE graddualhpL[2];
135 graddualhpL[0] = dsolL(0,2);
136 graddualhpL[1] = dsolL(1,2);
137 STATE graddualhpR[2];
138 graddualhpR[0] = dsolR(0,2);
139 graddualhpR[1] = dsolR(1,2);
140 STATE LaplacianodualhpL = dsolL(2,2);
141 STATE LaplacianodualhpR = dsolR(2,2);
142 STATE GRADLaplacianodualhpL[2];
143 GRADLaplacianodualhpL[0] = dsolL(3,2);
144 GRADLaplacianodualhpL[1] = dsolL(4,2);
145 STATE GRADLaplacianodualhpR[2];
146 GRADLaplacianodualhpR[0] = dsolR(3,2);
147 GRADLaplacianodualhpR[1] = dsolR(4,2);
150 STATE dualhpPlusL = solL[3];
151 STATE dualhpPlusR = solR[3];
152 STATE graddualhpPlusL[2];
153 graddualhpPlusL[0] = dsolL(0,3);
154 graddualhpPlusL[1] = dsolL(1,3);
155 STATE graddualhpPlusR[2];
156 graddualhpPlusR[0] = dsolR(0,3);
157 graddualhpPlusR[1] = dsolR(1,3);
158 STATE LaplacianodualhpPlusL = dsolL(2,3);
159 STATE LaplacianodualhpPlusR = dsolR(2,3);
160 STATE GRADLaplacianodualhpPlusL[2];
161 GRADLaplacianodualhpPlusL[0] = dsolL(3,3);
162 GRADLaplacianodualhpPlusL[1] = dsolL(4,3);
163 STATE GRADLaplacianodualhpPlusR[2];
164 GRADLaplacianodualhpPlusR[0] = dsolR(3,3);
165 GRADLaplacianodualhpPlusR[1] = dsolR(4,3);
171 (LaplacianoUL-LaplacianoUR)*
172 0.5*(normal[0]*(graddualhpPlusL[0]-graddualhpL[0])+normal[1]*(graddualhpPlusL[1]-graddualhpL[1]));
174 (LaplacianoUL-LaplacianoUR)*
175 (0.5)*(normal[0]*(graddualhpPlusR[0]-graddualhpR[0])+normal[1]*(graddualhpPlusR[1]-graddualhpR[1]));
177 nkL[0]+=weight*((GRADLaplacianoUL[0]-GRADLaplacianoUR[0])*normal[0]+(GRADLaplacianoUL[1]-GRADLaplacianoUR[1])*normal[1])*0.5*(dualhpPlusL-dualhpL);
178 nkR[0]+=weight*((GRADLaplacianoUL[0]-GRADLaplacianoUR[0])*normal[0]+(GRADLaplacianoUL[1]-GRADLaplacianoUR[1])*normal[1])*0.5*(dualhpPlusR-dualhpR);
180 nkL[0]+=-weight*(uL-uR)*0.5*(normal[0]*(GRADLaplacianodualhpPlusL[0]-GRADLaplacianodualhpL[0])+normal[1]*(GRADLaplacianodualhpPlusL[1]-GRADLaplacianodualhpL[1]));
181 nkR[0]+=-weight*(uL-uR)*0.5*(normal[0]*(GRADLaplacianodualhpPlusR[0]-GRADLaplacianodualhpR[0])+normal[1]*(GRADLaplacianodualhpPlusR[1]-GRADLaplacianodualhpR[1]));
183 nkL[0]+=weight*((graduL[0]-graduR[0])*normal[0]+(graduL[1]-graduR[1])*normal[1])*0.5*(LaplacianodualhpPlusL-LaplacianodualhpL);
184 nkR[0]+=weight*((graduL[0]-graduR[0])*normal[0]+(graduL[1]-graduR[1])*normal[1])*0.5*(LaplacianodualhpPlusR-LaplacianodualhpR);
187 nkL[0]+=-weight*alpha*(uL-uR)*(dualhpPlusL-dualhpL);
188 nkR[0]+=-weight*alpha*(uL-uR)*(-1.)*(dualhpPlusR-dualhpR);
190 nkL[0]+=-weight*betta*((graduL[0]-graduR[0])*normal[0]+(graduL[1]-graduR[1])*normal[1]) * (normal[0]*(graddualhpPlusL[0]-graddualhpL[0])+normal[1]*(graddualhpPlusL[1]-graddualhpL[1]));
191 nkR[0]+=-weight*betta*((graduL[0]-graduR[0])*normal[0]+(graduL[1]-graduR[1])*normal[1])*
192 (-1.)*(normal[0]*(graddualhpPlusR[0]-graddualhpR[0])+normal[1]*(graddualhpPlusR[1]-graddualhpR[1]));
197 nkL[1]+=-weight*(LaplacianoUL-LaplacianoUR)*0.5*(normal[0]*(du_exactd[0]-graddualhpL[0])+normal[1]*(du_exactd[1]-graddualhpL[1]));
198 nkR[1]+=-weight*(LaplacianoUL-LaplacianoUR)*0.5*(normal[0]*(du_exactd[0]-graddualhpR[0])+normal[1]*(du_exactd[1]-graddualhpR[1]));
200 nkL[1]+=weight*((GRADLaplacianoUL[0]-GRADLaplacianoUR[0])*normal[0]+(GRADLaplacianoUL[1]-GRADLaplacianoUR[1])*normal[1])*0.5*(u_exactd[0]-dualhpL);
201 nkR[1]+=weight*((GRADLaplacianoUL[0]-GRADLaplacianoUR[0])*normal[0]+(GRADLaplacianoUL[1]-GRADLaplacianoUR[1])*normal[1])*0.5*(u_exactd[0]-dualhpR);
203 nkL[1]+=-weight*(uL-uR)*0.5*(normal[0]*(du_exactd[3]-GRADLaplacianodualhpL[0])+normal[1]*(du_exactd[4]-GRADLaplacianodualhpL[1]));
204 nkR[1]+=-weight*(uL-uR)*0.5*(normal[0]*(du_exactd[3]-GRADLaplacianodualhpR[0])+normal[1]*(du_exactd[4]-GRADLaplacianodualhpR[1]));
206 nkL[1]+=weight*((graduL[0]-graduR[0])*normal[0]+(graduL[1]-graduR[1])*normal[1])*0.5*(du_exactd[2]-LaplacianodualhpL);
207 nkR[1]+=weight*((graduL[0]-graduR[0])*normal[0]+(graduL[1]-graduR[1])*normal[1])*0.5*(du_exactd[2]-LaplacianodualhpR);
209 nkL[1]+=-weight*alpha*(uL-uR)*(u_exactd[0]-dualhpL);
210 nkR[1]+=-weight*alpha*(uL-uR)*(-1.)*(u_exactd[0]-dualhpR);
212 nkL[1]+=-weight* ((graduL[0]-graduR[0])*normal[0]+(graduL[1]-graduR[1])*normal[1]) * (normal[0]*(du_exactd[0]-graddualhpL[0])+normal[1]*(du_exactd[1]-graddualhpL[1]));
213 nkR[1]+=-weight* ((graduL[0]-graduR[0])*normal[0]+(graduL[1]-graduR[1])*normal[1]) * (-1.)*(normal[0]*(du_exactd[0]-graddualhpR[0])+normal[1]*(du_exactd[1]-graddualhpR[1]));
227 int LeftPOrder=dataleft.
p;
228 int numbersol = dataleft.
sol.
size();
229 if (numbersol != 1) {
235 STATE faceSize=data.
HSize;
247 STATE u = dataleft.
sol[0][0];
249 gradu[0] = dataleft.
dsol[0](0,0);
250 gradu[1] = dataleft.
dsol[0](1,0);
252 STATE dualhp = dataleft.
sol[0][2];
254 STATE GRADLaplacdualhp[2];
255 GRADdualhp[0] = dataleft.
dsol[0](0,2);
256 GRADdualhp[1] = dataleft.
dsol[0](1,2);
257 STATE Laplacdualhp = dataleft.
dsol[0](2,2);
258 GRADLaplacdualhp[0] = dataleft.
dsol[0](3,2);
259 GRADLaplacdualhp[1] = dataleft.
dsol[0](4,2);
261 STATE dualhpPlus = dataleft.
sol[0][3];
262 STATE GRADdualhpPlus[2];
263 STATE GRADLaplacdualhpPlus[2];
264 GRADdualhpPlus[0]= dataleft.
dsol[0](0,3);
265 GRADdualhpPlus[1]= dataleft.
dsol[0](1,3);
266 STATE LaplacdualhpPlus = dataleft.
dsol[0](2,3);
267 GRADLaplacdualhpPlus[0] = dataleft.
dsol[0](3,3);
268 GRADLaplacdualhpPlus[1] = dataleft.
dsol[0](4,3);
272 gradZ[0] = GRADdualhp[0]; gradZ[1] = GRADdualhp[1];
274 gradZPlus[0] = GRADdualhpPlus[0]; gradZPlus[1] = GRADdualhpPlus[1];
278 ValBC_D = bc.
Val2()(0,0);
279 ValBC_N = bc.
Val2()(1,0);
281 STATE ResD = ValBC_D - u;
282 STATE ResN = ValBC_N - (gradu[0]*normal[0]+gradu[1]*normal[1]);
284 nk[0] += weight * ResD * ( (GRADLaplacdualhpPlus[0]*normal[0]+GRADLaplacdualhpPlus[1]*normal[1]) - (GRADLaplacdualhp[0]*normal[0]+GRADLaplacdualhp[1]*normal[1]) );
285 nk[0] -= weight*ResN*(LaplacdualhpPlus-Laplacdualhp);
286 nk[0] += weight*alpha*ResD*(dualhpPlus-dualhp);
287 nk[0] += weight*betta*ResN*( (GRADdualhpPlus[0]*normal[0]+GRADdualhpPlus[1]*normal[1]) - (GRADdualhp[0]*normal[0]+GRADdualhp[1]*normal[1]) );
290 nk[1] += weight * ResD * ( (du_exactd[3]*normal[0]+du_exactd[4]*normal[1]) - (GRADLaplacdualhp[0]*normal[0]+GRADLaplacdualhp[1]*normal[1]) );
291 nk[1] -= weight*ResN*(du_exactd[2]-Laplacdualhp);
292 nk[1] += weight*alpha*ResD*(u_exactd[0]-dualhp);
293 nk[1] += weight*betta*ResN*( (du_exactd[0]*normal[0]+du_exactd[1]*normal[1]) - (GRADdualhp[0]*normal[0]+GRADdualhp[1]*normal[1]) );
353 nkL[0] += 0.5*(ek(0,0)+ek(ss,0)+ek(0,ss)+ek(ss,ss));
354 nkL[3] += 0.5*(ek(1,1)+ek(ss+1,1)+ek(1,1+ss)+ek(1+ss,1+ss));
355 nkL[6] += 0.5*(ek(0,1)+ek(ss,ss+1)+ek(1,ss)+ek(ss+1,0));
356 nkL[1] += 0.5*(ek(2,2)+ek(2+ss,2+ss)+ek(2+ss,2)+ek(2,2+ss));
357 nkL[4] += 0.5*(ek(3,3)+ek(3+ss,3+ss)+ek(3+ss,3)+ek(3,3+ss));
358 nkL[7] += 0.5*(ek(2,3)+ek(ss+2,ss+3)+ek(3,2+ss)+ek(3+ss,2));
359 nkL[2] += 0.5*(ek(4,4)+ek(4+ss,4+ss)+ek(4+ss,4)+ek(4,4+ss));
360 nkL[5] += 0.5*(ek(5,5)+ek(ss+5,ss+5)+ek(5+ss,5)+ek(5,5+ss));
361 nkL[8] += 0.5*(ek(4,5)+ek(ss+4,ss+5)+ek(5,4+ss)+ek(5+ss,4));
420 values[0] = sol[0]*tmp_1[0];
421 values[1] = (sol[0] - u_exact[0])*(sol[0] - u_exact[0]);
423 for(
int id=0;
id<2;
id++) {
424 values[2] += (dsol[id] - du_exact(
id,0))*(dsol[
id] - du_exact(
id,0));
426 values[3] = values[1]+values[2];
445 =
pow(2.,8)*( 24.*(1.-x[0])*(1.-x[0])*x[0]*x[0]
446 + 24.*(1.-x[1])*(1.-x[1])*x[1]*x[1]
447 + 2*(2*(1-x[0])*(1-x[0])-8*(1-x[0])*x[0]+2*x[0]*x[0])*(1-x[1])*(1-x[1])
448 - 8*(2*(1-x[0])*(1-x[0])-8*(1-x[0])*x[0]+2*x[0]*x[0])*(1-x[1])* x[1]
449 + 2* (2* (1 - x[0])* (1 - x[0]) - 8* (1 - x[0])* x[0] + 2* x[0]* x[0])* x[1]* x[1]
450 + (2*(1-x[0])*(1-x[0])-8*(1-x[0])*x[0]+2*x[0]*x[0])*(2* (1 - x[1])* (1 - x[1])
451 - 8* (1 - x[1])* x[1] + 2* x[1]* x[1]));
457 if (numbersol != 1) {
463 data.
phi(0,0) = data.
sol[0][3]- data.
sol[0][2];
464 data.
phi(1,0) = data.
sol[0][1]- data.
sol[0][0];
472 for(
id=0;
id<nd;
id++)
476 data.
dphix(
id,2) = 0. ;
477 data.
dphix(
id,3) = 0. ;
478 data.
dphix(
id,4) = 0. ;
479 data.
dphix(
id,5) = 0. ;
488 data.
phi(3,0)=u_exactp[0]-data.
sol[0][0];
489 for(
id=0;
id<nd;
id++)
490 { data.
dphix(
id,3) = du_exactp(
id,0)- data.
dsol[0](id,0);
491 data.
dphix(
id,5) = du_exactp(
id,0)- data.
dsol[0](id,1);
498 data.
phi(2,0)=u_exactd[0]-data.
sol[0][2];
502 for(
id=0;
id<nd;
id++)
503 { data.
dphix(
id,2) = du_exactd(
id,0)- data.
dsol[0](id,2);
504 data.
dphix(
id,4) = du_exactd(
id,0)- data.
dsol[0](id,3);
511 int numbersol = dataleft.
dsol.
size();
512 if (numbersol != 1) {
518 dataleft.
phi(0,0) = dataleft.
sol[0][3]-dataleft.
sol[0][2];
519 dataleft.
phi(1,0) = dataleft.
sol[0][1]-dataleft.
sol[0][0];
520 dataleft.
phi(2,0) = 0.;
521 dataleft.
phi(3,0) = 0.;
522 dataleft.
phi(4,0) = 0.;
523 dataleft.
phi(5,0) = 0.;
527 for(
id=0;
id<nd;
id++)
529 dataleft.
dphix(
id,0) = dataleft.
dsol[0](id,3)-dataleft.
dsol[0](
id,2);
530 dataleft.
dphix(
id,1) = dataleft.
dsol[0](id,1)-dataleft.
dsol[0](
id,0);
531 dataleft.
dphix(
id,2) = 0. ;
532 dataleft.
dphix(
id,3) = 0. ;
533 dataleft.
dphix(
id,4) = 0. ;
534 dataleft.
dphix(
id,5) = 0. ;
546 dataleft.
phi(3,0)=u_exactp[0]-dataleft.
sol[0][0];
547 dataleft.
phi(5,0)=u_exactp[0]-dataleft.
sol[0][1];
548 for(
id=0;
id<nd;
id++)
549 { dataleft.
dphix(
id,3) = du_exactp(
id,0)- dataleft.
dsol[0](id,0);
550 dataleft.
dphix(
id,5) = du_exactp(
id,0)- dataleft.
dsol[0](id,1);
558 dataleft.
phi(2,0)=u_exactd[0]-dataleft.
sol[0][2];
559 dataleft.
phi(4,0)=u_exactd[0]-dataleft.
sol[0][3];
560 for(
id=0;
id<nd;
id++)
561 { dataleft.
dphix(
id,2) = du_exactd(
id,0)- dataleft.
dsol[0](id,2);
562 dataleft.
dphix(
id,4) = du_exactd(
id,0)- dataleft.
dsol[0](id,3);
569 int numbersol = dataright.
dsol.
size();
570 if (numbersol != 1) {
576 dataright.
phi(0,0) = dataright.
sol[0][3]-dataright.
sol[0][2];
577 dataright.
phi(1,0) = dataright.
sol[0][1]-dataright.
sol[0][0];
578 dataright.
phi(2,0) = 0.;
579 dataright.
phi(3,0) = 0.;
580 dataright.
phi(4,0) = 0.;
581 dataright.
phi(5,0) = 0.;
585 for(
id=0;
id<nd;
id++)
587 dataright.
dphix(
id,0) = dataright.
dsol[0](id,3)-dataright.
dsol[0](
id,2);
588 dataright.
dphix(
id,1) = dataright.
dsol[0](id,1)-dataright.
dsol[0](
id,0);
589 dataright.
dphix(
id,2) = 0. ;
590 dataright.
dphix(
id,3) = 0. ;
591 dataright.
dphix(
id,4) = 0. ;
592 dataright.
dphix(
id,5) = 0. ;
604 dataright.
phi(3,0)=u_exactp[0]-dataright.
sol[0][0];
605 dataright.
phi(5,0)=u_exactp[0]-dataright.
sol[0][1];
606 for(
id=0;
id<nd;
id++)
607 { dataright.
dphix(
id,3) = du_exactp(
id,0)- dataright.
dsol[0](id,0);
608 dataright.
dphix(
id,5) = du_exactp(
id,0)- dataright.
dsol[0](id,1);
615 dataright.
phi(2,0)=u_exactd[0]-dataright.
sol[0][2];
616 dataright.
phi(4,0)=u_exactd[0]-dataright.
sol[0][3];
617 for(
id=0;
id<nd;
id++)
618 { dataright.
dphix(
id,2) = du_exactd(
id,0)- dataright.
dsol[0](id,2);
619 dataright.
dphix(
id,4) = du_exactd(
id,0)- dataright.
dsol[0](id,3);
virtual void Execute(const TPZVec< REAL > &x, TPZVec< TVar > &f, TPZFMatrix< TVar > &df)
Performs function computation.
virtual void ContributeInterfaceBCErrorsSimple(TPZMaterialData &data, TPZMaterialData &dataleft, REAL weight, TPZVec< STATE > &nk, TPZBndCond &bc)
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...
TPZManVector< REAL, 3 > normal
normal to the element at the integration point
TPZManVector< REAL, 3 > x
value of the coordinate at the integration point
TPZBiharmonicEstimator(int nummat, STATE f)
Constructor.
Contains the TPZBiharmonic class which implements a discontinuous Galerkin formulation for the bi-har...
int ClassId() const override
Unique identifier for serialization purposes.
clarg::argBool bc("-bc", "binary checkpoints", false)
void OrderSolution(TPZMaterialData &data)
Computes the primal and dual exact error.
void Psi(TPZVec< REAL > &x, TPZVec< STATE > &pisci)
Kernel of the functional.
virtual int ClassId() const override
Unique identifier for serialization purposes.
std::ofstream CE("debugContributeErros.txt")
Output file to contribute erros.
virtual void Solution(TPZVec< STATE > &Sol, TPZFMatrix< STATE > &DSol, TPZFMatrix< REAL > &axes, int var, TPZVec< STATE > &Solout) override
TPZGradSolVec dsol
vector of the derivatives of the solution at the integration point
Implements discontinuous Galerkin formulation for the bi-harmonic equation.
REAL val(STATE &number)
Returns value of the variable.
virtual void Contribute(TPZMaterialData &data, REAL weight, TPZFMatrix< STATE > &ek, TPZFMatrix< STATE > &ef) override
Implements integral over element's volume.
TPZFMatrix< STATE > & Val2(int loadcase=0)
TPZFNMatrix< 220, REAL > phi
vector of shapefunctions (format is dependent on the value of shapetype)
int p
maximum polinomial order of the shape functions
virtual void ContributeErrorsSimple(TPZMaterialData &data, REAL weight, TPZVec< REAL > &nk)
TPZFNMatrix< 660, REAL > dphix
values of the derivative of the shape functions
void SetExactSolutions(void(*fp)(TPZVec< REAL > &loc, TPZVec< STATE > &val, TPZFMatrix< STATE > &deriv), void(*fd)(TPZVec< REAL > &locdual, TPZVec< STATE > &valdual, TPZFMatrix< STATE > &derivdual))
Set the pointer of the solution function.
void(* fPrimalExactSol)(TPZVec< REAL > &loc, TPZVec< STATE > &val, TPZFMatrix< STATE > &deriv)
Attributes required for goal oriented error estimation validation.
Contains the TPZBndCond class which implements a boundary condition for TPZMaterial objects...
STATE L2ErrorDual
Initializing variable for computing L2 error to dual form.
virtual void ContributeInterfaceErrorsDual(TPZMaterialData &data, TPZMaterialData &dataleft, TPZMaterialData &dataright, REAL weight, TPZVec< STATE > &nkL, TPZVec< STATE > &nkR)
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...
#define DebugStop()
Returns a message to user put a breakpoint in.
This class defines the boundary condition for TPZMaterial objects.
virtual void ContributeInterfaceBCErrorsDual(TPZMaterialData &data, TPZMaterialData &dataleft, REAL weight, TPZVec< STATE > &nk, TPZBndCond &bc)
Implements integration of the boundary interface part of an error estimator.
int64_t Rows() const
Returns number of rows.
void OrderSolutionLeft(TPZMaterialData &data, TPZMaterialData &dataleft)
Computes the primal and dual exact error over dataleft considering the solution in data...
REAL HSize
measure of the size of the element
virtual void ContributeInterfaceErrorsSimple(TPZMaterialData &data, TPZMaterialData &dataleft, TPZMaterialData &dataright, REAL weight, TPZVec< STATE > &nkL, TPZVec< STATE > &nkR)
virtual void ContributeErrorsDual(TPZMaterialData &data, REAL weight, TPZVec< REAL > &nk)
Implements integration of the internal part of an error estimator.
virtual void ContributeBCInterface(TPZMaterialData &data, TPZMaterialData &dataleft, REAL weight, TPZFMatrix< STATE > &ek, TPZFMatrix< STATE > &ef, TPZBndCond &bc) override
It computes a contribution to stiffness matrix and load vector at one BC integration point...
STATE L2ErrorPrimal
Initializing variable for computing L2 error.
int32_t Hash(std::string str)
~TPZBiharmonicEstimator()
Destructor.
TPZFlopCounter pow(const TPZFlopCounter &orig, const TPZFlopCounter &xp)
Returns the power and increments the counter of the power.
void(* fDualExactSol)(TPZVec< REAL > &loc, TPZVec< STATE > &val, TPZFMatrix< STATE > &deriv)
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
Compute the error due to the difference between the interpolated flux and the flux computed based on...
TPZAutoPointer< TPZFunction< STATE > > fForcingFunction
Pointer to forcing function, it is the right member at differential equation.
void OrderSolutionRight(TPZMaterialData &data, TPZMaterialData &dataright)
Computes the primal and dual exact error over dataright considering the solution in data...
int Resize(const int64_t newRows, const int64_t wCols) override
Redimension a matrix, but maintain your elements.
Estimates error to biharmonic problem. Also computes the contributions on elements and interfaces...
TPZSolVec sol
vector of the solutions at the integration point
Non abstract class which implements full matrices with preallocated storage with (N+1) entries...
Contains TPZBiharmonicEstimator class estimates error to biharmonic problem.