MCPcopy Create free account
hub / github.com/OpenSees/OpenSees / SetEnvelope

Method SetEnvelope

SRC/material/uniaxial/ShearPanelMaterial.cpp:592–665  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

590}
591
592void ShearPanelMaterial::SetEnvelope(void)
593{
594 double kPos = stress1p/strain1p;
595 double kNeg = stress1n/strain1n;
596 double k = (kPos>kNeg) ? kPos:kNeg;
597 double u = (strain1p>-strain1n) ? 1e-4*strain1p:-1e-4*strain1n;
598
599 envlpPosStrain(0) = u;
600 envlpPosStress(0) = u*k;
601 envlpNegStrain(0) = -u;
602 envlpNegStress(0) = -u*k;
603
604 envlpPosStrain(1) = strain1p;
605 envlpPosStrain(2) = strain2p;
606 envlpPosStrain(3) = strain3p;
607 envlpPosStrain(4) = strain4p;
608
609 envlpNegStrain(1) = strain1n;
610 envlpNegStrain(2) = strain2n;
611 envlpNegStrain(3) = strain3n;
612 envlpNegStrain(4) = strain4n;
613
614 envlpPosStress(1) = stress1p;
615 envlpPosStress(2) = stress2p;
616 envlpPosStress(3) = stress3p;
617 envlpPosStress(4) = stress4p;
618
619 envlpNegStress(1) = stress1n;
620 envlpNegStress(2) = stress2n;
621 envlpNegStress(3) = stress3n;
622 envlpNegStress(4) = stress4n;
623
624 double k1 = (stress4p - stress3p)/(strain4p - strain3p);
625 double k2 = (stress4n - stress3n)/(strain4n - strain3n);
626
627
628 envlpPosStrain(5) = 1e+6*strain4p;
629 envlpPosStress(5) = (k1>0.0)? stress4p+k1*(envlpPosStrain(5) - strain4p):stress4p*1.1;
630 envlpNegStrain(5) = 1e+6*strain4n;
631 envlpNegStress(5) = (k2>0.0)? stress4n+k2*(envlpNegStrain(5) - strain4n):stress4n*1.1;
632
633 // define critical material properties
634 kElasticPos = envlpPosStress(1)/envlpPosStrain(1);
635 kElasticNeg = envlpNegStress(1)/envlpNegStrain(1);
636
637 double energypos = 0.5*envlpPosStrain(0)*envlpPosStress(0);
638
639 for (int jt = 0; jt<4; jt++){
640 energypos += 0.5*(envlpPosStress(jt) + envlpPosStress(jt+1))*(envlpPosStrain(jt+1)-envlpPosStrain(jt));
641 }
642
643 double energyneg = 0.5*envlpNegStrain(0)*envlpNegStress(0);
644
645 for (int jy = 0; jy<4; jy++){
646 energyneg += 0.5*(envlpNegStress(jy) + envlpNegStress(jy+1))*(envlpNegStrain(jy+1)-envlpNegStrain(jy));
647 }
648
649 double max_energy = (energypos>energyneg) ? energypos:energyneg;

Callers 1

ShearPanelMaterialMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected