Changeset 17405


Ignore:
Timestamp:
03/10/14 16:21:37 (11 years ago)
Author:
Mathieu Morlighem
Message:

CHG: implementing nodal functions P1 and P2 for tetra

Location:
issm/trunk-jpl/src/c
Files:
2 edited

Legend:

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

    r17398 r17405  
    1818#define NUMNODESP0  1
    1919#define NUMNODESP1  4
     20#define NUMNODESP2  10
    2021
    2122/*Object constructors and destructor*/
     
    6364
    6465        switch(element_type){
     66                case P0Enum:
     67                        basis[0]=1.;
     68                        return;
     69                case P1Enum: case P1DGEnum:
     70                        basis[0]=gauss->coord1;
     71                        basis[1]=gauss->coord2;
     72                        basis[2]=gauss->coord3;
     73                        basis[3]=gauss->coord4;
     74                        return;
     75                case P2Enum:
     76                        /*Vertices*/
     77                        basis[0]=gauss->coord1*(2.*gauss->coord1-1.);
     78                        basis[1]=gauss->coord2*(2.*gauss->coord2-1.);
     79                        basis[2]=gauss->coord3*(2.*gauss->coord3-1.);
     80                        basis[3]=gauss->coord4*(2.*gauss->coord4-1.);
     81                        /*Edges*/
     82                        basis[4]=4.*gauss->coord2*gauss->coord3;
     83                        basis[5]=4.*gauss->coord1*gauss->coord3;
     84                        basis[6]=4.*gauss->coord1*gauss->coord2;
     85                        basis[7]=4.*gauss->coord2*gauss->coord4;
     86                        basis[8]=4.*gauss->coord3*gauss->coord4;
     87                        basis[9]=4.*gauss->coord1*gauss->coord4;
     88                        return;
    6589                default:
    6690                        _error_("Element type "<<EnumToStringx(element_type)<<" not supported yet");
     
    105129        /*Clean up*/
    106130        xDelete<IssmDouble>(dbasis_ref);
    107 
    108131}
    109132/*}}}*/
     
    125148
    126149        switch(finiteelement){
     150                case P0Enum:
     151                        /*Nodal function 1*/
     152                        dbasis[NUMNODESP0*0+0] = 0.;
     153                        dbasis[NUMNODESP0*1+0] = 0.;
     154                        dbasis[NUMNODESP0*2+0] = 0.;
     155                        return;
     156                case P1Enum: case P1DGEnum:
     157                        dbasis[NUMNODESP1*0+0] = -1.;
     158                        dbasis[NUMNODESP1*1+0] = -1.;
     159                        dbasis[NUMNODESP1*2+0] = -1.;
     160
     161                        dbasis[NUMNODESP1*0+1] = 1.;
     162                        dbasis[NUMNODESP1*1+1] = 0.;
     163                        dbasis[NUMNODESP1*2+1] = 0.;
     164
     165                        dbasis[NUMNODESP1*0+2] = 0.;
     166                        dbasis[NUMNODESP1*1+2] = 1.;
     167                        dbasis[NUMNODESP1*2+2] = 0.;
     168
     169                        dbasis[NUMNODESP1*0+3] = 0.;
     170                        dbasis[NUMNODESP1*1+3] = 0.;
     171                        dbasis[NUMNODESP1*2+3] = 1.;
     172                        return;
     173                case P2Enum:
     174                        dbasis[NUMNODESP2*0+0] = -4.*gauss->coord1+1.;
     175                        dbasis[NUMNODESP2*1+0] = -4.*gauss->coord1+1.;
     176                        dbasis[NUMNODESP2*2+0] = -4.*gauss->coord1+1.;
     177
     178                        dbasis[NUMNODESP2*0+1] = 4.*gauss->coord2-1.;
     179                        dbasis[NUMNODESP2*1+1] = 0.;
     180                        dbasis[NUMNODESP2*2+1] = 0.;
     181
     182                        dbasis[NUMNODESP2*0+2] = 0.;
     183                        dbasis[NUMNODESP2*1+2] = 4.*gauss->coord3-1.;
     184                        dbasis[NUMNODESP2*2+2] = 0.;
     185
     186                        dbasis[NUMNODESP2*0+3] = 0.;
     187                        dbasis[NUMNODESP2*1+3] = 0.;
     188                        dbasis[NUMNODESP2*2+3] = 4.*gauss->coord4-1.;
     189
     190                        dbasis[NUMNODESP2*0+4] = 4.*gauss->coord3;
     191                        dbasis[NUMNODESP2*1+4] = 4.*gauss->coord2;
     192                        dbasis[NUMNODESP2*2+4] = 0.;
     193
     194                        dbasis[NUMNODESP2*0+5] = -4.*gauss->coord3;
     195                        dbasis[NUMNODESP2*1+5] = 4.*(gauss->coord1-gauss->coord3);
     196                        dbasis[NUMNODESP2*2+5] = -4.*gauss->coord3;
     197
     198                        dbasis[NUMNODESP2*0+6] = 4.*(gauss->coord1-gauss->coord2);
     199                        dbasis[NUMNODESP2*1+6] = -4.*gauss->coord2;
     200                        dbasis[NUMNODESP2*2+6] = -4.*gauss->coord2;
     201
     202                        dbasis[NUMNODESP2*0+7] = 4.*gauss->coord4;
     203                        dbasis[NUMNODESP2*1+7] = 0.;
     204                        dbasis[NUMNODESP2*2+7] = 4.*gauss->coord2;
     205
     206                        dbasis[NUMNODESP2*0+8] = 0.;
     207                        dbasis[NUMNODESP2*1+8] = 4.*gauss->coord4;
     208                        dbasis[NUMNODESP2*2+8] = 4.*gauss->coord3;
     209
     210                        dbasis[NUMNODESP2*0+9] = -4.*gauss->coord4;
     211                        dbasis[NUMNODESP2*1+9] = -4.*gauss->coord4;
     212                        dbasis[NUMNODESP2*2+9] = 4.*(gauss->coord1-gauss->coord4);
     213                        return;
    127214                default:
    128215                        _error_("Element type "<<EnumToStringx(this->element_type)<<" not supported yet");
     
    199286         * J is assumed to have been allocated of size 1*/
    200287
     288        IssmDouble x1=xyz_list[3*0+0];
     289        IssmDouble x2=xyz_list[3*1+0];
     290        IssmDouble x3=xyz_list[3*2+0];
     291        IssmDouble x4=xyz_list[3*3+0];
     292
     293        IssmDouble y1=xyz_list[3*0+1];
     294        IssmDouble y2=xyz_list[3*1+1];
     295        IssmDouble y3=xyz_list[3*2+1];
     296        IssmDouble y4=xyz_list[3*3+1];
     297
     298        IssmDouble z1=xyz_list[3*0+2];
     299        IssmDouble z2=xyz_list[3*1+2];
     300        IssmDouble z3=xyz_list[3*2+2];
     301        IssmDouble z4=xyz_list[3*3+2];
     302
    201303        _error_("Not implemented yet");
    202304}
     
    240342
    241343        switch(finiteelement){
    242                 case P0Enum:                return NUMNODESP0;
    243                 case P1Enum:                return NUMNODESP1;
    244                 case P1DGEnum:              return NUMNODESP1;
     344                case P0Enum:   return NUMNODESP0;
     345                case P1Enum:   return NUMNODESP1;
     346                case P1DGEnum: return NUMNODESP1;
     347                case P2Enum:   return NUMNODESP2;
    245348                default: _error_("Element type "<<EnumToStringx(this->element_type)<<" not supported yet");
    246349        }
  • issm/trunk-jpl/src/c/shared/Exceptions/Exceptions.cpp

    r17173 r17405  
    4646        file_line= what_line;
    4747        /*When error messages are not shown properly, uncomment the following line*/
    48         //this->Report();
     48        this->Report();
    4949
    5050}/*}}}*/
Note: See TracChangeset for help on using the changeset viewer.