Changeset 15505


Ignore:
Timestamp:
07/18/13 11:31:53 (12 years ago)
Author:
Mathieu Morlighem
Message:

NEW: added P2xP1 nodal function derivatives

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Elements/PentaRef.cpp

    r15496 r15505  
    1818#define NUMNODESP1    6
    1919#define NUMNODESP1_2d 3
    20 #define NUMNODESP1b  7
     20#define NUMNODESP1b   7
     21#define NUMNODESP2xP1 12
     22#define NUMNODESP2    15
    2123
    2224/*Object constructors and destructor*/
     
    12521254                        dbasis[NUMNODESP1b*2+6] = -54*gauss->coord1*gauss->coord2*gauss->coord3*zeta;
    12531255                        return;
     1256                case P2xP1Enum:
     1257                        /*Nodal function 1*/
     1258                        dbasis[NUMNODESP2xP1*0+0 ] = .5*(1.-zeta)*(-2.*gauss->coord1 + 0.5);
     1259                        dbasis[NUMNODESP2xP1*1+0 ] = .5*(1.-zeta)*(-2.*SQRT3/3.*gauss->coord1 + SQRT3/6.);
     1260                        dbasis[NUMNODESP2xP1*2+0 ] = -.5*gauss->coord1*(2.*gauss->coord1-1.);
     1261                        /*Nodal function 2*/
     1262                        dbasis[NUMNODESP2xP1*0+1 ] = .5*(1.-zeta)*(+2.*gauss->coord2 - 0.5);
     1263                        dbasis[NUMNODESP2xP1*1+1 ] = .5*(1.-zeta)*(-2.*SQRT3/3.*gauss->coord2 + SQRT3/6.);
     1264                        dbasis[NUMNODESP2xP1*2+1 ] = -.5*gauss->coord2*(2.*gauss->coord2-1.);
     1265                        /*Nodal function 3*/
     1266                        dbasis[NUMNODESP2xP1*0+2 ] = 0.;
     1267                        dbasis[NUMNODESP2xP1*1+2 ] = .5*(1.-zeta)*(4.*SQRT3/3.*gauss->coord3 - SQRT3/3.);
     1268                        dbasis[NUMNODESP2xP1*2+2 ] = -.5*gauss->coord3*(2.*gauss->coord3-1.);
     1269                        /*Nodal function 4*/
     1270                        dbasis[NUMNODESP2xP1*0+3 ] = .5*(1.+zeta)*(-2.*gauss->coord1 + 0.5);
     1271                        dbasis[NUMNODESP2xP1*1+3 ] = .5*(1.+zeta)*(-2.*SQRT3/3.*gauss->coord1 + SQRT3/6.);
     1272                        dbasis[NUMNODESP2xP1*2+3 ] = .5*gauss->coord1*(2.*gauss->coord1-1.);
     1273                        /*Nodal function 5*/
     1274                        dbasis[NUMNODESP2xP1*0+4 ] = .5*(1.+zeta)*(+2.*gauss->coord2 - 0.5);
     1275                        dbasis[NUMNODESP2xP1*1+4 ] = .5*(1.+zeta)*(-2.*SQRT3/3.*gauss->coord2 + SQRT3/6.);
     1276                        dbasis[NUMNODESP2xP1*2+4 ] = .5*gauss->coord2*(2.*gauss->coord2-1.);
     1277                        /*Nodal function 6*/
     1278                        dbasis[NUMNODESP2xP1*0+5 ] = 0.;
     1279                        dbasis[NUMNODESP2xP1*1+5 ] = .5*(1.+zeta)*(4.*SQRT3/3.*gauss->coord3 - SQRT3/3.);
     1280                        dbasis[NUMNODESP2xP1*2+5 ] = .5*gauss->coord3*(2.*gauss->coord3-1.);
     1281
     1282                        /*Nodal function 7*/
     1283                        dbasis[NUMNODESP2xP1*0+6 ] = (1.-zeta)*gauss->coord3;
     1284                        dbasis[NUMNODESP2xP1*1+6 ] = .5*(1.-zeta)*(+4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3);
     1285                        dbasis[NUMNODESP2xP1*2+6 ] = -2.*gauss->coord3*gauss->coord2;
     1286                        /*Nodal function 8*/
     1287                        dbasis[NUMNODESP2xP1*0+7 ] = -(1.-zeta)*gauss->coord3;
     1288                        dbasis[NUMNODESP2xP1*1+7 ] = .5*(1.-zeta)*(+4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3);
     1289                        dbasis[NUMNODESP2xP1*2+7 ] = -2.*gauss->coord3*gauss->coord1;
     1290                        /*Nodal function 9*/
     1291                        dbasis[NUMNODESP2xP1*0+8 ] = (1.-zeta)*(gauss->coord1-gauss->coord2);
     1292                        dbasis[NUMNODESP2xP1*1+8 ] = .5*(1.-zeta)*(-2.*SQRT3/3.*(gauss->coord1+gauss->coord2));
     1293                        dbasis[NUMNODESP2xP1*2+8 ] = -2.*gauss->coord1*gauss->coord2;
     1294                        /*Nodal function 10*/
     1295                        dbasis[NUMNODESP2xP1*0+9 ] = (1.+zeta)*gauss->coord3;
     1296                        dbasis[NUMNODESP2xP1*1+9 ] = .5*(1.+zeta)*(+4.*SQRT3/3.*gauss->coord2 - 2.*SQRT3/3.*gauss->coord3);
     1297                        dbasis[NUMNODESP2xP1*2+9 ] = 2.*gauss->coord3*gauss->coord2;
     1298                        /*Nodal function 11*/
     1299                        dbasis[NUMNODESP2xP1*0+10] = -(1.+zeta)*gauss->coord3;
     1300                        dbasis[NUMNODESP2xP1*1+10] = .5*(1.+zeta)*(+4.*SQRT3/3.*gauss->coord1 - 2.*SQRT3/3.*gauss->coord3);
     1301                        dbasis[NUMNODESP2xP1*2+10] = 2.*gauss->coord3*gauss->coord1;
     1302                        /*Nodal function 12*/
     1303                        dbasis[NUMNODESP2xP1*0+11] = (1.+zeta)*(gauss->coord1-gauss->coord2);
     1304                        dbasis[NUMNODESP2xP1*1+11] = .5*(1.+zeta)*(-2.*SQRT3/3.*(gauss->coord1+gauss->coord2));
     1305                        dbasis[NUMNODESP2xP1*2+11] = 2.*gauss->coord1*gauss->coord2;
     1306                        return;
    12541307                default:
    12551308                        _error_("Element type "<<EnumToStringx(this->element_type)<<" not supported yet");
Note: See TracChangeset for help on using the changeset viewer.