Skip to content
Snippets Groups Projects
Commit 2c4bf7ca authored by Ling Wu's avatar Ling Wu
Browse files

add shape functions for 27-node tetrahedron

parent f3722c4e
No related branches found
No related tags found
No related merge requests found
......@@ -501,6 +501,122 @@ 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);
}
};
/*
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment