Changeset 15496


Ignore:
Timestamp:
07/16/13 08:40:57 (12 years ago)
Author:
Mathieu Morlighem
Message:

CHG: GetNumberOfNodes conflicting with Reference element NumberOfNodes function

Location:
issm/trunk-jpl/src/c/classes/Elements
Files:
6 edited

Legend:

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

    r15478 r15496  
    10111011        _assert_(sidlist);
    10121012        _assert_(nodes);
    1013         int numnodes = this->GetNumberOfNodes();
     1013        int numnodes = this->NumberOfNodes();
    10141014
    10151015        for(int i=0;i<numnodes;i++){
    10161016                sidlist[i]=nodes[i]->Sid();
    1017         }
    1018 }
    1019 /*}}}*/
    1020 /*FUNCTION Penta::GetNumberOfNodes{{{*/
    1021 int Penta::GetNumberOfNodes(void){
    1022 
    1023         if(this->nodes==NULL) return 0;
    1024 
    1025         switch(this->element_type){
    1026                 case P1Enum:
    1027                         return 6;
    1028                 case P1DGEnum:
    1029                         return 6;
    1030                 default:
    1031                         _error_("Element type "<<EnumToStringx(this->element_type)<<" not supported yet");
    10321017        }
    10331018}
     
    26322617
    26332618        /*Intermediaries*/
    2634         const int numnodes = this->GetNumberOfNodes();
     2619        const int numnodes = this->NumberOfNodes();
    26352620
    26362621        /*Output */
  • issm/trunk-jpl/src/c/classes/Elements/Penta.h

    r15436 r15496  
    8989                int    GetNodeIndex(Node* node);
    9090                void   GetNodesSidList(int* sidlist);
    91                 int    GetNumberOfNodes(void);
    9291                void   GetSolutionFromInputs(Vector<IssmDouble>* solution);
    9392                IssmDouble GetZcoord(GaussPenta* gauss);
  • issm/trunk-jpl/src/c/classes/Elements/PentaRef.cpp

    r15495 r15496  
    1818#define NUMNODESP1    6
    1919#define NUMNODESP1_2d 3
    20 #define NUMNODESMINI  7
     20#define NUMNODESP1b  7
    2121
    2222/*Object constructors and destructor*/
     
    9898
    9999        int i;
    100         IssmDouble dbasismini[3][NUMNODESMINI];
     100        IssmDouble dbasismini[3][NUMNODESP1b];
    101101        IssmDouble basis[NUMNODESP1];
    102102
     
    106106
    107107        /*Build B: */
    108         for(i=0;i<NUMNODESMINI;i++){
     108        for(i=0;i<NUMNODESP1b;i++){
    109109                B[(NDOF4*NUMNODESP1+3)*0+NDOF4*i+0] = dbasismini[0][i];
    110110                B[(NDOF4*NUMNODESP1+3)*0+NDOF4*i+1] = 0.;
     
    221221
    222222        int    i;
    223         IssmDouble dbasismini[3][NUMNODESMINI];
     223        IssmDouble dbasismini[3][NUMNODESP1b];
    224224
    225225        /*Get dbasis in actual coordinate system: */
     
    227227
    228228        /*Build Bprime: */
    229         for(i=0;i<NUMNODESMINI;i++){
     229        for(i=0;i<NUMNODESP1b;i++){
    230230                Bprime[(NDOF4*NUMNODESP1+3)*0+NDOF4*i+0] = 2.*dbasismini[0][i];
    231231                Bprime[(NDOF4*NUMNODESP1+3)*0+NDOF4*i+1] = dbasismini[1][i];
     
    266266        int i;
    267267
    268         IssmDouble dbasismini[3][NUMNODESMINI];
     268        IssmDouble dbasismini[3][NUMNODESP1b];
    269269        IssmDouble basis[NUMNODESP1];
    270270
     
    274274
    275275        /*Build B: */
    276         for(i=0;i<NUMNODESMINI;i++){
     276        for(i=0;i<NUMNODESP1b;i++){
    277277                B[(NDOF4*NUMNODESP1+3)*0+NDOF4*i+0] = dbasismini[0][i+0]; //B[0][NDOF4*i+0] = dbasis[0][i+0];
    278278                B[(NDOF4*NUMNODESP1+3)*0+NDOF4*i+1] = 0.;
     
    399399
    400400        int i;
    401         IssmDouble dbasismini[3][NUMNODESMINI];
     401        IssmDouble dbasismini[3][NUMNODESP1b];
    402402        IssmDouble basis[NUMNODESP1];
    403403
     
    407407
    408408        /*B_primeuild B_prime: */
    409         for(i=0;i<NUMNODESMINI;i++){
     409        for(i=0;i<NUMNODESP1b;i++){
    410410                B_prime[(NDOF4*NUMNODESP1+3)*0+NDOF4*i+0] = dbasismini[0][i];
    411411                B_prime[(NDOF4*NUMNODESP1+3)*0+NDOF4*i+1] = 0.;
     
    11981198                case P1Enum: case P1DGEnum:
    11991199                        /*Nodal function 1*/
    1200                         dbasis[NUMNODESP1*0+0]=-0.5*(1.0-zeta)/2.0;
    1201                         dbasis[NUMNODESP1*1+0]=-SQRT3/6.0*(1.0-zeta)/2.0;
    1202                         dbasis[NUMNODESP1*2+0]=-0.5*gauss->coord1;
     1200                        dbasis[NUMNODESP1*0+0]   = (zeta-1.)/4.;
     1201                        dbasis[NUMNODESP1*1+0]   = SQRT3/12.*(zeta-1.);
     1202                        dbasis[NUMNODESP1*2+0]   = -.5*gauss->coord1;
    12031203                        /*Nodal function 2*/
    1204                         dbasis[NUMNODESP1*0+1]=0.5*(1.0-zeta)/2.0;
    1205                         dbasis[NUMNODESP1*1+1]=-SQRT3/6.0*(1.0-zeta)/2.0;
    1206                         dbasis[NUMNODESP1*2+1]=-0.5*gauss->coord2;
     1204                        dbasis[NUMNODESP1*0+1]   = (1.-zeta)/4.;
     1205                        dbasis[NUMNODESP1*1+1]   = SQRT3/12.*(zeta-1);
     1206                        dbasis[NUMNODESP1*2+1]   = -.5*gauss->coord2;
    12071207                        /*Nodal function 3*/
    1208                         dbasis[NUMNODESP1*0+2]=0.;
    1209                         dbasis[NUMNODESP1*1+2]=SQRT3/3.0*(1.0-zeta)/2.0;
    1210                         dbasis[NUMNODESP1*2+2]=-0.5*gauss->coord3;
     1208                        dbasis[NUMNODESP1*0+2]   = 0.;
     1209                        dbasis[NUMNODESP1*1+2]   = SQRT3/6.*(1.-zeta);
     1210                        dbasis[NUMNODESP1*2+2]   = -.5*gauss->coord3;
    12111211                        /*Nodal function 4*/
    1212                         dbasis[NUMNODESP1*0+3]=-0.5*(1.0+zeta)/2.0;
    1213                         dbasis[NUMNODESP1*1+3]=-SQRT3/6.0*(1.0+zeta)/2.0;
    1214                         dbasis[NUMNODESP1*2+3]=0.5*gauss->coord1;
     1212                        dbasis[NUMNODESP1*0+3]   = -(1.+zeta)/4.;
     1213                        dbasis[NUMNODESP1*1+3]   = -SQRT3/12.*(1.+zeta);
     1214                        dbasis[NUMNODESP1*2+3]   = .5*gauss->coord1;
    12151215                        /*Nodal function 5*/
    1216                         dbasis[NUMNODESP1*0+4]=0.5*(1.0+zeta)/2.0;
    1217                         dbasis[NUMNODESP1*1+4]=-SQRT3/6.0*(1.0+zeta)/2.0;
    1218                         dbasis[NUMNODESP1*2+4]=0.5*gauss->coord2;
     1216                        dbasis[NUMNODESP1*0+4]   = (1.+zeta)/4.;
     1217                        dbasis[NUMNODESP1*1+4]   = -SQRT3/12.*(1.+zeta);
     1218                        dbasis[NUMNODESP1*2+4]   = .5*gauss->coord2;
    12191219                        /*Nodal function 6*/
    1220                         dbasis[NUMNODESP1*0+5]=0.;
    1221                         dbasis[NUMNODESP1*1+5]=SQRT3/3.0*(1.0+zeta)/2.0;
    1222                         dbasis[NUMNODESP1*2+5]=0.5*gauss->coord3;
    1223                 case MINIEnum:
     1220                        dbasis[NUMNODESP1*0+5]   = 0.;
     1221                        dbasis[NUMNODESP1*1+5]   = SQRT3/6.*(1.+zeta);
     1222                        dbasis[NUMNODESP1*2+5]   = .5*gauss->coord3;
     1223                        return;
     1224                case P1bubbleEnum:
    12241225                        /*Nodal function 1*/
    1225                         dbasis[NUMNODESMINI*0+0]=-0.5*(1.0-zeta)/2.0;
    1226                         dbasis[NUMNODESMINI*1+0]=-SQRT3/6.0*(1.0-zeta)/2.0;
    1227                         dbasis[NUMNODESMINI*2+0]=-0.5*gauss->coord1;
     1226                        dbasis[NUMNODESP1*0+0]   = (zeta-1.)/4.;
     1227                        dbasis[NUMNODESP1*1+0]   = SQRT3/12.*(zeta-1.);
     1228                        dbasis[NUMNODESP1*2+0]   = -.5*gauss->coord1;
    12281229                        /*Nodal function 2*/
    1229                         dbasis[NUMNODESMINI*0+1]=0.5*(1.0-zeta)/2.0;
    1230                         dbasis[NUMNODESMINI*1+1]=-SQRT3/6.0*(1.0-zeta)/2.0;
    1231                         dbasis[NUMNODESMINI*2+1]=-0.5*gauss->coord2;
     1230                        dbasis[NUMNODESP1*0+1]   = (1.-zeta)/4.;
     1231                        dbasis[NUMNODESP1*1+1]   = SQRT3/12.*(zeta-1);
     1232                        dbasis[NUMNODESP1*2+1]   = -.5*gauss->coord2;
    12321233                        /*Nodal function 3*/
    1233                         dbasis[NUMNODESMINI*0+2]=0.;
    1234                         dbasis[NUMNODESMINI*1+2]=SQRT3/3.0*(1.0-zeta)/2.0;
    1235                         dbasis[NUMNODESMINI*2+2]=-0.5*gauss->coord3;
     1234                        dbasis[NUMNODESP1*0+2]   = 0.;
     1235                        dbasis[NUMNODESP1*1+2]   = SQRT3/6.*(1.-zeta);
     1236                        dbasis[NUMNODESP1*2+2]   = -.5*gauss->coord3;
    12361237                        /*Nodal function 4*/
    1237                         dbasis[NUMNODESMINI*0+3]=-0.5*(1.0+zeta)/2.0;
    1238                         dbasis[NUMNODESMINI*1+3]=-SQRT3/6.0*(1.0+zeta)/2.0;
    1239                         dbasis[NUMNODESMINI*2+3]=0.5*gauss->coord1;
     1238                        dbasis[NUMNODESP1*0+3]   = -(1.+zeta)/4.;
     1239                        dbasis[NUMNODESP1*1+3]   = -SQRT3/12.*(1.+zeta);
     1240                        dbasis[NUMNODESP1*2+3]   = .5*gauss->coord1;
    12401241                        /*Nodal function 5*/
    1241                         dbasis[NUMNODESMINI*0+4]=0.5*(1.0+zeta)/2.0;
    1242                         dbasis[NUMNODESMINI*1+4]=-SQRT3/6.0*(1.0+zeta)/2.0;
    1243                         dbasis[NUMNODESMINI*2+4]=0.5*gauss->coord2;
     1242                        dbasis[NUMNODESP1*0+4]   = (1.+zeta)/4.;
     1243                        dbasis[NUMNODESP1*1+4]   = -SQRT3/12.*(1.+zeta);
     1244                        dbasis[NUMNODESP1*2+4]   = .5*gauss->coord2;
    12441245                        /*Nodal function 6*/
    1245                         dbasis[NUMNODESMINI*0+5]=0.;
    1246                         dbasis[NUMNODESMINI*1+5]=SQRT3/3.0*(1.0+zeta)/2.0;
    1247                         dbasis[NUMNODESMINI*2+5]=0.5*gauss->coord3;
     1246                        dbasis[NUMNODESP1*0+5]   = 0.;
     1247                        dbasis[NUMNODESP1*1+5]   = SQRT3/6.*(1.+zeta);
     1248                        dbasis[NUMNODESP1*2+5]   = .5*gauss->coord3;
    12481249                        /*Nodal function 7*/
    1249                         dbasis[NUMNODESMINI*0+6]=27.*(1.+zeta)*(1.-zeta)*(-.5*gauss->coord2*gauss->coord3 + .5*gauss->coord1*gauss->coord3);
    1250                         dbasis[NUMNODESMINI*1+6]=27.*(1.+zeta)*(1.-zeta)*SQRT3*(-1./6.*gauss->coord2*gauss->coord3 - 1./6.*gauss->coord1*gauss->coord3 +1./3.*gauss->coord1*gauss->coord2);
    1251                         dbasis[NUMNODESMINI*2+6]=27*gauss->coord1*gauss->coord2*gauss->coord3*(-2.0*zeta);
     1250                        dbasis[NUMNODESP1b*0+6] = 27.*(1.+zeta)*(1.-zeta)*(-.5*gauss->coord2*gauss->coord3 + .5*gauss->coord1*gauss->coord3);
     1251                        dbasis[NUMNODESP1b*1+6] = 27.*(1.+zeta)*(1.-zeta)*SQRT3*(-1./6.*gauss->coord2*gauss->coord3 - 1./6.*gauss->coord1*gauss->coord3 +1./3.*gauss->coord1*gauss->coord2);
     1252                        dbasis[NUMNODESP1b*2+6] = -54*gauss->coord1*gauss->coord2*gauss->coord3*zeta;
    12521253                        return;
    12531254                default:
     
    12781279         * actual coordinate system): */
    12791280
    1280         IssmDouble    dbasismini_ref[3][NUMNODESMINI];
     1281        IssmDouble    dbasismini_ref[3][NUMNODESP1b];
    12811282        IssmDouble    Jinv[3][3];
    12821283
     
    12941295         */
    12951296
    1296         for(int i=0;i<NUMNODESMINI;i++){
    1297                 *(dbasismini+NUMNODESMINI*0+i)=Jinv[0][0]*dbasismini_ref[0][i]+Jinv[0][1]*dbasismini_ref[1][i]+Jinv[0][2]*dbasismini_ref[2][i];
    1298                 *(dbasismini+NUMNODESMINI*1+i)=Jinv[1][0]*dbasismini_ref[0][i]+Jinv[1][1]*dbasismini_ref[1][i]+Jinv[1][2]*dbasismini_ref[2][i];
    1299                 *(dbasismini+NUMNODESMINI*2+i)=Jinv[2][0]*dbasismini_ref[0][i]+Jinv[2][1]*dbasismini_ref[1][i]+Jinv[2][2]*dbasismini_ref[2][i];
     1297        for(int i=0;i<NUMNODESP1b;i++){
     1298                *(dbasismini+NUMNODESP1b*0+i)=Jinv[0][0]*dbasismini_ref[0][i]+Jinv[0][1]*dbasismini_ref[1][i]+Jinv[0][2]*dbasismini_ref[2][i];
     1299                *(dbasismini+NUMNODESP1b*1+i)=Jinv[1][0]*dbasismini_ref[0][i]+Jinv[1][1]*dbasismini_ref[1][i]+Jinv[1][2]*dbasismini_ref[2][i];
     1300                *(dbasismini+NUMNODESP1b*2+i)=Jinv[2][0]*dbasismini_ref[0][i]+Jinv[2][1]*dbasismini_ref[1][i]+Jinv[2][2]*dbasismini_ref[2][i];
    13001301        }
    13011302
     
    13101311
    13111312        /*Nodal function 1*/
    1312         dbasis[NUMNODESMINI*0+0]=-0.5*(1.0-zeta)/2.0;
    1313         dbasis[NUMNODESMINI*1+0]=-SQRT3/6.0*(1.0-zeta)/2.0;
    1314         dbasis[NUMNODESMINI*2+0]=-0.5*gauss->coord1;
     1313        dbasis[NUMNODESP1b*0+0]=-0.5*(1.0-zeta)/2.0;
     1314        dbasis[NUMNODESP1b*1+0]=-SQRT3/6.0*(1.0-zeta)/2.0;
     1315        dbasis[NUMNODESP1b*2+0]=-0.5*gauss->coord1;
    13151316        /*Nodal function 2*/
    1316         dbasis[NUMNODESMINI*0+1]=0.5*(1.0-zeta)/2.0;
    1317         dbasis[NUMNODESMINI*1+1]=-SQRT3/6.0*(1.0-zeta)/2.0;
    1318         dbasis[NUMNODESMINI*2+1]=-0.5*gauss->coord2;
     1317        dbasis[NUMNODESP1b*0+1]=0.5*(1.0-zeta)/2.0;
     1318        dbasis[NUMNODESP1b*1+1]=-SQRT3/6.0*(1.0-zeta)/2.0;
     1319        dbasis[NUMNODESP1b*2+1]=-0.5*gauss->coord2;
    13191320        /*Nodal function 3*/
    1320         dbasis[NUMNODESMINI*0+2]=0.;
    1321         dbasis[NUMNODESMINI*1+2]=SQRT3/3.0*(1.0-zeta)/2.0;
    1322         dbasis[NUMNODESMINI*2+2]=-0.5*gauss->coord3;
     1321        dbasis[NUMNODESP1b*0+2]=0.;
     1322        dbasis[NUMNODESP1b*1+2]=SQRT3/3.0*(1.0-zeta)/2.0;
     1323        dbasis[NUMNODESP1b*2+2]=-0.5*gauss->coord3;
    13231324        /*Nodal function 4*/
    1324         dbasis[NUMNODESMINI*0+3]=-0.5*(1.0+zeta)/2.0;
    1325         dbasis[NUMNODESMINI*1+3]=-SQRT3/6.0*(1.0+zeta)/2.0;
    1326         dbasis[NUMNODESMINI*2+3]=0.5*gauss->coord1;
     1325        dbasis[NUMNODESP1b*0+3]=-0.5*(1.0+zeta)/2.0;
     1326        dbasis[NUMNODESP1b*1+3]=-SQRT3/6.0*(1.0+zeta)/2.0;
     1327        dbasis[NUMNODESP1b*2+3]=0.5*gauss->coord1;
    13271328        /*Nodal function 5*/
    1328         dbasis[NUMNODESMINI*0+4]=0.5*(1.0+zeta)/2.0;
    1329         dbasis[NUMNODESMINI*1+4]=-SQRT3/6.0*(1.0+zeta)/2.0;
    1330         dbasis[NUMNODESMINI*2+4]=0.5*gauss->coord2;
     1329        dbasis[NUMNODESP1b*0+4]=0.5*(1.0+zeta)/2.0;
     1330        dbasis[NUMNODESP1b*1+4]=-SQRT3/6.0*(1.0+zeta)/2.0;
     1331        dbasis[NUMNODESP1b*2+4]=0.5*gauss->coord2;
    13311332        /*Nodal function 6*/
    1332         dbasis[NUMNODESMINI*0+5]=0.;
    1333         dbasis[NUMNODESMINI*1+5]=SQRT3/3.0*(1.0+zeta)/2.0;
    1334         dbasis[NUMNODESMINI*2+5]=0.5*gauss->coord3;
     1333        dbasis[NUMNODESP1b*0+5]=0.;
     1334        dbasis[NUMNODESP1b*1+5]=SQRT3/3.0*(1.0+zeta)/2.0;
     1335        dbasis[NUMNODESP1b*2+5]=0.5*gauss->coord3;
    13351336        /*Nodal function 7*/
    1336         dbasis[NUMNODESMINI*0+6]=27.*(1.+zeta)*(1.-zeta)*(-.5*gauss->coord2*gauss->coord3 + .5*gauss->coord1*gauss->coord3);
    1337         dbasis[NUMNODESMINI*1+6]=27.*(1.+zeta)*(1.-zeta)*SQRT3*(-1./6.*gauss->coord2*gauss->coord3 - 1./6.*gauss->coord1*gauss->coord3 +1./3.*gauss->coord1*gauss->coord2);
    1338         dbasis[NUMNODESMINI*2+6]=27*gauss->coord1*gauss->coord2*gauss->coord3*(-2.0*zeta);
     1337        dbasis[NUMNODESP1b*0+6]=27.*(1.+zeta)*(1.-zeta)*(-.5*gauss->coord2*gauss->coord3 + .5*gauss->coord1*gauss->coord3);
     1338        dbasis[NUMNODESP1b*1+6]=27.*(1.+zeta)*(1.-zeta)*SQRT3*(-1./6.*gauss->coord2*gauss->coord3 - 1./6.*gauss->coord1*gauss->coord3 +1./3.*gauss->coord1*gauss->coord2);
     1339        dbasis[NUMNODESP1b*2+6]=27*gauss->coord1*gauss->coord2*gauss->coord3*(-2.0*zeta);
    13391340}
    13401341/*}}}*/
     
    15041505        switch(this->element_type){
    15051506                case P1Enum:   return NUMNODESP1;
    1506                 case MINIEnum: return NUMNODESMINI;
     1507                case MINIEnum: return NUMNODESP1b;
    15071508                default:       _error_("Element type "<<EnumToStringx(this->element_type)<<" not supported yet");
    15081509        }
  • issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r15486 r15496  
    122122
    123123        /*Intermediaries*/
    124         const int numnodes = this->GetNumberOfNodes();
     124        const int numnodes = this->NumberOfNodes();
    125125
    126126        /*Output */
     
    896896        _assert_(sidlist);
    897897        _assert_(nodes);
    898         int numnodes = this->GetNumberOfNodes();
     898        int numnodes = this->NumberOfNodes();
    899899
    900900        for(int i=0;i<numnodes;i++){
    901901                sidlist[i]=nodes[i]->Sid();
    902         }
    903 }
    904 /*}}}*/
    905 /*FUNCTION Tria::GetNumberOfNodes{{{*/
    906 int Tria::GetNumberOfNodes(void){
    907 
    908         if(this->nodes==NULL) return 0;
    909 
    910         switch(this->element_type){
    911                 case P1Enum:
    912                         return 3;
    913                 case P1DGEnum:
    914                         return 3;
    915                 case P2Enum:
    916                         return 6;
    917                 default:
    918                         _error_("Element type "<<EnumToStringx(this->element_type)<<" not supported yet");
    919902        }
    920903}
     
    52165199
    52175200        /*Constants*/
    5218         const int numnodes = this->GetNumberOfNodes();
     5201        const int numnodes = this->NumberOfNodes();
    52195202        const int numdof   = NDOF2*numnodes;
    52205203
  • issm/trunk-jpl/src/c/classes/Elements/Tria.h

    r15433 r15496  
    8383                void   Delta18oParameterization(void);
    8484                int    GetNodeIndex(Node* node);
    85                 int    GetNumberOfNodes(void);
    8685                void   GetNodesSidList(int* sidlist);
    8786                int    Sid();
  • issm/trunk-jpl/src/c/classes/Elements/TriaRef.cpp

    r15492 r15496  
    530530                        /*Nodal function 1*/
    531531                        dbasis[NUMNODESP1*0+0] = -0.5;
    532                         dbasis[NUMNODESP1*1+0] = -1.0/(2.0*SQRT3);
     532                        dbasis[NUMNODESP1*1+0] = -SQRT3/6.;
    533533                        /*Nodal function 2*/
    534534                        dbasis[NUMNODESP1*0+1] = 0.5;
    535                         dbasis[NUMNODESP1*1+1] = -1.0/(2.0*SQRT3);
     535                        dbasis[NUMNODESP1*1+1] = -SQRT3/6.;
    536536                        /*Nodal function 3*/
    537537                        dbasis[NUMNODESP1*0+2] = 0;
    538                         dbasis[NUMNODESP1*1+2] = 1.0/SQRT3;
     538                        dbasis[NUMNODESP1*1+2] = SQRT3/3.;
    539539                        return;
    540540                case P2Enum:
Note: See TracChangeset for help on using the changeset viewer.