source: issm/oecreview/Archive/21724-22754/ISSM-22074-22075.diff@ 22755

Last change on this file since 22755 was 22755, checked in by Mathieu Morlighem, 7 years ago

CHG: added 21724-22754

File size: 12.8 KB
  • ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

     
    10661066        P2xP1Enum,
    10671067        P1xP2Enum,
    10681068        P1xP3Enum,
     1069        P1xP4Enum,
    10691070        P2xP4Enum,
    10701071        P1P1Enum,
    10711072        P1P1GLSEnum,
  • ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

     
    10211021                case P2xP1Enum : return "P2xP1";
    10221022                case P1xP2Enum : return "P1xP2";
    10231023                case P1xP3Enum : return "P1xP3";
     1024                case P1xP4Enum : return "P1xP4";
    10241025                case P2xP4Enum : return "P2xP4";
    10251026                case P1P1Enum : return "P1P1";
    10261027                case P1P1GLSEnum : return "P1P1GLS";
  • ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

     
    10451045              else if (strcmp(name,"P2xP1")==0) return P2xP1Enum;
    10461046              else if (strcmp(name,"P1xP2")==0) return P1xP2Enum;
    10471047              else if (strcmp(name,"P1xP3")==0) return P1xP3Enum;
     1048              else if (strcmp(name,"P1xP4")==0) return P1xP4Enum;
    10481049              else if (strcmp(name,"P2xP4")==0) return P2xP4Enum;
    10491050              else if (strcmp(name,"P1P1")==0) return P1P1Enum;
    10501051              else if (strcmp(name,"P1P1GLS")==0) return P1P1GLSEnum;
  • ../trunk-jpl/src/c/classes/Elements/PentaRef.cpp

     
    2121#define NUMNODESP1b   7
    2222#define NUMNODESP1xP2 9
    2323#define NUMNODESP1xP3 12
     24#define NUMNODESP1xP4 15
    2425#define NUMNODESP2xP1 12
    2526#define NUMNODESP2    18
    2627#define NUMNODESP2b   19
     
    8182                        indices[1] = 1;
    8283                        indices[2] = 2;
    8384                        break;
     85                case P1xP4Enum:
     86                        numindices = 3;
     87                        indices    = xNew<int>(numindices);
     88                        indices[0] = 0;
     89                        indices[1] = 1;
     90                        indices[2] = 2;
     91                        break;
    8492                case P2Enum:
    8593                        numindices = 6;
    8694                        indices    = xNew<int>(numindices);
     
    422430                        basis[ 3]=(9.)/(16.)*gauss->coord1*(zeta-1./3.)*(zeta+1./3.)*(zeta+1.);
    423431                        basis[ 4]=(9.)/(16.)*gauss->coord2*(zeta-1./3.)*(zeta+1./3.)*(zeta+1.);
    424432                        basis[ 5]=(9.)/(16.)*gauss->coord3*(zeta-1./3.)*(zeta+1./3.)*(zeta+1.);
    425                         /*quarter-sides of quads*/
     433                        /*third-sides of quads*/
    426434                        basis[ 6]=(27.)/(16.)*gauss->coord1*(zeta-1)*(zeta-1./3.)*(zeta+1.);
    427435                        basis[ 7]=(27.)/(16.)*gauss->coord2*(zeta-1)*(zeta-1./3.)*(zeta+1.);
    428436                        basis[ 8]=(27.)/(16.)*gauss->coord3*(zeta-1)*(zeta-1./3.)*(zeta+1.);
     
    430438                        basis[10]=-(27.)/(16.)*gauss->coord2*(zeta-1)*(zeta+1./3.)*(zeta+1.);
    431439                        basis[11]=-(27.)/(16.)*gauss->coord3*(zeta-1)*(zeta+1./3.)*(zeta+1.);
    432440                        return;
     441                case P1xP4Enum :
     442                        /*Corner nodes*/
     443                        basis[ 0]=gauss->coord1*(2./3.)*(zeta-1.)*(zeta-0.5 )*(zeta)*(zeta+0.5);
     444                        basis[ 1]=gauss->coord2*(2./3.)*(zeta-1.)*(zeta-0.5 )*(zeta)*(zeta+0.5);
     445                        basis[ 2]=gauss->coord3*(2./3.)*(zeta-1.)*(zeta-0.5 )*(zeta)*(zeta+0.5);
     446                        basis[ 3]=gauss->coord1*(2./3.)*(zeta-0.5)*(zeta)*(zeta+0.5)*(zeta +1.);
     447                        basis[ 4]=gauss->coord2*(2./3.)*(zeta-0.5)*(zeta)*(zeta+0.5)*(zeta +1.);
     448                        basis[ 5]=gauss->coord3*(2./3.)*(zeta-0.5)*(zeta)*(zeta+0.5)*(zeta +1.);
     449                        /*mid-sides of quads (center of vertical edges)*/
     450                        basis[ 6]=gauss->coord1*4.*(zeta-1.)*(zeta-0.5)*(zeta+0.5)*(zeta+1.);
     451                        basis[ 7]=gauss->coord2*4.*(zeta-1.)*(zeta-0.5)*(zeta+0.5)*(zeta+1.);
     452                        basis[ 8]=gauss->coord3*4.*(zeta-1.)*(zeta-0.5)*(zeta+0.5)*(zeta+1.);
     453                        /*quarter-sides of quads (-0.5 and +0.5 of vertical edges)*/
     454                        basis[ 9]=gauss->coord1*(-8./3.)*(zeta-1.0)*(zeta-0.5)*zeta*(zeta+1.);
     455                        basis[10]=gauss->coord2*(-8./3.)*(zeta-1.0)*(zeta-0.5)*zeta*(zeta+1.);
     456                        basis[11]=gauss->coord3*(-8./3.)*(zeta-1.0)*(zeta-0.5)*zeta*(zeta+1.);
     457                        basis[12]=gauss->coord1*(-8./3.)*(zeta-1.0)*zeta*(zeta+0.5)*(zeta+1.);
     458                        basis[13]=gauss->coord2*(-8./3.)*(zeta-1.0)*zeta*(zeta+0.5)*(zeta+1.);
     459                        basis[14]=gauss->coord3*(-8./3.)*(zeta-1.0)*zeta*(zeta+0.5)*(zeta+1.);
     460                        return;
    433461                default:
    434462                        _error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
    435463        }
     
    963991                        dbasis[NUMNODESP1xP3*1+11] = -((9.*SQRT3)/16.) *(zeta-1.)*(zeta+1./3.)*(zeta+1);
    964992                        dbasis[NUMNODESP1xP3*2+11] = -gauss->coord3 *(27./16.)*( 2.* zeta *( zeta + (1./3.)) + ( zeta - 1. )*( zeta + 1. ));
    965993                        return;
     994                case P1xP4Enum :
     995                        /*Nodal function 1*/
     996                        dbasis[NUMNODESP1xP4*0+0 ] = -0.5*(2./3.)     *(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5);
     997                        dbasis[NUMNODESP1xP4*1+0 ] = -SQRT3/6.*(2./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5);
     998                        dbasis[NUMNODESP1xP4*2+0 ] =  gauss->coord1 * 2./3.*( (2.*zeta-1)*(zeta -0.5)*(zeta +0.5) + 2.* zeta *zeta *(zeta -1.));
     999                        /*Nodal function 2*/
     1000                        dbasis[NUMNODESP1xP4*0+1 ] = +0.5*(2./3.)     *(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5);
     1001                        dbasis[NUMNODESP1xP4*1+1 ] = -SQRT3/6.*(2./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta+0.5);
     1002                        dbasis[NUMNODESP1xP4*2+1 ] = gauss->coord2* 2./3.* ((2.*zeta-1.)*(zeta -0.5)*(zeta +0.5) + 2. * zeta *zeta*(zeta -1.));
     1003                        /*Nodal function 3*/
     1004                        dbasis[NUMNODESP1xP4*0+2 ] = 0. ;
     1005                        dbasis[NUMNODESP1xP4*1+2 ] = SQRT3/3.*(2./3.)*(zeta -1.)*(zeta-0.5)*(zeta)*(zeta+0.5);
     1006                        dbasis[NUMNODESP1xP4*2+2 ] = gauss->coord3* 2./3.*( (2.*zeta-1.)*(zeta -0.5)*(zeta +0.5) + 2.*zeta *zeta*(zeta -1.));
     1007                        /*Nodal function 4*/
     1008                        dbasis[NUMNODESP1xP4*0+3 ] = -0.5 *(2./3.) *(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. );
     1009                        dbasis[NUMNODESP1xP4*1+3 ] = -SQRT3/6.*(2./3.) *(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. );
     1010                        dbasis[NUMNODESP1xP4*2+3 ] = gauss->coord1* 2./3.*( (2.*zeta+1.)*(zeta -0.5)*(zeta +0.5) + 2.*zeta *zeta*(zeta +1.));
     1011                        /*Nodal function 5*/
     1012                        dbasis[NUMNODESP1xP4*0+4 ] = +0.5 *    (2./3.) *(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. );
     1013                        dbasis[NUMNODESP1xP4*1+4 ] = -SQRT3/6.*(2./3.)*(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. );
     1014                        dbasis[NUMNODESP1xP4*2+4 ] = gauss->coord2 * 2./3.*( (2.*zeta+1.)*(zeta -0.5)*(zeta +0.5) + 2.*zeta *zeta*(zeta +1.));
     1015                        /*Nodal function 6*/
     1016                        dbasis[NUMNODESP1xP4*0+5 ] = 0. ;
     1017                        dbasis[NUMNODESP1xP4*1+5 ] = SQRT3/3.*(2./3.) *(zeta - 0.5)*(zeta)*(zeta+0.5)*(zeta +1. );
     1018                        dbasis[NUMNODESP1xP4*2+5 ] = gauss->coord3 * 2./3.*( (2.*zeta+1.)*(zeta -0.5)*(zeta +0.5) + 2.*zeta *zeta*(zeta +1));
     1019                        /*Nodal function 7*/
     1020                        dbasis[NUMNODESP1xP4*0+6 ] = -0.5 * 4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. ) ;
     1021                        dbasis[NUMNODESP1xP4*1+6 ] = -SQRT3/6.* 4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1.)  ;
     1022                        dbasis[NUMNODESP1xP4*2+6 ] = gauss->coord1* 4.*( 4.*zeta *zeta*zeta - (5./2.)*zeta );
     1023                        /*Nodal function 8*/
     1024                        dbasis[NUMNODESP1xP4*0+7 ] = +0.5* 4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. ) ;
     1025                        dbasis[NUMNODESP1xP4*1+7 ] = -SQRT3/6.* 4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. )  ;
     1026                        dbasis[NUMNODESP1xP4*2+7 ] = gauss->coord2* 4.*( 4.*zeta *zeta*zeta - (5./2.)*zeta );
     1027
     1028                        /*Nodal function 9*/
     1029                        dbasis[NUMNODESP1xP4*0+8 ] = 0. ;
     1030                        dbasis[NUMNODESP1xP4*1+8 ] = SQRT3/3. * 4.*(zeta - 1.)*(zeta - 0.5)*(zeta+0.5)*(zeta +1. )  ;
     1031                        dbasis[NUMNODESP1xP4*2+8 ] = gauss->coord3* 4.*( 4.*zeta *zeta*zeta - (5./2.)*zeta );
     1032
     1033                        /*Nodal function 10*/
     1034                        dbasis[NUMNODESP1xP4*0+9 ] = -0.5* (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ;
     1035                        dbasis[NUMNODESP1xP4*1+9 ] = -SQRT3/3.* (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ;
     1036                        dbasis[NUMNODESP1xP4*2+9 ] = gauss->coord1* (-8./3.)*((2.*zeta -1.)*(zeta-0.5)*(zeta +1.) +zeta*(zeta -1.)*( 2.*zeta + 0.5));
     1037                        /*Nodal function 11*/
     1038                        dbasis[NUMNODESP1xP4*0+10] = +0.5* (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ;
     1039                        dbasis[NUMNODESP1xP4*1+10] = -SQRT3/6.* (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ;
     1040                        dbasis[NUMNODESP1xP4*2+10] = gauss->coord2* (-8./3.)*((2.*zeta -1.)*(zeta-0.5)*(zeta +1.) +zeta *(zeta -1.)*( 2.*zeta + 0.5));
     1041                        /*Nodal function 12*/
     1042                        dbasis[NUMNODESP1xP4*0+11] = 0. ;
     1043                        dbasis[NUMNODESP1xP4*1+11] = SQRT3/6.* (-8./3.)*(zeta - 1.)*(zeta - 0.5)*(zeta)*(zeta +1. ) ;
     1044                        dbasis[NUMNODESP1xP4*2+11] = gauss->coord3* (-8./3.)*((2.*zeta-1.)*(zeta-0.5)*(zeta +1.) +zeta *(zeta -1.)*( 2.*zeta + 0.5));
     1045                        /*Nodal function 13*/
     1046                        dbasis[NUMNODESP1xP4*0+12] = -0.5* (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ) ;
     1047                        dbasis[NUMNODESP1xP4*1+12] = -SQRT3/6.* (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ) ;
     1048                        dbasis[NUMNODESP1xP4*2+12] = gauss->coord1* (-8./3.)*((2.*zeta -1. ) *(zeta+0.5)* (zeta +1.) +  zeta* (zeta -1.)*( 2.*zeta + 3./2.));
     1049                        /*Nodal function 14*/
     1050                        dbasis[NUMNODESP1xP4*0+13] = +0.5* (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ) ;
     1051                        dbasis[NUMNODESP1xP4*1+13] = -SQRT3/6.* (-8./3.)*(zeta - 1.)*(zeta)*(zeta+0.5)*(zeta +1. ) ;
     1052                        dbasis[NUMNODESP1xP4*2+13] = gauss->coord2* (-8./3.)*((2.*zeta -1. )*(zeta+0.5)*(zeta +1.) +  zeta*(zeta -1.)*( 2.*zeta + 3./2.));
     1053                        /*Nodal function 15*/
     1054                        dbasis[NUMNODESP1xP4*0+14] = 0 ;
     1055                        dbasis[NUMNODESP1xP4*1+14] = SQRT3/6.* (-8./3.)*(zeta - 1.)*(zeta + 0.5)*(zeta)*(zeta +1. ) ;
     1056                        dbasis[NUMNODESP1xP4*2+14] = gauss->coord3* (-8./3.)*((2. *zeta -1. )*(zeta+0.5)*(zeta +1.) +  zeta*(zeta -1.)*( 2.*zeta + 3./2.));
     1057
     1058                        return;
    9661059                default:
    9671060                        _error_("Element type "<<EnumToStringx(finiteelement)<<" not supported yet");
    9681061        }
     
    10741167                        indices[1*2 + 0] = 1; indices[1*2 + 1] = 7;
    10751168                        indices[2*2 + 0] = 2; indices[2*2 + 1] = 8;
    10761169                        break;
     1170                case P1xP4Enum:
     1171                        numseg = 3;
     1172                        indices = xNew<int>(numseg*2);
     1173                        indices[0*2 + 0] = 0; indices[0*2 + 1] = 6;
     1174                        indices[1*2 + 0] = 1; indices[1*2 + 1] = 7;
     1175                        indices[2*2 + 0] = 2; indices[2*2 + 1] = 8;
     1176                        break;
    10771177                case P2Enum:
    10781178                        numseg = 6;
    10791179                        indices = xNew<int>(numseg*2);
     
    11291229                case P1xP2Enum:             return NUMNODESP1xP2;
    11301230                case P2xP4Enum:             return NUMNODESP2xP4;
    11311231                case P1xP3Enum:             return NUMNODESP1xP3;
     1232                case P1xP4Enum:             return NUMNODESP1xP4;
    11321233                case P1P1Enum:              return NUMNODESP1*2;
    11331234                case P1P1GLSEnum:           return NUMNODESP1*2;
    11341235                case MINIcondensedEnum:     return NUMNODESP1b+NUMNODESP1;
     
    11951296                        break;
    11961297                case P1xP2Enum:
    11971298                case P1xP3Enum:
     1299                case P1xP4Enum:
    11981300                        numindices = 3;
    11991301                        indices    = xNew<int>(numindices);
    12001302                        indices[0] = 3;
  • ../trunk-jpl/src/c/classes/gauss/GaussPenta.cpp

     
    600600                                default: _error_("node index should be in [0 11]");
    601601                        }
    602602                        break;
     603                case P1xP4Enum:
     604                        switch(iv){
     605                                case 0 : coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
     606                                case 1 : coord1=0.; coord2=1.; coord3=0.; coord4=-1.; break;
     607                                case 2 : coord1=0.; coord2=0.; coord3=1.; coord4=-1.; break;
     608                                case 3 : coord1=1.; coord2=0.; coord3=0.; coord4=+1.; break;
     609                                case 4 : coord1=0.; coord2=1.; coord3=0.; coord4=+1.; break;
     610                                case 5 : coord1=0.; coord2=0.; coord3=1.; coord4=+1.; break;
     611
     612                                case 6 : coord1=1.; coord2=0.; coord3=0.; coord4=0.; break;
     613                                case 7 : coord1=0.; coord2=1.; coord3=0.; coord4=0.; break;
     614                                case 8 : coord1=0.; coord2=0.; coord3=1.; coord4=0.; break;
     615
     616                                case 9 : coord1=1.; coord2=0.; coord3=0.; coord4=-0.5; break;
     617                                case 10: coord1=0.; coord2=1.; coord3=0.; coord4=-0.5; break;
     618                                case 11: coord1=0.; coord2=0.; coord3=1.; coord4=-0.5; break;
     619
     620                                case 12: coord1=1.; coord2=0.; coord3=0.; coord4=+0.5; break;
     621                                case 13: coord1=0.; coord2=1.; coord3=0.; coord4=+0.5; break;
     622                                case 14: coord1=0.; coord2=0.; coord3=1.; coord4=+0.5; break;
     623                                default: _error_("node index should be in [0 14]");
     624                        }
     625                        break;
    603626                case P2xP1Enum:
    604627                        switch(iv){
    605628                                case 0: coord1=1.; coord2=0.; coord3=0.; coord4=-1.; break;
  • ../trunk-jpl/src/c/classes/Inputs/PentaInput.cpp

     
    253253                                for(int i=2;i<9;i+=3) this->values[i]=this->values[11];
    254254                        }
    255255                        break;
     256                case P1xP4Enum:
     257                        if(start==-1){
     258                                for(int i=0+3;i<15;i+=3) this->values[i]=this->values[0];
     259                                for(int i=1+3;i<15;i+=3) this->values[i]=this->values[1];
     260                                for(int i=2+3;i<15;i+=3) this->values[i]=this->values[2];
     261                        }
     262                        else{
     263                                for(int i=0;i<12;i+=3) this->values[i]=this->values[12];
     264                                for(int i=1;i<12;i+=3) this->values[i]=this->values[13];
     265                                for(int i=2;i<12;i+=3) this->values[i]=this->values[14];
     266                        }
     267                        break;
    256268                default:
    257269                        _error_("not supported yet for type "<<EnumToStringx(this->interpolation_type));
    258270        }
Note: See TracBrowser for help on using the repository browser.