source:
issm/oecreview/Archive/16554-17801/ISSM-16599-16600.diff@
17802
Last change on this file since 17802 was 17802, checked in by , 11 years ago | |
---|---|
File size: 16.1 KB |
-
../trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp
13 13 int hydrology_model; 14 14 int sedimentlimit_flag; 15 15 int transfer_flag; 16 int penalty_lock; 16 17 bool isefficientlayer; 17 18 IssmDouble sedimentlimit; 18 19 IssmDouble penalty_factor; … … 30 31 iomodel->FetchData(&transfer_flag,HydrologydcTransferFlagEnum); 31 32 iomodel->FetchData(&penalty_factor,HydrologydcPenaltyFactorEnum); 32 33 iomodel->FetchData(&rel_tol,HydrologydcRelTolEnum); 34 iomodel->FetchData(&penalty_lock,HydrologydcPenaltyLockEnum); 33 35 34 36 if(sedimentlimit_flag==1){ 35 37 iomodel->FetchData(&sedimentlimit,HydrologydcSedimentlimitEnum); … … 47 49 parameters->AddObject(new IntParam(HydrologydcSedimentlimitFlagEnum,sedimentlimit_flag)); 48 50 parameters->AddObject(new IntParam(HydrologydcTransferFlagEnum,transfer_flag)); 49 51 parameters->AddObject(new DoubleParam(HydrologydcRelTolEnum,rel_tol)); 52 parameters->AddObject(new IntParam(HydrologydcPenaltyLockEnum,penalty_lock)); 50 53 51 54 }/*}}}*/ 52 55 void HydrologyDCInefficientAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/ -
../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
120 120 HydrologydcTransferFlagEnum, 121 121 HydrologydcLeakageFactorEnum, 122 122 HydrologydcPenaltyFactorEnum, 123 HydrologydcPenaltyLockEnum, 123 124 HydrologyLayerEnum, 124 125 HydrologySedimentEnum, 125 126 HydrologyEfficientEnum, -
../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
128 128 case HydrologydcTransferFlagEnum : return "HydrologydcTransferFlag"; 129 129 case HydrologydcLeakageFactorEnum : return "HydrologydcLeakageFactor"; 130 130 case HydrologydcPenaltyFactorEnum : return "HydrologydcPenaltyFactor"; 131 case HydrologydcPenaltyLockEnum : return "HydrologydcPenaltyLock"; 131 132 case HydrologyLayerEnum : return "HydrologyLayer"; 132 133 case HydrologySedimentEnum : return "HydrologySediment"; 133 134 case HydrologyEfficientEnum : return "HydrologyEfficient"; -
../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
128 128 else if (strcmp(name,"HydrologydcTransferFlag")==0) return HydrologydcTransferFlagEnum; 129 129 else if (strcmp(name,"HydrologydcLeakageFactor")==0) return HydrologydcLeakageFactorEnum; 130 130 else if (strcmp(name,"HydrologydcPenaltyFactor")==0) return HydrologydcPenaltyFactorEnum; 131 else if (strcmp(name,"HydrologydcPenaltyLock")==0) return HydrologydcPenaltyLockEnum; 131 132 else if (strcmp(name,"HydrologyLayer")==0) return HydrologyLayerEnum; 132 133 else if (strcmp(name,"HydrologySediment")==0) return HydrologySedimentEnum; 133 134 else if (strcmp(name,"HydrologyEfficient")==0) return HydrologyEfficientEnum; … … 135 136 else if (strcmp(name,"WaterTransfer")==0) return WaterTransferEnum; 136 137 else if (strcmp(name,"IndependentObject")==0) return IndependentObjectEnum; 137 138 else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum; 138 else if (strcmp(name,"InversionCostFunctionThreshold")==0) return InversionCostFunctionThresholdEnum;139 139 else stage=2; 140 140 } 141 141 if(stage==2){ 142 if (strcmp(name,"InversionCostFunctionsCoefficients")==0) return InversionCostFunctionsCoefficientsEnum; 142 if (strcmp(name,"InversionCostFunctionThreshold")==0) return InversionCostFunctionThresholdEnum; 143 else if (strcmp(name,"InversionCostFunctionsCoefficients")==0) return InversionCostFunctionsCoefficientsEnum; 143 144 else if (strcmp(name,"InversionCostFunctions")==0) return InversionCostFunctionsEnum; 144 145 else if (strcmp(name,"InversionGradientScaling")==0) return InversionGradientScalingEnum; 145 146 else if (strcmp(name,"InversionIscontrol")==0) return InversionIscontrolEnum; … … 258 259 else if (strcmp(name,"SteadystateReltol")==0) return SteadystateReltolEnum; 259 260 else if (strcmp(name,"SteadystateRequestedOutputs")==0) return SteadystateRequestedOutputsEnum; 260 261 else if (strcmp(name,"Surface")==0) return SurfaceEnum; 261 else if (strcmp(name,"SurfaceforcingsPrecipitation")==0) return SurfaceforcingsPrecipitationEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"SurfaceforcingsMassBalance")==0) return SurfaceforcingsMassBalanceEnum; 265 if (strcmp(name,"SurfaceforcingsPrecipitation")==0) return SurfaceforcingsPrecipitationEnum; 266 else if (strcmp(name,"SurfaceforcingsMassBalance")==0) return SurfaceforcingsMassBalanceEnum; 266 267 else if (strcmp(name,"SurfaceforcingsIspdd")==0) return SurfaceforcingsIspddEnum; 267 268 else if (strcmp(name,"SurfaceforcingsDesfac")==0) return SurfaceforcingsDesfacEnum; 268 269 else if (strcmp(name,"SurfaceforcingsS0p")==0) return SurfaceforcingsS0pEnum; … … 381 382 else if (strcmp(name,"Element")==0) return ElementEnum; 382 383 else if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum; 383 384 else if (strcmp(name,"FileParam")==0) return FileParamEnum; 384 else if (strcmp(name,"Input")==0) return InputEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"IntInput")==0) return IntInputEnum; 388 if (strcmp(name,"Input")==0) return InputEnum; 389 else if (strcmp(name,"IntInput")==0) return IntInputEnum; 389 390 else if (strcmp(name,"InputToExtrude")==0) return InputToExtrudeEnum; 390 391 else if (strcmp(name,"InputToL2Project")==0) return InputToL2ProjectEnum; 391 392 else if (strcmp(name,"IntParam")==0) return IntParamEnum; … … 504 505 else if (strcmp(name,"QmuTemperature")==0) return QmuTemperatureEnum; 505 506 else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum; 506 507 else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum; 507 else if (strcmp(name,"StressTensor")==0) return StressTensorEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"StressTensorxx")==0) return StressTensorxxEnum; 511 if (strcmp(name,"StressTensor")==0) return StressTensorEnum; 512 else if (strcmp(name,"StressTensorxx")==0) return StressTensorxxEnum; 512 513 else if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum; 513 514 else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum; 514 515 else if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum; -
../trunk-jpl/src/c/classes/Loads/Pengrid.cpp
639 639 void Pengrid::ConstraintActivateHydrologyDCInefficient(int* punstable){ 640 640 641 641 // The penalty is stable if it doesn't change during two consecutive iterations. 642 int unstable =0;642 int unstable=0; 643 643 int new_active; 644 int penalty_lock; 644 645 IssmDouble pressure; 645 646 IssmDouble h; 646 647 IssmDouble h_max; … … 655 656 /*Get sediment water head h*/ 656 657 element->GetInputValue(&h,node,SedimentHeadEnum); 657 658 element->GetHydrologyDCInefficientHmax(&h_max,node); 659 parameters->FindParam(&penalty_lock,HydrologydcPenaltyLockEnum); 660 658 661 if (h>h_max) 659 662 new_active=1; 660 663 else 661 664 new_active=0; 662 665 663 if(this->active==new_active) 664 unstable=0; 665 else 666 unstable=1; 666 if(this->active==new_active){ 667 unstable=0; 668 } 669 else{ 670 unstable=1; 671 if(penalty_lock)zigzag_counter++; 672 } 667 673 674 /*If penalty keeps zigzagging more than penalty_lock times: */ 675 if(penalty_lock){ 676 if(zigzag_counter>penalty_lock){ 677 unstable=0; 678 active=1; 679 } 680 } 668 681 /*Set penalty flag*/ 669 682 this->active=new_active; 670 683 -
../trunk-jpl/src/c/classes/FemModel.cpp
1411 1411 delete transferg; 1412 1412 } 1413 1413 /*}}}*/ 1414 void FemModel::HydrologyEPLThicknessx(void){ /*{{{*/ 1415 1416 for (int i=0;i<elements->Size();i++){ 1417 Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(i)); 1418 element->ComputeEPLThickness(); 1419 } 1420 } 1421 /*}}}*/ 1414 1422 #endif -
../trunk-jpl/src/c/classes/Elements/Element.h
135 135 virtual void GetHydrologyTransfer(Vector<IssmDouble>* transfer)=0; 136 136 virtual void HydrologyEPLGetMask(Vector<IssmDouble>* mask)=0; 137 137 virtual void HydrologyEPLGetActive(Vector<IssmDouble>* active)=0; 138 virtual void ComputeEPLThickness(void)=0; 138 139 #endif 139 140 140 141 #ifdef _HAVE_GROUNDINGLINE_ -
../trunk-jpl/src/c/classes/Elements/Tria.cpp
7223 7223 } 7224 7224 } 7225 7225 /*}}}*/ 7226 /*FUNCTION Tria::ComputeEPLThickness{{{*/ 7227 void Tria::ComputeEPLThickness(void){ 7228 } 7229 /*}}}*/ 7230 7231 7226 7232 #endif 7227 7233 7228 7234 #ifdef _HAVE_MASSTRANSPORT_ -
../trunk-jpl/src/c/classes/Elements/Tria.h
302 302 void GetHydrologyTransfer(Vector<IssmDouble>* transfer); 303 303 void HydrologyEPLGetActive(Vector<IssmDouble>* active_vec); 304 304 void HydrologyEPLGetMask(Vector<IssmDouble>* vec_mask); 305 void ComputeEPLThickness(void); 305 306 bool AllActive(void); 306 307 bool AnyActive(void); 307 308 #endif -
../trunk-jpl/src/c/classes/Elements/Penta.cpp
10844 10844 10845 10845 } 10846 10846 /*}}}*/ 10847 /*FUNCTION Penta::ComputeEPLThickness{{{*/ 10848 void Penta::ComputeEPLThickness(void){ 10849 10850 if (!IsOnBed())return; 10851 10852 Tria* tria=(Tria*)SpawnTria(0); //lower face is 0, upper face is 1. 10853 tria->ComputeEPLThickness(); 10854 delete tria->material; delete tria; 10855 10856 } 10857 /*}}}*/ 10847 10858 /*FUNCTION Penta::InputUpdateFromSolutionHydrologyDCInefficient{{{*/ 10848 10859 void Penta::InputUpdateFromSolutionHydrologyDCInefficient(IssmDouble* solution){ 10849 10860 -
../trunk-jpl/src/c/classes/Elements/Penta.h
322 322 void HydrologyEPLGetActive(Vector<IssmDouble>* active_vec); 323 323 void HydrologyEPLGetMask(Vector<IssmDouble>* vec_mask); 324 324 void InputUpdateFromSolutionHydrologyDCInefficient(IssmDouble* solution); 325 void ComputeEPLThickness(void); 325 326 #endif 326 327 327 328 void UpdateConstraintsExtrudeFromBase(void){_error_("not implemented yet");}; -
../trunk-jpl/src/c/classes/Elements/Seg.h
100 100 void GetHydrologyTransfer(Vector<IssmDouble>* transfer){_error_("not implemented yet");}; 101 101 void HydrologyEPLGetActive(Vector<IssmDouble>* active_vec){_error_("not implemented yet");}; 102 102 void HydrologyEPLGetMask(Vector<IssmDouble>* vec_mask){_error_("not implemented yet");}; 103 void ComputeEPLThickness(void){_error_("not implemented yet");}; 103 104 #endif 104 105 void GetSolutionFromInputs(Vector<IssmDouble>* solution){_error_("not implemented yet");}; 105 106 void GetVectorFromInputs(Vector<IssmDouble>* vector, int name_enum){_error_("not implemented yet");}; -
../trunk-jpl/src/c/classes/FemModel.h
101 101 #ifdef _HAVE_HYDROLOGY_ 102 102 void HydrologyTransferx(void); 103 103 void HydrologyEPLupdateDomainx(void); 104 void HydrologyEPLThicknessx(void); 104 105 #endif 105 106 }; 106 107 -
../trunk-jpl/src/m/classes/hydrologydc.m
8 8 water_compressibility = 0; 9 9 isefficientlayer = 0; 10 10 penalty_factor = 0; 11 penalty_lock = 0; 11 12 rel_tol = 0; 12 13 sedimentlimit_flag = 0; 13 14 sedimentlimit = 0; … … 106 107 fielddisplay(obj,'water_compressibility','compressibility of water [Pa^-1]'); 107 108 fielddisplay(obj,'isefficientlayer','do we use an efficient drainage system [1: true; 0: false]'); 108 109 fielddisplay(obj,'penalty_factor','exponent of the value used in the penalisation method [dimensionless]'); 110 fielddisplay(obj,'penalty_lock','stabilize unstable constraints that keep zigzagging after n iteration (default is 0, no stabilization)'); 109 111 fielddisplay(obj,'rel_tol','tolerance of the nonlinear iteration for the transfer between layers [dimensionless]'); 110 112 fielddisplay(obj,'sedimentlimit_flag','what kind of upper limit is applied for the inefficient layer'); 111 113 disp(sprintf('%55s 0: no limit',' ')); … … 146 148 WriteData(fid,'object',obj,'fieldname','water_compressibility','format','Double'); 147 149 WriteData(fid,'object',obj,'fieldname','isefficientlayer','format','Boolean'); 148 150 WriteData(fid,'object',obj,'fieldname','penalty_factor','format','Double'); 151 WriteData(fid,'object',obj,'fieldname','penalty_lock','format','Integer'); 149 152 WriteData(fid,'object',obj,'fieldname','rel_tol','format','Double'); 150 153 WriteData(fid,'object',obj,'fieldname','sedimentlimit_flag','format','Integer'); 151 154 WriteData(fid,'object',obj,'fieldname','transfer_flag','format','Integer'); -
../trunk-jpl/src/m/enum/HydrologydcPenaltyLockEnum.m
1 function macro=HydrologydcPenaltyLockEnum() 2 %HYDROLOGYDCPENALTYLOCKENUM - Enum of HydrologydcPenaltyLock 3 % 4 % WARNING: DO NOT MODIFY THIS FILE 5 % this file has been automatically generated by src/c/shared/Enum/Synchronize.sh 6 % Please read src/c/shared/Enum/README for more information 7 % 8 % Usage: 9 % macro=HydrologydcPenaltyLockEnum() 10 11 macro=StringToEnum('HydrologydcPenaltyLock'); -
../trunk-jpl/src/m/enum/EnumDefinitions.py
120 120 def HydrologydcTransferFlagEnum(): return StringToEnum("HydrologydcTransferFlag")[0] 121 121 def HydrologydcLeakageFactorEnum(): return StringToEnum("HydrologydcLeakageFactor")[0] 122 122 def HydrologydcPenaltyFactorEnum(): return StringToEnum("HydrologydcPenaltyFactor")[0] 123 def HydrologydcPenaltyLockEnum(): return StringToEnum("HydrologydcPenaltyLock")[0] 123 124 def HydrologyLayerEnum(): return StringToEnum("HydrologyLayer")[0] 124 125 def HydrologySedimentEnum(): return StringToEnum("HydrologySediment")[0] 125 126 def HydrologyEfficientEnum(): return StringToEnum("HydrologyEfficient")[0]
Note:
See TracBrowser
for help on using the repository browser.