void ElTawil2D::getGradient(double &gx, double &gy, double x, double y) { // check if the point is on the surface double drift = getDrift(x, y); double loc = forceLocation(drift); double capx = capXdim; double capy = capYdim; if(loc != 0) { opserr << "ERROR - ElTawil2D::getGradient(double &gx, double &gy, double x, double y)\n"; opserr << "Force point not on yield surface, drift = " << drift << " loc = " << loc <<"\n"; // opserr << "\a"; gx = 1.0; gy = 1.0; } else { double a = 10.277;//3.043;//4.29293; //by compatibility, check err in gradient // double yt = 0.95; if(y > ytPos) { gx = 2*a*x/capx; gy = 1; } else if(y < ytNeg) { gx = 2*a*x/capx; gy = -1; //-1*y/capy; <-- why did i write this?// -1 ? } else { // double xVal = x*capx; double yVal = fabs(y*capy); //!! // double yVal = y*capy; //!! gx = 1/xBal; if(x < 0) gx = -1*gx; if(y < 0) gy = -1*(1/pow( fabs(yNegCap), ty))*ty*(pow(yVal,ty-1)); else gy = (1/pow(yPosCap, cz))*cz*(pow(yVal,cz-1)); } } // opserr << "gx = " << gx << ", gy = " << gy << ", capy = " << capy << "\n"; // opserr << "\a"; }
void Hajjar2D::getGradient(double &gx, double &gy, double xi, double yi) { // check if the point is on the surface double drift = getDrift(xi, yi); //!! why is capXdim not here?? /*if(drift < -error) { opserr << "ERROR - Hajjar2D::getGradient(double &gx, double &gy, double x, double y)\n"; opserr << "Point inside the yield surface\n"; opserr << " fx = " << xi << ", fy = " << yi << " drift = " << drift << "\n"; opserr << "\a"; } else if(drift > error) { opserr << "ERROR - Hajjar2D::getGradient(double &gx, double &gy, double x, double y)\n"; opserr << "Point outside the yield surface\n"; opserr << " fx = " << xi << ", fy = " << yi << " drift = " << drift << "\n"; opserr << "\a"; }*/ if(forceLocation(drift)!=0) { opserr << "ERROR - Hajjar2D::getGradient(double &gx, double &gy, double x, double y)\n"; opserr << "Force point not on the yield surface\n"; opserr << " fx = " << xi << ", fy = " << yi << " drift = " << drift << "\n"; opserr << "\a"; } else { double x = xi; double y = yi /*- centroidY*/; gx = 2*c1*x + 2*c3*pow(y, 2)*(x); gy = 2*c2*y + 2*c3*pow(x, 2)*(y); } }