Changeset 17375
- Timestamp:
- 03/03/14 15:36:12 (11 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp
r17372 r17375 156 156 basalelement->FindParam(&dt,TimesteppingTimeStepEnum); 157 157 Input* thickness_input = basalelement->GetInput(HydrologydcEplThicknessEnum); _assert_(thickness_input); 158 Input* sed_head_input = basalelement->GetInput(SedimentHeadEnum); 159 Input* epl_head_input = basalelement->GetInput(EplHeadEnum); 160 Input* sed_trans_input = basalelement->GetInput(HydrologydcSedimentTransmitivityEnum); 161 Input* residual_input = basalelement->GetInput(SedimentHeadResidualEnum); 162 158 163 IssmDouble epl_specificstoring = EplSpecificStoring(basalelement); 159 164 IssmDouble epl_conductivity = basalelement->GetMaterialParameter(HydrologydcEplConductivityEnum); … … 187 192 188 193 /*Transfer EPL part*/ 189 transfer=GetHydrologyKMatrixTransfer(basalelement,gauss );194 transfer=GetHydrologyKMatrixTransfer(basalelement,gauss,thickness_input,sed_head_input,epl_head_input,sed_trans_input,residual_input); 190 195 D_scalar=transfer*gauss->weight*Jdet*dt; 191 196 TripleMultiply(basis,numnodes,1,0, … … 258 263 basalelement->FindParam(&dt,TimesteppingTimeStepEnum); 259 264 265 Input* thickness_input = basalelement->GetInput(HydrologydcEplThicknessEnum); _assert_(thickness_input); 266 Input* sed_head_input = basalelement->GetInput(SedimentHeadEnum); 267 Input* epl_head_input = basalelement->GetInput(EplHeadEnum); 268 Input* sed_trans_input = basalelement->GetInput(HydrologydcSedimentTransmitivityEnum); 260 269 Input* residual_input = basalelement->GetInput(SedimentHeadResidualEnum); _assert_(residual_input); 261 Input* thickness_input = basalelement->GetInput(HydrologydcEplThicknessEnum); _assert_(thickness_input);262 270 if(dt!= 0.){old_wh_input = basalelement->GetInput(EplHeadOldEnum); _assert_(old_wh_input);} 263 271 … … 278 286 279 287 /*Dealing with the sediment part of the transfer term*/ 280 transfer=GetHydrologyPVectorTransfer(basalelement,gauss );288 transfer=GetHydrologyPVectorTransfer(basalelement,gauss,thickness_input,sed_head_input,epl_head_input,sed_trans_input,residual_input); 281 289 scalar = Jdet*gauss->weight*((water_head*epl_specificstoring*epl_thickness)+(transfer*dt)); 282 290 for(int i=0;i<numnodes;i++)pe->values[i]+=scalar*basis[i]; … … 367 375 return rho_freshwater*g*sediment_porosity*sediment_thickness*(water_compressibility+(sediment_compressibility/sediment_porosity)); 368 376 }/*}}}*/ 369 IssmDouble HydrologyDCEfficientAnalysis::GetHydrologyKMatrixTransfer(Element* element, Gauss* gauss ){/*{{{*/377 IssmDouble HydrologyDCEfficientAnalysis::GetHydrologyKMatrixTransfer(Element* element, Gauss* gauss, Input* epl_thick_input, Input* sed_head_input, Input* epl_head_input, Input* sed_trans_input, Input* residual_input){/*{{{*/ 370 378 371 379 int transfermethod; … … 387 395 break; 388 396 case 1: 389 /* _assert_(input) */ 397 _assert_(epl_thick_input); 398 _assert_(sed_head_input); 399 _assert_(epl_head_input); 400 _assert_(sed_trans_input); 401 _assert_(residual_input); 390 402 /* get input */ 391 392 element->GetInputValue(&epl_thickness,gauss,HydrologydcEplThicknessEnum); 393 element->GetInputValue(&sed_head,gauss,SedimentHeadEnum); 394 element->GetInputValue(&epl_head,gauss,EplHeadEnum); 395 element->GetInputValue(&sediment_transmitivity,gauss,HydrologydcSedimentTransmitivityEnum); 396 element->GetInputValue(&residual,gauss,SedimentHeadResidualEnum); 403 epl_thick_input->GetInputValue(&epl_thickness,gauss); 404 sed_head_input->GetInputValue(&sed_head,gauss); 405 epl_head_input->GetInputValue(&epl_head,gauss); 406 sed_trans_input->GetInputValue(&sediment_transmitivity,gauss); 407 residual_input->GetInputValue(&residual,gauss); 397 408 element->FindParam(&leakage,HydrologydcLeakageFactorEnum); 398 409 … … 415 426 return transfer; 416 427 }/*}}}*/ 417 IssmDouble HydrologyDCEfficientAnalysis::GetHydrologyPVectorTransfer(Element* element, Gauss* gauss ){/*{{{*/428 IssmDouble HydrologyDCEfficientAnalysis::GetHydrologyPVectorTransfer(Element* element, Gauss* gauss, Input* epl_thick_input, Input* sed_head_input, Input* epl_head_input, Input* sed_trans_input, Input* residual_input){/*{{{*/ 418 429 419 430 int transfermethod; … … 435 446 break; 436 447 case 1: 437 438 element->GetInputValue(&epl_thickness,gauss,HydrologydcEplThicknessEnum); 439 element->GetInputValue(&sediment_head,gauss,SedimentHeadEnum); 440 element->GetInputValue(&epl_head,gauss,EplHeadEnum); 441 element->GetInputValue(&sediment_transmitivity,gauss,HydrologydcSedimentTransmitivityEnum); 442 element->GetInputValue(&residual,gauss,SedimentHeadResidualEnum); 448 _assert_(epl_thick_input); 449 _assert_(sed_head_input); 450 _assert_(epl_head_input); 451 _assert_(sed_trans_input); 452 _assert_(residual_input); 453 /* get input */ 454 epl_thick_input->GetInputValue(&epl_thickness,gauss); 455 sed_head_input->GetInputValue(&sediment_head,gauss); 456 epl_head_input->GetInputValue(&epl_head,gauss); 457 sed_trans_input->GetInputValue(&sediment_transmitivity,gauss); 458 residual_input->GetInputValue(&residual,gauss); 443 459 element->FindParam(&leakage,HydrologydcLeakageFactorEnum); 444 460 … … 618 634 619 635 basalelement-> GetInputListOnVertices(&old_active[0],HydrologydcMaskEplactiveNodeEnum); 620 basalelement-> 621 basalelement-> 622 basalelement-> 623 basalelement-> 636 basalelement-> GetInputListOnVertices(&epl_thickness[0],HydrologydcEplThicknessEnum); 637 basalelement-> GetInputListOnVertices(&sedhead[0],SedimentHeadEnum); 638 basalelement-> GetInputListOnVertices(&eplhead[0],EplHeadEnum); 639 basalelement-> GetInputListOnVertices(&residual[0],SedimentHeadResidualEnum); 624 640 625 641 /*Get minimum sediment head of the element*/ … … 703 719 } 704 720 705 void 721 void HydrologyDCEfficientAnalysis::GetHydrologyDCInefficientHmax(IssmDouble* ph_max,Element* element, Node* innode){/*{{{*/ 706 722 707 723 int hmax_flag; … … 724 740 rho_water = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum); 725 741 rho_ice = element->GetMaterialParameter(MaterialsRhoIceEnum); 726 element-> GetInputValue(&thickness,innode,ThicknessEnum);727 element-> GetInputValue(&bed,innode,BedEnum);742 element-> GetInputValue(&thickness,innode,ThicknessEnum); 743 element-> GetInputValue(&bed,innode,BedEnum); 728 744 h_max=((rho_ice*thickness)/rho_water)+bed; 729 745 break; -
issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.h
r17372 r17375 8 8 /*Headers*/ 9 9 #include "./Analysis.h" 10 class Node; 10 class Node; 11 class Input; 11 12 class HydrologyDCEfficientAnalysis: public Analysis{ 12 13 … … 34 35 IssmDouble EplSpecificStoring(Element* element); 35 36 IssmDouble SedimentStoring(Element* element); 36 IssmDouble GetHydrologyKMatrixTransfer(Element* element, Gauss* gauss );37 IssmDouble GetHydrologyPVectorTransfer(Element* element, Gauss* gauss );37 IssmDouble GetHydrologyKMatrixTransfer(Element* element, Gauss* gauss, Input* epl_thick_input, Input* sed_head_input, Input* epl_head_input, Input* sed_trans_input, Input* residual_input); 38 IssmDouble GetHydrologyPVectorTransfer(Element* element, Gauss* gauss, Input* epl_thick_input, Input* sed_head_input, Input* epl_head_input, Input* sed_trans_input, Input* residual_input); 38 39 void HydrologyEPLGetMask(Vector<IssmDouble>* vec_mask,Element* element); 39 40 void HydrologyEPLGetActive(Vector<IssmDouble>* active_vec, Element* element); -
issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp
r17372 r17375 195 195 basalelement ->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum); 196 196 197 Input* SedTrans_input = basalelement->GetInput(HydrologydcSedimentTransmitivityEnum); _assert_(SedTrans_input); 197 Input* epl_thick_input = basalelement->GetInput(HydrologydcEplThicknessEnum); 198 Input* sed_head_input = basalelement->GetInput(SedimentHeadEnum); 199 Input* epl_head_input = basalelement->GetInput(EplHeadEnum); 200 Input* thickness_input = basalelement->GetInput(ThicknessEnum); 201 Input* bed_input = basalelement->GetInput(BedEnum); 202 Input* SedTrans_input = basalelement->GetInput(HydrologydcSedimentTransmitivityEnum); _assert_(SedTrans_input); 198 203 IssmDouble sediment_storing = SedimentStoring(basalelement); 199 204 /*Transfer related Inputs*/ … … 233 238 active_element_input->GetInputValue(&active_element); 234 239 if(active_element){ 235 transfer=GetHydrologyKMatrixTransfer(basalelement,gauss );240 transfer=GetHydrologyKMatrixTransfer(basalelement,gauss,epl_thick_input,sed_head_input,epl_head_input,SedTrans_input,thickness_input,bed_input); 236 241 basalelement->NodalFunctions(&basis[0],gauss); 237 242 D_scalar=transfer*gauss->weight*Jdet*dt; … … 293 298 basalelement->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum); 294 299 300 Input* epl_thick_input = basalelement->GetInput(HydrologydcEplThicknessEnum); 301 Input* sed_head_input = basalelement->GetInput(SedimentHeadEnum); 302 Input* epl_head_input = basalelement->GetInput(EplHeadEnum); 303 Input* sed_trans_input = basalelement->GetInput(HydrologydcSedimentTransmitivityEnum); 304 Input* thickness_input = basalelement->GetInput(ThicknessEnum); 305 Input* bed_input = basalelement->GetInput(BedEnum); 295 306 Input* water_input = basalelement->GetInput(BasalforcingsMeltingRateEnum); _assert_(water_input); 296 307 if(dt!= 0.){old_wh_input = basalelement->GetInput(SedimentHeadOldEnum); _assert_(old_wh_input);} … … 327 338 active_element_input->GetInputValue(&active_element); 328 339 if(active_element){ 329 transfer=GetHydrologyPVectorTransfer(basalelement,gauss );340 transfer=GetHydrologyPVectorTransfer(basalelement,gauss,epl_thick_input,sed_head_input,epl_head_input,sed_trans_input,thickness_input,bed_input); 330 341 } 331 342 else{ … … 461 472 }/*}}}*/ 462 473 463 IssmDouble HydrologyDCInefficientAnalysis::GetHydrologyDCInefficientHmax(Element* element, Gauss* gauss ){/*{{{*/474 IssmDouble HydrologyDCInefficientAnalysis::GetHydrologyDCInefficientHmax(Element* element, Gauss* gauss, Input* thick_input, Input* bed_input){/*{{{*/ 464 475 int hmax_flag; 465 476 IssmDouble h_max; … … 482 493 rho_ice = element->GetMaterialParameter(MaterialsRhoIceEnum); 483 494 495 _assert_(thick_input); 496 _assert_(bed_input); 497 484 498 /*Compute max*/ 485 /* thick_input->GetInputValue(&thickness,gauss); */ 486 /* bed_input->GetInputValue(&bed,gauss); */ 487 element->GetInputValue(&thickness,gauss,ThicknessEnum); 488 element->GetInputValue(&bed,gauss,BedEnum); 499 thick_input->GetInputValue(&thickness,gauss); 500 bed_input->GetInputValue(&bed,gauss); 489 501 h_max=((rho_ice*thickness)/rho_water)+bed; 490 502 break; … … 532 544 } 533 545 /*}}}*/ 534 IssmDouble HydrologyDCInefficientAnalysis::GetHydrologyKMatrixTransfer(Element* element, Gauss* gauss ){/*{{{*/546 IssmDouble HydrologyDCInefficientAnalysis::GetHydrologyKMatrixTransfer(Element* element, Gauss* gauss, Input* epl_thick_input, Input* sed_head_input, Input* epl_head_input, Input* sed_trans_input, Input* thickness_input, Input* bed_input){/*{{{*/ 535 547 536 548 int transfermethod; … … 552 564 break; 553 565 case 1: 554 555 element->GetInputValue(&epl_thickness,gauss,HydrologydcEplThicknessEnum);556 element->GetInputValue(&sed_head,gauss,SedimentHeadEnum);557 element->GetInputValue(&epl_head,gauss,EplHeadEnum);558 element->GetInputValue(&sediment_transmitivity,gauss,HydrologydcSedimentTransmitivityEnum);559 566 567 _assert_(epl_thick_input); 568 _assert_(sed_head_input); 569 _assert_(epl_head_input); 570 _assert_(sed_trans_input); 571 _assert_(thickness_input); 572 _assert_(bed_input); 573 574 epl_thick_input->GetInputValue(&epl_thickness,gauss); 575 sed_head_input->GetInputValue(&sed_head,gauss); 576 epl_head_input->GetInputValue(&epl_head,gauss); 577 sed_trans_input->GetInputValue(&sediment_transmitivity,gauss); 560 578 element->FindParam(&leakage,HydrologydcLeakageFactorEnum); 561 579 562 580 if(epl_head>sed_head){ 563 h_max=GetHydrologyDCInefficientHmax(element,gauss );581 h_max=GetHydrologyDCInefficientHmax(element,gauss,thickness_input,bed_input); 564 582 if(sed_head>=h_max){ 565 583 transfer=0.0; … … 580 598 }/*}}}*/ 581 599 582 IssmDouble HydrologyDCInefficientAnalysis::GetHydrologyPVectorTransfer(Element* element, Gauss* gauss ){/*{{{*/600 IssmDouble HydrologyDCInefficientAnalysis::GetHydrologyPVectorTransfer(Element* element, Gauss* gauss, Input* epl_thick_input, Input* sed_head_input, Input* epl_head_input, Input* sed_trans_input, Input* thickness_input, Input* bed_input){/*{{{*/ 583 601 584 602 int transfermethod; … … 600 618 break; 601 619 case 1: 602 603 element->GetInputValue(&epl_thickness,gauss,HydrologydcEplThicknessEnum);604 element->GetInputValue(&sediment_head,gauss,SedimentHeadEnum);605 element->GetInputValue(&epl_head,gauss,EplHeadEnum);606 element->GetInputValue(&sediment_transmitivity,gauss,HydrologydcSedimentTransmitivityEnum);607 620 621 _assert_(epl_thick_input); 622 _assert_(sed_head_input); 623 _assert_(epl_head_input); 624 _assert_(sed_trans_input); 625 _assert_(thickness_input); 626 _assert_(bed_input); 627 628 epl_thick_input->GetInputValue(&epl_thickness,gauss); 629 sed_head_input->GetInputValue(&sediment_head,gauss); 630 epl_head_input->GetInputValue(&epl_head,gauss); 631 sed_trans_input->GetInputValue(&sediment_transmitivity,gauss); 632 608 633 element->FindParam(&leakage,HydrologydcLeakageFactorEnum); 634 609 635 if(epl_head>sediment_head){ 610 h_max=GetHydrologyDCInefficientHmax(element,gauss );636 h_max=GetHydrologyDCInefficientHmax(element,gauss,thickness_input,bed_input); 611 637 if(sediment_head>=h_max){ 612 638 transfer=0.0; -
issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.h
r17372 r17375 9 9 #include "./Analysis.h" 10 10 class Node; 11 class Input; 11 12 class HydrologyDCInefficientAnalysis: public Analysis{ 12 13 … … 34 35 IssmDouble SedimentStoring(Element* element); 35 36 IssmDouble EplSpecificStoring(Element* element); 36 IssmDouble GetHydrologyDCInefficientHmax(Element* element, Gauss* gauss );37 IssmDouble GetHydrologyDCInefficientHmax(Element* element, Gauss* gauss, Input* thickness_input, Input* bed_input); 37 38 void GetHydrologyDCInefficientHmax(IssmDouble* ph_max,Element* element, Node* innode); 38 IssmDouble GetHydrologyKMatrixTransfer(Element* element, Gauss* gauss );39 IssmDouble GetHydrologyPVectorTransfer(Element* element, Gauss* gauss );39 IssmDouble GetHydrologyKMatrixTransfer(Element* element, Gauss* gauss, Input* epl_thick_input, Input* sed_head_input, Input* epl_head_input, Input* sed_trans_input, Input* thickness_input, Input* bed_input); 40 IssmDouble GetHydrologyPVectorTransfer(Element* element, Gauss* gauss, Input* epl_thick_input, Input* sed_head_input, Input* epl_head_input, Input* sed_trans_input, Input* thickness_input, Input* bed_input); 40 41 void ElementizeEplMask(FemModel* femmodel); 41 42 }; -
issm/trunk-jpl/src/c/classes/Elements/Seg.h
r17372 r17375 150 150 void GetNormalFromLSF(IssmDouble *pnormal){_error_("not implemented yet");}; 151 151 152 //void GetHydrologyDCInefficientHmax(IssmDouble* ph_max, Node* innode){_error_("not implemented yet");};153 //void HydrologyEPLGetActive(Vector<IssmDouble>* active_vec){_error_("not implemented yet");};154 //void HydrologyEPLGetMask(Vector<IssmDouble>* vec_mask){_error_("not implemented yet");};155 // void ComputeEPLThickness(void){_error_("not implemented yet");};156 157 152 void GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int enum_type){_error_("not implemented yet");}; 158 153 void GetVectorFromInputs(Vector<IssmDouble>* vector, int name_enum){_error_("not implemented yet");};
Note:
See TracChangeset
for help on using the changeset viewer.