Hi,
Recently I gone through some parametric studies with PressureDependMultiYield02 material. I was interested to see the effects of liquefaction parameters liquefyParam1 and liquefyParam2 and I looked at its source code.
It appears unusual to me in getPPZLimits class, particularly at " if (volume >= liquefyParam1)...." location (the code is attached below).
Whether the logic is true or false PPZLimit is always 0.0. I was wondering is this a bug or is it correct.
Please help to understand this.
Thanks,
Deepak
double PressureDependMultiYield02::getPPZLimits(int which, const T2Vector & contactStress)
{
double liquefyParam1 = liquefyParam1x[matN];
double liquefyParam2 = liquefyParam2x[matN];
double dilateParam3 = dilateParam3x[matN];
double PPZLimit, temp;
double volume = -contactStress.volume();
if (volume >= liquefyParam1) PPZLimit = 0.;
else {
temp = volume*pi/liquefyParam1/2.;
// liquefyParam3 = 3.0 default
PPZLimit = liquefyParam2 * pow(cos(temp), 3.);
//\\//
PPZLimit = 0.0;
}
if (which==1)
return PPZLimit;
else if (which==2)
return dilateParam3 * PPZLimit;
else {
opserr << "FATAL:PressureDependMultiYield02::getPPZLimits: unknown argument value" << endln;
exit(-1);
return 0.0;
}
}
Bug in PressureDependMultiYield02 Material
Moderator: Moderators