Changeset 18833


Ignore:
Timestamp:
11/24/14 10:32:57 (10 years ago)
Author:
hongjuy
Message:

CHG: adding function dViscositydB for HO and FS

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

Legend:

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

    r18758 r18833  
    438438         }
    439439
     440        /*Get viscosity*/
     441        material->GetViscosity_B(&dmudB,eps_eff);
     442
     443        /*Assign output pointer*/
     444        *pdmudB=dmudB;
     445
     446}
     447/*}}}*/
     448void       Element::dViscositydBHO(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input){/*{{{*/
     449
     450        /*Intermediaries*/
     451        IssmDouble dmudB;
     452        IssmDouble epsilon3d[5];/* epsilon=[exx,eyy,exy,exy,exz,eyz];    */
     453        IssmDouble epsilon2d[2];/* epsilon=[exx,eyy,exy];    */
     454        IssmDouble eps_eff;
     455        IssmDouble eps0=1.e-27;
     456
     457        if(dim==3){
     458                /* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy */
     459                this->StrainRateHO(&epsilon3d[0],xyz_list,gauss,vx_input,vy_input);
     460                eps_eff = sqrt(epsilon3d[0]*epsilon3d[0] + epsilon3d[1]*epsilon3d[1] + epsilon3d[2]*epsilon3d[2] + epsilon3d[3]*epsilon3d[3] +  epsilon3d[4]*epsilon3d[4] + epsilon3d[0]*epsilon3d[1]+eps0*eps0);
     461        }
     462        else{
     463                /* eps_eff^2 = 1/2 ( exx^2 + eyy^2 + 2*exy^2 )*/
     464                this->StrainRateHO2dvertical(&epsilon2d[0],xyz_list,gauss,vx_input,vy_input);
     465                eps_eff = 1./sqrt(2.)*sqrt(epsilon2d[0]*epsilon2d[0] + 2.*epsilon2d[1]*epsilon2d[1] + eps0*eps0);
     466        }
     467        /*Get viscosity*/
     468        material->GetViscosity_B(&dmudB,eps_eff);
     469
     470        /*Assign output pointer*/
     471        *pdmudB=dmudB;
     472
     473}
     474/*}}}*/
     475void       Element::dViscositydBFS(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){/*{{{*/
     476
     477        /*Intermediaries*/
     478        IssmDouble dmudB;
     479        IssmDouble epsilon3d[6];/* epsilon=[exx,eyy,exy,exy,exz,eyz];    */
     480        IssmDouble epsilon2d[3];/* epsilon=[exx,eyy,exy];    */
     481        IssmDouble eps_eff;
     482        IssmDouble eps0=1.e-27;
     483
     484        if(dim==3){
     485                /* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy */
     486                this->StrainRateFS(&epsilon3d[0],xyz_list,gauss,vx_input,vy_input,vz_input);
     487                eps_eff = sqrt(epsilon3d[0]*epsilon3d[0] + epsilon3d[1]*epsilon3d[1] + epsilon3d[3]*epsilon3d[3] +  epsilon3d[4]*epsilon3d[4] + epsilon3d[5]*epsilon3d[5] + epsilon3d[0]*epsilon3d[1]+eps0*eps0);
     488        }
     489        else{
     490                /* eps_eff^2 = 1/2 ( exx^2 + eyy^2 + 2*exy^2 )*/
     491                this->StrainRateSSA(&epsilon2d[0],xyz_list,gauss,vx_input,vy_input);
     492                eps_eff = 1./sqrt(2.)*sqrt(epsilon2d[0]*epsilon2d[0] + epsilon2d[1]*epsilon2d[1] + 2.*epsilon2d[2]*epsilon2d[2]);
     493        }
    440494        /*Get viscosity*/
    441495        material->GetViscosity_B(&dmudB,eps_eff);
  • issm/trunk-jpl/src/c/classes/Elements/Element.h

    r18786 r18833  
    6666                void       DeleteMaterials(void);
    6767                void       dViscositydBSSA(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
     68                void       dViscositydBHO(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
     69                void       dViscositydBFS(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
    6870                void       dViscositydDSSA(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
    6971                IssmDouble Divergence(void);
Note: See TracChangeset for help on using the changeset viewer.