18 static LoggerPtr logdata(Logger::getLogger(
"pz.material.elasticity.data"));
93 out <<
"name of material : " <<
Name() <<
"\n";
94 out <<
"properties : \n";
97 out <<
"Elasticity coeficients are determined by a function\n";
101 out <<
"\tE = " <<
fE_def << endl;
102 out <<
"\tnu = " <<
fnu_def << endl;
104 out <<
"\tF = " <<
ff[0] <<
' ' <<
ff[1] << endl;
105 out <<
"\t PreStress: \n" 132 int phc,phr,dphc,dphr,efr,efc,ekr,ekc;
141 if(phc != 1 || dphr != 2 || phr != dphc){
142 PZError <<
"\nTPZElasticityMaterial.contr, inconsistent input data : \n" <<
143 "phi.Cols() = " << phi.
Cols() <<
" dphi.Cols() = " << dphi.
Cols() <<
144 " phi.Rows = " << phi.
Rows() <<
" dphi.Rows = " <<
145 dphi.
Rows() <<
"\nek.Rows() = " << ek.
Rows() <<
" ek.Cols() = " 147 "\nef.Rows() = " << ef.
Rows() <<
" ef.Cols() = " 148 << ef.
Cols() <<
"\n";
171 REAL Eover1MinNu2 =
E/(1-nu*nu);
172 REAL Eover21PlusNu =
E/(2.*(1+nu));
179 REAL nu2 = (1.-2.*nu)/2.;
180 REAL F =
E/((1.+nu)*(1.-2.*nu));
182 for(
int in = 0; in < phr; in++ ) {
183 du(0,0) = dphi(0,in)*axes(0,0)+dphi(1,in)*axes(1,0);
184 du(1,0) = dphi(0,in)*axes(0,1)+dphi(1,in)*axes(1,1);
186 for (
int col = 0; col < efc; col++)
191 for(
int jn = 0; jn < phr; jn++ ) {
192 du(0,1) = dphi(0,jn)*axes(0,0)+dphi(1,jn)*axes(1,0);
193 du(1,1) = dphi(0,jn)*axes(0,1)+dphi(1,jn)*axes(1,1);
198 ek(2*in,2*jn) += weight * (
199 nu1 * du(0,0)*du(0,1)+ nu2 * du(1,0)*du(1,1)
202 ek(2*in,2*jn+1) += weight * (
203 nu*du(0,0)*du(1,1)+ nu2*du(1,0)*du(0,1)
206 ek(2*in+1,2*jn) += weight * (
207 nu*du(1,0)*du(0,1)+ nu2*du(0,0)*du(1,1)
210 ek(2*in+1,2*jn+1) += weight * (
211 nu1*du(1,0)*du(1,1)+ nu2*du(0,0)*du(0,1)
216 ek(2*in,2*jn) += weight * (
217 Eover1MinNu2 * du(0,0)*du(0,1)+ Eover21PlusNu * du(1,0)*du(1,1)
220 ek(2*in,2*jn+1) += weight * (
221 Eover1MinNu2*nu*du(0,0)*du(1,1)+ Eover21PlusNu*du(1,0)*du(0,1)
224 ek(2*in+1,2*jn) += weight * (
225 Eover1MinNu2*nu*du(1,0)*du(0,1)+ Eover21PlusNu*du(0,0)*du(1,1)
228 ek(2*in+1,2*jn+1) += weight * (
229 Eover1MinNu2*du(1,0)*du(1,1)+ Eover21PlusNu*du(0,0)*du(0,1)
250 if(shapetype==data[0].EVecShape){
258 int phc,phr,dphc,dphr,efr,efc,ekr,ekc;
267 if(phc != 1 || dphr != 2 || phr != dphc || 2*phr != ekr){
268 PZError <<
"\nTPZElasticityMaterial.contr, inconsistent input data : \n" <<
269 "phi.Cols() = " << phi.
Cols() <<
" dphi.Cols() = " << dphi.
Cols() <<
270 " phi.Rows = " << phi.
Rows() <<
" dphi.Rows = " <<
271 dphi.
Rows() <<
"\nek.Rows() = " << ek.
Rows() <<
" ek.Cols() = " 273 "\nef.Rows() = " << ef.
Rows() <<
" ef.Cols() = " 274 << ef.
Cols() <<
"\n";
297 REAL Eover1MinNu2 =
E/(1-nu*nu);
298 REAL Eover21PlusNu =
E/(2.*(1+nu));
306 REAL nu2 = (1.-2.*nu)/2.;
307 REAL F =
E/((1.+nu)*(1.-2.*nu));
308 STATE epsx, epsy,epsxy,epsz;
311 DSolxy(0,0) = data[0].dsol[0](0,0)*axes(0,0)+data[0].dsol[0](1,0)*axes(1,0);
312 DSolxy(1,0) = data[0].dsol[0](0,0)*axes(0,1)+data[0].dsol[0](1,0)*axes(1,1);
314 DSolxy(0,1) = data[0].dsol[0](0,1)*axes(0,0)+data[0].dsol[0](1,1)*axes(1,0);
315 DSolxy(1,1) = data[0].dsol[0](0,1)*axes(0,1)+data[0].dsol[0](1,1)*axes(1,1);
318 epsxy = 0.5*(DSolxy(1,0)+DSolxy(0,1));
319 epsz = data[1].sol[0][0];
320 STATE SigX =
E/((1.-2.*nu)*(1.+nu))*((1.-nu)*epsx+nu*(epsy+epsz))+
fPreStressXX;
321 STATE SigY =
E/((1.-2.*nu)*(1.+nu))*(nu*epsx+(1.-nu)*(epsy+epsz))+
fPreStressYY;
325 STATE SigZ = lambda*(epsx+epsy+epsz)+2.*mu*epsz;
329 for(
int in = 0; in < phr; in++ ) {
330 du(0,0) = dphi(0,in)*axes(0,0)+dphi(1,in)*axes(1,0);
331 du(1,0) = dphi(0,in)*axes(0,1)+dphi(1,in)*axes(1,1);
334 for (
int col = 0; col < efc; col++)
336 ef(2*in, col) += weight * (
ff[0]*phi(in,0) - du(0,0)*(SigX) - du(1,0)*(TauXY));
337 ef(2*in+1, col) += weight * (
ff[1]*phi(in,0) - du(0,0)*(TauXY) - du(1,0)*(SigY));
339 for(
int jn = 0; jn < phr; jn++ ) {
340 du(0,1) = dphi(0,jn)*axes(0,0)+dphi(1,jn)*axes(1,0);
341 du(1,1) = dphi(0,jn)*axes(0,1)+dphi(1,jn)*axes(1,1);
346 ek(2*in,2*jn) += weight * (
347 nu1 * du(0,0)*du(0,1)+ nu2 * du(1,0)*du(1,1)
350 ek(2*in,2*jn+1) += weight * (
351 nu*du(0,0)*du(1,1)+ nu2*du(1,0)*du(0,1)
354 ek(2*in+1,2*jn) += weight * (
355 nu*du(1,0)*du(0,1)+ nu2*du(0,0)*du(1,1)
358 ek(2*in+1,2*jn+1) += weight * (
359 nu1*du(1,0)*du(1,1)+ nu2*du(0,0)*du(0,1)
364 ek(2*in,2*jn) += weight * (
365 Eover1MinNu2 * du(0,0)*du(0,1)+ Eover21PlusNu * du(1,0)*du(1,1)
368 ek(2*in,2*jn+1) += weight * (
369 Eover1MinNu2*nu*du(0,0)*du(1,1)+ Eover21PlusNu*du(1,0)*du(0,1)
372 ek(2*in+1,2*jn) += weight * (
373 Eover1MinNu2*nu*du(1,0)*du(0,1)+ Eover21PlusNu*du(0,0)*du(1,1)
376 ek(2*in+1,2*jn+1) += weight * (
377 Eover1MinNu2*du(1,0)*du(1,1)+ Eover21PlusNu*du(0,0)*du(0,1)
381 const STATE C2 =
E * nu / (-1. + nu + 2.*nu*nu);
382 const int nstate = 2;
389 ek(in*nstate,phr*nstate) += weight*(-C2*du(0,0));
390 ek(in*nstate+1,phr*nstate) += weight*(-C2*du(1,0));
392 ek(phr*nstate,in*nstate) += weight*(-C2*du(0,0));
393 ek(phr*nstate,in*nstate+1) += weight*(-C2*du(1,0));
396 ek(phr*2,phr*2) += weight*(lambda+2.*mu);
397 for (
int col = 0; col < efc; col++)
399 ef(2*phr, col) += weight * (-SigZ);
428 if (type == 4 || type == 5 || type == 6) {
439 int phc,phr,dphc,dphr,efr,efc,ekr,ekc;
467 REAL Eover1MinNu2 =
E/(1-nu*nu);
468 REAL Eover21PlusNu =
E/(2.*(1+nu));
476 REAL nu2 = (1-2*nu)/2;
477 REAL F =
E/((1+nu)*(1-2*nu));
479 for(
int in = 0; in < phc; in++ )
481 dphix_i(0,0) = dphi(0,in)*axes(0,0)+dphi(1,in)*axes(1,0);
482 dphix_i(1,0) = dphi(0,in)*axes(0,1)+dphi(1,in)*axes(1,1);
483 dphiy_i(0,0) = dphi(2,in)*axes(0,0)+dphi(3,in)*axes(1,0);
484 dphiy_i(1,0) = dphi(2,in)*axes(0,1)+dphi(3,in)*axes(1,1);
486 for (
int col = 0; col < efc; col++)
491 for(
int jn = 0; jn < phc; jn++ ) {
493 dphix_j(0,0) = dphi(0,jn)*axes(0,0)+dphi(1,jn)*axes(1,0);
494 dphix_j(1,0) = dphi(0,jn)*axes(0,1)+dphi(1,jn)*axes(1,1);
495 dphiy_j(0,0) = dphi(2,jn)*axes(0,0)+dphi(3,jn)*axes(1,0);
496 dphiy_j(1,0) = dphi(2,jn)*axes(0,1)+dphi(3,jn)*axes(1,1);
501 ek(in,jn) += weight*(nu1*dphix_i(0,0)*dphix_j(0,0) + nu2*dphix_i(1,0)*dphix_j(1,0) +
503 nu*dphix_i(0,0)*dphiy_j(1,0) + nu2*dphix_i(1,0)*dphiy_j(0,0) +
505 nu*dphiy_i(1,0)*dphix_j(0,0) + nu2*dphiy_i(0,0)*dphix_j(1,0) +
507 nu1*dphiy_i(1,0)*dphiy_j(1,0) + nu2*dphiy_i(0,0)*dphiy_j(0,0))*F;
512 ek(in,jn) += weight*(Eover1MinNu2*dphix_i(0,0)*dphix_j(0,0) + Eover21PlusNu*dphix_i(1,0)*dphix_j(1,0) +
514 Eover1MinNu2*dphix_i(0,0)*dphiy_j(1,0) + Eover21PlusNu*dphix_i(1,0)*dphiy_j(0,0) +
516 Eover1MinNu2*dphiy_i(1,0)*dphix_j(0,0) + Eover21PlusNu*dphiy_i(0,0)*dphix_j(1,0) +
518 Eover1MinNu2*dphiy_i(1,0)*dphiy_j(1,0) + Eover21PlusNu*dphiy_i(0,0)*dphiy_j(0,0));
543 int phr = phi.
Rows();
563 for(in = 0 ; in < phr; in++) {
567 v2[0] = bc.
Val2(il)(0,0);
568 v2[1] = bc.
Val2(il)(1,0);
569 ef(2*in,il) += BIGNUMBER * v2[0] * phi(in,0) * weight;
570 ef(2*in+1,il) += BIGNUMBER * v2[1] * phi(in,0) * weight;
572 for (jn = 0 ; jn < phi.
Rows(); jn++)
574 ek(2*in,2*jn) += BIGNUMBER * phi(in,0) *phi(jn,0) * weight;
575 ek(2*in+1,2*jn+1) += BIGNUMBER * phi(in,0) *phi(jn,0) * weight;
583 for (in = 0; in < phr; in++)
588 ef(2*in,il) += v2(0,0) * phi(in,0) * weight;
589 ef(2*in+1,il) += v2(1,0) * phi(in,0) * weight;
597 for(in = 0 ; in < phi.
Rows(); in++)
602 ef(2*in,il) += v2(0,0) * phi(in,0) * weight;
603 ef(2*in+1,il) += v2(1,0) * phi(in,0) * weight;
606 for (jn = 0 ; jn < phi.
Rows(); jn++) {
607 ek(2*in,2*jn) += bc.
Val1()(0,0) * phi(in,0) * phi(jn,0) * weight;
608 ek(2*in+1,2*jn) += bc.
Val1()(1,0) * phi(in,0) * phi(jn,0) * weight;
609 ek(2*in+1,2*jn+1) += bc.
Val1()(1,1) * phi(in,0) * phi(jn,0) * weight;
610 ek(2*in,2*jn+1) += bc.
Val1()(0,1) * phi(in,0) * phi(jn,0) * weight;
616 for(in = 0 ; in < phr; in++) {
619 for (jn = 0 ; jn < phr; jn++) {
620 ek(nstate*in+0,nstate*jn+0) += BIGNUMBER * phi(in,0) * phi(jn,0) * weight * bc.
Val2()(0,0);
621 ek(nstate*in+1,nstate*jn+1) += BIGNUMBER * phi(in,0) * phi(jn,0) * weight * bc.
Val2()(1,0);
630 for(in = 0; in < dim; in ++)
632 v2[in] = ( v1(in,0) * data.
normal[0] +
633 v1(in,1) * data.
normal[1]);
637 for(in = 0 ; in < phi.
Rows(); in++) {
638 ef(nstate*in+0,0) += v2[0] * phi(in,0) * weight;
639 ef(nstate*in+1,0) += v2[1] * phi(in,0) * weight;
649 for(in = 0 ; in < phi.
Rows(); in++)
653 ef(nstate*in+0,0) += (bc.
Val2(il)(0,0)*data.
normal[0]) * phi(in,0) * weight ;
654 ef(nstate*in+1,0) += (bc.
Val2(il)(0,0)*data.
normal[1]) * phi(in,0) * weight ;
656 for(jn=0; jn<phi.
Rows(); jn++)
658 for(
int idf=0;
idf<2;
idf++)
for(
int jdf=0; jdf<2; jdf++)
673 for(in = 0 ; in < phi.
Rows(); in++)
677 ef(nstate*in+0,0) += (bc.
Val2(il)(0,0)*data.
normal[0]) * phi(in,0) * weight ;
678 ef(nstate*in+1,0) += (bc.
Val2(il)(0,0)*data.
normal[1]) * phi(in,0) * weight ;
680 for(jn=0; jn<phi.
Rows(); jn++)
682 for(
int idf=0;
idf<2;
idf++)
for(
int jdf=0; jdf<2; jdf++)
684 ek(nstate*in+
idf,nstate*jn+jdf) += bc.
Val1()(
idf,jdf)*phi(in,0)*phi(jn,0)*weight;
707 int phc = phi.
Cols();
712 for(in = 0 ; in < phc; in++) {
717 ef(in,il) += weight*BIGNUMBER*(v2(0,il)*phi(0,in) + v2(1,il) * phi(1,in));
719 for (jn = 0 ; jn < phc; jn++) {
721 ek(in,jn) += weight*BIGNUMBER*(phi(0,in)*phi(0,jn) + phi(1,in)*phi(1,jn));
727 for (in = 0; in < phc; in++)
732 ef(in,il)+= weight*(v2(0,il)*phi(0,in) + v2(1,il)*phi(1,in));
738 for(in = 0 ; in < phc; in++)
743 ef(in,il) += weight * (v2(0,il)*phi(0,in) + v2(1,il)*phi(1,in));
746 for (jn = 0; jn <phc; jn++) {
748 ek(in,jn) += bc.
Val1()(0,0)*phi(0,in)*phi(0,jn)*weight
750 + bc.
Val1()(1,0)*phi(1,in)*phi(0,jn)*weight
752 + bc.
Val1()(0,1)*phi(0,in)*phi(1,jn)*weight
754 + bc.
Val1()(1,1)*phi(1,in)*phi(1,jn)*weight;
799 if(!strcmp(
"displacement",name.c_str()))
return 9;
800 if(!strcmp(
"Displacement",name.c_str()))
return 9;
801 if(!strcmp(
"DisplacementMem",name.c_str()))
return 9;
802 if(!strcmp(
"Pressure",name.c_str()))
return 1;
803 if(!strcmp(
"MaxStress",name.c_str()))
return 2;
804 if(!strcmp(
"PrincipalStress1",name.c_str()))
return 3;
805 if(!strcmp(
"PrincipalStress2",name.c_str()))
return 4;
806 if(!strcmp(
"SigmaX",name.c_str()))
return 5;
807 if(!strcmp(
"SigmaY",name.c_str()))
return 6;
808 if(!strcmp(
"TauXY",name.c_str()))
return 8;
809 if(!strcmp(
"Strain",name.c_str()))
return 11;
810 if(!strcmp(
"SigmaZ",name.c_str()))
return 12;
812 if(!strcmp(
"sig_x",name.c_str()))
return 5;
813 if(!strcmp(
"sig_y",name.c_str()))
return 6;
814 if(!strcmp(
"tau_xy",name.c_str()))
return 8;
815 if(!strcmp(
"Displacement6",name.c_str()))
return 7;
816 if(!strcmp(
"Stress",name.c_str()))
return 10;
817 if(!strcmp(
"Flux",name.c_str()))
return 10;
818 if(!strcmp(
"J2",name.c_str()))
return 20;
819 if(!strcmp(
"I1",name.c_str()))
return 21;
820 if(!strcmp(
"J2Stress",name.c_str()))
return 20;
821 if(!strcmp(
"I1Stress",name.c_str()))
return 21;
822 if(!strcmp(
"Alpha",name.c_str()))
return 22;
823 if(!strcmp(
"PlasticSqJ2",name.c_str()))
return 22;
824 if(!strcmp(
"PlasticSqJ2El",name.c_str()))
return 22;
825 if(!strcmp(
"YieldSurface",name.c_str()))
return 27;
826 if(!strcmp(
"NormalStress",name.c_str()))
return 23;
827 if(!strcmp(
"ShearStress",name.c_str()))
return 24;
828 if(!strcmp(
"NormalStrain",name.c_str()))
return 25;
829 if(!strcmp(
"ShearStrain",name.c_str()))
return 26;
830 if(!strcmp(
"Young_Modulus",name.c_str()))
return 28;
831 if(!strcmp(
"Poisson",name.c_str()))
return 29;
916 REAL Eover1MinNu2 =
E/(1-nu*nu);
917 REAL Eover21PlusNu =
E/(2.*(1+nu));
932 REAL TauXY,aux,Sig1,Sig2,
angle;
935 DSolxy(0,0) = DSol(0,0)*axes(0,0)+DSol(1,0)*axes(1,0);
936 DSolxy(1,0) = DSol(0,0)*axes(0,1)+DSol(1,0)*axes(1,1);
938 DSolxy(0,1) = DSol(0,1)*axes(0,0)+DSol(1,1)*axes(1,0);
939 DSolxy(1,1) = DSol(0,1)*axes(0,1)+DSol(1,1)*axes(1,1);
943 epsxy = 0.5*(DSolxy(1,0)+DSolxy(0,1));
948 epsz = -lambda*(epsx+epsy)/(lambda+2.*mu);
958 if(
fabs(TauXY) > 1.) tol *=
fabs(TauXY);
959 REAL TauXY2 =
E*epsxy/(1.+nu)+fPreStressXY;
961 if (
fabs(TauXY-TauXY2) >
tol) {
965 if (
fabs(TauXY-TauXY2) > tol) {
977 SigX =
E/((1.-2.*nu)*(1.+nu))*((1.-nu)*epsx+nu*epsy)+
fPreStressXX;
978 SigY =
E/((1.-2.*nu)*(1.+nu))*(nu*epsx+(1.-nu)*epsy)+
fPreStressYY;
1007 Solout[0] = SigX+SigY+SigZ;
1010 Solout[0] = SigX+SigY+SigZ;
1026 aux =
sqrt(0.25*(SigX-SigY)*(SigX-SigY)
1030 if(
fabs(TauXY) < 1.e-10 &&
fabs(SigY-SigX) < 1.e-10) angle = 0.;
1031 else angle =
atan2(2*TauXY,SigY-SigX)/2.;
1032 Sig1 = 0.5*(SigX+SigY)+aux;
1033 Sig2 = 0.5*(SigX+SigY)-aux;
1036 Solout[0] = Sig1*
cos(angle);
1037 Solout[1] = Sig1*
sin(angle);
1042 Solout[0] = -Sig2*
sin(angle);
1043 Solout[1] = Sig2*
cos(angle);
1059 cout <<
"Very critical error TPZElasticityMaterial::Solution\n";
1080 REAL J2 = (
pow(SigX + SigY,2) - (3*(-
pow(SigX,2) -
pow(SigY,2) +
pow(SigX + SigY,2) - 2*
pow(TauXY,2)))/2.)/2.;
1087 REAL I1 = SigX+SigY;
1129 if(
fabs(axes(0,2)) >= 1.e-6 ||
fabs(axes(1,2)) >= 1.e-6) {
1130 cout <<
"TPZElasticityMaterial::Flux only serves for xy configuration\n";
1140 REAL sigx,sigy,sigxy;
1158 REAL Eover1MinNu2 =
E/(1-nu*nu);
1159 REAL Eover21PlusNu =
E/(2.*(1+nu));
1161 STATE epsx,epsy,epsxy, epsz;
1164 epsxy = 0.5*(du(1,0)+du(0,1));
1168 epsz = -lambda*(epsx+epsy)/(lambda+2.*mu);
1175 STATE SigX = lambda*(epsx+epsy+epsz)+2.*mu*epsx +
fPreStressXX;
1176 STATE SigY = lambda*(epsx+epsy+epsz)+2.*mu*epsy +
fPreStressYY;
1178 STATE SigZ = lambda*(epsx+epsy+epsz)+2.*mu*epsz;
1187 STATE epsx_exact,epsy_exact,epsxy_exact, epsz_exact;
1188 epsx_exact = du_exact(0,0);
1189 epsy_exact = du_exact(1,1);
1190 epsxy_exact = 0.5*(du_exact(1,0)+du_exact(0,1));
1192 epsz_exact = -lambda*(epsx+epsy)/(lambda+2.*mu);
1199 SigX = lambda*(epsx_exact+epsy_exact+epsz_exact)+2.*mu*epsx_exact +
fPreStressXX;
1200 SigY = lambda*(epsx_exact+epsy_exact+epsz_exact)+2.*mu*epsy_exact +
fPreStressYY;
1202 SigZ = lambda*(epsx_exact+epsy_exact+epsz_exact)+2.*mu*epsz_exact;
1205 sigma_exact[0] = SigX;
1206 sigma_exact[1] = SigY;
1207 sigma_exact[2] = TauXY;
1208 sigx = (sigma[0] - sigma_exact[0]);
1209 sigy = (sigma[1] - sigma_exact[1]);
1210 sigxy = (sigma[2] - sigma_exact[2]);
1213 values[0] = (sigx*(epsx-epsx_exact)+sigy*(epsy-epsy_exact)+2.*sigxy*(epsxy-epsxy_exact));
1216 values[3] = (SigX*(epsx_exact)+SigY*(epsy_exact)+2.*TauXY*(epsxy_exact));
1219 values[4] = sigx*sigx + sigy*sigy + 2.*sigxy*sigxy;
1222 values[5] = sigx*sigx;
1225 values[1] = (u[0] - u_exact[0])*(u[0] - u_exact[0])+(u[1] - u_exact[1])*(u[1] - u_exact[1]);
1229 for(
int i = 0; i < 2; i++)
for(
int j = 0; j < 2; j++) SemiH1 += (du(i,j) - du_exact(i,j)) * (du(i,j) - du_exact(i,j));
1230 values[2] = values[1] + SemiH1;
virtual void Print(std::ostream &out=std::cout) override
Print the material data.
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.
TPZFlopCounter atan2(const TPZFlopCounter &val1, const TPZFlopCounter &val2)
Returns the arc tangent in radians and increments the counter of the Arc Tangent. ATAN2 returns the ...
int fPlaneStress
Uses plain stress.
expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ fabs
STATE GetMU(REAL E, REAL nu) const
int ClassId() const override
Unique identifier for serialization purposes.
TPZManVector< REAL, 3 > normal
normal to the element at the integration point
int fNumLoadCases
Defines the number of load cases generated by this material.
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
REAL fPreStressYY
Pre Stress Tensor - Sigma YY.
clarg::argBool bc("-bc", "binary checkpoints", false)
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.
virtual void Solution(TPZMaterialData &data, int var, TPZVec< STATE > &Solout) override
Returns the solution associated with the var index based on the finite element approximation.
REAL fPreStressZZ
Pre Stress Tensor - Sigma ZZ.
TPZElasticityMaterial()
Default constructor.
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...
virtual int VariableIndex(const std::string &name)
Returns the variable index associated with the name.
virtual void FillDataRequirements(TPZMaterialData &data) override
Fill material data parameter with necessary requirements for the.
REAL fPreStressXY
Pre Stress Tensor - Sigma XY.
void Write(TPZStream &buf, int withclassid) const override
Saves the element data to a stream.
TPZGradSolVec dsol
vector of the derivatives of the solution at the integration point
MShapeFunctionType fShapeType
This class implements a simple vector storage scheme for a templated class T. Utility.
void SetPreStress(REAL Sigxx, REAL Sigyy, REAL Sigxy, REAL Sigzz)
Set PresStress Tensor.
TPZFMatrix< STATE > & Val2(int loadcase=0)
TPZFNMatrix< 220, REAL > phi
vector of shapefunctions (format is dependent on the value of shapetype)
TPZFNMatrix< 660, REAL > dphix
values of the derivative of the shape functions
virtual int NSolutionVariables(int var) override
Returns the number of variables associated with the variable indexed by var.
int fPostProcIndex
indicates which solution should be used for post processing
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...
void ContributeVecShapeBC(TPZMaterialData &data, REAL weight, TPZFMatrix< STATE > &ek, TPZFMatrix< STATE > &ef, TPZBndCond &bc)
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...
int64_t size() const
Returns the number of elements of the vector.
virtual int ClassId() const override
Unique identifier for serialization purposes.
void Read(TPZStream &buf, void *context) override
Reads the element data from a stream.
virtual void Read(TPZStream &buf, void *context) override
Reads the element data from a stream.
virtual void Write(const bool val)
Contains TPZMatrixclass which implements full matrix (using column major representation).
#define DebugStop()
Returns a message to user put a breakpoint in.
This class defines the boundary condition for TPZMaterial objects.
Contains the TPZElasticityMaterial class which implements a two dimensional elastic material in plane...
void ContributeVecShape(TPZMaterialData &data, REAL weight, TPZFMatrix< STATE > &ek, TPZFMatrix< STATE > &ef)
Calculates the element stiffness matrix - simulate compaction as aditional variable.
int64_t Rows() const
Returns number of rows.
expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ expr_ sqrt
TPZAutoPointer< TPZFunction< STATE > > fElasticity
TPZFNMatrix< 9, REAL > axes
axes indicating the directions of the derivatives of the shapefunctions
TPZFMatrix< STATE > & Val1()
REAL E()
Returns the elasticity modulus E.
TPZManVector< STATE, 3 > ff
Forcing vector.
virtual void Write(TPZStream &buf, int withclassid) const override
Saves the element data to a stream.
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.
std::string Name() override
Returns the material name.
static REAL angle
Angle in radians to test.
STATE GetLambda(REAL E, REAL nu) const
TPZFlopCounter pow(const TPZFlopCounter &orig, const TPZFlopCounter &xp)
Returns the power and increments the counter of the power.
virtual void FillBoundaryConditionDataRequirement(int type, TPZMaterialData &data) override
This method defines which parameters need to be initialized in order to compute the contribution of t...
virtual int NSolutionVariables(int var)
Returns the number of variables associated with the variable indexed by var.
virtual ~TPZElasticityMaterial()
Default destructor.
virtual void Contribute(TPZMaterialData &data, REAL weight, TPZFMatrix< STATE > &ek, TPZFMatrix< STATE > &ef) override
Calculates the element stiffness matrix.
TPZAutoPointer< TPZFunction< STATE > > fForcingFunction
Pointer to forcing function, it is the right member at differential equation.
This class implements a two dimensional elastic material in plane stress or strain.
int NumLoadCases()
returns the number of load cases for this material object
int Dimension() const override
Returns the model dimension.
int64_t Cols() const
Returns number of cols.
virtual void Print(std::ostream &out) const
Defines the interface for saving and reading data. Persistency.
REAL fPreStressXX
Pre Stress Tensor - Sigma XX.
REAL fnu_def
Poison coeficient.
REAL ZeroTolerance()
Returns the tolerance to Zero value. Actually: .
TPZFlopCounter cos(const TPZFlopCounter &orig)
Returns the cosine in radians and increments the counter of the Cosine.
TPZSolVec sol
vector of the solutions at the integration point
REAL fE_def
Elasticity modulus.
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 to mul...
Implements an interface to register a class id and a restore function. Persistence.
Non abstract class which implements full matrices with preallocated storage with (N+1) entries...
virtual int NStateVariables() const override
Returns the number of state variables associated with the material.
#define PZError
Defines the output device to error messages and the DebugStop() function.
virtual void Read(bool &val)
virtual int VariableIndex(const std::string &name) override
Returns the variable index associated with the name.