Changeset 27225
- Timestamp:
- 08/23/22 08:47:54 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/HydrologyShaktiAnalysis.cpp
r27022 r27225 242 242 element->NodalFunctions(basis,gauss); 243 243 244 /***/245 244 base_input->GetInputValue(&bed,gauss); 246 245 thickness_input->GetInputValue(&thickness,gauss); … … 288 287 IssmDouble PMPheat,dissipation,dpressure_water[2],dbed[2]; 289 288 IssmDouble* xyz_list = NULL; 290 // IssmDouble dgapxx; /***/291 // IssmDouble dgapyy; /***/292 289 293 290 /*Fetch number of nodes and dof for this finite element*/ … … 315 312 Input* br_input = element->GetInput(HydrologyBumpHeightEnum); _assert_(br_input); 316 313 Input* headold_input = element->GetInput(HydrologyHeadOldEnum); _assert_(headold_input); 317 // Input* dgapxx_input = element->GetInput(HydrologyGapHeightXXEnum); /***/318 // Input* dgapyy_input = element->GetInput(HydrologyGapHeightYYEnum); /***/319 314 320 315 /*Get conductivity from inputs*/ … … 346 341 br_input->GetInputValue(&br,gauss); 347 342 headold_input->GetInputValue(&head_old,gauss); 348 // dgapxx_input->GetInputValue(&dgapxx,gauss); /***/349 // dgapyy_input->GetInputValue(&dgapyy,gauss); /***/350 343 351 344 /*Get ice A parameter*/ … … 365 358 frictionheat=alpha2*(vx*vx+vy*vy); 366 359 367 /* Take out frictional heat for large gap height */368 if(gap>br)369 frictionheat=0.;370 371 360 /*Get water and ice pressures*/ 372 361 IssmDouble pressure_ice = rho_ice*g*thickness; _assert_(pressure_ice>0.); … … 379 368 380 369 /*Compute change in sensible heat due to changes in pressure melting point*/ 381 dpressure_water[0] = rho_water*g*(dh[0] - dbed[0]);370 dpressure_water[0] = rho_water*g*(dh[0] - dbed[0]); 382 371 dpressure_water[1] = rho_water*g*(dh[1] - dbed[1]); 383 PMPheat=CT*CW*conductivity*rho_water*(dh[0]*dpressure_water[0]+dh[1]*dpressure_water[1]); 384 PMPheat=0; /*** TEST no PMPheat***/ 385 386 meltrate = 1/latentheat*(G+frictionheat+rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1])-PMPheat); 372 373 meltrate = 1/latentheat*(G+frictionheat+rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1])); 387 374 388 375 for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight* … … 396 383 )*basis[i]; 397 384 398 /* Test with experimental diffusivity term*/399 // for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*400 // (401 // meltrate*(1/rho_water-1/rho_ice)402 // +A*pow(fabs(pressure_ice - pressure_water),n-1)*(pressure_ice + rho_water*g*bed)*gap403 // +(n-1)*A*pow(fabs(pressure_ice - pressure_water),n-1)*(rho_water*g*head)*gap404 // -beta*sqrt(vx*vx+vy*vy)405 // +ieb406 // +storage*head_old/dt407 // +0.e-5*(dgapxx+dgapyy)408 // )*basis[i];409 410 385 411 386 } … … 458 433 values[i]=solution[doflist[i]]; 459 434 460 /*overburden cap: make sure that p_water<p_ice -> h<rho_i H/rho_w + zb*/461 // if(values[i]>rho_ice*thickness[i]/rho_water+bed[i]){462 // values[i] = rho_ice*thickness[i]/rho_water+bed[i];463 // }464 465 /*Make sure that negative pressure is not allowed*/466 // if(values[i]<bed[i]){467 // values[i] = bed[i];468 // }469 470 435 /*Under-relaxation*/ 471 436 values[i] = head_old[i] - relaxation*(head_old[i]-values[i]); … … 549 514 IssmDouble alpha2,frictionheat; 550 515 IssmDouble* xyz_list = NULL; 551 516 IssmDouble dpressure_water[2],dbed[2],PMPheat,dissipation; 552 517 IssmDouble q = 0.; 553 IssmDouble channelization = 0.; 554 // IssmDouble dgapxx; /***/ 555 // IssmDouble dgapyy; /***/ 518 IssmDouble channelization = 0.; 556 519 557 520 /*Retrieve all inputs and parameters*/ … … 571 534 Input* lr_input = element->GetInput(HydrologyBumpSpacingEnum); _assert_(lr_input); 572 535 Input* br_input = element->GetInput(HydrologyBumpHeightEnum); _assert_(br_input); 573 // Input* dgapxx_input = element->GetInput(HydrologyGapHeightXXEnum); /***/574 // Input* dgapyy_input = element->GetInput(HydrologyGapHeightYYEnum); /***/575 536 576 537 /*Get conductivity from inputs*/ … … 598 559 lr_input->GetInputValue(&lr,gauss); 599 560 br_input->GetInputValue(&br,gauss); 600 // dgapxx_input->GetInputValue(&dgapxx,gauss); /***/601 // dgapyy_input->GetInputValue(&dgapyy,gauss); /***/602 561 603 562 /*Get ice A parameter*/ … … 617 576 frictionheat=alpha2*(vx*vx+vy*vy); 618 577 619 /* Take out frictional heat for large gap height */620 if(gap>br)621 frictionheat=0.;622 623 578 /*Get water and ice pressures*/ 624 579 IssmDouble pressure_ice = rho_ice*g*thickness; _assert_(pressure_ice>0.); … … 629 584 dpressure_water[0] = rho_water*g*(dh[0] - dbed[0]); 630 585 dpressure_water[1] = rho_water*g*(dh[1] - dbed[1]); 631 PMPheat=CT*CW*conductivity*rho_water*(dh[0]*dpressure_water[0]+dh[1]*dpressure_water[1]);632 PMPheat=0; /*** TEST no PMPheat***/633 586 dissipation=rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1]); 634 587 635 meltrate = 1/latentheat*(G+frictionheat+rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1]) -PMPheat);588 meltrate = 1/latentheat*(G+frictionheat+rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1])); 636 589 637 590 element->AddInput(DummyEnum,&meltrate,P0Enum); … … 647 600 )); 648 601 649 /* TEST with experimental gap height "diffusivity" for melting walls */650 // newgap += gauss->weight*Jdet*(gap+dt*(651 // meltrate/rho_ice652 // -A*pow(fabs(pressure_ice-pressure_water),n-1)*(pressure_ice-pressure_water)*lc653 // +beta*sqrt(vx*vx+vy*vy)654 // +0.e-5*(dgapxx+dgapyy))655 // );656 657 602 658 603 totalweights +=gauss->weight*Jdet; … … 667 612 /*Divide by connectivity*/ 668 613 newgap = newgap/totalweights; 669 IssmDouble mingap = 1e- 6;614 IssmDouble mingap = 1e-3; 670 615 if(newgap<mingap) newgap=mingap; 671 616 672 /*Limit gap height to grow to surface*/ 673 // if(newgap>thickness) 674 // newgap = thickness; 617 /*Limit gap height*/ 675 618 if(newgap>1) 676 619 newgap = 1;
Note:
See TracChangeset
for help on using the changeset viewer.