Ignore:
Timestamp:
05/04/22 05:52:26 (3 years ago)
Author:
Mathieu Morlighem
Message:

CHG: moving more calving laws away from MovingFront

File:
1 edited

Legend:

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

    r26983 r26984  
    273273        this->ComputeSigmaVM();
    274274
    275         IssmDouble  calvingratex[NUMVERTICES];
    276         IssmDouble  calvingratey[NUMVERTICES];
    277275        IssmDouble  calvingrate[NUMVERTICES];
    278276        IssmDouble  vx,vy;
     
    317315                /*Assign values*/
    318316                if(bed>sealevel){
    319                         calvingratex[iv]=0.;
    320                         calvingratey[iv]=0.;
     317                        calvingrate[iv] = 0.;
    321318                }
    322319                else{
    323                         calvingratex[iv]=vx*sigma_vm/sigma_max;
    324                         calvingratey[iv]=vy*sigma_vm/sigma_max;
    325                 }
    326                 calvingrate[iv] =sqrt(calvingratex[iv]*calvingratex[iv] + calvingratey[iv]*calvingratey[iv]);
     320                        calvingrate[iv] = sqrt(vx*vx+vy*vy)*sigma_vm/sigma_max;
     321                }
    327322        }
    328323
    329324        /*Add input*/
    330         this->AddBasalInput(CalvingratexEnum,&calvingratex[0],P1DGEnum);
    331         this->AddBasalInput(CalvingrateyEnum,&calvingratey[0],P1DGEnum);
    332325        this->AddBasalInput(CalvingCalvingrateEnum,&calvingrate[0],P1DGEnum);
    333 
     326        this->CalvingFromRate();
     327
     328        /*Extrude*/
     329        this->InputExtrude(CalvingCalvingrateEnum,-1);
    334330        this->InputExtrude(CalvingratexEnum,-1);
    335331        this->InputExtrude(CalvingrateyEnum,-1);
    336         this->InputExtrude(CalvingCalvingrateEnum,-1);
    337332}
    338333/*}}}*/
     
    28712866}
    28722867/*}}}*/
    2873 void       Penta::MovingFrontalVelocity(void){/*{{{*/
     2868void          Penta::MovingFrontalVelocity(void){/*{{{*/
     2869
    28742870        if(!this->IsOnBase()) return;
    28752871        int        domaintype, calvinglaw, i;
     
    29022898                case DefaultCalvingEnum:
    29032899                case CalvingVonmisesEnum:
    2904                         calvingrate_input = this->GetInput(CalvingCalvingrateEnum);     _assert_(calvingrate_input);
    2905                         meltingrate_input = this->GetInput(CalvingMeltingrateEnum);     _assert_(meltingrate_input);
    2906                         break;
    29072900                case CalvingLevermannEnum:
    29082901                        calvingratex_input=this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
     
    29412934                        case DefaultCalvingEnum:
    29422935                        case CalvingVonmisesEnum:
    2943                                 calvingrate_input->GetInputValue(&calvingrate,&gauss);
    2944                                 meltingrate_input->GetInputValue(&meltingrate,&gauss);
    2945 
    2946                                 if(groundedice<0) meltingrate = 0.;
    2947 
    2948                                 if(norm_dlsf>1.e-10)
    2949                                  for(i=0;i<dim;i++){
    2950                                          c[i]=calvingrate*dlsf[i]/norm_dlsf; m[i]=meltingrate*dlsf[i]/norm_dlsf;
    2951                                  }
    2952                                 else
    2953                                  for(i=0;i<dim;i++){
    2954                                          c[i]=0.; m[i]=0.;
    2955                                  }
    2956                                 break;
    2957 
    29582936                        case CalvingLevermannEnum:
    29592937                                calvingratex_input->GetInputValue(&c[0],&gauss);
    29602938                                calvingratey_input->GetInputValue(&c[1],&gauss);
    29612939                                meltingrate_input->GetInputValue(&meltingrate,&gauss);
    2962                                 norm_calving=0.;
    2963                                 for(i=0;i<dim;i++) norm_calving+=pow(c[i],2);
    2964                                 norm_calving=sqrt(norm_calving)+1.e-14;
    2965                                 for(i=0;i<dim;i++) m[i]=meltingrate*c[i]/norm_calving;
     2940                                if(groundedice<0) meltingrate = 0.;
     2941                                m[0]=meltingrate*dlsf[0]/norm_dlsf;
     2942                                m[1]=meltingrate*dlsf[1]/norm_dlsf;
    29662943                                break;
    29672944
     
    30363013        this->AddInput(MovingFrontalVxEnum,&movingfrontvx[0],P1DGEnum);
    30373014        this->AddInput(MovingFrontalVyEnum,&movingfrontvy[0],P1DGEnum);
    3038 
    30393015        this->InputExtrude(MovingFrontalVxEnum,-1);
    30403016        this->InputExtrude(MovingFrontalVyEnum,-1);
Note: See TracChangeset for help on using the changeset viewer.