Ignore:
Timestamp:
02/10/14 14:38:22 (11 years ago)
Author:
Mathieu Morlighem
Message:

CHG: simplifying getviscosity calls, now only provide effective strain rate

File:
1 edited

Legend:

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

    r17242 r17248  
    283283
    284284                this->StrainRateFS(&epsilon[0],xyz_list,gauss,vx_input,vy_input,vz_input);
    285                 this->material->GetViscosity3dFS(&viscosity,&epsilon[0]);
     285                this->ViscosityFS(&viscosity,3,xyz_list,gauss,vx_input,vy_input,vz_input);
    286286                this->GetPhi(&phi,&epsilon[0],viscosity);
    287287
     
    303303        IssmDouble epsilon3d[6]; /* epsilon=[exx,eyy,ezz,exy,exz,eyz];*/
    304304        IssmDouble epsilon2d[3]; /* epsilon=[exx,eyy,exy];            */
     305        IssmDouble eps_eff;
     306        IssmDouble eps0=1.e-27;
    305307
    306308        if(dim==3){
    307                 /*3D*/
     309                /* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy */
    308310                this->StrainRateFS(&epsilon3d[0],xyz_list,gauss,vx_input,vy_input,vz_input);
    309                 material->GetViscosity3dFS(&viscosity, &epsilon3d[0]);
     311                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);
    310312        }
    311313        else{
    312                 /*2D*/
     314                /* eps_eff^2 = exx^2 + eyy^2 + 2*exy^2 */
    313315                this->StrainRateSSA(&epsilon2d[0],xyz_list,gauss,vx_input,vy_input);
    314                 material->GetViscosity2dvertical(&viscosity,&epsilon2d[0]);
    315         }
     316                eps_eff = sqrt(epsilon2d[0]*epsilon2d[0] + epsilon2d[1]*epsilon2d[1] + 2.*epsilon2d[2]*epsilon2d[2]);
     317        }
     318
     319        /*Get viscosity*/
     320        material->GetViscosity(&viscosity,eps_eff);
    316321
    317322        /*Assign output pointer*/
     
    384389        IssmDouble epsilon3d[5];/* epsilon=[exx,eyy,exy,exz,eyz];*/
    385390        IssmDouble epsilon2d[2]; /* epsilon=[exx,exy];           */
     391        IssmDouble eps_eff;
    386392
    387393        if(dim==3){
     394                /* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy */
    388395                this->StrainRateHO(&epsilon3d[0],xyz_list,gauss,vx_input,vy_input);
    389                 material->GetViscosity3d(&viscosity, &epsilon3d[0]);
     396                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]);
    390397        }
    391398        else{
     399                /* eps_eff^2 = exx^2 + exy^2 */
    392400                this->StrainRateHO2dvertical(&epsilon2d[0],xyz_list,gauss,vx_input,vy_input);
    393                 material->GetViscosity2dverticalHO(&viscosity, &epsilon2d[0]);
    394         }
     401                eps_eff = sqrt(epsilon2d[0]*epsilon2d[0] + epsilon2d[1]*epsilon2d[1]);
     402        }
     403
     404        /*Get viscosity*/
     405        material->GetViscosity(&viscosity,eps_eff);
    395406
    396407        /*Assign output pointer*/
     
    402413        IssmDouble viscosity;
    403414        IssmDouble epsilon[3];/* epsilon=[exx,eyy,exy];    */
    404 
     415        IssmDouble eps_eff;
     416
     417        /*Get effective strain rate
     418         * eps_eff^2 = exx^2 + eyy^2 + exy^2 + exx*eyy+*/
    405419        this->StrainRateSSA(&epsilon[0],xyz_list,gauss,vx_input,vy_input);
    406         material->GetViscosity2d(&viscosity, &epsilon[0]);
     420        eps_eff = sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + epsilon[2]*epsilon[2] + epsilon[0]*epsilon[1]);
     421
     422        /*Get viscosity*/
     423        material->GetViscosityBar(&viscosity,eps_eff);
    407424
    408425        /*Assign output pointer*/
Note: See TracChangeset for help on using the changeset viewer.