Changeset 22185
- Timestamp:
- 10/23/17 15:05:08 (7 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/HydrologySommersAnalysis.cpp
r21526 r22185 313 313 PMPheat=-CT*CW*conductivity*(dh[0]*dpressure_water[0]+dh[1]*dpressure_water[1]); 314 314 315 meltrate = 1/latentheat*(G+frictionheat+rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1])-PMPheat); 315 meltrate = 1/latentheat*(rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1])-PMPheat); //Taking out geothermal and frictional heat for SHMIP 316 // meltrate = 1/latentheat*(G+frictionheat+rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1])-PMPheat); 316 317 _assert_(meltrate>0.); 317 318 … … 380 381 381 382 /*Make sure that negative pressure is not allowed*/ 382 if(values[i]<bed[i]){383 values[i] = bed[i];384 }383 // if(values[i]<bed[i]){ 384 // values[i] = bed[i]; 385 // } 385 386 386 387 /*Under-relaxation*/ … … 466 467 IssmDouble dpressure_water[2],dbed[2],PMPheat; 467 468 IssmDouble q = 0.; 469 IssmDouble channelization = 0.; 468 470 469 471 /*Retrieve all inputs and parameters*/ … … 542 544 dpressure_water[1] = rho_water*g*(dh[1] - dbed[1]); 543 545 PMPheat=-CT*CW*conductivity*(dh[0]*dpressure_water[0]+dh[1]*dpressure_water[1]); 544 545 meltrate = 1/latentheat*(G+frictionheat+rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1])-PMPheat); 546 547 meltrate = 1/latentheat*(rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1])-PMPheat); // Taking out geothermal and frictional heat for SHMIP 548 // meltrate = 1/latentheat*(G+frictionheat+rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1])-PMPheat); 546 549 _assert_(meltrate>0.); 547 550 … … 555 558 /* Compute basal water flux */ 556 559 q += gauss->weight*Jdet*(conductivity*sqrt(dh[0]*dh[0]+dh[1]*dh[1])); 560 561 /* Compute "degree of channelization" (ratio of melt opening to opening by sliding) */ 562 channelization += gauss->weight*Jdet*(meltrate/rho_ice/(beta*sqrt(vx*vx+vy*vy))); 557 563 } 558 564 … … 565 571 if(newgap>thickness) 566 572 newgap = thickness; 567 573 568 574 /*Add new gap as an input*/ 569 575 element->AddInput(HydrologyGapHeightEnum,&newgap,P0Enum); … … 573 579 element->AddInput(HydrologyBasalFluxEnum,&q,P0Enum); 574 580 581 /* Divide by connectivity, add degree of channelization as an input */ 582 channelization = channelization/totalweights; 583 element->AddInput(DegreeOfChannelizationEnum,&channelization,P0Enum); 584 575 585 /*Clean up and return*/ 576 586 xDelete<IssmDouble>(xyz_list); -
issm/trunk-jpl/src/c/cores/hydrology_core.cpp
r21463 r22185 89 89 if(save_results){ 90 90 if(VerboseSolution()) _printf0_(" saving results \n"); 91 int outputs[ 4] = {HydrologyHeadEnum,HydrologyGapHeightEnum,EffectivePressureEnum,HydrologyBasalFluxEnum};92 femmodel->RequestedOutputsx(&femmodel->results,&outputs[0], 4);91 int outputs[5] = {HydrologyHeadEnum,HydrologyGapHeightEnum,EffectivePressureEnum,HydrologyBasalFluxEnum,DegreeOfChannelizationEnum}; 92 femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],5); 93 93 94 94 /*unload results*/ -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r22181 r22185 185 185 HydrologyBasalFluxEnum, 186 186 HydrologyStorageEnum, 187 DegreeOfChannelizationEnum, 187 188 InversionControlParametersEnum, 188 189 InversionControlScalingFactorsEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r22181 r22185 191 191 case HydrologyBasalFluxEnum : return "HydrologyBasalFlux"; 192 192 case HydrologyStorageEnum : return "HydrologyStorage"; 193 case DegreeOfChannelizationEnum : return "DegreeOfChannelization"; 193 194 case InversionControlParametersEnum : return "InversionControlParameters"; 194 195 case InversionControlScalingFactorsEnum : return "InversionControlScalingFactors"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r22181 r22185 194 194 else if (strcmp(name,"HydrologyBasalFlux")==0) return HydrologyBasalFluxEnum; 195 195 else if (strcmp(name,"HydrologyStorage")==0) return HydrologyStorageEnum; 196 else if (strcmp(name,"DegreeOfChannelization")==0) return DegreeOfChannelizationEnum; 196 197 else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum; 197 198 else if (strcmp(name,"InversionControlScalingFactors")==0) return InversionControlScalingFactorsEnum; … … 259 260 else if (strcmp(name,"DamageEvolutionRequestedOutputs")==0) return DamageEvolutionRequestedOutputsEnum; 260 261 else if (strcmp(name,"Damage")==0) return DamageEnum; 261 else if (strcmp(name,"NewDamage")==0) return NewDamageEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"StressIntensityFactor")==0) return StressIntensityFactorEnum; 265 if (strcmp(name,"NewDamage")==0) return NewDamageEnum; 266 else if (strcmp(name,"StressIntensityFactor")==0) return StressIntensityFactorEnum; 266 267 else if (strcmp(name,"CalvingLaw")==0) return CalvingLawEnum; 267 268 else if (strcmp(name,"CalvingCalvingrate")==0) return CalvingCalvingrateEnum; … … 270 271 else if (strcmp(name,"CalvingDev")==0) return CalvingDevEnum; 271 272 else if (strcmp(name,"CalvingMinthickness")==0) return CalvingMinthicknessEnum; 272 else stage=3; 273 } 274 if(stage==3){ 275 if (strcmp(name,"CalvingHab")==0) return CalvingHabEnum; 273 else if (strcmp(name,"CalvingHab")==0) return CalvingHabEnum; 276 274 else if (strcmp(name,"CalvingCrevasseDepth")==0) return CalvingCrevasseDepthEnum; 277 275 else if (strcmp(name,"SurfaceCrevasse")==0) return SurfaceCrevasseEnum; … … 385 383 else if (strcmp(name,"TransientIsesa")==0) return TransientIsesaEnum; 386 384 else if (strcmp(name,"TransientIsdamageevolution")==0) return TransientIsdamageevolutionEnum; 387 else if (strcmp(name,"TransientIshydrology")==0) return TransientIshydrologyEnum; 385 else stage=4; 386 } 387 if(stage==4){ 388 if (strcmp(name,"TransientIshydrology")==0) return TransientIshydrologyEnum; 388 389 else if (strcmp(name,"TransientIsmovingfront")==0) return TransientIsmovingfrontEnum; 389 390 else if (strcmp(name,"TransientIsslr")==0) return TransientIsslrEnum; … … 393 394 else if (strcmp(name,"BalancethicknessDiffusionCoefficient")==0) return BalancethicknessDiffusionCoefficientEnum; 394 395 else if (strcmp(name,"BalancethicknessOmega")==0) return BalancethicknessOmegaEnum; 395 else stage=4; 396 } 397 if(stage==4){ 398 if (strcmp(name,"BalancethicknessD0")==0) return BalancethicknessD0Enum; 396 else if (strcmp(name,"BalancethicknessD0")==0) return BalancethicknessD0Enum; 399 397 else if (strcmp(name,"Smb")==0) return SmbEnum; 400 398 else if (strcmp(name,"SmbAnalysis")==0) return SmbAnalysisEnum; … … 508 506 else if (strcmp(name,"Adjointx")==0) return AdjointxEnum; 509 507 else if (strcmp(name,"Adjointy")==0) return AdjointyEnum; 510 else if (strcmp(name,"Adjointz")==0) return AdjointzEnum; 508 else stage=5; 509 } 510 if(stage==5){ 511 if (strcmp(name,"Adjointz")==0) return AdjointzEnum; 511 512 else if (strcmp(name,"BalancethicknessMisfit")==0) return BalancethicknessMisfitEnum; 512 513 else if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum; … … 516 517 else if (strcmp(name,"Internal")==0) return InternalEnum; 517 518 else if (strcmp(name,"MassFlux")==0) return MassFluxEnum; 518 else stage=5; 519 } 520 if(stage==5){ 521 if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum; 519 else if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum; 522 520 else if (strcmp(name,"Misfit")==0) return MisfitEnum; 523 521 else if (strcmp(name,"Pressure")==0) return PressureEnum; … … 631 629 else if (strcmp(name,"Outputdefinition12")==0) return Outputdefinition12Enum; 632 630 else if (strcmp(name,"Outputdefinition13")==0) return Outputdefinition13Enum; 633 else if (strcmp(name,"Outputdefinition14")==0) return Outputdefinition14Enum; 631 else stage=6; 632 } 633 if(stage==6){ 634 if (strcmp(name,"Outputdefinition14")==0) return Outputdefinition14Enum; 634 635 else if (strcmp(name,"Outputdefinition15")==0) return Outputdefinition15Enum; 635 636 else if (strcmp(name,"Outputdefinition16")==0) return Outputdefinition16Enum; … … 639 640 else if (strcmp(name,"Outputdefinition20")==0) return Outputdefinition20Enum; 640 641 else if (strcmp(name,"Outputdefinition21")==0) return Outputdefinition21Enum; 641 else stage=6; 642 } 643 if(stage==6){ 644 if (strcmp(name,"Outputdefinition22")==0) return Outputdefinition22Enum; 642 else if (strcmp(name,"Outputdefinition22")==0) return Outputdefinition22Enum; 645 643 else if (strcmp(name,"Outputdefinition23")==0) return Outputdefinition23Enum; 646 644 else if (strcmp(name,"Outputdefinition24")==0) return Outputdefinition24Enum; … … 754 752 else if (strcmp(name,"Gset")==0) return GsetEnum; 755 753 else if (strcmp(name,"Index")==0) return IndexEnum; 756 else if (strcmp(name,"Indexed")==0) return IndexedEnum; 754 else stage=7; 755 } 756 if(stage==7){ 757 if (strcmp(name,"Indexed")==0) return IndexedEnum; 757 758 else if (strcmp(name,"Intersect")==0) return IntersectEnum; 758 759 else if (strcmp(name,"Nodal")==0) return NodalEnum; … … 762 763 else if (strcmp(name,"OutputFilePointer")==0) return OutputFilePointerEnum; 763 764 else if (strcmp(name,"ToolkitsFileName")==0) return ToolkitsFileNameEnum; 764 else stage=7; 765 } 766 if(stage==7){ 767 if (strcmp(name,"RootPath")==0) return RootPathEnum; 765 else if (strcmp(name,"RootPath")==0) return RootPathEnum; 768 766 else if (strcmp(name,"OutputFileName")==0) return OutputFileNameEnum; 769 else stage=7; 770 } 771 if(stage==7){ 772 if (strcmp(name,"InputFileName")==0) return InputFileNameEnum; 767 else if (strcmp(name,"InputFileName")==0) return InputFileNameEnum; 773 768 else if (strcmp(name,"LockFileName")==0) return LockFileNameEnum; 774 769 else if (strcmp(name,"RestartFileName")==0) return RestartFileNameEnum; … … 880 875 else if (strcmp(name,"AmrThicknessErrorResolution")==0) return AmrThicknessErrorResolutionEnum; 881 876 else if (strcmp(name,"AmrThicknessErrorThreshold")==0) return AmrThicknessErrorThresholdEnum; 882 else if (strcmp(name,"AmrDeviatoricErrorResolution")==0) return AmrDeviatoricErrorResolutionEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"AmrDeviatoricErrorResolution")==0) return AmrDeviatoricErrorResolutionEnum; 883 881 else if (strcmp(name,"AmrDeviatoricErrorThreshold")==0) return AmrDeviatoricErrorThresholdEnum; 884 882 else if (strcmp(name,"DeviatoricStressErrorEstimator")==0) return DeviatoricStressErrorEstimatorEnum; … … 888 886 else if (strcmp(name,"XYZ")==0) return XYZEnum; 889 887 else if (strcmp(name,"GenericParam")==0) return GenericParamEnum; 890 else stage=8; 891 } 892 if(stage==8){ 893 if (strcmp(name,"BoolInput")==0) return BoolInputEnum; 888 else if (strcmp(name,"BoolInput")==0) return BoolInputEnum; 894 889 else if (strcmp(name,"BoolParam")==0) return BoolParamEnum; 895 890 else if (strcmp(name,"Contour")==0) return ContourEnum; … … 932 927 else if (strcmp(name,"NodeSId")==0) return NodeSIdEnum; 933 928 else if (strcmp(name,"ElementSId")==0) return ElementSIdEnum; 934 else stage=8; 935 } 936 if(stage==8){ 937 if (strcmp(name,"VectorParam")==0) return VectorParamEnum; 929 else if (strcmp(name,"VectorParam")==0) return VectorParamEnum; 938 930 else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum; 939 931 else if (strcmp(name,"Segment")==0) return SegmentEnum; … … 1006 998 else if (strcmp(name,"EsaAnalysis")==0) return EsaAnalysisEnum; 1007 999 else if (strcmp(name,"LoveSolution")==0) return LoveSolutionEnum; 1008 else if (strcmp(name,"LoveAnalysis")==0) return LoveAnalysisEnum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"LoveAnalysis")==0) return LoveAnalysisEnum; 1009 1004 else if (strcmp(name,"LevelsetAnalysis")==0) return LevelsetAnalysisEnum; 1010 1005 else if (strcmp(name,"ExtrapolationAnalysis")==0) return ExtrapolationAnalysisEnum; … … 1014 1009 else if (strcmp(name,"SSAApproximation")==0) return SSAApproximationEnum; 1015 1010 else if (strcmp(name,"SSAHOApproximation")==0) return SSAHOApproximationEnum; 1016 else stage=9; 1017 } 1018 if(stage==9){ 1019 if (strcmp(name,"SSAFSApproximation")==0) return SSAFSApproximationEnum; 1011 else if (strcmp(name,"SSAFSApproximation")==0) return SSAFSApproximationEnum; 1020 1012 else if (strcmp(name,"L1L2Approximation")==0) return L1L2ApproximationEnum; 1021 1013 else if (strcmp(name,"HOApproximation")==0) return HOApproximationEnum; … … 1057 1049 else if (strcmp(name,"P1bubblecondensed")==0) return P1bubblecondensedEnum; 1058 1050 else if (strcmp(name,"P2")==0) return P2Enum; 1059 else stage=9; 1060 } 1061 if(stage==9){ 1062 if (strcmp(name,"P2bubble")==0) return P2bubbleEnum; 1051 else if (strcmp(name,"P2bubble")==0) return P2bubbleEnum; 1063 1052 else if (strcmp(name,"P2bubblecondensed")==0) return P2bubblecondensedEnum; 1064 1053 else if (strcmp(name,"P2xP1")==0) return P2xP1Enum;
Note:
See TracChangeset
for help on using the changeset viewer.