source: issm/oecreview/Archive/16554-17801/ISSM-16599-16600.diff@ 17802

Last change on this file since 17802 was 17802, checked in by Mathieu Morlighem, 11 years ago

Added archives

File size: 16.1 KB
  • ../trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp

     
    1313        int         hydrology_model;
    1414        int         sedimentlimit_flag;
    1515        int         transfer_flag;
     16        int         penalty_lock;
    1617        bool        isefficientlayer;
    1718        IssmDouble  sedimentlimit;
    1819        IssmDouble  penalty_factor;
     
    3031        iomodel->FetchData(&transfer_flag,HydrologydcTransferFlagEnum);
    3132        iomodel->FetchData(&penalty_factor,HydrologydcPenaltyFactorEnum);
    3233        iomodel->FetchData(&rel_tol,HydrologydcRelTolEnum);
     34        iomodel->FetchData(&penalty_lock,HydrologydcPenaltyLockEnum);
    3335
    3436        if(sedimentlimit_flag==1){
    3537                iomodel->FetchData(&sedimentlimit,HydrologydcSedimentlimitEnum);
     
    4749        parameters->AddObject(new IntParam(HydrologydcSedimentlimitFlagEnum,sedimentlimit_flag));
    4850        parameters->AddObject(new IntParam(HydrologydcTransferFlagEnum,transfer_flag));
    4951        parameters->AddObject(new DoubleParam(HydrologydcRelTolEnum,rel_tol));
     52        parameters->AddObject(new IntParam(HydrologydcPenaltyLockEnum,penalty_lock));
    5053
    5154}/*}}}*/
    5255void HydrologyDCInefficientAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
  • ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

     
    120120        HydrologydcTransferFlagEnum,
    121121        HydrologydcLeakageFactorEnum,
    122122        HydrologydcPenaltyFactorEnum,
     123        HydrologydcPenaltyLockEnum,
    123124        HydrologyLayerEnum,
    124125        HydrologySedimentEnum,
    125126        HydrologyEfficientEnum,
  • ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

     
    128128                case HydrologydcTransferFlagEnum : return "HydrologydcTransferFlag";
    129129                case HydrologydcLeakageFactorEnum : return "HydrologydcLeakageFactor";
    130130                case HydrologydcPenaltyFactorEnum : return "HydrologydcPenaltyFactor";
     131                case HydrologydcPenaltyLockEnum : return "HydrologydcPenaltyLock";
    131132                case HydrologyLayerEnum : return "HydrologyLayer";
    132133                case HydrologySedimentEnum : return "HydrologySediment";
    133134                case HydrologyEfficientEnum : return "HydrologyEfficient";
  • ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

     
    128128              else if (strcmp(name,"HydrologydcTransferFlag")==0) return HydrologydcTransferFlagEnum;
    129129              else if (strcmp(name,"HydrologydcLeakageFactor")==0) return HydrologydcLeakageFactorEnum;
    130130              else if (strcmp(name,"HydrologydcPenaltyFactor")==0) return HydrologydcPenaltyFactorEnum;
     131              else if (strcmp(name,"HydrologydcPenaltyLock")==0) return HydrologydcPenaltyLockEnum;
    131132              else if (strcmp(name,"HydrologyLayer")==0) return HydrologyLayerEnum;
    132133              else if (strcmp(name,"HydrologySediment")==0) return HydrologySedimentEnum;
    133134              else if (strcmp(name,"HydrologyEfficient")==0) return HydrologyEfficientEnum;
     
    135136              else if (strcmp(name,"WaterTransfer")==0) return WaterTransferEnum;
    136137              else if (strcmp(name,"IndependentObject")==0) return IndependentObjectEnum;
    137138              else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum;
    138               else if (strcmp(name,"InversionCostFunctionThreshold")==0) return InversionCostFunctionThresholdEnum;
    139139         else stage=2;
    140140   }
    141141   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;
    143144              else if (strcmp(name,"InversionCostFunctions")==0) return InversionCostFunctionsEnum;
    144145              else if (strcmp(name,"InversionGradientScaling")==0) return InversionGradientScalingEnum;
    145146              else if (strcmp(name,"InversionIscontrol")==0) return InversionIscontrolEnum;
     
    258259              else if (strcmp(name,"SteadystateReltol")==0) return SteadystateReltolEnum;
    259260              else if (strcmp(name,"SteadystateRequestedOutputs")==0) return SteadystateRequestedOutputsEnum;
    260261              else if (strcmp(name,"Surface")==0) return SurfaceEnum;
    261               else if (strcmp(name,"SurfaceforcingsPrecipitation")==0) return SurfaceforcingsPrecipitationEnum;
    262262         else stage=3;
    263263   }
    264264   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;
    266267              else if (strcmp(name,"SurfaceforcingsIspdd")==0) return SurfaceforcingsIspddEnum;
    267268              else if (strcmp(name,"SurfaceforcingsDesfac")==0) return SurfaceforcingsDesfacEnum;
    268269              else if (strcmp(name,"SurfaceforcingsS0p")==0) return SurfaceforcingsS0pEnum;
     
    381382              else if (strcmp(name,"Element")==0) return ElementEnum;
    382383              else if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum;
    383384              else if (strcmp(name,"FileParam")==0) return FileParamEnum;
    384               else if (strcmp(name,"Input")==0) return InputEnum;
    385385         else stage=4;
    386386   }
    387387   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;
    389390              else if (strcmp(name,"InputToExtrude")==0) return InputToExtrudeEnum;
    390391              else if (strcmp(name,"InputToL2Project")==0) return InputToL2ProjectEnum;
    391392              else if (strcmp(name,"IntParam")==0) return IntParamEnum;
     
    504505              else if (strcmp(name,"QmuTemperature")==0) return QmuTemperatureEnum;
    505506              else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum;
    506507              else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;
    507               else if (strcmp(name,"StressTensor")==0) return StressTensorEnum;
    508508         else stage=5;
    509509   }
    510510   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;
    512513              else if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum;
    513514              else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum;
    514515              else if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum;
  • ../trunk-jpl/src/c/classes/Loads/Pengrid.cpp

     
    639639void  Pengrid::ConstraintActivateHydrologyDCInefficient(int* punstable){
    640640
    641641        //   The penalty is stable if it doesn't change during two consecutive iterations.   
    642         int        unstable        = 0;
     642        int        unstable=0;
    643643        int        new_active;
     644        int        penalty_lock;
    644645        IssmDouble pressure;
    645646        IssmDouble h;
    646647        IssmDouble h_max;       
     
    655656        /*Get sediment water head h*/
    656657        element->GetInputValue(&h,node,SedimentHeadEnum);
    657658        element->GetHydrologyDCInefficientHmax(&h_max,node);
     659        parameters->FindParam(&penalty_lock,HydrologydcPenaltyLockEnum);
     660
    658661        if (h>h_max)
    659662         new_active=1;
    660663        else
    661664         new_active=0;
    662665
    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        }
    667673
     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        }
    668681        /*Set penalty flag*/
    669682        this->active=new_active;
    670683
  • ../trunk-jpl/src/c/classes/FemModel.cpp

     
    14111411        delete transferg;
    14121412}
    14131413/*}}}*/
     1414void 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/*}}}*/
    14141422#endif
  • ../trunk-jpl/src/c/classes/Elements/Element.h

     
    135135                virtual void GetHydrologyTransfer(Vector<IssmDouble>* transfer)=0;
    136136                virtual void HydrologyEPLGetMask(Vector<IssmDouble>* mask)=0;
    137137                virtual void HydrologyEPLGetActive(Vector<IssmDouble>* active)=0;
     138                virtual void ComputeEPLThickness(void)=0;
    138139                #endif
    139140
    140141                #ifdef _HAVE_GROUNDINGLINE_
  • ../trunk-jpl/src/c/classes/Elements/Tria.cpp

     
    72237223        }
    72247224}
    72257225/*}}}*/
     7226/*FUNCTION Tria::ComputeEPLThickness{{{*/
     7227void  Tria::ComputeEPLThickness(void){
     7228}
     7229/*}}}*/
     7230
     7231
    72267232#endif
    72277233
    72287234#ifdef _HAVE_MASSTRANSPORT_
  • ../trunk-jpl/src/c/classes/Elements/Tria.h

     
    302302                void    GetHydrologyTransfer(Vector<IssmDouble>* transfer);
    303303                void    HydrologyEPLGetActive(Vector<IssmDouble>* active_vec);
    304304                void    HydrologyEPLGetMask(Vector<IssmDouble>* vec_mask);
     305                void    ComputeEPLThickness(void);
    305306                bool    AllActive(void);
    306307                bool    AnyActive(void);
    307308                #endif
  • ../trunk-jpl/src/c/classes/Elements/Penta.cpp

     
    1084410844
    1084510845}
    1084610846/*}}}*/
     10847/*FUNCTION Penta::ComputeEPLThickness{{{*/
     10848void  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/*}}}*/
    1084710858/*FUNCTION Penta::InputUpdateFromSolutionHydrologyDCInefficient{{{*/
    1084810859void  Penta::InputUpdateFromSolutionHydrologyDCInefficient(IssmDouble* solution){
    1084910860
  • ../trunk-jpl/src/c/classes/Elements/Penta.h

     
    322322                void    HydrologyEPLGetActive(Vector<IssmDouble>* active_vec);
    323323                void    HydrologyEPLGetMask(Vector<IssmDouble>* vec_mask);
    324324                void    InputUpdateFromSolutionHydrologyDCInefficient(IssmDouble* solution);
     325                void    ComputeEPLThickness(void);
    325326                #endif
    326327
    327328                void           UpdateConstraintsExtrudeFromBase(void){_error_("not implemented yet");};
  • ../trunk-jpl/src/c/classes/Elements/Seg.h

     
    100100                void    GetHydrologyTransfer(Vector<IssmDouble>* transfer){_error_("not implemented yet");};
    101101                void    HydrologyEPLGetActive(Vector<IssmDouble>* active_vec){_error_("not implemented yet");};
    102102                void    HydrologyEPLGetMask(Vector<IssmDouble>* vec_mask){_error_("not implemented yet");};
     103                void    ComputeEPLThickness(void){_error_("not implemented yet");};
    103104                #endif
    104105                void        GetSolutionFromInputs(Vector<IssmDouble>* solution){_error_("not implemented yet");};
    105106                void        GetVectorFromInputs(Vector<IssmDouble>* vector, int name_enum){_error_("not implemented yet");};
  • ../trunk-jpl/src/c/classes/FemModel.h

     
    101101                #ifdef _HAVE_HYDROLOGY_
    102102                void HydrologyTransferx(void);
    103103                void HydrologyEPLupdateDomainx(void);
     104                void HydrologyEPLThicknessx(void);
    104105                #endif
    105106};
    106107
  • ../trunk-jpl/src/m/classes/hydrologydc.m

     
    88                water_compressibility    = 0;
    99                isefficientlayer         = 0;
    1010                penalty_factor           = 0;
     11                penalty_lock             = 0;
    1112                rel_tol                  = 0;
    1213                sedimentlimit_flag       = 0;
    1314                sedimentlimit            = 0;
     
    106107                        fielddisplay(obj,'water_compressibility','compressibility of water [Pa^-1]');
    107108                        fielddisplay(obj,'isefficientlayer','do we use an efficient drainage system [1: true; 0: false]');
    108109                        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)');
    109111                        fielddisplay(obj,'rel_tol','tolerance of the nonlinear iteration for the transfer between layers [dimensionless]');
    110112                        fielddisplay(obj,'sedimentlimit_flag','what kind of upper limit is applied for the inefficient layer');
    111113                        disp(sprintf('%55s  0: no limit',' '));
     
    146148                        WriteData(fid,'object',obj,'fieldname','water_compressibility','format','Double');
    147149                        WriteData(fid,'object',obj,'fieldname','isefficientlayer','format','Boolean');
    148150                        WriteData(fid,'object',obj,'fieldname','penalty_factor','format','Double');
     151                        WriteData(fid,'object',obj,'fieldname','penalty_lock','format','Integer');
    149152                        WriteData(fid,'object',obj,'fieldname','rel_tol','format','Double');
    150153                        WriteData(fid,'object',obj,'fieldname','sedimentlimit_flag','format','Integer');
    151154                        WriteData(fid,'object',obj,'fieldname','transfer_flag','format','Integer');
  • ../trunk-jpl/src/m/enum/HydrologydcPenaltyLockEnum.m

     
     1function 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
     11macro=StringToEnum('HydrologydcPenaltyLock');
  • ../trunk-jpl/src/m/enum/EnumDefinitions.py

     
    120120def HydrologydcTransferFlagEnum(): return StringToEnum("HydrologydcTransferFlag")[0]
    121121def HydrologydcLeakageFactorEnum(): return StringToEnum("HydrologydcLeakageFactor")[0]
    122122def HydrologydcPenaltyFactorEnum(): return StringToEnum("HydrologydcPenaltyFactor")[0]
     123def HydrologydcPenaltyLockEnum(): return StringToEnum("HydrologydcPenaltyLock")[0]
    123124def HydrologyLayerEnum(): return StringToEnum("HydrologyLayer")[0]
    124125def HydrologySedimentEnum(): return StringToEnum("HydrologySediment")[0]
    125126def HydrologyEfficientEnum(): return StringToEnum("HydrologyEfficient")[0]
Note: See TracBrowser for help on using the repository browser.