Changeset 26984 for issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
- Timestamp:
- 05/04/22 05:52:26 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r26983 r26984 273 273 this->ComputeSigmaVM(); 274 274 275 IssmDouble calvingratex[NUMVERTICES];276 IssmDouble calvingratey[NUMVERTICES];277 275 IssmDouble calvingrate[NUMVERTICES]; 278 276 IssmDouble vx,vy; … … 317 315 /*Assign values*/ 318 316 if(bed>sealevel){ 319 calvingratex[iv]=0.; 320 calvingratey[iv]=0.; 317 calvingrate[iv] = 0.; 321 318 } 322 319 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 } 327 322 } 328 323 329 324 /*Add input*/ 330 this->AddBasalInput(CalvingratexEnum,&calvingratex[0],P1DGEnum);331 this->AddBasalInput(CalvingrateyEnum,&calvingratey[0],P1DGEnum);332 325 this->AddBasalInput(CalvingCalvingrateEnum,&calvingrate[0],P1DGEnum); 333 326 this->CalvingFromRate(); 327 328 /*Extrude*/ 329 this->InputExtrude(CalvingCalvingrateEnum,-1); 334 330 this->InputExtrude(CalvingratexEnum,-1); 335 331 this->InputExtrude(CalvingrateyEnum,-1); 336 this->InputExtrude(CalvingCalvingrateEnum,-1);337 332 } 338 333 /*}}}*/ … … 2871 2866 } 2872 2867 /*}}}*/ 2873 void Penta::MovingFrontalVelocity(void){/*{{{*/ 2868 void Penta::MovingFrontalVelocity(void){/*{{{*/ 2869 2874 2870 if(!this->IsOnBase()) return; 2875 2871 int domaintype, calvinglaw, i; … … 2902 2898 case DefaultCalvingEnum: 2903 2899 case CalvingVonmisesEnum: 2904 calvingrate_input = this->GetInput(CalvingCalvingrateEnum); _assert_(calvingrate_input);2905 meltingrate_input = this->GetInput(CalvingMeltingrateEnum); _assert_(meltingrate_input);2906 break;2907 2900 case CalvingLevermannEnum: 2908 2901 calvingratex_input=this->GetInput(CalvingratexEnum); _assert_(calvingratex_input); … … 2941 2934 case DefaultCalvingEnum: 2942 2935 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 else2953 for(i=0;i<dim;i++){2954 c[i]=0.; m[i]=0.;2955 }2956 break;2957 2958 2936 case CalvingLevermannEnum: 2959 2937 calvingratex_input->GetInputValue(&c[0],&gauss); 2960 2938 calvingratey_input->GetInputValue(&c[1],&gauss); 2961 2939 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; 2966 2943 break; 2967 2944 … … 3036 3013 this->AddInput(MovingFrontalVxEnum,&movingfrontvx[0],P1DGEnum); 3037 3014 this->AddInput(MovingFrontalVyEnum,&movingfrontvy[0],P1DGEnum); 3038 3039 3015 this->InputExtrude(MovingFrontalVxEnum,-1); 3040 3016 this->InputExtrude(MovingFrontalVyEnum,-1);
Note:
See TracChangeset
for help on using the changeset viewer.