Changeset 15637
- Timestamp:
- 07/26/13 10:03:15 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/PentaRef.cpp
r15636 r15637 1096 1096 _assert_(basis); 1097 1097 1098 /*Get current coordinates in reference element*/ 1099 IssmDouble zeta=gauss->coord4; 1100 1098 1101 switch(this->element_type){ 1099 1102 case P1Enum: 1100 1103 case P1DGEnum: 1101 basis[0]=gauss->coord1*(1.- gauss->coord4)/2.;1102 basis[1]=gauss->coord2*(1.- gauss->coord4)/2.;1103 basis[2]=gauss->coord3*(1.- gauss->coord4)/2.;1104 basis[3]=gauss->coord1*(1.+ gauss->coord4)/2.;1105 basis[4]=gauss->coord2*(1.+ gauss->coord4)/2.;1106 basis[5]=gauss->coord3*(1.+ gauss->coord4)/2.;1104 basis[0]=gauss->coord1*(1.-zeta)/2.; 1105 basis[1]=gauss->coord2*(1.-zeta)/2.; 1106 basis[2]=gauss->coord3*(1.-zeta)/2.; 1107 basis[3]=gauss->coord1*(1.+zeta)/2.; 1108 basis[4]=gauss->coord2*(1.+zeta)/2.; 1109 basis[5]=gauss->coord3*(1.+zeta)/2.; 1107 1110 return; 1108 1111 case P1bubbleEnum: 1109 basis[0]=gauss->coord1*(1.- gauss->coord4)/2.;1110 basis[1]=gauss->coord2*(1.- gauss->coord4)/2.;1111 basis[2]=gauss->coord3*(1.- gauss->coord4)/2.;1112 basis[3]=gauss->coord1*(1.+ gauss->coord4)/2.;1113 basis[4]=gauss->coord2*(1.+ gauss->coord4)/2.;1114 basis[5]=gauss->coord3*(1.+ gauss->coord4)/2.;1115 basis[6]=27.*gauss->coord1*gauss->coord2*gauss->coord3*(1.+ gauss->coord4)*(1.-gauss->coord4);1112 basis[0]=gauss->coord1*(1.-zeta)/2.; 1113 basis[1]=gauss->coord2*(1.-zeta)/2.; 1114 basis[2]=gauss->coord3*(1.-zeta)/2.; 1115 basis[3]=gauss->coord1*(1.+zeta)/2.; 1116 basis[4]=gauss->coord2*(1.+zeta)/2.; 1117 basis[5]=gauss->coord3*(1.+zeta)/2.; 1118 basis[6]=27.*gauss->coord1*gauss->coord2*gauss->coord3*(1.+zeta)*(1.-zeta); 1116 1119 return; 1117 1120 case P2xP1Enum: 1118 1121 /*Corner nodes*/ 1119 basis[ 0]=gauss->coord1*(2.*gauss->coord1-1.)*(1.- gauss->coord4)/2.;1120 basis[ 1]=gauss->coord2*(2.*gauss->coord2-1.)*(1.- gauss->coord4)/2.;1121 basis[ 2]=gauss->coord3*(2.*gauss->coord3-1.)*(1.- gauss->coord4)/2.;1122 basis[ 3]=gauss->coord1*(2.*gauss->coord1-1.)*(1.+ gauss->coord4)/2.;1123 basis[ 4]=gauss->coord2*(2.*gauss->coord2-1.)*(1.+ gauss->coord4)/2.;1124 basis[ 5]=gauss->coord3*(2.*gauss->coord3-1.)*(1.+ gauss->coord4)/2.;1122 basis[ 0]=gauss->coord1*(2.*gauss->coord1-1.)*(1.-zeta)/2.; 1123 basis[ 1]=gauss->coord2*(2.*gauss->coord2-1.)*(1.-zeta)/2.; 1124 basis[ 2]=gauss->coord3*(2.*gauss->coord3-1.)*(1.-zeta)/2.; 1125 basis[ 3]=gauss->coord1*(2.*gauss->coord1-1.)*(1.+zeta)/2.; 1126 basis[ 4]=gauss->coord2*(2.*gauss->coord2-1.)*(1.+zeta)/2.; 1127 basis[ 5]=gauss->coord3*(2.*gauss->coord3-1.)*(1.+zeta)/2.; 1125 1128 /*mid-sides of triangles*/ 1126 basis[ 6]=4.*gauss->coord3*gauss->coord2*(1.- gauss->coord4)/2.;1127 basis[ 7]=4.*gauss->coord3*gauss->coord1*(1.- gauss->coord4)/2.;1128 basis[ 8]=4.*gauss->coord1*gauss->coord2*(1.- gauss->coord4)/2.;1129 basis[ 9]=4.*gauss->coord3*gauss->coord2*(1.+ gauss->coord4)/2.;1130 basis[10]=4.*gauss->coord3*gauss->coord1*(1.+ gauss->coord4)/2.;1131 basis[11]=4.*gauss->coord1*gauss->coord2*(1.+ gauss->coord4)/2.;1129 basis[ 6]=4.*gauss->coord3*gauss->coord2*(1.-zeta)/2.; 1130 basis[ 7]=4.*gauss->coord3*gauss->coord1*(1.-zeta)/2.; 1131 basis[ 8]=4.*gauss->coord1*gauss->coord2*(1.-zeta)/2.; 1132 basis[ 9]=4.*gauss->coord3*gauss->coord2*(1.+zeta)/2.; 1133 basis[10]=4.*gauss->coord3*gauss->coord1*(1.+zeta)/2.; 1134 basis[11]=4.*gauss->coord1*gauss->coord2*(1.+zeta)/2.; 1132 1135 return; 1133 1136 case P1xP2Enum: 1134 1137 /*Corner nodes*/ 1135 basis[ 0]=gauss->coord1* gauss->coord4*(gauss->coord4-1.)/2.;1136 basis[ 1]=gauss->coord2* gauss->coord4*(gauss->coord4-1.)/2.;1137 basis[ 2]=gauss->coord3* gauss->coord4*(gauss->coord4-1.)/2.;1138 basis[ 3]=gauss->coord1* gauss->coord4*(gauss->coord4+1.)/2.;1139 basis[ 4]=gauss->coord2* gauss->coord4*(gauss->coord4+1.)/2.;1140 basis[ 5]=gauss->coord3* gauss->coord4*(gauss->coord4+1.)/2.;1138 basis[ 0]=gauss->coord1*zeta*(zeta-1.)/2.; 1139 basis[ 1]=gauss->coord2*zeta*(zeta-1.)/2.; 1140 basis[ 2]=gauss->coord3*zeta*(zeta-1.)/2.; 1141 basis[ 3]=gauss->coord1*zeta*(zeta+1.)/2.; 1142 basis[ 4]=gauss->coord2*zeta*(zeta+1.)/2.; 1143 basis[ 5]=gauss->coord3*zeta*(zeta+1.)/2.; 1141 1144 /*mid-sides of quads*/ 1142 basis[ 6]=gauss->coord1*(1.- gauss->coord4*gauss->coord4);1143 basis[ 7]=gauss->coord2*(1.- gauss->coord4*gauss->coord4);1144 basis[ 8]=gauss->coord3*(1.- gauss->coord4*gauss->coord4);1145 basis[ 6]=gauss->coord1*(1.-zeta*zeta); 1146 basis[ 7]=gauss->coord2*(1.-zeta*zeta); 1147 basis[ 8]=gauss->coord3*(1.-zeta*zeta); 1145 1148 return; 1146 1149 case P2Enum: 1147 1150 /*Corner nodes*/ 1148 basis[ 0]=gauss->coord1*(2.*gauss->coord1-1.)* gauss->coord4*(gauss->coord4-1.)/2.;1149 basis[ 1]=gauss->coord2*(2.*gauss->coord2-1.)* gauss->coord4*(gauss->coord4-1.)/2.;1150 basis[ 2]=gauss->coord3*(2.*gauss->coord3-1.)* gauss->coord4*(gauss->coord4-1.)/2.;1151 basis[ 3]=gauss->coord1*(2.*gauss->coord1-1.)* gauss->coord4*(gauss->coord4+1.)/2.;1152 basis[ 4]=gauss->coord2*(2.*gauss->coord2-1.)* gauss->coord4*(gauss->coord4+1.)/2.;1153 basis[ 5]=gauss->coord3*(2.*gauss->coord3-1.)* gauss->coord4*(gauss->coord4+1.)/2.;1151 basis[ 0]=gauss->coord1*(2.*gauss->coord1-1.)*zeta*(zeta-1.)/2.; 1152 basis[ 1]=gauss->coord2*(2.*gauss->coord2-1.)*zeta*(zeta-1.)/2.; 1153 basis[ 2]=gauss->coord3*(2.*gauss->coord3-1.)*zeta*(zeta-1.)/2.; 1154 basis[ 3]=gauss->coord1*(2.*gauss->coord1-1.)*zeta*(zeta+1.)/2.; 1155 basis[ 4]=gauss->coord2*(2.*gauss->coord2-1.)*zeta*(zeta+1.)/2.; 1156 basis[ 5]=gauss->coord3*(2.*gauss->coord3-1.)*zeta*(zeta+1.)/2.; 1154 1157 /*mid-sides of quads*/ 1155 basis[ 6]=gauss->coord1*(1.- gauss->coord4*gauss->coord4);1156 basis[ 7]=gauss->coord2*(1.- gauss->coord4*gauss->coord4);1157 basis[ 8]=gauss->coord3*(1.- gauss->coord4*gauss->coord4);1158 basis[ 6]=gauss->coord1*(1.-zeta*zeta); 1159 basis[ 7]=gauss->coord2*(1.-zeta*zeta); 1160 basis[ 8]=gauss->coord3*(1.-zeta*zeta); 1158 1161 /*mid-sides of triangles*/ 1159 basis[ 9]=2.*gauss->coord3*gauss->coord2* gauss->coord4*(gauss->coord4-1.);1160 basis[10]=2.*gauss->coord3*gauss->coord1* gauss->coord4*(gauss->coord4-1.);1161 basis[11]=2.*gauss->coord1*gauss->coord2* gauss->coord4*(gauss->coord4-1.);1162 basis[12]=2.*gauss->coord3*gauss->coord2* gauss->coord4*(gauss->coord4+1.);1163 basis[13]=2.*gauss->coord3*gauss->coord1* gauss->coord4*(gauss->coord4+1.);1164 basis[14]=2.*gauss->coord1*gauss->coord2* gauss->coord4*(gauss->coord4+1.);1162 basis[ 9]=2.*gauss->coord3*gauss->coord2*zeta*(zeta-1.); 1163 basis[10]=2.*gauss->coord3*gauss->coord1*zeta*(zeta-1.); 1164 basis[11]=2.*gauss->coord1*gauss->coord2*zeta*(zeta-1.); 1165 basis[12]=2.*gauss->coord3*gauss->coord2*zeta*(zeta+1.); 1166 basis[13]=2.*gauss->coord3*gauss->coord1*zeta*(zeta+1.); 1167 basis[14]=2.*gauss->coord1*gauss->coord2*zeta*(zeta+1.); 1165 1168 return; 1166 1169 default: … … 1325 1328 case P1xP2Enum: 1326 1329 /*Nodal function 1*/ 1327 dbasis[NUMNODESP1xP2*0+0] = zeta*(zeta-1.)/4.;1328 dbasis[NUMNODESP1xP2*1+0] = SQRT3/12.*zeta*(zeta-1.);1329 dbasis[NUMNODESP1xP2*2+0] = .5*( 1.-2.*zeta)*gauss->coord1;1330 dbasis[NUMNODESP1xP2*0+0] = -zeta*(zeta-1.)/4.; 1331 dbasis[NUMNODESP1xP2*1+0] = -SQRT3/12.*zeta*(zeta-1.); 1332 dbasis[NUMNODESP1xP2*2+0] = .5*(2.*zeta-1.)*gauss->coord1; 1330 1333 /*Nodal function 2*/ 1331 dbasis[NUMNODESP1xP2*0+1] = zeta*( 1.-zeta)/4.;1332 dbasis[NUMNODESP1xP2*1+1] = SQRT3/12.*zeta*(zeta-1);1333 dbasis[NUMNODESP1xP2*2+1] = .5*( 1.-2.*zeta)*gauss->coord2;1334 dbasis[NUMNODESP1xP2*0+1] = zeta*(zeta-1.)/4.; 1335 dbasis[NUMNODESP1xP2*1+1] = -SQRT3/12.*zeta*(zeta-1); 1336 dbasis[NUMNODESP1xP2*2+1] = .5*(2.*zeta-1.)*gauss->coord2; 1334 1337 /*Nodal function 3*/ 1335 1338 dbasis[NUMNODESP1xP2*0+2] = 0.; 1336 dbasis[NUMNODESP1xP2*1+2] = SQRT3/6.*zeta*( 1.-zeta);1337 dbasis[NUMNODESP1xP2*2+2] = .5*( 1.-2.*zeta)*gauss->coord3;1339 dbasis[NUMNODESP1xP2*1+2] = SQRT3/6.*zeta*(zeta-1.); 1340 dbasis[NUMNODESP1xP2*2+2] = .5*(2.*zeta-1.)*gauss->coord3; 1338 1341 /*Nodal function 4*/ 1339 dbasis[NUMNODESP1xP2*0+3] = -zeta*( 1.+zeta)/4.;1340 dbasis[NUMNODESP1xP2*1+3] = -SQRT3/12.* (1.+zeta);1341 dbasis[NUMNODESP1xP2*2+3] = .5*( 1.+2.*zeta)*gauss->coord1;1342 dbasis[NUMNODESP1xP2*0+3] = -zeta*(zeta+1)/4.; 1343 dbasis[NUMNODESP1xP2*1+3] = -SQRT3/12.*zeta*(zeta+1.); 1344 dbasis[NUMNODESP1xP2*2+3] = .5*(2.*zeta+1.)*gauss->coord1; 1342 1345 /*Nodal function 5*/ 1343 dbasis[NUMNODESP1xP2*0+4] = zeta*( 1.+zeta)/4.;1344 dbasis[NUMNODESP1xP2*1+4] = -SQRT3/12.*zeta*( 1.+zeta);1345 dbasis[NUMNODESP1xP2*2+4] = .5*( 1.+2.*zeta)*gauss->coord2;1346 dbasis[NUMNODESP1xP2*0+4] = zeta*(zeta+1.)/4.; 1347 dbasis[NUMNODESP1xP2*1+4] = -SQRT3/12.*zeta*(zeta+1.); 1348 dbasis[NUMNODESP1xP2*2+4] = .5*(2.*zeta+1.)*gauss->coord2; 1346 1349 /*Nodal function 6*/ 1347 1350 dbasis[NUMNODESP1xP2*0+5] = 0.; 1348 dbasis[NUMNODESP1xP2*1+5] = SQRT3/6.*zeta*( 1.+zeta);1349 dbasis[NUMNODESP1xP2*2+5] = .5*( 1.+2.*zeta)*gauss->coord3;1351 dbasis[NUMNODESP1xP2*1+5] = SQRT3/6.*zeta*(zeta+1.); 1352 dbasis[NUMNODESP1xP2*2+5] = .5*(2.*zeta+1.)*gauss->coord3; 1350 1353 1351 1354 /*Nodal function 7*/
Note:
See TracChangeset
for help on using the changeset viewer.