Changeset 15313


Ignore:
Timestamp:
06/22/13 08:54:37 (12 years ago)
Author:
Mathieu Morlighem
Message:

CHG: renamed GetL GetBMacyealFriction and GetBPattynFriction for consistency

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

Legend:

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

    r15306 r15313  
    60606060
    60616061                GetTriaJacobianDeterminant(&Jdet2d, &xyz_list_tria[0][0],gauss);
    6062                 GetL(&L[0][0], gauss,NDOF2);
     6062                GetBPattynFriction(&L[0][0],gauss);
    60636063
    60646064                DL_scalar=alpha2*gauss->weight*Jdet2d;
     
    68736873
    68746874                GetTriaJacobianDeterminant(&Jdet, &xyz_list_tria[0][0],gauss);
    6875                 GetL(&L[0][0], gauss,NDOF2);
     6875                GetBPattynFriction(&L[0][0],gauss);
    68766876
    68776877                friction->GetAlpha2(&alpha2, gauss,VxEnum,VyEnum,VzEnum);
  • TabularUnified issm/trunk-jpl/src/c/classes/Elements/PentaRef.cpp

    r15298 r15313  
    488488}
    489489/*}}}*/
    490 /*FUNCTION PentaRef::GetL{{{*/
    491 void PentaRef::GetL(IssmDouble* L, GaussPenta* gauss, int numdof){
    492         /*Compute L  matrix. L=[L1 L2 L3] where Li is square and of size numdof.
    493          ** For node i, Li can be expressed in the actual coordinate system
     490/*FUNCTION PentaRef::GetBPattynFriction{{{*/
     491void PentaRef::GetBPattynFriction(IssmDouble* B, GaussPenta* gauss){
     492        /*Compute B  matrix. B=[B1 B2 B3] where Bi is square and of size 2x2.
     493         ** For node i, Bi can be expressed in the actual coordinate system
    494494         ** by:
    495          **       numdof=1:
    496          **                 Li=h;
    497          **       numdof=2:
    498          **                 Li=[ h   0 ]
    499          **                    [ 0   h ]
    500          ** where h is the interpolation function for node i.
     495         **                 Bi=[ N   0 ]
     496         **                    [ 0   N ]
     497         ** where N is the interpolation function for node i.
    501498         **
    502          ** We assume L has been allocated already, of size: NUMNODESP1 (numdof=1), or numdofx(numdof*NUMNODESP1) (numdof=2)
     499         ** We assume B has been allocated already, of size: 2 (2 x numnodes)
    503500         **/
    504501
    505         int i;
    506         IssmDouble l1l6[6];
     502        IssmDouble basis[6];
    507503
    508504        /*Get l1l6 in actual coordinate system: */
    509         GetNodalFunctionsP1(l1l6,gauss);
    510 
    511         /*Build L: */
    512         if(numdof==1){
    513                 for (i=0;i<NUMNODESP1;i++){
    514                         L[i]=l1l6[i];
    515                 }
    516         }
    517         else{
    518                 for (i=0;i<NUMNODESP1;i++){
    519                         *(L+numdof*NUMNODESP1*0+numdof*i)=l1l6[i];
    520                         *(L+numdof*NUMNODESP1*0+numdof*i+1)=0;
    521                         *(L+numdof*NUMNODESP1*1+numdof*i)=0;
    522                         *(L+numdof*NUMNODESP1*1+numdof*i+1)=l1l6[i];
    523                 }
     505        GetNodalFunctionsP1(&basis[0],gauss);
     506
     507        for(int i=0;i<NUMNODESP1;i++){
     508                B[2*NUMNODESP1*0+2*i+0]=basis[i];
     509                B[2*NUMNODESP1*0+2*i+1]=0.;
     510                B[2*NUMNODESP1*1+2*i+0]=0.;
     511                B[2*NUMNODESP1*1+2*i+1]=basis[i];
    524512        }
    525513}
  • TabularUnified issm/trunk-jpl/src/c/classes/Elements/PentaRef.h

    r15298 r15313  
    4747                void GetBVert(IssmDouble* B, IssmDouble* xyz_list, GaussPenta* gauss);
    4848                void GetBprimeAdvec(IssmDouble* Bprime_advec, IssmDouble* xyz_list, GaussPenta* gauss);
    49                 void GetL(IssmDouble* L, GaussPenta* gauss,int numdof);
     49                void GetBPattynFriction(IssmDouble* L, GaussPenta* gauss);
    5050                void GetLStokes(IssmDouble* LStokes, GaussPenta* gauss);
    5151                void GetLprimeStokes(IssmDouble* LprimeStokes, IssmDouble* xyz_list, GaussPenta* gauss);
  • TabularUnified issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r15305 r15313  
    292292        IssmDouble Jdet,D_scalar;
    293293        IssmDouble xyz_list[NUMVERTICES][3];
    294         IssmDouble L[3];
     294        IssmDouble basis[3];
    295295        GaussTria *gauss=NULL;
    296296
     
    309309                gauss->GaussPoint(ig);
    310310
    311                 GetL(&L[0], &xyz_list[0][0], gauss,NDOF1);
     311                GetNodalFunctions(&basis[0],gauss);
    312312                GetJacobianDeterminant(&Jdet, &xyz_list[0][0], gauss);
    313313
    314314                D_scalar=latentheat/heatcapacity*gauss->weight*Jdet;
    315315
    316                 TripleMultiply(&L[0],numdof,1,0,
     316                TripleMultiply(&basis[0],numdof,1,0,
    317317                                        &D_scalar,1,1,0,
    318                                         &L[0],1,numdof,0,
     318                                        &basis[0],1,numdof,0,
    319319                                        &Ke->values[0],1);
    320320        }
     
    353353        IssmDouble v_gauss[2]={0.0};
    354354        IssmDouble xyz_list[NUMVERTICES][3];
    355         IssmDouble L[NUMVERTICES];
     355        IssmDouble basis[NUMVERTICES];
    356356        IssmDouble B[2][NUMVERTICES];
    357357        IssmDouble Bprime[2][NUMVERTICES];
     
    388388
    389389                GetJacobianDeterminant(&Jdettria, &xyz_list[0][0],gauss);
    390                 GetL(&L[0], &xyz_list[0][0], gauss,NDOF1);
     390                GetNodalFunctions(&basis[0],gauss);
    391391
    392392                vxaverage_input->GetInputValue(&vx,gauss);
     
    397397                DL_scalar=gauss->weight*Jdettria;
    398398
    399                 TripleMultiply( &L[0],1,numdof,1,
     399                TripleMultiply(&basis[0],1,numdof,1,
    400400                                        &DL_scalar,1,1,0,
    401                                         &L[0],1,numdof,0,
     401                                        &basis[0],1,numdof,0,
    402402                                        &Ke->values[0],1);
    403403
     
    468468        IssmDouble xyz_list[NUMVERTICES][3];
    469469        IssmDouble Jdettria,dt,vx,vy;
    470         IssmDouble L[NUMVERTICES];
     470        IssmDouble basis[NUMVERTICES];
    471471        IssmDouble B[2][NUMVERTICES];
    472472        IssmDouble Bprime[2][NUMVERTICES];
     
    504504
    505505                GetJacobianDeterminant(&Jdettria, &xyz_list[0][0],gauss);
    506                 GetL(&L[0], &xyz_list[0][0], gauss,NDOF1);
     506                GetNodalFunctions(&basis[0],gauss);
    507507
    508508                DL_scalar=gauss->weight*Jdettria;
    509509
    510                 TripleMultiply( &L[0],1,numdof,1,
     510                TripleMultiply(&basis[0],1,numdof,1,
    511511                                        &DL_scalar,1,1,0,
    512                                         &L[0],1,numdof,0,
     512                                        &basis[0],1,numdof,0,
    513513                                        &Ke->values[0],1);
    514514
     
    542542        IssmDouble  D,Jdet;
    543543        IssmDouble  xyz_list[NUMVERTICES][3];
    544         IssmDouble  L[1][numdof];
     544        IssmDouble  basis[numdof];
    545545        GaussTria  *gauss = NULL;
    546546
     
    556556                gauss->GaussPoint(ig);
    557557
     558                GetNodalFunctions(&basis[0],gauss);
    558559                GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss);
    559560                D=gauss->weight*Jdet;
    560561
    561                 GetL(&L[0][0], &xyz_list[0][0], gauss,NDOF1);
    562 
    563                 TripleMultiply(&L[0][0],1,3,1,
     562                TripleMultiply(&basis[0],1,3,1,
    564563                                        &D,1,1,0,
    565                                         &L[0][0],1,3,0,
     564                                        &basis[0],1,3,0,
    566565                                        &Ke->values[0],1);
    567566        }
     
    668667        IssmDouble surface_mass_balance_g,basal_melting_g,basal_melting_correction_g,thickness_g;
    669668        IssmDouble xyz_list[NUMVERTICES][3];
    670         IssmDouble L[NUMVERTICES];
     669        IssmDouble basis[NUMVERTICES];
    671670        GaussTria* gauss=NULL;
    672671
     
    690689
    691690                GetJacobianDeterminant(&Jdettria, &xyz_list[0][0],gauss);
    692                 GetL(&L[0], &xyz_list[0][0], gauss,NDOF1);
     691                GetNodalFunctions(&basis[0],gauss);
    693692
    694693                surface_mass_balance_input->GetInputValue(&surface_mass_balance_g,gauss);
     
    700699                 basal_melting_correction_g=0.;
    701700
    702                 for(int i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(thickness_g+dt*(surface_mass_balance_g-basal_melting_g-basal_melting_correction_g))*L[i];
     701                for(int i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(thickness_g+dt*(surface_mass_balance_g-basal_melting_g-basal_melting_correction_g))*basis[i];
    703702        }
    704703
     
    718717        IssmDouble surface_mass_balance_g,basal_melting_g,thickness_g;
    719718        IssmDouble xyz_list[NUMVERTICES][3];
    720         IssmDouble L[NUMVERTICES];
     719        IssmDouble basis[NUMVERTICES];
    721720        GaussTria* gauss=NULL;
    722721
     
    738737
    739738                GetJacobianDeterminant(&Jdettria, &xyz_list[0][0],gauss);
    740                 GetL(&L[0], &xyz_list[0][0], gauss,NDOF1);
     739                GetNodalFunctions(&basis[0],gauss);
    741740
    742741                surface_mass_balance_input->GetInputValue(&surface_mass_balance_g,gauss);
     
    744743                thickness_input->GetInputValue(&thickness_g,gauss);
    745744
    746                 for(int i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(thickness_g+dt*(surface_mass_balance_g-basal_melting_g))*L[i];
     745                for(int i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(thickness_g+dt*(surface_mass_balance_g-basal_melting_g))*basis[i];
    747746        }
    748747
     
    34013400                }
    34023401
    3403                 GetL(&B[0], &xyz_list[0][0], gauss,NDOF2);
     3402                GetBMacAyealFriction(&B[0], &xyz_list[0][0], gauss);
    34043403                GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss);
    34053404                D_scalar=alpha2*gauss->weight*Jdet;
     
    59475946        IssmDouble v_gauss[2]={0.0};
    59485947        IssmDouble xyz_list[NUMVERTICES][3];
    5949         IssmDouble L[NUMVERTICES];
     5948        IssmDouble basis[NUMVERTICES];
    59505949        IssmDouble B[2][NUMVERTICES];
    59515950        IssmDouble Bprime[2][NUMVERTICES];
     
    59805979
    59815980                GetJacobianDeterminant(&Jdettria, &xyz_list[0][0],gauss);
    5982                 GetL(&L[0], &xyz_list[0][0], gauss,NDOF1);
     5981                GetNodalFunctions(&basis[0],gauss);
    59835982
    59845983                vx_input->GetInputValue(&vx,gauss);
     
    59895988                DL_scalar=gauss->weight*Jdettria;
    59905989
    5991                 TripleMultiply( &L[0],1,numdof,1,
     5990                TripleMultiply(&basis[0],1,numdof,1,
    59925991                                        &DL_scalar,1,1,0,
    5993                                         &L[0],1,numdof,0,
     5992                                        &basis[0],1,numdof,0,
    59945993                                        &Ke->values[0],1);
    59955994
     
    60506049        IssmDouble  xyz_list[NUMVERTICES][3];
    60516050        IssmDouble  B[2][numdof];
    6052         IssmDouble  L[NUMVERTICES];
     6051        IssmDouble  basis[NUMVERTICES];
    60536052        IssmDouble  D[2][2];
    60546053        GaussTria   *gauss = NULL;
     
    60786077                GetBHydro(&B[0][0],&xyz_list[0][0],gauss);
    60796078                TripleMultiply(&B[0][0],2,numdof,1,
    6080                                                                          &D[0][0],2,2,0,
    6081                                                                          &B[0][0],2,numdof,0,
    6082                                                                          &Ke->values[0],1);
     6079                                        &D[0][0],2,2,0,
     6080                                        &B[0][0],2,numdof,0,
     6081                                        &Ke->values[0],1);
    60836082
    60846083                /*Transient*/
    60856084                if(reCast<bool,IssmDouble>(dt)){
    6086                         GetL(&L[0], &xyz_list[0][0], gauss,NDOF1);
     6085                        GetNodalFunctions(&basis[0],gauss);
    60876086                        D_scalar=sediment_storing*gauss->weight*Jdet;
    60886087
    6089                         TripleMultiply(&L[0],numdof,1,0,
    6090                                                                                  &D_scalar,1,1,0,
    6091                                                                                  &L[0],1,numdof,0,
    6092                                                                                  &Ke->values[0],1);
     6088                        TripleMultiply(&basis[0],numdof,1,0,
     6089                                                &D_scalar,1,1,0,
     6090                                                &basis[0],1,numdof,0,
     6091                                                &Ke->values[0],1);
    60936092                }
    60946093        }
     
    61106109        IssmDouble  xyz_list[NUMVERTICES][3];
    61116110        IssmDouble  B[2][numdof];
    6112         IssmDouble  L[NUMVERTICES];
     6111        IssmDouble  basis[NUMVERTICES];
    61136112        IssmDouble  D[2][2];
    61146113        GaussTria   *gauss = NULL;
     
    61496148                /*Transient*/
    61506149                if(reCast<bool,IssmDouble>(dt)){
    6151                         GetL(&L[0], &xyz_list[0][0], gauss,NDOF1);
     6150                        GetNodalFunctions(&basis[0],gauss);
    61526151                        D_scalar=epl_storing*gauss->weight*Jdet;
    61536152
    6154                         TripleMultiply(&L[0],numdof,1,0,
    6155                                                                                  &D_scalar,1,1,0,
    6156                                                                                  &L[0],1,numdof,0,
    6157                                                                                  &Ke->values[0],1);
     6153                        TripleMultiply(&basis[0],numdof,1,0,
     6154                                                &D_scalar,1,1,0,
     6155                                                &basis[0],1,numdof,0,
     6156                                                &Ke->values[0],1);
    61586157                }
    61596158        }
     
    70587057        IssmDouble xyz_list[NUMVERTICES][3];
    70597058        IssmDouble dhdt_g,basal_melting_g,surface_mass_balance_g,Jdettria;
    7060         IssmDouble L[NUMVERTICES];
     7059        IssmDouble basis[NUMVERTICES];
    70617060        GaussTria* gauss=NULL;
    70627061
     
    70817080
    70827081                GetJacobianDeterminant(&Jdettria, &xyz_list[0][0],gauss);
    7083                 GetL(&L[0], &xyz_list[0][0], gauss,NDOF1);
    7084 
    7085                 for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(surface_mass_balance_g-basal_melting_g-dhdt_g)*L[i];
     7082                GetNodalFunctions(&basis[0],gauss);
     7083
     7084                for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(surface_mass_balance_g-basal_melting_g-dhdt_g)*basis[i];
    70867085        }
    70877086
     
    71017100        IssmDouble xyz_list[NUMVERTICES][3];
    71027101        IssmDouble basal_melting_g,surface_mass_balance_g,dhdt_g,Jdettria;
    7103         IssmDouble L[NUMVERTICES];
     7102        IssmDouble basis[NUMVERTICES];
    71047103        GaussTria* gauss=NULL;
    71057104
     
    71247123
    71257124                GetJacobianDeterminant(&Jdettria, &xyz_list[0][0],gauss);
    7126                 GetL(&L[0], &xyz_list[0][0], gauss,NDOF1);
    7127 
    7128                 for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(surface_mass_balance_g-basal_melting_g-dhdt_g)*L[i];
     7125                GetNodalFunctions(&basis[0],gauss);
     7126
     7127                for(i=0;i<numdof;i++) pe->values[i]+=Jdettria*gauss->weight*(surface_mass_balance_g-basal_melting_g-dhdt_g)*basis[i];
    71297128        }
    71307129
  • TabularUnified issm/trunk-jpl/src/c/classes/Elements/TriaRef.cpp

    r15312 r15313  
    298298/*}}}*/
    299299/*FUNCTION TriaRef::GetL{{{*/
    300 void TriaRef::GetL(IssmDouble* L, IssmDouble* xyz_list,GaussTria* gauss,int numdof){
    301         /*Compute L  matrix. L=[L1 L2 L3] where Li is square and of size numdof.
    302          * For node i, Li can be expressed in the actual coordinate system
    303          * by:
    304          *       numdof=1:
    305          *                 Li=h;
    306          *       numdof=2:
    307          *                 Li=[ h   0 ]
    308          *                    [ 0   h ]
    309          * where h is the interpolation function for node i.
    310          *
    311          * We assume L has been allocated already, of size: NUMNODESP1 (numdof=1), or numdofx(numdof*NUMNODESP1) (numdof=2)
     300void TriaRef::GetBMacAyealFriction(IssmDouble* B, IssmDouble* xyz_list,GaussTria* gauss){
     301        /*Compute B  matrix. B=[B1 B2 B3] where Bi is square and of size 2.
     302         * For node i, Bi can be expressed in the actual coordinate system
     303         * by:
     304         *                 Bi=[ N   0 ]
     305         *                    [ 0   N ]
     306         * where N is the interpolation function for node i.
     307         *
     308         * We assume B has been allocated already, of size: 2 x (numdof*NUMNODESP1)
    312309         */
    313310
     
    319316
    320317        /*Build L: */
    321         if(numdof==1){
    322                 for (i=0;i<NUMNODESP1;i++){
    323                         L[i]=basis[i];
    324                 }
    325         }
    326         else{
    327                 for (i=0;i<NUMNODESP1;i++){
    328                         *(L+numdof*NUMNODESP1*0+numdof*i)=basis[i]; //L[0][NDOF2*i]=dbasis[0][i];
    329                         *(L+numdof*NUMNODESP1*0+numdof*i+1)=0;
    330                         *(L+numdof*NUMNODESP1*1+numdof*i)=0;
    331                         *(L+numdof*NUMNODESP1*1+numdof*i+1)=basis[i];
    332                 }
     318        for (i=0;i<NUMNODESP1;i++){
     319                *(B+2*NUMNODESP1*0+2*i)=basis[i]; //L[0][NDOF2*i]=dbasis[0][i];
     320                *(B+2*NUMNODESP1*0+2*i+1)=0;
     321                *(B+2*NUMNODESP1*1+2*i)=0;
     322                *(B+2*NUMNODESP1*1+2*i+1)=basis[i];
    333323        }
    334324}
  • TabularUnified issm/trunk-jpl/src/c/classes/Elements/TriaRef.h

    r15298 r15313  
    3030                void GetBPrognostic(IssmDouble* B_prog, IssmDouble* xyz_list, GaussTria* gauss);
    3131                void GetBHydro(IssmDouble* B, IssmDouble* xyz_list, GaussTria* gauss);
    32                 void GetL(IssmDouble* L, IssmDouble* xyz_list,GaussTria* gauss,int numdof);
     32                void GetBMacAyealFriction(IssmDouble* L, IssmDouble* xyz_list,GaussTria* gauss);
    3333                void GetJacobian(IssmDouble* J, IssmDouble* xyz_list,GaussTria* gauss);
    3434                void GetSegmentJacobianDeterminant(IssmDouble* Jdet, IssmDouble* xyz_list,GaussTria* gauss);
Note: See TracChangeset for help on using the changeset viewer.