Changeset 26780


Ignore:
Timestamp:
01/13/22 13:17:50 (3 years ago)
Author:
Mathieu Morlighem
Message:

CHG: allow for both MICI as in Crawford et al. and DeConto

File:
1 edited

Legend:

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

    r26691 r26780  
    2929#define NUMVERTICES   3
    3030#define NUMVERTICES1D 2
    31 //#define ISMICI        1
     31//#define MICI          1 //1 = DeConto & Pollard, 2 = DOMINOS
    3232
    3333/*Constructors/destructor/copy*/
     
    43814381                ls_input->GetInputValue(&ls,&gauss);
    43824382
    4383                 /*Do we assume that the calving front does not move?*/
    4384                 //movingfrontvx[iv] = 0.;
    4385                 //movingfrontvy[iv] = 0.;
    4386 
    4387                 //if(Hc>80. && bed<0. && fabs(ls)<100.e3){ //Pollard & De Conto
    4388                 if(Hc>135. && bed<0. && fabs(ls)<100.e3){ // Crawford et all
    4389 
    4390                         lsf_slopex_input->GetInputValue(&dlsf[0],&gauss);
    4391                         norm_dlsf=0.;
    4392                         for(i=0;i<dim;i++) norm_dlsf+=pow(dlsf[i],2);
    4393                         norm_dlsf=sqrt(norm_dlsf);
    4394 
    4395                         /*use vel direction instead of LSF*/
    4396                         vx_input->GetInputValue(&v[0],&gauss);
    4397                         vy_input->GetInputValue(&v[1],&gauss);
    4398                         vel=sqrt(v[0]*v[0] + v[1]*v[1]);
    4399                         norm_dlsf = max(vel,1.e-10);
    4400                         dlsf[0] = v[0];
    4401                         dlsf[1] = v[1];
     4383                /*use vel direction instead of LSF*/
     4384                vx_input->GetInputValue(&v[0],&gauss);
     4385                vy_input->GetInputValue(&v[1],&gauss);
     4386                vel=sqrt(v[0]*v[0] + v[1]*v[1]);
     4387                norm_dlsf = max(vel,1.e-10);
     4388                dlsf[0] = v[0];
     4389                dlsf[1] = v[1];
     4390
     4391                /*Do we assume that the calving front does not move if MICI is not engaged?*/
     4392                movingfrontvx[iv] = 0.;
     4393                movingfrontvy[iv] = 0.;
     4394                //movingfrontvx[iv] = -2000./(365*24*3600.)*dlsf[0]/norm_dlsf;
     4395                //movingfrontvy[iv] = -2000./(365*24*3600.)*dlsf[1]/norm_dlsf;
     4396
     4397                if(MICI==1 && Hc>80. && bed<0. && fabs(ls)<100.e3){ //Pollard & De Conto
     4398                        IssmDouble C = (min(max(Hc,80.),100.) - 80.)/20. * 10./(24*3600.); /*Original MICI! convert from m/day to m/s*/
     4399
     4400                        /*Front motion = ice speed (v) - calving rate*/
     4401                        movingfrontvx[iv] = v[0]-C*dlsf[0]/norm_dlsf;
     4402                        movingfrontvy[iv] = v[1]-C*dlsf[1]/norm_dlsf;
     4403                }
     4404                else if (MICI==2 && Hc>135. && bed<0. && fabs(ls)<100.e3){ // Crawford et all
    44024405
    44034406                        /*5C Bn (worst case scenario)*/
     
    44054408                        IssmDouble alpha = 7.3;
    44064409                        IssmDouble C = min(2000.,I*pow(Hc,alpha))/(24*3600.); /*convert from m/day to m/s*/
    4407                         //IssmDouble C = (min(max(Hc,80.),100.) - 80.)/20. * 10./(24*3600.); /*Original MICI! convert from m/day to m/s*/
    4408                         movingfrontvx[iv] = -C*dlsf[0]/norm_dlsf;
    4409                         movingfrontvy[iv] = -C*dlsf[1]/norm_dlsf;
     4410
     4411                        /*Front motion = ice speed (v) - calving rate*/
     4412                        movingfrontvx[iv] = v[0] -C*dlsf[0]/norm_dlsf;
     4413                        movingfrontvy[iv] = v[1] -C*dlsf[1]/norm_dlsf;
    44104414                }
    44114415        }
Note: See TracChangeset for help on using the changeset viewer.