コード例 #1
0
        // 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);
        }