Changeset 27271


Ignore:
Timestamp:
09/08/22 13:36:36 (3 years ago)
Author:
jwilner
Message:

CHG: use CalvingFromRate to determine the direction of calving so that Levermann is consistent with other calving laws

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

Legend:

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

    r27102 r27271  
    334334void       Penta::CalvingRateLevermann(){/*{{{*/
    335335
    336         IssmDouble  vx,vy,vel;
    337336        IssmDouble  strainparallel;
    338337        IssmDouble  propcoeff;
    339338        IssmDouble  strainperpendicular;
    340         IssmDouble  calvingratex[NUMVERTICES];
    341         IssmDouble  calvingratey[NUMVERTICES];
    342339        IssmDouble  calvingrate[NUMVERTICES];
    343340
     
    355352
    356353                /* Get the value we need*/
    357                 vx_input->GetInputValue(&vx,&gauss);
    358                 vy_input->GetInputValue(&vy,&gauss);
    359                 vel=vx*vx+vy*vy;
    360354                strainparallel_input->GetInputValue(&strainparallel,&gauss);
    361355                strainperpendicular_input->GetInputValue(&strainperpendicular,&gauss);
     
    367361                        calvingrate[iv]=0;
    368362                }
    369                 calvingratex[iv]=calvingrate[iv]*vx/(sqrt(vel)+1.e-14);
    370                 calvingratey[iv]=calvingrate[iv]*vy/(sqrt(vel)+1.e-14);
    371363        }
    372364
    373365        /*Add input*/
    374         this->AddBasalInput(CalvingratexEnum,&calvingratex[0],P1DGEnum);
    375         this->AddBasalInput(CalvingrateyEnum,&calvingratey[0],P1DGEnum);
    376366        this->AddBasalInput(CalvingCalvingrateEnum,&calvingrate[0],P1DGEnum);
     367        this->CalvingFromRate();
    377368}/*}}}*/
    378369void       Penta::CalvingFluxLevelset(){/*{{{*/
     
    29322923                /*Get calving speed*/
    29332924                switch(calvinglaw){
     2925                        /*"Contiuous" calving*/
    29342926                        case DefaultCalvingEnum:
    29352927                        case CalvingVonmisesEnum:
     
    29432935                                break;
    29442936
     2937                        /*"Discrete" calving*/
    29452938                        case CalvingMinthicknessEnum:
    29462939                        case CalvingHabEnum:
  • issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r27253 r27271  
    526526void       Tria::CalvingRateLevermann(){/*{{{*/
    527527
    528         IssmDouble  vx,vy,vel;
    529528        IssmDouble  strainparallel;
    530529        IssmDouble  propcoeff,bed;
    531530        IssmDouble  strainperpendicular;
    532         IssmDouble  calvingratex[NUMVERTICES];
    533         IssmDouble  calvingratey[NUMVERTICES];
    534531        IssmDouble  calvingrate[NUMVERTICES];
    535532
    536533        /*Retrieve all inputs and parameters we will need*/
    537         Input *vx_input                  = this->GetInput(VxEnum);                      _assert_(vx_input);
    538         Input *vy_input                  = this->GetInput(VyEnum);                      _assert_(vy_input);
    539534        Input *bs_input                  = this->GetInput(BaseEnum);                    _assert_(bs_input);
    540535        Input *strainparallel_input      = this->GetInput(StrainRateparallelEnum);      _assert_(strainparallel_input);
     
    548543
    549544                /* Get the value we need*/
    550                 vx_input->GetInputValue(&vx,&gauss);
    551                 vy_input->GetInputValue(&vy,&gauss);
    552                 vel=vx*vx+vy*vy;
    553545                strainparallel_input->GetInputValue(&strainparallel,&gauss);
    554546                strainperpendicular_input->GetInputValue(&strainperpendicular,&gauss);
     
    562554                else
    563555                        calvingrate[iv]=0.;
    564 
    565                 calvingratex[iv]=calvingrate[iv]*vx/(sqrt(vel)+1.e-14);
    566                 calvingratey[iv]=calvingrate[iv]*vy/(sqrt(vel)+1.e-14);
    567556        }
    568557
    569558        /*Add input*/
    570         this->AddInput(CalvingratexEnum,&calvingratex[0],P1DGEnum);
    571         this->AddInput(CalvingrateyEnum,&calvingratey[0],P1DGEnum);
    572559        this->AddInput(CalvingCalvingrateEnum,&calvingrate[0],P1DGEnum);
     560        this->CalvingFromRate();
    573561}/*}}}*/
    574562void       Tria::CalvingFluxLevelset(){/*{{{*/
     
    43584346                /*Get calving speed*/
    43594347                switch(calvinglaw){
     4348
     4349                        /*RATE calving laws*/
    43604350                        case DefaultCalvingEnum:
    43614351                        case CalvingVonmisesEnum:
    43624352                        case CalvingTestEnum:
    43634353                        case CalvingParameterizationEnum:
     4354                        case CalvingLevermannEnum:
    43644355                                calvingratex_input->GetInputValue(&c[0],&gauss);
    43654356                                calvingratey_input->GetInputValue(&c[1],&gauss);
     
    43764367                                break;
    43774368
    4378                         case CalvingLevermannEnum:
    4379                                 calvingratex_input->GetInputValue(&c[0],&gauss);
    4380                                 if(dim==2) calvingratey_input->GetInputValue(&c[1],&gauss);
    4381                                 meltingrate_input->GetInputValue(&meltingrate,&gauss);
    4382                                 norm_calving=0.;
    4383                                 for(i=0;i<dim;i++) norm_calving+=pow(c[i],2);
    4384                                 norm_calving=sqrt(norm_calving)+1.e-14;
    4385                                 for(i=0;i<dim;i++) m[i]=meltingrate*c[i]/norm_calving;
    4386                                 break;
    4387 
     4369                        /*Discrete calving laws*/
    43884370                        case CalvingMinthicknessEnum:
    43894371                        case CalvingHabEnum:
Note: See TracChangeset for help on using the changeset viewer.