Changeset 16922


Ignore:
Timestamp:
11/25/13 10:24:32 (11 years ago)
Author:
Mathieu Morlighem
Message:

CHG: ViscosityFS now requires dim

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

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp

    r16909 r16922  
    22712271                this->GetBFSprime(Bprime,element,dim,xyz_list,gauss);
    22722272
    2273                 element->ViscosityFS(&viscosity,xyz_list,gauss,vx_input,vy_input,vz_input);
     2273                element->ViscosityFS(&viscosity,dim,xyz_list,gauss,vx_input,vy_input,vz_input);
    22742274                for(i=0;i<epssize;i++)     D[i*bsize+i] = + 2.*viscosity*gauss->weight*Jdet;
    22752275                for(i=epssize;i<bsize;i++) D[i*bsize+i] = - FSreconditioning*gauss->weight*Jdet;
  • issm/trunk-jpl/src/c/classes/Elements/Element.cpp

    r16916 r16922  
    109109}/*}}}*/
    110110
    111 void Element::ViscosityFS(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){/*{{{*/
     111void Element::ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){/*{{{*/
    112112
    113113        /*Intermediaries*/
     
    116116        IssmDouble epsilon2d[3]; /* epsilon=[exx,eyy,exy];            */
    117117
    118         if(vz_input){
     118        if(dim==3){
    119119                /*3D*/
    120120                this->StrainRateFS(&epsilon3d[0],xyz_list,gauss,vx_input,vy_input,vz_input);
     
    207207        *pviscosity=viscosity;
    208208}/*}}}*/
     209void Element::ViscositySSA(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
     210
     211        /*Intermediaries*/
     212        IssmDouble viscosity;
     213        IssmDouble epsilon[3];/* epsilon=[exx,eyy,exy];    */
     214
     215        this->StrainRateSSA(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
     216        material->GetViscosity2d(&viscosity, &epsilon[0]);
     217
     218        /*Assign output pointer*/
     219        *pviscosity=viscosity;
     220}/*}}}*/
     221void Element::ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){/*{{{*/
     222        this->material->GetViscosity2dDerivativeEpsSquare(pmu_prime,epsilon);
     223}/*}}}*/
    209224void Element::ViscosityHODerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){/*{{{*/
    210225        this->material->GetViscosityDerivativeEpsSquare(pmu_prime,epsilon);
    211 }/*}}}*/
    212 void Element::StrainRateHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
    213         /*Compute the 3d Blatter/HOStrain Rate (5 components):
    214          *
    215          * epsilon=[exx eyy exy exz eyz]
    216          *
    217          * with exz=1/2 du/dz
    218          *      eyz=1/2 dv/dz
    219          *
    220          * the contribution of vz is neglected
    221          */
    222 
    223         int i;
    224         IssmDouble epsilonvx[5];
    225         IssmDouble epsilonvy[5];
    226 
    227         /*Check that both inputs have been found*/
    228         if (!vx_input || !vy_input){
    229                 _error_("Input missing. Here are the input pointers we have for vx: " << vx_input << ", vy: " << vy_input << "\n");
    230         }
    231 
    232         /*Get strain rate assuming that epsilon has been allocated*/
    233         vx_input->GetVxStrainRate3dHO(epsilonvx,xyz_list,gauss);
    234         vy_input->GetVyStrainRate3dHO(epsilonvy,xyz_list,gauss);
    235 
    236         /*Sum all contributions*/
    237         for(i=0;i<5;i++) epsilon[i]=epsilonvx[i]+epsilonvy[i];
    238226}/*}}}*/
    239227void Element::ViscosityFSDerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){/*{{{*/
     
    263251        for(int i=0;i<6;i++) epsilon[i]=epsilonvx[i]+epsilonvy[i]+epsilonvz[i];
    264252}/*}}}*/
    265 void Element::ViscositySSA(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
    266 
    267         /*Intermediaries*/
    268         IssmDouble viscosity;
    269         IssmDouble epsilon[3];/* epsilon=[exx,eyy,exy];    */
    270 
    271         this->StrainRateSSA(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
    272         material->GetViscosity2d(&viscosity, &epsilon[0]);
    273 
    274         /*Assign output pointer*/
    275         *pviscosity=viscosity;
    276 }/*}}}*/
    277 void Element::ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){/*{{{*/
    278         this->material->GetViscosity2dDerivativeEpsSquare(pmu_prime,epsilon);
     253void Element::StrainRateHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
     254        /*Compute the 3d Blatter/HOStrain Rate (5 components):
     255         *
     256         * epsilon=[exx eyy exy exz eyz]
     257         *
     258         * with exz=1/2 du/dz
     259         *      eyz=1/2 dv/dz
     260         *
     261         * the contribution of vz is neglected
     262         */
     263
     264        int i;
     265        IssmDouble epsilonvx[5];
     266        IssmDouble epsilonvy[5];
     267
     268        /*Check that both inputs have been found*/
     269        if (!vx_input || !vy_input){
     270                _error_("Input missing. Here are the input pointers we have for vx: " << vx_input << ", vy: " << vy_input << "\n");
     271        }
     272
     273        /*Get strain rate assuming that epsilon has been allocated*/
     274        vx_input->GetVxStrainRate3dHO(epsilonvx,xyz_list,gauss);
     275        vy_input->GetVyStrainRate3dHO(epsilonvy,xyz_list,gauss);
     276
     277        /*Sum all contributions*/
     278        for(i=0;i<5;i++) epsilon[i]=epsilonvx[i]+epsilonvy[i];
    279279}/*}}}*/
    280280void Element::StrainRateSSA(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
  • issm/trunk-jpl/src/c/classes/Elements/Element.h

    r16916 r16922  
    6666                void       StrainRateFS(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
    6767                IssmDouble TMeltingPoint(IssmDouble pressure);
    68                 void       ViscosityFS(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
     68                void       ViscosityFS(IssmDouble* pviscosity,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
    6969                void       ViscosityHO(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
    7070                void       ViscosityL1L2(IssmDouble* pviscosity,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* surf);
Note: See TracChangeset for help on using the changeset viewer.