// Set displacement differentiation matrix bmat. // xi, et - local coordinates, // returns determinant of Jacobian matrix private double setBmatrix(double xi, double et) { // Derivatives of shape functions double det = ShapeQuad2D.deriv(xi, et, ind, xy, dnxy); if (det <= 0) { UTIL.errorMsg("Negative/zero 8Nr element area"); } if (FeModel.stressState == FeModel.StrStates.axisym) { ShapeQuad2D.shape(xi, et, ind, an); r = 0.0; for (int i = 0; i < 8; i++) { r += an[i] * xy[i][0]; } } // Eight blocks of the displacement differentiation // matrix for (int ib = 0; ib < 8; ib++) { bmat[0][2 * ib] = dnxy[ib][0]; bmat[0][2 * ib + 1] = 0.0; bmat[1][2 * ib] = 0.0; bmat[1][2 * ib + 1] = dnxy[ib][1]; bmat[2][2 * ib] = dnxy[ib][1]; bmat[2][2 * ib + 1] = dnxy[ib][0]; if (FeModel.stressState == FeModel.StrStates.axisym) { bmat[3][2 * ib] = an[ib] / r; bmat[3][2 * ib + 1] = 0.0; } } return(det); }