Changeset 18645
- Timestamp:
- 10/14/14 16:36:18 (10 years ago)
- Location:
- issm/trunk-jpl/src/c/analyses
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp
r18641 r18645 162 162 Input* sed_head_input = basalelement->GetInput(SedimentHeadEnum); 163 163 Input* epl_head_input = basalelement->GetInput(EplHeadEnum); 164 Input* residual_input = basalelement->GetInput(SedimentHeadResidualEnum); 164 Input* thick_input = basalelement->GetInput(ThicknessEnum); 165 Input* base_input = basalelement->GetInput(BaseEnum); 165 166 166 167 IssmDouble epl_specificstoring = EplSpecificStoring(basalelement); … … 195 196 196 197 /*Transfer EPL part*/ 197 transfer=GetHydrologyKMatrixTransfer(basalelement,gauss,sed_head_input,epl_head_input, residual_input);198 transfer=GetHydrologyKMatrixTransfer(basalelement,gauss,sed_head_input,epl_head_input,thick_input,base_input); 198 199 D_scalar=transfer*gauss->weight*Jdet*dt; 199 200 TripleMultiply(basis,numnodes,1,0, … … 269 270 Input* sed_head_input = basalelement->GetInput(SedimentHeadEnum); 270 271 Input* epl_head_input = basalelement->GetInput(EplHeadEnum); 272 Input* thick_input = basalelement->GetInput(ThicknessEnum); 273 Input* base_input = basalelement->GetInput(BaseEnum); 271 274 Input* residual_input = basalelement->GetInput(SedimentHeadResidualEnum); _assert_(residual_input); 272 275 if(dt!= 0.){old_wh_input = basalelement->GetInput(EplHeadOldEnum); _assert_(old_wh_input);} … … 288 291 289 292 /*Dealing with the epl part of the transfer term*/ 290 transfer=GetHydrologyPVectorTransfer(basalelement,gauss,sed_head_input,epl_head_input, residual_input);293 transfer=GetHydrologyPVectorTransfer(basalelement,gauss,sed_head_input,epl_head_input,thick_input,base_input); 291 294 scalar = Jdet*gauss->weight*((water_head*epl_specificstoring*epl_thickness)+(transfer*dt)); 292 295 for(int i=0;i<numnodes;i++)pe->values[i]+=scalar*basis[i]; … … 390 393 }/*}}}*/ 391 394 392 IssmDouble HydrologyDCEfficientAnalysis::GetHydrologyKMatrixTransfer(Element* element, Gauss* gauss, Input* sed_head_input, Input* epl_head_input, Input* residual_input){/*{{{*/ 393 395 IssmDouble HydrologyDCEfficientAnalysis::GetHydrologyKMatrixTransfer(Element* element, Gauss* gauss, Input* sed_head_input, Input* epl_head_input, Input* thick_input, Input* base_input){/*{{{*/ 394 396 395 397 int transfermethod; 396 IssmDouble epl_thickness,sed_residual;398 IssmDouble hmax; 397 399 IssmDouble epl_head,sediment_head; 398 400 IssmDouble leakage,transfer; 401 HydrologyDCInefficientAnalysis* inefanalysis = NULL; 399 402 400 403 element->FindParam(&transfermethod,HydrologydcTransferFlagEnum); … … 409 412 _assert_(sed_head_input); 410 413 _assert_(epl_head_input); 411 _assert_(residual_input); 412 414 415 inefanalysis = new HydrologyDCInefficientAnalysis(); 416 hmax = inefanalysis->GetHydrologyDCInefficientHmax(element,gauss,thick_input,base_input); 417 delete inefanalysis; 418 413 419 sed_head_input->GetInputValue(&sediment_head,gauss); 414 420 epl_head_input->GetInputValue(&epl_head,gauss); 415 residual_input->GetInputValue(&sed_residual,gauss);416 421 element->FindParam(&leakage,HydrologydcLeakageFactorEnum); 417 422 418 423 if(epl_head>sediment_head){ 419 if(sed _residual>0.0){424 if(sediment_head>=hmax){ 420 425 transfer=0.0; 421 426 } … … 431 436 _error_("no case higher than 1 for the Transfer method"); 432 437 } 433 /* if(element->Id()==42){ */434 /* printf("Transferefficient Kmat %e, %e, %e, %e \n",transfer,sediment_head,epl_head,sed_residual); */435 /* } */436 438 return transfer; 437 439 }/*}}}*/ 438 440 439 IssmDouble HydrologyDCEfficientAnalysis::GetHydrologyPVectorTransfer(Element* element, Gauss* gauss, Input* sed_head_input, Input* epl_head_input, Input* residual_input){/*{{{*/441 IssmDouble HydrologyDCEfficientAnalysis::GetHydrologyPVectorTransfer(Element* element, Gauss* gauss, Input* sed_head_input, Input* epl_head_input, Input* thick_input, Input* base_input){/*{{{*/ 440 442 441 443 int transfermethod; 442 IssmDouble sed_residual;444 IssmDouble hmax; 443 445 IssmDouble epl_head,sediment_head; 444 446 IssmDouble leakage,transfer; 447 448 HydrologyDCInefficientAnalysis* inefanalysis = NULL; 445 449 446 450 element->FindParam(&transfermethod,HydrologydcTransferFlagEnum); … … 455 459 _assert_(sed_head_input); 456 460 _assert_(epl_head_input); 457 _assert_(residual_input); 461 462 inefanalysis = new HydrologyDCInefficientAnalysis(); 463 hmax = inefanalysis->GetHydrologyDCInefficientHmax(element,gauss,thick_input,base_input); 464 delete inefanalysis; 458 465 459 466 sed_head_input->GetInputValue(&sediment_head,gauss); 460 467 epl_head_input->GetInputValue(&epl_head,gauss); 461 residual_input->GetInputValue(&sed_residual,gauss);462 468 element->FindParam(&leakage,HydrologydcLeakageFactorEnum); 463 469 464 470 if(epl_head>sediment_head){ 465 if(sed _residual>0.0){471 if(sediment_head>=hmax){ 466 472 transfer=0.0; 467 473 } … … 477 483 _error_("no case higher than 1 for the Transfer method"); 478 484 } 479 /* if(element->Id()==42){ */480 /* printf("Transferefficient Pvec %e, %e, %e, %e\n",transfer,sediment_head,epl_head,sed_residual); */481 /* } */482 485 return transfer; 483 486 }/*}}}*/ -
issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.h
r18633 r18645 36 36 IssmDouble EplSpecificStoring(Element* element); 37 37 IssmDouble SedimentStoring(Element* element); 38 IssmDouble GetHydrologyKMatrixTransfer(Element* element, Gauss* gauss, Input* sed_head_input, Input* epl_head_input, Input* residual_input);39 IssmDouble GetHydrologyPVectorTransfer(Element* element, Gauss* gauss, Input* sed_head_input, Input* epl_head_input, Input* residual_input);38 IssmDouble GetHydrologyKMatrixTransfer(Element* element, Gauss* gauss, Input* sed_head_input, Input* epl_head_input, Input* thick_input, Input* base_input); 39 IssmDouble GetHydrologyPVectorTransfer(Element* element, Gauss* gauss, Input* sed_head_input, Input* epl_head_input, Input* thick_input, Input* base_input); 40 40 void HydrologyEPLGetMask(Vector<IssmDouble>* vec_mask,Element* element); 41 41 void HydrologyEPLGetActive(Vector<IssmDouble>* active_vec, Element* element); -
issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp
r18643 r18645 200 200 Input* sed_head_input = basalelement->GetInput(SedimentHeadEnum); 201 201 Input* epl_head_input = basalelement->GetInput(EplHeadEnum); 202 Input* thick_input = basalelement->GetInput(ThicknessEnum); 202 203 Input* base_input = basalelement->GetInput(BaseEnum); 203 Input* thick_input = basalelement->GetInput(ThicknessEnum);204 204 205 205 IssmDouble sediment_storing = SedimentStoring(basalelement); … … 304 304 Input* epl_head_input = basalelement->GetInput(EplHeadEnum); 305 305 Input* water_input = basalelement->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(water_input); 306 Input* thick_input = basalelement->GetInput(ThicknessEnum); 306 307 Input* base_input = basalelement->GetInput(BaseEnum); 307 Input* thick_input = basalelement->GetInput(ThicknessEnum);308 308 if(dt!= 0.){old_wh_input = basalelement->GetInput(SedimentHeadOldEnum); _assert_(old_wh_input);} 309 309 … … 599 599 transfer=0.0; 600 600 } 601 else if(sediment_head>=hmax-50.0){602 transfer=leakage*1.0e-2;603 }604 601 else{ 605 602 transfer=(leakage); … … 613 610 _error_("no case higher than 1 for the Transfer method"); 614 611 } 615 /* if(element->Id()==42){ */616 /* printf("TransferInfficient Kmat %e, %e, %e\n",transfer,sediment_head,epl_head); */617 /* } */618 612 return transfer; 619 613 }/*}}}*/ … … 648 642 transfer=0.0; 649 643 } 650 else if(sediment_head>=hmax-50.0){651 transfer=leakage*1.0e-2;652 }653 644 else{ 654 645 transfer=(epl_head*leakage); … … 662 653 _error_("no case higher than 1 for the Transfer method"); 663 654 } 664 /* if(element->Id()==42){ */665 /* printf("TransferInfficient Pvec %e, %e, %e\n",transfer,sediment_head,epl_head); */666 /* } */667 655 return transfer; 668 656 }/*}}}*/
Note:
See TracChangeset
for help on using the changeset viewer.