Changeset 26985
- Timestamp:
- 05/04/22 06:09:37 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r26984 r26985 819 819 IssmDouble xyz_list[NUMVERTICES][3]; 820 820 IssmDouble epsilon[3]; /* epsilon=[exx,eyy,exy];*/ 821 IssmDouble calvingratex[NUMVERTICES];822 IssmDouble calvingratey[NUMVERTICES];823 821 IssmDouble calvingrate[NUMVERTICES]; 824 822 IssmDouble lambda1,lambda2,ex,ey,vx,vy,vel; … … 950 948 calvingrate[iv] = mrate*gamma; 951 949 } 952 calvingratex[iv] = calvingrate[iv]*vx/vel;953 calvingratey[iv] = calvingrate[iv]*vy/vel;954 950 } 955 951 956 952 /*Add input*/ 957 this->AddInput(CalvingratexEnum,&calvingratex[0],P1DGEnum);958 this->AddInput(CalvingrateyEnum,&calvingratey[0],P1DGEnum);959 953 this->AddInput(CalvingCalvingrateEnum,&calvingrate[0],P1DGEnum); 960 954 this->AddInput(SigmaVMEnum,&sigma_vm[0],P1DGEnum); 955 this->CalvingFromRate(); 961 956 962 957 /*Clean up and return*/ … … 4311 4306 Input *gr_input = this->GetInput(MaskOceanLevelsetEnum); _assert_(gr_input); 4312 4307 Input *lsf_slopex_input = this->GetInput(LevelsetfunctionSlopeXEnum); _assert_(lsf_slopex_input); 4308 Input *lsf_slopey_input = this->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input); 4313 4309 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); 4320 4311 4321 4312 switch(calvinglaw){ 4322 4313 case DefaultCalvingEnum: 4323 4314 case CalvingVonmisesEnum: 4315 case CalvingLevermannEnum: 4316 case CalvingTestEnum: 4317 case CalvingParameterizationEnum: 4324 4318 calvingratex_input=this->GetInput(CalvingratexEnum); _assert_(calvingratex_input); 4325 4319 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 }4340 4320 meltingrate_input = this->GetInput(CalvingMeltingrateEnum); _assert_(meltingrate_input); 4341 4321 break; … … 4350 4330 meltingrate_input = this->GetInput(CalvingMeltingrateEnum); _assert_(meltingrate_input); 4351 4331 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;4360 4332 default: 4361 4333 _error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet"); … … 4382 4354 case DefaultCalvingEnum: 4383 4355 case CalvingVonmisesEnum: 4356 case CalvingTestEnum: 4357 case CalvingParameterizationEnum: 4384 4358 calvingratex_input->GetInputValue(&c[0],&gauss); 4385 4359 calvingratey_input->GetInputValue(&c[1],&gauss); … … 4461 4435 break; 4462 4436 } 4463 case CalvingTestEnum:4464 4437 calvingratex_input->GetInputValue(&c[0],&gauss); 4465 4438 if(dim==2) calvingratey_input->GetInputValue(&c[1],&gauss); 4466 4439 for(i=0;i<dim;i++) m[i]=0.; 4467 4440 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 else4479 for(i=0;i<dim;i++){4480 c[i]=0.; m[i]=0.;4481 }4482 break;4483 4441 4484 4442 default:
Note:
See TracChangeset
for help on using the changeset viewer.