Changeset 26985


Ignore:
Timestamp:
05/04/22 06:09:37 (3 years ago)
Author:
Mathieu Morlighem
Message:

CHG: almost done moving calving velocities back to calving law

File:
1 edited

Legend:

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

    r26984 r26985  
    819819        IssmDouble  xyz_list[NUMVERTICES][3];
    820820        IssmDouble  epsilon[3]; /* epsilon=[exx,eyy,exy];*/
    821         IssmDouble  calvingratex[NUMVERTICES];
    822         IssmDouble  calvingratey[NUMVERTICES];
    823821        IssmDouble  calvingrate[NUMVERTICES];
    824822        IssmDouble  lambda1,lambda2,ex,ey,vx,vy,vel;
     
    950948                        calvingrate[iv] = mrate*gamma;
    951949                }
    952                 calvingratex[iv] = calvingrate[iv]*vx/vel;
    953                 calvingratey[iv] = calvingrate[iv]*vy/vel;
    954950        }
    955951
    956952        /*Add input*/
    957         this->AddInput(CalvingratexEnum,&calvingratex[0],P1DGEnum);
    958         this->AddInput(CalvingrateyEnum,&calvingratey[0],P1DGEnum);
    959953        this->AddInput(CalvingCalvingrateEnum,&calvingrate[0],P1DGEnum);
    960954        this->AddInput(SigmaVMEnum,&sigma_vm[0],P1DGEnum);
     955        this->CalvingFromRate();
    961956
    962957        /*Clean up and return*/
     
    43114306   Input *gr_input         = this->GetInput(MaskOceanLevelsetEnum); _assert_(gr_input);
    43124307        Input *lsf_slopex_input = this->GetInput(LevelsetfunctionSlopeXEnum); _assert_(lsf_slopex_input);
     4308        Input *lsf_slopey_input = this->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input);
    43134309        Input *vx_input         = this->GetInput(VxEnum);                     _assert_(vx_input);
    4314         Input *lsf_slopey_input = NULL;
    4315         Input *vy_input         = NULL;
    4316         if(dim==2){
    4317                 lsf_slopey_input = this->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input);
    4318                 vy_input         = this->GetInput(VyEnum); _assert_(vy_input);
    4319         }
     4310        Input *vy_input         = this->GetInput(VyEnum); _assert_(vy_input);
    43204311
    43214312        switch(calvinglaw){
    43224313                case DefaultCalvingEnum:
    43234314                case CalvingVonmisesEnum:
     4315                case CalvingLevermannEnum:
     4316                case CalvingTestEnum:
     4317                case CalvingParameterizationEnum:
    43244318                        calvingratex_input=this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
    43254319                        calvingratey_input=this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
    4326                         meltingrate_input = this->GetInput(CalvingMeltingrateEnum);     _assert_(meltingrate_input);
    4327                         break;
    4328                 case CalvingLevermannEnum:
    4329                         switch(domaintype){
    4330                                 case Domain2DverticalEnum:
    4331                                         calvingratex_input=this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
    4332                                         break;
    4333                                 case Domain2DhorizontalEnum:
    4334             case Domain3DEnum:
    4335                                         calvingratex_input=this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
    4336                                         calvingratey_input=this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
    4337                                         break;
    4338                                 default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
    4339                         }
    43404320                        meltingrate_input = this->GetInput(CalvingMeltingrateEnum);     _assert_(meltingrate_input);
    43414321                        break;
     
    43504330                        meltingrate_input = this->GetInput(CalvingMeltingrateEnum);     _assert_(meltingrate_input);
    43514331                        break;
    4352                 case CalvingTestEnum:
    4353                         calvingratex_input=this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
    4354                         calvingratey_input=this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
    4355                         break;
    4356                 case CalvingParameterizationEnum:
    4357                         calvingrate_input = this->GetInput(CalvingCalvingrateEnum);     _assert_(calvingrate_input);
    4358                         meltingrate_input = this->GetInput(CalvingMeltingrateEnum);     _assert_(meltingrate_input);
    4359                         break;
    43604332                default:
    43614333                        _error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
     
    43824354                        case DefaultCalvingEnum:
    43834355                        case CalvingVonmisesEnum:
     4356                        case CalvingTestEnum:
     4357                        case CalvingParameterizationEnum:
    43844358                                calvingratex_input->GetInputValue(&c[0],&gauss);
    43854359                                calvingratey_input->GetInputValue(&c[1],&gauss);
     
    44614435                                        break;
    44624436                                  }
    4463                         case CalvingTestEnum:
    44644437                                calvingratex_input->GetInputValue(&c[0],&gauss);
    44654438                                if(dim==2) calvingratey_input->GetInputValue(&c[1],&gauss);
    44664439                                for(i=0;i<dim;i++) m[i]=0.;
    44674440                                break;
    4468                         case CalvingParameterizationEnum:
    4469             calvingrate_input->GetInputValue(&calvingrate,&gauss);
    4470             meltingrate_input->GetInputValue(&meltingrate,&gauss);
    4471                                 meltingrate = 0.;
    4472 
    4473             if(norm_dlsf>1.e-10)
    4474              for(i=0;i<dim;i++){
    4475                 c[i]=calvingrate*dlsf[i]/norm_dlsf;
    4476                 m[i]=meltingrate*dlsf[i]/norm_dlsf;
    4477              }
    4478             else
    4479              for(i=0;i<dim;i++){
    4480                 c[i]=0.; m[i]=0.;
    4481              }
    4482             break;
    44834441
    44844442                        default:
Note: See TracChangeset for help on using the changeset viewer.