- Timestamp:
- 06/13/18 02:10:04 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp
r22364 r22841 74 74 bool isefficientlayer; 75 75 int hydrology_model; 76 76 77 77 /*Fetch data needed: */ 78 78 iomodel->FindConstant(&hydrology_model,"md.hydrology.model"); … … 161 161 loads->AddObject(new Pengrid(iomodel->loadcounter+i+1,i,iomodel,HydrologyDCInefficientAnalysisEnum)); 162 162 loads->AddObject(new Moulin(iomodel->loadcounter+i+1,i,iomodel,HydrologyDCInefficientAnalysisEnum)); 163 } 163 } 164 164 } 165 165 } … … 233 233 active_element_input = basalelement->GetInput(HydrologydcMaskEplactiveEltEnum); _assert_(active_element_input); 234 234 } 235 235 236 236 /* Start looping on the number of gaussian points: */ 237 237 Gauss* gauss=basalelement->NewGauss(2); … … 250 250 D[0][0]=D_scalar; 251 251 D[1][1]=D_scalar; 252 GetB(B,basalelement,xyz_list,gauss); 252 GetB(B,basalelement,xyz_list,gauss); 253 253 TripleMultiply(B,2,numnodes,1, 254 254 &D[0][0],2,2,0, … … 265 265 basis,1,numnodes,0, 266 266 &Ke->values[0],1); 267 267 268 268 /*Transfer EPL part*/ 269 269 if(isefficientlayer){ … … 288 288 delete gauss; 289 289 if(domaintype!=Domain2DhorizontalEnum){ 290 basalelement->DeleteMaterials(); 290 basalelement->DeleteMaterials(); 291 291 delete basalelement; 292 292 } … … 412 412 delete gauss; 413 413 if(domaintype!=Domain2DhorizontalEnum){ 414 basalelement->DeleteMaterials(); 414 basalelement->DeleteMaterials(); 415 415 delete basalelement; 416 416 } … … 419 419 420 420 void HydrologyDCInefficientAnalysis::GetB(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/ 421 /*Compute B matrix. B=[B1 B2 B3] where Bi is of size 3*NDOF2. 421 /*Compute B matrix. B=[B1 B2 B3] where Bi is of size 3*NDOF2. 422 422 * For node i, Bi can be expressed in the actual coordinate system 423 * by: 423 * by: 424 424 * Bi=[ dN/dx ] 425 425 * [ dN/dy ] … … 507 507 IssmDouble rho_ice = basalelement->GetMaterialParameter(MaterialsRhoIceEnum); 508 508 IssmDouble g = basalelement->GetMaterialParameter(ConstantsGEnum); 509 509 510 510 basalelement->GetInputListOnVertices(thickness,ThicknessEnum); 511 511 basalelement->GetInputListOnVertices(base,BaseEnum); … … 542 542 xDelete<int>(doflist); 543 543 if(domaintype!=Domain2DhorizontalEnum){ 544 basalelement->DeleteMaterials(); 544 basalelement->DeleteMaterials(); 545 545 delete basalelement; 546 546 } … … 554 554 IssmDouble HydrologyDCInefficientAnalysis::SedimentStoring(Element* element,Gauss* gauss,Input* sed_head_input, Input* base_input){/*{{{*/ 555 555 int unconf_scheme; 556 IssmDouble expfac; 556 IssmDouble expfac; 557 557 IssmDouble sediment_storing; 558 558 IssmDouble storing,yield; … … 610 610 sed_head_input->GetInputValue(&prestep_head,gauss); 611 611 water_sheet=max(0.0,(prestep_head-(base_elev-sediment_thickness))); 612 612 613 613 //min definition of the if test 614 614 sediment_transmitivity=FullLayer_transmitivity*min(water_sheet/sediment_thickness,1.); … … 625 625 626 626 void HydrologyDCInefficientAnalysis::GetHydrologyDCInefficientHmax(IssmDouble* ph_max,Element* element, Node* innode){/*{{{*/ 627 627 628 628 int hmax_flag; 629 629 IssmDouble h_max; … … 632 632 /*Get the flag to the limitation method*/ 633 633 element->FindParam(&hmax_flag,HydrologydcSedimentlimitFlagEnum); 634 634 635 635 /*Switch between the different cases*/ 636 636 switch(hmax_flag){ … … 674 674 case 1: 675 675 element->FindParam(&leakage,HydrologydcLeakageFactorEnum); 676 transfer=+leakage; 676 transfer=+leakage; 677 677 break; 678 678 default: … … 698 698 _assert_(epl_head_input); 699 699 epl_head_input->GetInputValue(&epl_head,gauss); 700 if (element->Id()==42){701 _printf_("epl head in sed Pvec transfer is "<< epl_head <<"\n");702 }703 700 element->FindParam(&leakage,HydrologydcLeakageFactorEnum); 704 701 transfer=+epl_head*leakage; … … 718 715 element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i)); 719 716 Input* node_mask_input = element->GetInput(HydrologydcMaskEplactiveNodeEnum); _assert_(node_mask_input); 720 717 721 718 if(node_mask_input->Max()>0.){ 722 719 element_active = true;
Note:
See TracChangeset
for help on using the changeset viewer.