Bug in PressureDependMultiYield02 Material

For developers writing C++, Fortran, Java, code who have questions or comments to make.

Moderators: silvia, selimgunay, Moderators

Post Reply
deepakr
Posts: 6
Joined: Mon Jun 30, 2008 4:34 am
Location: Oregon State University

Bug in PressureDependMultiYield02 Material

Post by deepakr »

Hi all,
Recently I have 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;
}
}
Thank You
Post Reply