Index: ../trunk-jpl/src/c/classes/Elements/PentaRef.cpp =================================================================== --- ../trunk-jpl/src/c/classes/Elements/PentaRef.cpp (revision 15469) +++ ../trunk-jpl/src/c/classes/Elements/PentaRef.cpp (revision 15470) @@ -70,15 +70,15 @@ GetNodalFunctionsP1Derivatives(&dbasis[0][0],xyz_list, gauss); /*Build B: */ - for (int i=0;icoord3*(1-gauss->coord4)/2.0; /*Build LStokes: */ - for (int i=0;i<3;i++){ - *(LStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+0)=l1l2l3[i]; - *(LStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+1)=0.; - *(LStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+2)=0.; - *(LStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+3)=0.; + for(int i=0;i<3;i++){ + LStokes[num_dof*NUMNODESP1_2d*0+num_dof*i+0] = l1l2l3[i]; + LStokes[num_dof*NUMNODESP1_2d*0+num_dof*i+1] = 0.; + LStokes[num_dof*NUMNODESP1_2d*0+num_dof*i+2] = 0.; + LStokes[num_dof*NUMNODESP1_2d*0+num_dof*i+3] = 0.; - *(LStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+0)=0.; - *(LStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+1)=l1l2l3[i]; - *(LStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+2)=0.; - *(LStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+3)=0.; + LStokes[num_dof*NUMNODESP1_2d*1+num_dof*i+0] = 0.; + LStokes[num_dof*NUMNODESP1_2d*1+num_dof*i+1] = l1l2l3[i]; + LStokes[num_dof*NUMNODESP1_2d*1+num_dof*i+2] = 0.; + LStokes[num_dof*NUMNODESP1_2d*1+num_dof*i+3] = 0.; } } /*}}}*/ /*FUNCTION PentaRef::GetLprimeStokes {{{*/ void PentaRef::GetLprimeStokes(IssmDouble* LprimeStokes, IssmDouble* xyz_list, GaussPenta* gauss){ - - /* - * Compute Lprime matrix. Lprime=[Lp1 Lp2 Lp3] where Lpi is square and of size numdof. + /* Compute Lprime matrix. Lprime=[Lp1 Lp2 Lp3] where Lpi is square and of size numdof. * For node i, Lpi can be expressed in the actual coordinate system * by: * Lpi=[ h 0 0 0]1 @@ -727,73 +713,73 @@ int num_dof=4; IssmDouble l1l2l3[NUMNODESP1_2d]; - IssmDouble dh1dh6[3][NUMNODESP1]; + IssmDouble dbasis[3][NUMNODESP1]; /*Get l1l2l3 in actual coordinate system: */ l1l2l3[0]=gauss->coord1*(1-gauss->coord4)/2.0; l1l2l3[1]=gauss->coord2*(1-gauss->coord4)/2.0; l1l2l3[2]=gauss->coord3*(1-gauss->coord4)/2.0; - GetNodalFunctionsP1Derivatives(&dh1dh6[0][0],xyz_list,gauss); + GetNodalFunctionsP1Derivatives(&dbasis[0][0],xyz_list,gauss); /*Build LprimeStokes: */ - for (i=0;i<3;i++){ - *(LprimeStokes+num_dof*NUMNODESP1_2d*0+num_dof*i)=l1l2l3[i]; //LprimeStokes[0][NDOF2*i]=dh1dh3[0][i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+1)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+2)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+3)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*1+num_dof*i)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+1)=l1l2l3[i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+2)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+3)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*2+num_dof*i)=l1l2l3[i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*2+num_dof*i+1)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*2+num_dof*i+2)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*2+num_dof*i+3)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*3+num_dof*i)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*3+num_dof*i+1)=l1l2l3[i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*3+num_dof*i+2)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*3+num_dof*i+3)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*4+num_dof*i)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*4+num_dof*i+1)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*4+num_dof*i+2)=l1l2l3[i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*4+num_dof*i+3)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*5+num_dof*i)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*5+num_dof*i+1)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*5+num_dof*i+2)=l1l2l3[i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*5+num_dof*i+3)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*6+num_dof*i)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*6+num_dof*i+1)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*6+num_dof*i+2)=dh1dh6[2][i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*6+num_dof*i+3)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*7+num_dof*i)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*7+num_dof*i+1)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*7+num_dof*i+2)=dh1dh6[2][i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*7+num_dof*i+3)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*8+num_dof*i)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*8+num_dof*i+1)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*8+num_dof*i+2)=dh1dh6[2][i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*8+num_dof*i+3)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*9+num_dof*i)=dh1dh6[2][i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*9+num_dof*i+1)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*9+num_dof*i+2)=dh1dh6[0][i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*9+num_dof*i+3)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*10+num_dof*i)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*10+num_dof*i+1)=dh1dh6[2][i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*10+num_dof*i+2)=dh1dh6[1][i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*10+num_dof*i+3)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*11+num_dof*i)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*11+num_dof*i+1)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*11+num_dof*i+2)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*11+num_dof*i+3)=l1l2l3[i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*12+num_dof*i)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*12+num_dof*i+1)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*12+num_dof*i+2)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*12+num_dof*i+3)=l1l2l3[i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*13+num_dof*i)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*13+num_dof*i+1)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*13+num_dof*i+2)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*13+num_dof*i+3)=l1l2l3[i]; + for(int i=0;i<3;i++){ + LprimeStokes[num_dof*NUMNODESP1_2d*0+num_dof*i+0] = l1l2l3[i]; + LprimeStokes[num_dof*NUMNODESP1_2d*0+num_dof*i+1] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*0+num_dof*i+2] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*0+num_dof*i+3] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*1+num_dof*i+0] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*1+num_dof*i+1] = l1l2l3[i]; + LprimeStokes[num_dof*NUMNODESP1_2d*1+num_dof*i+2] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*1+num_dof*i+3] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*2+num_dof*i+0] = l1l2l3[i]; + LprimeStokes[num_dof*NUMNODESP1_2d*2+num_dof*i+1] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*2+num_dof*i+2] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*2+num_dof*i+3] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*3+num_dof*i+0] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*3+num_dof*i+1] = l1l2l3[i]; + LprimeStokes[num_dof*NUMNODESP1_2d*3+num_dof*i+2] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*3+num_dof*i+3] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*4+num_dof*i+0] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*4+num_dof*i+1] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*4+num_dof*i+2] = l1l2l3[i]; + LprimeStokes[num_dof*NUMNODESP1_2d*4+num_dof*i+3] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*5+num_dof*i+0] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*5+num_dof*i+1] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*5+num_dof*i+2] = l1l2l3[i]; + LprimeStokes[num_dof*NUMNODESP1_2d*5+num_dof*i+3] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*6+num_dof*i+0] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*6+num_dof*i+1] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*6+num_dof*i+2] = dbasis[2][i]; + LprimeStokes[num_dof*NUMNODESP1_2d*6+num_dof*i+3] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*7+num_dof*i+0] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*7+num_dof*i+1] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*7+num_dof*i+2] = dbasis[2][i]; + LprimeStokes[num_dof*NUMNODESP1_2d*7+num_dof*i+3] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*8+num_dof*i+0] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*8+num_dof*i+1] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*8+num_dof*i+2] = dbasis[2][i]; + LprimeStokes[num_dof*NUMNODESP1_2d*8+num_dof*i+3] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*9+num_dof*i+0] = dbasis[2][i]; + LprimeStokes[num_dof*NUMNODESP1_2d*9+num_dof*i+1] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*9+num_dof*i+2] = dbasis[0][i]; + LprimeStokes[num_dof*NUMNODESP1_2d*9+num_dof*i+3] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*10+num_dof*i+0] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*10+num_dof*i+1] = dbasis[2][i]; + LprimeStokes[num_dof*NUMNODESP1_2d*10+num_dof*i+2] = dbasis[1][i]; + LprimeStokes[num_dof*NUMNODESP1_2d*10+num_dof*i+3] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*11+num_dof*i+0] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*11+num_dof*i+1] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*11+num_dof*i+2] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*11+num_dof*i+3] = l1l2l3[i]; + LprimeStokes[num_dof*NUMNODESP1_2d*12+num_dof*i+0] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*12+num_dof*i+1] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*12+num_dof*i+2] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*12+num_dof*i+3] = l1l2l3[i]; + LprimeStokes[num_dof*NUMNODESP1_2d*13+num_dof*i+0] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*13+num_dof*i+1] = 0; + LprimeStokes[num_dof*NUMNODESP1_2d*13+num_dof*i+2] = 0; + LprimeStokes[num_dof*NUMNODESP1_2d*13+num_dof*i+3] = l1l2l3[i]; } } /*}}}*/ @@ -814,9 +800,7 @@ * where h is the interpolation function for node i. */ - int i; int num_dof=2; - IssmDouble l1l2l3[NUMNODESP1_2d]; /*Get l1l2l3 in actual coordinate system: */ @@ -825,32 +809,29 @@ l1l2l3[2]=gauss->coord3*(1-gauss->coord4)/2.0; /*Build LStokes: */ - for (i=0;i<3;i++){ - *(LStokes+num_dof*NUMNODESP1_2d*0+num_dof*i)=l1l2l3[i]; //LStokes[0][NDOF2*i]=dh1dh3[0][i]; - *(LStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+1)=0; - *(LStokes+num_dof*NUMNODESP1_2d*1+num_dof*i)=0; - *(LStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+1)=l1l2l3[i]; - *(LStokes+num_dof*NUMNODESP1_2d*2+num_dof*i)=l1l2l3[i]; - *(LStokes+num_dof*NUMNODESP1_2d*2+num_dof*i+1)=0; - *(LStokes+num_dof*NUMNODESP1_2d*3+num_dof*i)=0; - *(LStokes+num_dof*NUMNODESP1_2d*3+num_dof*i+1)=l1l2l3[i]; - *(LStokes+num_dof*NUMNODESP1_2d*4+num_dof*i)=l1l2l3[i]; - *(LStokes+num_dof*NUMNODESP1_2d*4+num_dof*i+1)=0; - *(LStokes+num_dof*NUMNODESP1_2d*5+num_dof*i)=0; - *(LStokes+num_dof*NUMNODESP1_2d*5+num_dof*i+1)=l1l2l3[i]; - *(LStokes+num_dof*NUMNODESP1_2d*6+num_dof*i)=l1l2l3[i]; - *(LStokes+num_dof*NUMNODESP1_2d*6+num_dof*i+1)=0; - *(LStokes+num_dof*NUMNODESP1_2d*7+num_dof*i)=0; - *(LStokes+num_dof*NUMNODESP1_2d*7+num_dof*i+1)=l1l2l3[i]; - + for(int i=0;i<3;i++){ + LStokes[num_dof*NUMNODESP1_2d*0+num_dof*i+0] = l1l2l3[i]; + LStokes[num_dof*NUMNODESP1_2d*0+num_dof*i+1] = 0; + LStokes[num_dof*NUMNODESP1_2d*1+num_dof*i+0] = 0; + LStokes[num_dof*NUMNODESP1_2d*1+num_dof*i+1] = l1l2l3[i]; + LStokes[num_dof*NUMNODESP1_2d*2+num_dof*i+0] = l1l2l3[i]; + LStokes[num_dof*NUMNODESP1_2d*2+num_dof*i+1] = 0; + LStokes[num_dof*NUMNODESP1_2d*3+num_dof*i+0] = 0; + LStokes[num_dof*NUMNODESP1_2d*3+num_dof*i+1] = l1l2l3[i]; + LStokes[num_dof*NUMNODESP1_2d*4+num_dof*i+0] = l1l2l3[i]; + LStokes[num_dof*NUMNODESP1_2d*4+num_dof*i+1] = 0; + LStokes[num_dof*NUMNODESP1_2d*5+num_dof*i+0] = 0; + LStokes[num_dof*NUMNODESP1_2d*5+num_dof*i+1] = l1l2l3[i]; + LStokes[num_dof*NUMNODESP1_2d*6+num_dof*i+0] = l1l2l3[i]; + LStokes[num_dof*NUMNODESP1_2d*6+num_dof*i+1] = 0; + LStokes[num_dof*NUMNODESP1_2d*7+num_dof*i+0] = 0; + LStokes[num_dof*NUMNODESP1_2d*7+num_dof*i+1] = l1l2l3[i]; } } /*}}}*/ /*FUNCTION PentaRef::GetLprimeMacAyealStokes {{{*/ void PentaRef::GetLprimeMacAyealStokes(IssmDouble* LprimeStokes, IssmDouble* xyz_list, GaussPenta* gauss){ - - /* - * Compute Lprime matrix. Lprime=[Lp1 Lp2 Lp3] where Lpi is square and of size numdof. + /* Compute Lprime matrix. Lprime=[Lp1 Lp2 Lp3] where Lpi is square and of size numdof. * For node i, Lpi can be expressed in the actual coordinate system * by: * Lpi=[ h 0 0 0] @@ -863,60 +844,57 @@ * [ 0 0 0 h] * where h is the interpolation function for node i. */ - int i; int num_dof=4; - IssmDouble l1l2l3[NUMNODESP1_2d]; - IssmDouble dh1dh6[3][NUMNODESP1]; + IssmDouble dbasis[3][NUMNODESP1]; /*Get l1l2l3 in actual coordinate system: */ l1l2l3[0]=gauss->coord1*(1-gauss->coord4)/2.0; l1l2l3[1]=gauss->coord2*(1-gauss->coord4)/2.0; l1l2l3[2]=gauss->coord3*(1-gauss->coord4)/2.0; - GetNodalFunctionsP1Derivatives(&dh1dh6[0][0],xyz_list,gauss); + GetNodalFunctionsP1Derivatives(&dbasis[0][0],xyz_list,gauss); /*Build LprimeStokes: */ - for (i=0;i<3;i++){ - *(LprimeStokes+num_dof*NUMNODESP1_2d*0+num_dof*i)=l1l2l3[i]; //LprimeStokes[0][NDOF2*i]=dh1dh3[0][i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+1)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+2)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+3)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*1+num_dof*i)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+1)=l1l2l3[i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+2)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+3)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*2+num_dof*i)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*2+num_dof*i+1)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*2+num_dof*i+2)=l1l2l3[i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*2+num_dof*i+3)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*3+num_dof*i)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*3+num_dof*i+1)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*3+num_dof*i+2)=l1l2l3[i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*3+num_dof*i+3)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*4+num_dof*i)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*4+num_dof*i+1)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*4+num_dof*i+2)=dh1dh6[2][i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*4+num_dof*i+3)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*5+num_dof*i)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*5+num_dof*i+1)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*5+num_dof*i+2)=dh1dh6[2][i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*5+num_dof*i+3)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*6+num_dof*i)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*6+num_dof*i+1)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*6+num_dof*i+2)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*6+num_dof*i+3)=l1l2l3[i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*7+num_dof*i)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*7+num_dof*i+1)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*7+num_dof*i+2)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*7+num_dof*i+3)=l1l2l3[i]; + for(int i=0;i<3;i++){ + LprimeStokes[num_dof*NUMNODESP1_2d*0+num_dof*i+0] = l1l2l3[i]; + LprimeStokes[num_dof*NUMNODESP1_2d*0+num_dof*i+1] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*0+num_dof*i+2] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*0+num_dof*i+3] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*1+num_dof*i+0] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*1+num_dof*i+1] = l1l2l3[i]; + LprimeStokes[num_dof*NUMNODESP1_2d*1+num_dof*i+2] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*1+num_dof*i+3] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*2+num_dof*i+0] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*2+num_dof*i+1] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*2+num_dof*i+2] = l1l2l3[i]; + LprimeStokes[num_dof*NUMNODESP1_2d*2+num_dof*i+3] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*3+num_dof*i+0] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*3+num_dof*i+1] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*3+num_dof*i+2] = l1l2l3[i]; + LprimeStokes[num_dof*NUMNODESP1_2d*3+num_dof*i+3] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*4+num_dof*i+0] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*4+num_dof*i+1] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*4+num_dof*i+2] = dbasis[2][i]; + LprimeStokes[num_dof*NUMNODESP1_2d*4+num_dof*i+3] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*5+num_dof*i+0] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*5+num_dof*i+1] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*5+num_dof*i+2] = dbasis[2][i]; + LprimeStokes[num_dof*NUMNODESP1_2d*5+num_dof*i+3] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*6+num_dof*i+0] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*6+num_dof*i+1] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*6+num_dof*i+2] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*6+num_dof*i+3] = l1l2l3[i]; + LprimeStokes[num_dof*NUMNODESP1_2d*7+num_dof*i+0] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*7+num_dof*i+1] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*7+num_dof*i+2] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*7+num_dof*i+3] = l1l2l3[i]; } } /*}}}*/ /*FUNCTION PentaRef::GetLStokesMacAyeal {{{*/ void PentaRef::GetLStokesMacAyeal(IssmDouble* LStokes, GaussPenta* gauss){ - /* - * Compute L matrix. L=[L1 L2 L3] where Li is square and of size numdof. + /* Compute L matrix. L=[L1 L2 L3] where Li is square and of size numdof. * For node i, Li can be expressed in the actual coordinate system * by: * Li=[ h 0 0 0] @@ -926,9 +904,7 @@ * where h is the interpolation function for node i. */ - int i; int num_dof=4; - IssmDouble l1l2l3[NUMNODESP1_2d]; /*Get l1l2l3 in actual coordinate system: */ @@ -937,32 +913,29 @@ l1l2l3[2]=gauss->coord3*(1-gauss->coord4)/2.0; /*Build LStokes: */ - for (i=0;i<3;i++){ - *(LStokes+num_dof*NUMNODESP1_2d*0+num_dof*i)=l1l2l3[i]; //LStokes[0][NDOF2*i]=dh1dh3[0][i]; - *(LStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+1)=0; - *(LStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+2)=0; - *(LStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+3)=0; - *(LStokes+num_dof*NUMNODESP1_2d*1+num_dof*i)=0; - *(LStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+1)=l1l2l3[i]; - *(LStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+2)=0; - *(LStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+3)=0; - *(LStokes+num_dof*NUMNODESP1_2d*2+num_dof*i)=0; - *(LStokes+num_dof*NUMNODESP1_2d*2+num_dof*i+1)=0; - *(LStokes+num_dof*NUMNODESP1_2d*2+num_dof*i+2)=l1l2l3[i]; - *(LStokes+num_dof*NUMNODESP1_2d*2+num_dof*i+3)=0; - *(LStokes+num_dof*NUMNODESP1_2d*3+num_dof*i)=0; - *(LStokes+num_dof*NUMNODESP1_2d*3+num_dof*i+1)=0; - *(LStokes+num_dof*NUMNODESP1_2d*3+num_dof*i+2)=l1l2l3[i]; - *(LStokes+num_dof*NUMNODESP1_2d*3+num_dof*i+3)=0; - + for(int i=0;i<3;i++){ + LStokes[num_dof*NUMNODESP1_2d*0+num_dof*i+0] = l1l2l3[i]; + LStokes[num_dof*NUMNODESP1_2d*0+num_dof*i+1] = 0.; + LStokes[num_dof*NUMNODESP1_2d*0+num_dof*i+2] = 0.; + LStokes[num_dof*NUMNODESP1_2d*0+num_dof*i+3] = 0.; + LStokes[num_dof*NUMNODESP1_2d*1+num_dof*i+0] = 0.; + LStokes[num_dof*NUMNODESP1_2d*1+num_dof*i+1] = l1l2l3[i]; + LStokes[num_dof*NUMNODESP1_2d*1+num_dof*i+2] = 0.; + LStokes[num_dof*NUMNODESP1_2d*1+num_dof*i+3] = 0.; + LStokes[num_dof*NUMNODESP1_2d*2+num_dof*i+0] = 0.; + LStokes[num_dof*NUMNODESP1_2d*2+num_dof*i+1] = 0.; + LStokes[num_dof*NUMNODESP1_2d*2+num_dof*i+2] = l1l2l3[i]; + LStokes[num_dof*NUMNODESP1_2d*2+num_dof*i+3] = 0.; + LStokes[num_dof*NUMNODESP1_2d*3+num_dof*i+0] = 0.; + LStokes[num_dof*NUMNODESP1_2d*3+num_dof*i+1] = 0.; + LStokes[num_dof*NUMNODESP1_2d*3+num_dof*i+2] = l1l2l3[i]; + LStokes[num_dof*NUMNODESP1_2d*3+num_dof*i+3] = 0.; } } /*}}}*/ /*FUNCTION PentaRef::GetLprimeStokesMacAyeal {{{*/ void PentaRef::GetLprimeStokesMacAyeal(IssmDouble* LprimeStokes, IssmDouble* xyz_list, GaussPenta* gauss){ - - /* - * Compute Lprime matrix. Lprime=[Lp1 Lp2 Lp3] where Lpi is square and of size numdof. + /* Compute Lprime matrix. Lprime=[Lp1 Lp2 Lp3] where Lpi is square and of size numdof. * For node i, Lpi can be expressed in the actual coordinate system * by: * Lpi=[ h 0 ] @@ -971,87 +944,80 @@ * [ 0 h ] * where h is the interpolation function for node i. */ - int i; int num_dof=2; - IssmDouble l1l2l3[NUMNODESP1_2d]; - IssmDouble dh1dh6[3][NUMNODESP1]; + IssmDouble dbasis[3][NUMNODESP1]; /*Get l1l2l3 in actual coordinate system: */ l1l2l3[0]=gauss->coord1*(1-gauss->coord4)/2.0; l1l2l3[1]=gauss->coord2*(1-gauss->coord4)/2.0; l1l2l3[2]=gauss->coord3*(1-gauss->coord4)/2.0; + GetNodalFunctionsP1Derivatives(&dbasis[0][0],xyz_list,gauss); - GetNodalFunctionsP1Derivatives(&dh1dh6[0][0],xyz_list,gauss); - /*Build LprimeStokes: */ - for (i=0;i<3;i++){ - *(LprimeStokes+num_dof*NUMNODESP1_2d*0+num_dof*i)=l1l2l3[i]; //LprimeStokes[0][NDOF2*i]=dh1dh3[0][i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*0+num_dof*i+1)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*1+num_dof*i)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*1+num_dof*i+1)=l1l2l3[i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*2+num_dof*i)=l1l2l3[i]; - *(LprimeStokes+num_dof*NUMNODESP1_2d*2+num_dof*i+1)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*3+num_dof*i)=0; - *(LprimeStokes+num_dof*NUMNODESP1_2d*3+num_dof*i+1)=l1l2l3[i]; + for(int i=0;i<3;i++){ + LprimeStokes[num_dof*NUMNODESP1_2d*0+num_dof*i+0] = l1l2l3[i]; + LprimeStokes[num_dof*NUMNODESP1_2d*0+num_dof*i+1] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*1+num_dof*i+0] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*1+num_dof*i+1] = l1l2l3[i]; + LprimeStokes[num_dof*NUMNODESP1_2d*2+num_dof*i+0] = l1l2l3[i]; + LprimeStokes[num_dof*NUMNODESP1_2d*2+num_dof*i+1] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*3+num_dof*i+0] = 0.; + LprimeStokes[num_dof*NUMNODESP1_2d*3+num_dof*i+1] = l1l2l3[i]; } } /*}}}*/ /*FUNCTION PentaRef::GetJacobian {{{*/ void PentaRef::GetJacobian(IssmDouble* J, IssmDouble* xyz_list,GaussPenta* gauss){ - /*The Jacobian is constant over the element, discard the gaussian points. * J is assumed to have been allocated of size NDOF2xNDOF2.*/ - IssmDouble A1,A2,A3; //area coordinates - IssmDouble xi,eta,zi; //parametric coordinates - + IssmDouble A1,A2,A3; // area coordinates + IssmDouble xi,eta,zi; // parametric coordinates IssmDouble x1,x2,x3,x4,x5,x6; IssmDouble y1,y2,y3,y4,y5,y6; IssmDouble z1,z2,z3,z4,z5,z6; /*Figure out xi,eta and zi (parametric coordinates), for this gaussian point: */ - A1=gauss->coord1; - A2=gauss->coord2; - A3=gauss->coord3; - + A1 = gauss->coord1; + A2 = gauss->coord2; + A3 = gauss->coord3; xi = A2-A1; eta = SQRT3*A3; zi = gauss->coord4; - x1=*(xyz_list+3*0+0); - x2=*(xyz_list+3*1+0); - x3=*(xyz_list+3*2+0); - x4=*(xyz_list+3*3+0); - x5=*(xyz_list+3*4+0); - x6=*(xyz_list+3*5+0); + x1=xyz_list[3*0+0]; + x2=xyz_list[3*1+0]; + x3=xyz_list[3*2+0]; + x4=xyz_list[3*3+0]; + x5=xyz_list[3*4+0]; + x6=xyz_list[3*5+0]; - y1=*(xyz_list+3*0+1); - y2=*(xyz_list+3*1+1); - y3=*(xyz_list+3*2+1); - y4=*(xyz_list+3*3+1); - y5=*(xyz_list+3*4+1); - y6=*(xyz_list+3*5+1); + y1=xyz_list[3*0+1]; + y2=xyz_list[3*1+1]; + y3=xyz_list[3*2+1]; + y4=xyz_list[3*3+1]; + y5=xyz_list[3*4+1]; + y6=xyz_list[3*5+1]; - z1=*(xyz_list+3*0+2); - z2=*(xyz_list+3*1+2); - z3=*(xyz_list+3*2+2); - z4=*(xyz_list+3*3+2); - z5=*(xyz_list+3*4+2); - z6=*(xyz_list+3*5+2); + z1=xyz_list[3*0+2]; + z2=xyz_list[3*1+2]; + z3=xyz_list[3*2+2]; + z4=xyz_list[3*3+2]; + z5=xyz_list[3*4+2]; + z6=xyz_list[3*5+2]; - *(J+NDOF3*0+0)=0.25*(x1-x2-x4+x5)*zi+0.25*(-x1+x2-x4+x5); - *(J+NDOF3*1+0)=SQRT3/12.0*(x1+x2-2*x3-x4-x5+2*x6)*zi+SQRT3/12.0*(-x1-x2+2*x3-x4-x5+2*x6); - *(J+NDOF3*2+0)=SQRT3/12.0*(x1+x2-2*x3-x4-x5+2*x6)*eta+1/4*(x1-x2-x4+x5)*xi +0.25*(-x1+x5-x2+x4); + J[NDOF3*0+0] = 0.25*(x1-x2-x4+x5)*zi+0.25*(-x1+x2-x4+x5); + J[NDOF3*1+0] = SQRT3/12.0*(x1+x2-2*x3-x4-x5+2*x6)*zi+SQRT3/12.0*(-x1-x2+2*x3-x4-x5+2*x6); + J[NDOF3*2+0] = SQRT3/12.0*(x1+x2-2*x3-x4-x5+2*x6)*eta+1/4*(x1-x2-x4+x5)*xi +0.25*(-x1+x5-x2+x4); - *(J+NDOF3*0+1)=0.25*(y1-y2-y4+y5)*zi+0.25*(-y1+y2-y4+y5); - *(J+NDOF3*1+1)=SQRT3/12.0*(y1+y2-2*y3-y4-y5+2*y6)*zi+SQRT3/12.0*(-y1-y2+2*y3-y4-y5+2*y6); - *(J+NDOF3*2+1)=SQRT3/12.0*(y1+y2-2*y3-y4-y5+2*y6)*eta+0.25*(y1-y2-y4+y5)*xi+0.25*(y4-y1+y5-y2); + J[NDOF3*0+1] = 0.25*(y1-y2-y4+y5)*zi+0.25*(-y1+y2-y4+y5); + J[NDOF3*1+1] = SQRT3/12.0*(y1+y2-2*y3-y4-y5+2*y6)*zi+SQRT3/12.0*(-y1-y2+2*y3-y4-y5+2*y6); + J[NDOF3*2+1] = SQRT3/12.0*(y1+y2-2*y3-y4-y5+2*y6)*eta+0.25*(y1-y2-y4+y5)*xi+0.25*(y4-y1+y5-y2); - *(J+NDOF3*0+2)=0.25*(z1-z2-z4+z5)*zi+0.25*(-z1+z2-z4+z5); - *(J+NDOF3*1+2)=SQRT3/12.0*(z1+z2-2*z3-z4-z5+2*z6)*zi+SQRT3/12.0*(-z1-z2+2*z3-z4-z5+2*z6); - *(J+NDOF3*2+2)=SQRT3/12.0*(z1+z2-2*z3-z4-z5+2*z6)*eta+0.25*(z1-z2-z4+z5)*xi+0.25*(-z1+z5-z2+z4); - + J[NDOF3*0+2] = 0.25*(z1-z2-z4+z5)*zi+0.25*(-z1+z2-z4+z5); + J[NDOF3*1+2] = SQRT3/12.0*(z1+z2-2*z3-z4-z5+2*z6)*zi+SQRT3/12.0*(-z1-z2+2*z3-z4-z5+2*z6); + J[NDOF3*2+2] = SQRT3/12.0*(z1+z2-2*z3-z4-z5+2*z6)*eta+0.25*(z1-z2-z4+z5)*xi+0.25*(-z1+z5-z2+z4); } /*}}}*/ /*FUNCTION PentaRef::GetJacobianDeterminant {{{*/ @@ -1074,20 +1040,18 @@ /*The Jacobian determinant is constant over the element, discard the gaussian points. * J is assumed to have been allocated of size NDOF2xNDOF2.*/ - IssmDouble x1,x2,x3,y1,y2,y3,z1,z2,z3; + IssmDouble x1=xyz_list[3*0+0]; + IssmDouble y1=xyz_list[3*0+1]; + IssmDouble z1=xyz_list[3*0+2]; + IssmDouble x2=xyz_list[3*1+0]; + IssmDouble y2=xyz_list[3*1+1]; + IssmDouble z2=xyz_list[3*1+2]; + IssmDouble x3=xyz_list[3*2+0]; + IssmDouble y3=xyz_list[3*2+1]; + IssmDouble z3=xyz_list[3*2+2]; - x1=*(xyz_list+3*0+0); - y1=*(xyz_list+3*0+1); - z1=*(xyz_list+3*0+2); - x2=*(xyz_list+3*1+0); - y2=*(xyz_list+3*1+1); - z2=*(xyz_list+3*1+2); - x3=*(xyz_list+3*2+0); - y3=*(xyz_list+3*2+1); - z3=*(xyz_list+3*2+2); - /*Jdet = norm( AB ^ AC ) / (2 * area of the reference triangle), with areaRef=sqrt(3) */ - *Jdet=SQRT3/6.0*pow(pow(((y2-y1)*(z3-z1)-(z2-z1)*(y3-y1)),2.0)+pow(((z2-z1)*(x3-x1)-(x2-x1)*(z3-z1)),2.0)+pow(((x2-x1)*(y3-y1)-(y2-y1)*(x3-x1)),2.0),0.5); + *Jdet=SQRT3/6.*pow(pow(((y2-y1)*(z3-z1)-(z2-z1)*(y3-y1)),2)+pow(((z2-z1)*(x3-x1)-(x2-x1)*(z3-z1)),2)+pow(((x2-x1)*(y3-y1)-(y2-y1)*(x3-x1)),2),0.5); if(*Jdet<0) _error_("negative jacobian determinant!"); } /*}}}* @@ -1096,16 +1060,14 @@ /*The Jacobian determinant is constant over the element, discard the gaussian points. * J is assumed to have been allocated of size NDOF2xNDOF2.*/ - IssmDouble x1,x2,y1,y2,z1,z2; + IssmDouble x1=xyz_list[3*0+0]; + IssmDouble y1=xyz_list[3*0+1]; + IssmDouble z1=xyz_list[3*0+2]; + IssmDouble x2=xyz_list[3*1+0]; + IssmDouble y2=xyz_list[3*1+1]; + IssmDouble z2=xyz_list[3*1+2]; - x1=*(xyz_list+3*0+0); - y1=*(xyz_list+3*0+1); - z1=*(xyz_list+3*0+2); - x2=*(xyz_list+3*1+0); - y2=*(xyz_list+3*1+1); - z2=*(xyz_list+3*1+2); - - *Jdet=1.0/2.0*sqrt(pow(x2-x1,2.) + pow(y2-y1,2.) + pow(z2-z1,2.)); + *Jdet=.5*sqrt(pow(x2-x1,2) + pow(y2-y1,2) + pow(z2-z1,2)); if(*Jdet<0) _error_("negative jacobian determinant!"); } @@ -1274,21 +1236,21 @@ } /*}}}*/ /*FUNCTION PentaRef::GetNodalFunctionsMINIDerivatives{{{*/ -void PentaRef::GetNodalFunctionsMINIDerivatives(IssmDouble* dh1dh7,IssmDouble* xyz_list, GaussPenta* gauss){ +void PentaRef::GetNodalFunctionsMINIDerivatives(IssmDouble* dbasismini,IssmDouble* xyz_list, GaussPenta* gauss){ /*This routine returns the values of the nodal functions derivatives (with respect to the * actual coordinate system): */ - IssmDouble dh1dh7_ref[3][NUMNODESMINI]; + IssmDouble dbasismini_ref[3][NUMNODESMINI]; IssmDouble Jinv[3][3]; /*Get derivative values with respect to parametric coordinate system: */ - GetNodalFunctionsMINIDerivativesReference(&dh1dh7_ref[0][0], gauss); + GetNodalFunctionsMINIDerivativesReference(&dbasismini_ref[0][0], gauss); /*Get Jacobian invert: */ GetJacobianInvert(&Jinv[0][0], xyz_list, gauss); - /*Build dh1dh6: + /*Build dbasis: * * [dhi/dx]= Jinv'*[dhi/dr] * [dhi/dy] [dhi/ds] @@ -1296,9 +1258,9 @@ */ for(int i=0;icoord1*(1-gauss->coord4)/2.0; - l1l6[1]=gauss->coord2*(1-gauss->coord4)/2.0; - l1l6[2]=gauss->coord3*(1-gauss->coord4)/2.0; - l1l6[3]=gauss->coord1*(1+gauss->coord4)/2.0; - l1l6[4]=gauss->coord2*(1+gauss->coord4)/2.0; - l1l6[5]=gauss->coord3*(1+gauss->coord4)/2.0; + basis[0]=gauss->coord1*(1-gauss->coord4)/2.0; + basis[1]=gauss->coord2*(1-gauss->coord4)/2.0; + basis[2]=gauss->coord3*(1-gauss->coord4)/2.0; + basis[3]=gauss->coord1*(1+gauss->coord4)/2.0; + basis[4]=gauss->coord2*(1+gauss->coord4)/2.0; + basis[5]=gauss->coord3*(1+gauss->coord4)/2.0; } /*}}}*/ /*FUNCTION PentaRef::GetNodalFunctionsP1Derivatives {{{*/ -void PentaRef::GetNodalFunctionsP1Derivatives(IssmDouble* dh1dh6,IssmDouble* xyz_list, GaussPenta* gauss){ +void PentaRef::GetNodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list, GaussPenta* gauss){ /*This routine returns the values of the nodal functions derivatives (with respect to the * actual coordinate system): */ - IssmDouble dh1dh6_ref[NDOF3][NUMNODESP1]; + IssmDouble dbasis_ref[NDOF3][NUMNODESP1]; IssmDouble Jinv[NDOF3][NDOF3]; /*Get derivative values with respect to parametric coordinate system: */ - GetNodalFunctionsP1DerivativesReference(&dh1dh6_ref[0][0], gauss); + GetNodalFunctionsP1DerivativesReference(&dbasis_ref[0][0], gauss); /*Get Jacobian invert: */ GetJacobianInvert(&Jinv[0][0], xyz_list, gauss); @@ -1375,9 +1337,9 @@ */ for (int i=0;ielement_type){ case P1Enum: case P1DGEnum: /*Nodal function 1*/ - dbasis[NUMNODESP1*0+0]=-0.5; - dbasis[NUMNODESP1*1+0]=-1.0/(2.0*SQRT3); + dbasis[NUMNODESP1*0+0] = -0.5; + dbasis[NUMNODESP1*1+0] = -1.0/(2.0*SQRT3); /*Nodal function 2*/ - dbasis[NUMNODESP1*0+1]=0.5; - dbasis[NUMNODESP1*1+1]=-1.0/(2.0*SQRT3); + dbasis[NUMNODESP1*0+1] = 0.5; + dbasis[NUMNODESP1*1+1] = -1.0/(2.0*SQRT3); /*Nodal function 3*/ - dbasis[NUMNODESP1*0+2]=0; - dbasis[NUMNODESP1*1+2]=1.0/SQRT3; + dbasis[NUMNODESP1*0+2] = 0; + dbasis[NUMNODESP1*1+2] = 1.0/SQRT3; return; case P2Enum: /*Nodal function 1*/ - dbasis[NUMNODESP2*0+0]=-2.*gauss->coord1 + 0.5; - dbasis[NUMNODESP2*1+0]=-2.*SQRT3/3.*gauss->coord1 + SQRT3/6.; + dbasis[NUMNODESP2*0+0] = -2.*gauss->coord1 + 0.5; + dbasis[NUMNODESP2*1+0] = -2.*SQRT3/3.*gauss->coord1 + SQRT3/6.; /*Nodal function 2*/ - dbasis[NUMNODESP2*0+1]=+2.*gauss->coord2 - 0.5; - dbasis[NUMNODESP2*1+1]=-2.*SQRT3/3.*gauss->coord2 + SQRT3/6.; + dbasis[NUMNODESP2*0+1] = +2.*gauss->coord2 - 0.5; + dbasis[NUMNODESP2*1+1] = -2.*SQRT3/3.*gauss->coord2 + SQRT3/6.; /*Nodal function 3*/ - dbasis[NUMNODESP2*0+2]=0.; - dbasis[NUMNODESP2*1+2]=+4.*SQRT3/3.*gauss->coord3 - SQRT3/3.; + dbasis[NUMNODESP2*0+2] = 0.; + dbasis[NUMNODESP2*1+2] = +4.*SQRT3/3.*gauss->coord3 - SQRT3/3.; /*Nodal function 4*/ - dbasis[NUMNODESP2*0+3]=+2.*gauss->coord3; - dbasis[NUMNODESP2*1+3]=+4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3; + dbasis[NUMNODESP2*0+3] = +2.*gauss->coord3; + dbasis[NUMNODESP2*1+3] = +4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3; /*Nodal function 5*/ - dbasis[NUMNODESP2*0+4]=-2.*gauss->coord3; - dbasis[NUMNODESP2*1+4]=+4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3; + dbasis[NUMNODESP2*0+4] = -2.*gauss->coord3; + dbasis[NUMNODESP2*1+4] = +4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3; /*Nodal function 6*/ - dbasis[NUMNODESP2*0+5]=2.*(gauss->coord1-gauss->coord2); - dbasis[NUMNODESP2*1+5]=-2.*SQRT3/3.*(gauss->coord1+gauss->coord2); + dbasis[NUMNODESP2*0+5] = 2.*(gauss->coord1-gauss->coord2); + dbasis[NUMNODESP2*1+5] = -2.*SQRT3/3.*(gauss->coord1+gauss->coord2); return; default: _error_("Element type "<element_type)<<" not supported yet"); @@ -589,8 +589,8 @@ /*Assign values*/ xDelete(dbasis); - *(p+0)=dpx; - *(p+1)=dpy; + p[0]=dpx; + p[1]=dpy; } /*}}}*/