Changeset 20650


Ignore:
Timestamp:
05/25/16 20:40:09 (9 years ago)
Author:
Mathieu Morlighem
Message:

BUG: missing powers and wrong sign in eps_prime

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Materials/Matbafl.cpp

    r20649 r20650  
    331331        }
    332332        else{
     333                dvx[2] = 0.;
    333334                vy = 0.;
    334335                dvy[0] = 0.; dvy[1] = 0.; dvy[2] = 0.;
    335336        }
    336337        vz = 0.;
    337         dvz[0] = 0.; dvz[1] = 0.; dvz[2] = 0.;
     338        dvz[0] = 0.; dvz[1] = 0.; dvz[2] = -dvx[0]-dvy[1];
    338339
    339340        /*Get enhancement factors and ko*/
     
    371372        }
    372373        else{
     374                dvx[1] = 0.;
     375                dvx[2] = 0.;
    373376                vy = 0.;
    374377                dvy[0] = 0.; dvy[1] = 0.; dvy[2] = 0.;
    375378        }
    376379        vz = 0.;
    377         dvz[0] = 0.; dvz[1] = 0.; dvz[2] = 0.;
     380        dvz[0] = 0.; dvz[1] = 0.; dvz[2] = -dvx[0]-dvy[1];
    378381
    379382        /*Get enhancement factors and ko*/
     
    382385        Input* ko_input = element->inputs->GetInput(MaterialsRheologyKobarEnum); _assert_(ko_input);
    383386        ec_input->GetInputValue(&Ec,gauss);
    384         es_input->GetInputValue(&Es,gauss);
    385         ko_input->GetInputValue(&ko,gauss);
    386 
    387         /*Compute viscosity*/
    388         *pviscosity=GetViscosityGeneral(ko,Ec,Es,vx,vy,vz,&dvx[0],&dvy[0],&dvz[0]);
    389 }/*}}}*/
    390 void  Matbafl::ViscositySSADerivativeEpsSquare(IssmDouble* pmu_prime,IssmDouble* epsilon){/*{{{*/
    391         _error_("not implemented yet");
    392 }/*}}}*/
    393 void  Matbafl::ResetHooks(){/*{{{*/
    394 
    395         this->element=NULL;
    396 
    397         /*Get Element type*/
    398         this->helement->reset();
    399 
    400 }
    401 /*}}}*/
    402 IssmDouble Matbafl::GetViscosityGeneral(IssmDouble ko,IssmDouble Ec, IssmDouble Es,IssmDouble vx,IssmDouble vy,IssmDouble vz,IssmDouble* dvx,IssmDouble* dvy,IssmDouble* dvz){/*{{{*/
    403 
    404         /*Intermediaries*/
    405         IssmDouble viscosity;
    406         IssmDouble vorticity[3],vorticity_norm;
    407         IssmDouble nrsp[3],nrsp_norm;
    408         IssmDouble eps[3][3],epso;
    409         IssmDouble epsprime[3],epsprime_norm;
    410         IssmDouble E,lambdas;
    411 
    412         /*Create vorticity vector*/
    413         _assert_(dvx && dvy && dvz);
    414         vorticity[0] =  dvz[1] - dvy[2];
    415         vorticity[1] =  dvx[2] - dvz[0];
    416         vorticity[2] =  dvy[0] - dvx[1];
    417 
    418         /*Normalize*/
    419         vorticity_norm = sqrt(vorticity[0]*vorticity[0] + vorticity[1]*vorticity[1] + vorticity[2]*vorticity[2]);
    420         if(vorticity_norm==0){
    421                 vorticity[0] = 0.;
    422                 vorticity[1] = 0.;
    423                 vorticity[2] = 1.;
    424         }
    425387        else{
    426388                vorticity[0] =vorticity[0]/vorticity_norm;
     
    472434                for(int j=0;j<3;j++){
    473435                        for(int k=0;k<3;k++){
    474                                 epsprime[j] += nrsp[i]*eps[i][k]*nrsp[k]*nrsp[j];
     436                                epsprime[j] += -nrsp[i]*eps[i][k]*nrsp[k]*nrsp[j];
    475437                        }
    476438                }
     
    480442                for(int j=0;j<3;j++){
    481443                        for(int k=0;k<3;k++){
    482                                 epsprime[j] += nrsp[i]*eps[i][k]*vorticity[k]*vorticity[j];
     444                                epsprime[j] += -nrsp[i]*eps[i][k]*vorticity[k]*vorticity[j];
    483445                        }
    484446                }
     
    490452        /*Compute lambda_s*/
    491453        _assert_(epso>0.);
    492         lambdas = sqrt(2*epsprime_norm/(3*epso));
     454        lambdas = sqrt(2*epsprime_norm*epsprime_norm/(3*epso*epso));
    493455
    494456        /*Get total enhancement factor E(lambdas)*/
Note: See TracChangeset for help on using the changeset viewer.