Changeset 22124
- Timestamp:
- 09/27/17 09:15:22 (8 years ago)
- Location:
- issm/trunk-jpl/src/c/classes/Elements
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r22105 r22124 193 193 IssmDouble lambda1,lambda2,ex,ey,vx,vy,vel; 194 194 IssmDouble sigma_vm,sigma_max,sigma_max_floating,sigma_max_grounded; 195 IssmDouble epse_2,groundedice ;195 IssmDouble epse_2,groundedice,bed; 196 196 197 197 /* Get node coordinates and dof list: */ … … 207 207 Input* vy_input = inputs->GetInput(VyAverageEnum); _assert_(vy_input); 208 208 Input* gr_input = inputs->GetInput(MaskGroundediceLevelsetEnum); _assert_(gr_input); 209 Input* bs_input = inputs->GetInput(BaseEnum); _assert_(bs_input); 209 210 Input* smax_fl_input = inputs->GetInput(CalvingStressThresholdFloatingiceEnum); _assert_(smax_fl_input); 210 211 Input* smax_gr_input = inputs->GetInput(CalvingStressThresholdGroundediceEnum); _assert_(smax_gr_input); … … 221 222 vy_input->GetInputValue(&vy,gauss); 222 223 gr_input->GetInputValue(&groundedice,gauss); 224 bs_input->GetInputValue(&bed,gauss); 223 225 smax_fl_input->GetInputValue(&sigma_max_floating,gauss); 224 226 smax_gr_input->GetInputValue(&sigma_max_grounded,gauss); … … 248 250 249 251 /*Assign values*/ 250 calvingratex[iv]=vx*sigma_vm/sigma_max; 251 calvingratey[iv]=vy*sigma_vm/sigma_max; 252 calvingrate[iv]=sqrt(calvingratex[iv]*calvingratex[iv] + calvingratey[iv]*calvingratey[iv]); 252 if(bed>0.){ 253 calvingratex[iv]=0.; 254 calvingratey[iv]=0.; 255 } 256 else{ 257 calvingratex[iv]=vx*sigma_vm/sigma_max; 258 calvingratey[iv]=vy*sigma_vm/sigma_max; 259 } 260 calvingrate[iv] =sqrt(calvingratex[iv]*calvingratex[iv] + calvingratey[iv]*calvingratey[iv]); 253 261 } 254 262 -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r22123 r22124 297 297 298 298 IssmDouble xyz_list[NUMVERTICES][3]; 299 GaussTria* gauss=NULL;300 299 IssmDouble vx,vy,vel; 301 300 IssmDouble strainparallel; 302 IssmDouble propcoeff ;301 IssmDouble propcoeff,bed; 303 302 IssmDouble strainperpendicular; 304 303 IssmDouble calvingratex[NUMVERTICES]; … … 310 309 311 310 /*Retrieve all inputs and parameters we will need*/ 312 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 313 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); 314 Input* strainparallel_input=inputs->GetInput(StrainRateparallelEnum); _assert_(strainparallel_input); 315 Input* strainperpendicular_input=inputs->GetInput(StrainRateperpendicularEnum); _assert_(strainperpendicular_input); 316 Input* levermanncoeff_input=inputs->GetInput(CalvinglevermannCoeffEnum); _assert_(levermanncoeff_input); 311 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 312 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); 313 Input* bs_input = inputs->GetInput(BaseEnum); _assert_(bs_input); 314 Input* strainparallel_input=inputs->GetInput(StrainRateparallelEnum); _assert_(strainparallel_input); 315 Input* strainperpendicular_input=inputs->GetInput(StrainRateperpendicularEnum);_assert_(strainperpendicular_input); 316 Input* levermanncoeff_input=inputs->GetInput(CalvinglevermannCoeffEnum); _assert_(levermanncoeff_input); 317 317 318 318 /* Start looping on the number of vertices: */ 319 gauss=new GaussTria();319 GaussTria* gauss=new GaussTria(); 320 320 for (int iv=0;iv<NUMVERTICES;iv++){ 321 321 gauss->GaussVertex(iv); … … 328 328 strainperpendicular_input->GetInputValue(&strainperpendicular,gauss); 329 329 levermanncoeff_input->GetInputValue(&propcoeff,gauss); 330 bs_input->GetInputValue(&bed,gauss); 330 331 331 332 /*Calving rate proportionnal to the positive product of the strain rate along the ice flow direction and the strain rate perpendicular to the ice flow */ 332 333 calvingrate[iv]=propcoeff*strainparallel*strainperpendicular; 333 if(calvingrate[iv]<0 ){334 calvingrate[iv]=0 ;334 if(calvingrate[iv]<0. || bed>0.){ 335 calvingrate[iv]=0.; 335 336 } 336 337 calvingratex[iv]=calvingrate[iv]*vx/(sqrt(vel)+1.e-14);
Note:
See TracChangeset
for help on using the changeset viewer.