diff --git a/Geo/MHexahedron.h b/Geo/MHexahedron.h index 9213bcfb56f08bf9cd84680a190ed80762ae213d..b54b3597a7457ecef2c31711b63e3eb92f32ad6d 100644 --- a/Geo/MHexahedron.h +++ b/Geo/MHexahedron.h @@ -123,44 +123,6 @@ class MHexahedron : public MElement { tmp = _v[4]; _v[4] = _v[6]; _v[6] = tmp; } virtual int getVolumeSign(); - virtual void getShapeFunctions(double u, double v, double w, double s[], int o) - { - s[0] = (1. - u) * (1. - v) * (1. - w) * 0.125; - s[1] = (1. + u) * (1. - v) * (1. - w) * 0.125; - s[2] = (1. + u) * (1. + v) * (1. - w) * 0.125; - s[3] = (1. - u) * (1. + v) * (1. - w) * 0.125; - s[4] = (1. - u) * (1. - v) * (1. + w) * 0.125; - s[5] = (1. + u) * (1. - v) * (1. + w) * 0.125; - s[6] = (1. + u) * (1. + v) * (1. + w) * 0.125; - s[7] = (1. - u) * (1. + v) * (1. + w) * 0.125; - } - virtual void getGradShapeFunctions(double u, double v, double w, double s[][3], int o) - { - s[0][0] = -0.125 * (1. - v) * (1. - w); - s[0][1] = -0.125 * (1. - u) * (1. - w); - s[0][2] = -0.125 * (1. - u) * (1. - v); - s[1][0] = 0.125 * (1. - v) * (1. - w); - s[1][1] = -0.125 * (1. + u) * (1. - w); - s[1][2] = -0.125 * (1. + u) * (1. - v); - s[2][0] = 0.125 * (1. + v) * (1. - w); - s[2][1] = 0.125 * (1. + u) * (1. - w); - s[2][2] = -0.125 * (1. + u) * (1. + v); - s[3][0] = -0.125 * (1. + v) * (1. - w); - s[3][1] = 0.125 * (1. - u) * (1. - w); - s[3][2] = -0.125 * (1. - u) * (1. + v); - s[4][0] = -0.125 * (1. - v) * (1. + w); - s[4][1] = -0.125 * (1. - u) * (1. + w); - s[4][2] = 0.125 * (1. - u) * (1. - v); - s[5][0] = 0.125 * (1. - v) * (1. + w); - s[5][1] = -0.125 * (1. + u) * (1. + w); - s[5][2] = 0.125 * (1. + u) * (1. - v); - s[6][0] = 0.125 * (1. + v) * (1. + w); - s[6][1] = 0.125 * (1. + u) * (1. + w); - s[6][2] = 0.125 * (1. + u) * (1. + v); - s[7][0] = -0.125 * (1. + v) * (1. + w); - s[7][1] = 0.125 * (1. - u) * (1. + w); - s[7][2] = 0.125 * (1. - u) * (1. + v); - } virtual void getNode(int num, double &u, double &v, double &w) { switch(num) { @@ -501,122 +463,6 @@ class MHexahedron27 : public MHexahedron { { num < 8 ? MHexahedron::getNode(num, u, v, w) : MElement::getNode(num, u, v, w); } - - virtual void getShapeFunctions(double u, double v, double w, double s[], int o) - { - s[0] = 0.125*u*(u-1.)*v*(v-1.)*w*(w-1.); - s[1] = 0.125*u*(u+1.)*v*(v-1.)*w*(w-1.); - s[2] = 0.125*u*(u+1.)*v*(v+1.)*w*(w-1.); - s[3] = 0.125*u*(u-1.)*v*(v+1.)*w*(w-1.); - s[4] = 0.125*u*(u-1.)*v*(v-1.)*w*(w+1.); - s[5] = 0.125*u*(u+1.)*v*(v-1.)*w*(w+1.); - s[6] = 0.125*u*(u+1.)*v*(v+1.)*w*(w+1.); - s[7] = 0.125*u*(u-1.)*v*(v+1.)*w*(w+1.); - s[8] = 0.25*(1.-u*u)*v*(v-1.)*w*(w-1.); - s[9] = 0.25*u*(u-1.)*(1.-v*v)*w*(w-1.); - s[10] = 0.25*u*(u-1.)*v*(v-1.)*(1.-w*w); - s[11] = 0.25*u*(u+1.)*(1.-v*v)*w*(w-1.); - s[12] = 0.25*u*(u+1.)*v*(v-1.)*(1.-w*w); - s[13] = 0.25*(1.-u*u)*v*(v+1.)*w*(w-1.); - s[14] = 0.25*u*(u+1.)*v*(v+1.)*(1.-w*w); - s[15] = 0.25*u*(u-1.)*v*(v+1.)*(1.-w*w); - s[16] = 0.25*(1.-u*u)*v*(v-1.)*w*(w+1.); - s[17] = 0.25*u*(u-1.)*(1.-v*v)*w*(w+1.); - s[18] = 0.25*u*(u+1.)*(1.-v*v)*w*(w+1.); - s[19] = 0.25*(1.-u*u)*v*(v+1.)*w*(w+1.); - s[20] = 0.5*(1.-u*u)*(1.-v*v)*w*(w-1.); - s[21] = 0.5*(1.-u*u)*v*(v-1.)*(1.-w*w); - s[22] = 0.5*u*(u-1.)*(1.-v*v)*(1.-w*w); - s[23] = 0.5*u*(u+1.)*(1.-v*v)*(1.-w*w); - s[24] = 0.5*(1.-u*u)*v*(v+1.)*(1.-w*w); - s[25] = 0.5*(1.-u*u)*(1.-v*v)*w*(w+1.); - s[26] = (1.-u*u)*(1.-v*v)*(1.-w*w); - } - virtual void getGradShapeFunctions(double u, double v, double w, double s[][3], int o) - { - s[0][0] = 0.125*(2.*u-1.)*v*(v-1.)*w*(w-1.); - s[0][1] = 0.125*u*(u-1.)*(2.*v-1.)*w*(w-1.); - s[0][2] = 0.125*u*(u-1.)*v*(v-1.)*(2.*w-1.); - s[1][0] = 0.125*(2.*u+1.)*v*(v-1.)*w*(w-1.); - s[1][1] = 0.125*u*(u+1.)*(2.*v-1.)*w*(w-1.); - s[1][2] = 0.125*u*(u+1.)*v*(v-1.)*(2.*w-1.); - s[2][0] = 0.125*(2.*u+1.)*v*(v+1.)*w*(w-1.); - s[2][1] = 0.125*u*(u+1.)*(2.*v+1.)*w*(w-1.); - s[2][2] = 0.125*u*(u+1.)*v*(v+1.)*(2.*w-1.); - s[3][0] = 0.125*(2.*u-1.)*v*(v+1.)*w*(w-1.); - s[3][1] = 0.125*u*(u-1.)*(2.*v+1.)*w*(w-1.); - s[3][2] = 0.125*u*(u-1.)*v*(v+1.)*(2.*w-1.); - s[4][0] = 0.125*(2.*u-1.)*v*(v-1.)*w*(w+1.); - s[4][1] = 0.125*u*(u-1.)*(2.*v-1.)*w*(w+1.); - s[4][2] = 0.125*u*(u-1.)*v*(v-1.)*(2.*w+1.); - s[5][0] = 0.125*(2.*u+1.)*v*(v-1.)*w*(w+1.); - s[5][1] = 0.125*u*(u+1.)*(2.*v-1.)*w*(w+1.); - s[5][2] = 0.125*u*(u+1.)*v*(v-1.)*(2.*w+1.); - s[6][0] = 0.125*(2.*u+1.)*v*(v+1.)*w*(w+1.); - s[6][1] = 0.125*u*(u+1.)*(2.*v+1.)*w*(w+1.); - s[6][2] = 0.125*u*(u+1.)*v*(v+1.)*(2.*w+1.); - s[7][0] = 0.125*(2.*u-1.)*v*(v+1.)*w*(w+1.); - s[7][1] = 0.125*u*(u-1.)*(2.*v+1.)*w*(w+1.); - s[7][2] = 0.125*u*(u-1.)*v*(v+1.)*(2.*w+1.); - s[8][0] = 0.25*(-2.*u)*v*(v-1.)*w*(w-1.); - s[8][1] = 0.25*(1.-u*u)*(2.*v-1.)*w*(w-1.); - s[8][2] = 0.25*(1.-u*u)*v*(v-1.)*(2.*w-1.); - s[9][0] = 0.25*(2.*u-1.)*(1.-v*v)*w*(w-1.); - s[9][1] = 0.25*u*(u-1.)*(-2.*v)*w*(w-1.); - s[9][2] = 0.25*u*(u-1.)*(1.-v*v)*(2.*w-1.); - s[10][0] = 0.25*(2.*u-1.)*v*(v-1.)*(1.-w*w); - s[10][1] = 0.25*u*(u-1.)*(2.*v-1.)*(1.-w*w); - s[10][2] = 0.25*u*(u-1.)*v*(v-1.)*(-2.*w); - s[11][0] = 0.25*(2.*u+1.)*(1.-v*v)*w*(w-1.); - s[11][1] = 0.25*u*(u+1.)*(-2.*v)*w*(w-1.); - s[11][2] = 0.25*u*(u+1.)*(1.-v*v)*(2.*w-1.); - s[12][0] = 0.25*(2.*u+1.)*v*(v-1.)*(1.-w*w); - s[12][1] = 0.25*u*(u+1.)*(2.*v-1.)*(1.-w*w); - s[12][2] = 0.25*u*(u+1.)*v*(v-1.)*(-2.*w); - s[13][0] = 0.25*(-2.*u)*v*(v+1.)*w*(w-1.); - s[13][1] = 0.25*(1.-u*u)*(2.*v+1.)*w*(w-1.); - s[13][2] = 0.25*(1.-u*u)*v*(v+1.)*(2.*w-1.); - s[14][0] = 0.25*(2.*u+1.)*v*(v+1)*(1.-w*w); - s[14][1] = 0.25*u*(u+1.)*(2.*v+1)*(1.-w*w); - s[14][2] = 0.25*u*(u+1.)*v*(v+1.)*(-2.*w); - s[15][0] = 0.25*(2.*u-1.)*v*(v+1.)*(1.-w*w); - s[15][1] = 0.25*u*(u-1.)*(2.*v+1.)*(1.-w*w); - s[15][2] = 0.25*u*(u-1.)*v*(v+1.)*(-2.*w); - s[16][0] = 0.25*(-2.*u)*v*(v-1.)*w*(w+1.); - s[16][1] = 0.25*(1.-u*u)*(2.*v-1.)*w*(w+1.); - s[16][2] = 0.25*(1.-u*u)*v*(v-1.)*(2.*w+1.); - s[17][0] = 0.25*(2.*u-1.)*(1.-v*v)*w*(w+1.); - s[17][1] = 0.25*u*(u-1.)*(-2.*v)*w*(w+1.); - s[17][2] = 0.25*u*(u-1.)*(1.-v*v)*(2.*w+1.); - s[18][0] = 0.25*(2.*u+1.)*(1.-v*v)*w*(w+1.); - s[18][1] = 0.25*u*(u+1.)*(-2.*v)*w*(w+1.); - s[18][2] = 0.25*u*(u+1.)*(1.-v*v)*(2.*w+1.); - s[19][0] = 0.25*(-2.*u)*v*(v+1.)*w*(w+1.); - s[19][1] = 0.25*(1.-u*u)*(2.*v+1.)*w*(w+1.); - s[19][2] = 0.25*(1.-u*u)*v*(v+1.)*(2.*w+1.); - s[20][0] = 0.5*(-2.*u)*(1.-v*v)*w*(w-1.); - s[20][1] = 0.5*(1.-u*u)*(-2.*v)*w*(w-1.); - s[20][2] = 0.5*(1.-u*u)*(1.-v*v)*(2.*w-1.); - s[21][0] = 0.5*(-2.*u)*v*(v-1.)*(1.-w*w); - s[21][1] = 0.5*(1.-u*u)*(2.*v-1.)*(1.-w*w); - s[21][2] = 0.5*(1.-u*u)*v*(v-1.)*(-2.*w); - s[22][0] = 0.5*(2.*u-1.)*(1.-v*v)*(1.-w*w); - s[22][1] = 0.5*u*(u-1.)*(-2.*v)*(1.-w*w); - s[22][2] = 0.5*u*(u-1.)*(1.-v*v)*(-2.*w); - s[23][0] = 0.5*(2.*u+1.)*(1.-v*v)*(1.-w*w); - s[23][1] = 0.5*u*(u+1.)*(-2.*v)*(1.-w*w); - s[23][2] = 0.5*u*(u+1.)*(1.-v*v)*(-2.*w); - s[24][0] = 0.5*(-2.*u)*v*(v+1.)*(1.-w*w); - s[24][1] = 0.5*(1.-u*u)*(2.*v+1.)*(1.-w*w); - s[24][2] = 0.5*(1.-u*u)*v*(v+1.)*(-2.*w); - s[25][0] = 0.5*(-2.*u)*(1.-v*v)*w*(w+1.); - s[25][1] = 0.5*(1.-u*u)*(-2.*v)*w*(w+1.); - s[25][2] = 0.5*(1.-u*u)*(1.-v*v)*(2.*w+1.); - s[26][0] = (-2.*u)*(1.-v*v)*(1.-w*w); - s[26][1] = (1.-u*u)*(-2.*v)*(1.-w*w); - s[26][2] = (1.-u*u)*(1.-v*v)*(-2.*w); - - } }; /*