Changeset 14838


Ignore:
Timestamp:
05/01/13 16:38:39 (12 years ago)
Author:
bdef
Message:

CHG: changing to HydrologyModel Enum and added Penalty factor as parameter

Location:
issm/trunk-jpl/src
Files:
2 added
25 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h

    r14807 r14838  
    7979        FrictionQEnum,
    8080        GeometryHydrostaticRatioEnum,
    81         HydrologyEnum,
     81        HydrologyModelEnum,
    8282        HydrologyshreveEnum,
    8383        HydrologyshreveCREnum,
     
    105105        HydrologydcSedimentlimitFlagEnum,
    106106        HydrologydcSedimentlimitEnum,
     107        HydrologydcPenaltyFactorEnum,
    107108        HydrologyLayerEnum,
    108109        HydrologySedimentEnum,
  • issm/trunk-jpl/src/c/classes/objects/Loads/Pengrid.cpp

    r14804 r14838  
    500500        //   The penalty is stable if it doesn't change during to successive iterations.   
    501501
    502         int    found=0;
    503         const int numnodes=1;
     502        int        found=0;
     503        const int  numnodes=1;
    504504        IssmDouble pressure;
    505505        IssmDouble temperature;
    506506        IssmDouble t_pmp;
    507         int    new_active;
    508         int    unstable=0;
    509         int    reset_penalties=0;
    510         int    penalty_lock;
     507        int        new_active;
     508        int        unstable=0;
     509        int        reset_penalties=0;
     510        int        penalty_lock;
    511511
    512512        /*recover pointers: */
     
    688688
    689689        //   The penalty is stable if it doesn't change during two consecutive iterations.   
    690         int        found           = 0;
    691690        const int  numnodes        = 1;
     691        int        unstable        = 0;
     692        int        reset_penalties = 0;
     693        int        found           = 0;
     694        int        penalty_lock;
     695        int        new_active;
    692696        IssmDouble pressure;
    693697        IssmDouble h;
    694         IssmDouble h_max;
    695         int        new_active;
    696         int        unstable        = 0;
    697         int        reset_penalties = 0;
    698         int        penalty_lock;
     698        IssmDouble h_max;       
    699699
    700700        /*check that pengrid is not a clone (penalty to be added only once)*/
     
    730730
    731731        const int numdof=NUMVERTICES*NDOF1;
    732         IssmDouble    penalty_factor = 3.;
    733 
     732        IssmDouble    penalty_factor;
     733
     734        /*Retrieve parameters*/
     735        parameters->FindParam(&penalty_factor,HydrologydcPenaltyFactorEnum);
     736       
    734737        /*Initialize Element matrix and return if necessary*/
    735738        if(!this->active) return NULL;
     
    747750        const int  numdof=NUMVERTICES*NDOF1;
    748751        IssmDouble h_max;
    749         IssmDouble penalty_factor=3.;
     752        IssmDouble penalty_factor;
    750753
    751754        /*Initialize Element matrix and return if necessary*/
    752755        if(!this->active) return NULL;
    753756        ElementVector* pe=new ElementVector(&node,1,this->parameters);
     757
     758        /*Retrieve parameters*/
     759        parameters->FindParam(&penalty_factor,HydrologydcPenaltyFactorEnum);
    754760
    755761        /*Get h_max and compute penalty*/
  • issm/trunk-jpl/src/c/classes/objects/Materials/Matpar.cpp

    r14822 r14838  
    2828        bool isefficientlayer;
    2929        int  hydrology_model;
    30         iomodel->Constant(&hydrology_model,HydrologyEnum);
     30        iomodel->Constant(&hydrology_model,HydrologyModelEnum);
    3131        iomodel->Constant(&ispdd,SurfaceforcingsIspddEnum);
    3232
  • issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp

    r14807 r14838  
    8484                case FrictionQEnum : return "FrictionQ";
    8585                case GeometryHydrostaticRatioEnum : return "GeometryHydrostaticRatio";
    86                 case HydrologyEnum : return "Hydrology";
     86                case HydrologyModelEnum : return "HydrologyModel";
    8787                case HydrologyshreveEnum : return "Hydrologyshreve";
    8888                case HydrologyshreveCREnum : return "HydrologyshreveCR";
     
    110110                case HydrologydcSedimentlimitFlagEnum : return "HydrologydcSedimentlimitFlag";
    111111                case HydrologydcSedimentlimitEnum : return "HydrologydcSedimentlimit";
     112                case HydrologydcPenaltyFactorEnum : return "HydrologydcPenaltyFactor";
    112113                case HydrologyLayerEnum : return "HydrologyLayer";
    113114                case HydrologySedimentEnum : return "HydrologySediment";
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyDCEfficient/CreateConstraintsHydrologyDCEfficient.cpp

    r14769 r14838  
    2323
    2424        /*Do we really want DC?*/
    25         iomodel->Constant(&hydrology_model,HydrologyEnum);
     25        iomodel->Constant(&hydrology_model,HydrologyModelEnum);
    2626        if(hydrology_model!=HydrologydcEnum){
    2727                *pconstraints=constraints;
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyDCEfficient/CreateLoadsHydrologyDCEfficient.cpp

    r14769 r14838  
    2929
    3030        /*Do we really want DC?*/
    31         iomodel->Constant(&hydrology_model,HydrologyEnum);
     31        iomodel->Constant(&hydrology_model,HydrologyModelEnum);
    3232        if(hydrology_model!=HydrologydcEnum){
    3333                *ploads=loads;
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyDCEfficient/CreateNodesHydrologyDCEfficient.cpp

    r14769 r14838  
    3232
    3333        /*Now, do we really want DC?*/
    34         iomodel->Constant(&hydrology_model,HydrologyEnum);
     34        iomodel->Constant(&hydrology_model,HydrologyModelEnum);
    3535        if(hydrology_model!=HydrologydcEnum){
    3636                *pnodes=nodes;
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyDCEfficient/CreateParametersHydrologyDCEfficient.cpp

    r14822 r14838  
    2222
    2323        /*retrieve some parameters: */
    24         iomodel->Constant(&hydrology_model,HydrologyEnum);
     24        iomodel->Constant(&hydrology_model,HydrologyModelEnum);
    2525
    2626        /*Now, do we really want DC?*/
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyDCEfficient/UpdateElementsHydrologyDCEfficient.cpp

    r14778 r14838  
    2424
    2525        /*Now, do we really want DC?*/
    26         iomodel->Constant(&hydrology_model,HydrologyEnum);
     26        iomodel->Constant(&hydrology_model,HydrologyModelEnum);
    2727        if(hydrology_model!=HydrologydcEnum) return;
    2828
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyDCInefficient/CreateConstraintsHydrologyDCInefficient.cpp

    r14769 r14838  
    1919
    2020        /*retrieve some parameters: */
    21         iomodel->Constant(&hydrology_model,HydrologyEnum);
     21        iomodel->Constant(&hydrology_model,HydrologyModelEnum);
    2222
    2323        /*Create constraints if they do not exist yet*/
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyDCInefficient/CreateLoadsHydrologyDCInefficient.cpp

    r14769 r14838  
    2222
    2323        /*Fetch parameters: */
    24         iomodel->Constant(&hydrology_model,HydrologyEnum);
     24        iomodel->Constant(&hydrology_model,HydrologyModelEnum);
    2525        iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);
    2626
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyDCInefficient/CreateNodesHydrologyDCInefficient.cpp

    r14769 r14838  
    2323        /*Fetch parameters: */
    2424        iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);
    25         iomodel->Constant(&hydrology_model,HydrologyEnum);
     25        iomodel->Constant(&hydrology_model,HydrologyModelEnum);
    2626
    2727        /*Recover pointer: */
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyDCInefficient/CreateParametersHydrologyDCInefficient.cpp

    r14822 r14838  
    1919        bool        isefficientlayer;
    2020        IssmDouble  sedimentlimit;
     21        IssmDouble  penalty_factor;
    2122
    2223        /*Get parameters: */
     
    2425
    2526        /*retrieve some parameters: */
    26         iomodel->Constant(&hydrology_model,HydrologyEnum);
     27        iomodel->Constant(&hydrology_model,HydrologyModelEnum);
    2728
    2829        /*Now, do we really want DC?*/
     
    3435        iomodel->FetchData(&isefficientlayer,HydrologydcIsefficientlayerEnum);
    3536        iomodel->FetchData(&sedimentlimit_flag,HydrologydcSedimentlimitFlagEnum);
     37        iomodel->FetchData(&penalty_factor,HydrologydcPenaltyFactorEnum);
    3638
    3739        if(sedimentlimit_flag==1){
     
    4042        }
    4143
    42         parameters->AddObject(new IntParam(HydrologyEnum,hydrology_model));
     44        parameters->AddObject(new DoubleParam(HydrologydcPenaltyFactorEnum,penalty_factor));
     45        parameters->AddObject(new IntParam(HydrologyModelEnum,hydrology_model));
    4346        parameters->AddObject(new BoolParam(HydrologydcIsefficientlayerEnum,isefficientlayer));
    4447        parameters->AddObject(new IntParam(HydrologydcSedimentlimitFlagEnum,sedimentlimit_flag));
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyDCInefficient/UpdateElementsHydrologyDCInefficient.cpp

    r14778 r14838  
    2020
    2121        /*Fetch data needed: */
    22         iomodel->Constant(&hydrology_model,HydrologyEnum);
     22        iomodel->Constant(&hydrology_model,HydrologyModelEnum);
    2323        iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
    2424
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyShreve/CreateConstraintsHydrologyShreve.cpp

    r14769 r14838  
    2020
    2121        /*retrieve some parameters: */
    22         iomodel->Constant(&hydrology_model,HydrologyEnum);
     22        iomodel->Constant(&hydrology_model,HydrologyModelEnum);
    2323
    2424        /*Create constraints if they do not exist yet*/
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyShreve/CreateNodesHydrologyShreve.cpp

    r14769 r14838  
    2323        /*Fetch parameters: */
    2424        iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);
    25         iomodel->Constant(&hydrology_model,HydrologyEnum);
     25        iomodel->Constant(&hydrology_model,HydrologyModelEnum);
    2626
    2727        /*Recover pointer: */
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyShreve/CreateParametersHydrologyShreve.cpp

    r14769 r14838  
    2222
    2323        /*retrieve some parameters: */
    24         iomodel->Constant(&hydrology_model,HydrologyEnum);
     24        iomodel->Constant(&hydrology_model,HydrologyModelEnum);
    2525
    2626        /*Now, do we really want Shreve?*/
     
    3030        }
    3131
    32         parameters->AddObject(new IntParam(HydrologyEnum,hydrology_model));
     32        parameters->AddObject(new IntParam(HydrologyModelEnum,hydrology_model));
    3333        parameters->AddObject(iomodel->CopyConstantObject(HydrologyshreveStabilizationEnum));
    3434
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyShreve/UpdateElementsHydrologyShreve.cpp

    r14778 r14838  
    2020
    2121        /*Fetch data needed: */
    22         iomodel->Constant(&hydrology_model,HydrologyEnum);
     22        iomodel->Constant(&hydrology_model,HydrologyModelEnum);
    2323        iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
    2424
  • issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp

    r14807 r14838  
    8585              else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;
    8686              else if (strcmp(name,"GeometryHydrostaticRatio")==0) return GeometryHydrostaticRatioEnum;
    87               else if (strcmp(name,"Hydrology")==0) return HydrologyEnum;
     87              else if (strcmp(name,"HydrologyModel")==0) return HydrologyModelEnum;
    8888              else if (strcmp(name,"Hydrologyshreve")==0) return HydrologyshreveEnum;
    8989              else if (strcmp(name,"HydrologyshreveCR")==0) return HydrologyshreveCREnum;
     
    111111              else if (strcmp(name,"HydrologydcSedimentlimitFlag")==0) return HydrologydcSedimentlimitFlagEnum;
    112112              else if (strcmp(name,"HydrologydcSedimentlimit")==0) return HydrologydcSedimentlimitEnum;
     113              else if (strcmp(name,"HydrologydcPenaltyFactor")==0) return HydrologydcPenaltyFactorEnum;
    113114              else if (strcmp(name,"HydrologyLayer")==0) return HydrologyLayerEnum;
    114115              else if (strcmp(name,"HydrologySediment")==0) return HydrologySedimentEnum;
     
    137138              else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum;
    138139              else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum;
    139               else if (strcmp(name,"MaskElementonfloatingice")==0) return MaskElementonfloatingiceEnum;
    140140         else stage=2;
    141141   }
    142142   if(stage==2){
    143               if (strcmp(name,"MaskElementongroundedice")==0) return MaskElementongroundediceEnum;
     143              if (strcmp(name,"MaskElementonfloatingice")==0) return MaskElementonfloatingiceEnum;
     144              else if (strcmp(name,"MaskElementongroundedice")==0) return MaskElementongroundediceEnum;
    144145              else if (strcmp(name,"MaskElementonwater")==0) return MaskElementonwaterEnum;
    145146              else if (strcmp(name,"MaskVertexonfloatingice")==0) return MaskVertexonfloatingiceEnum;
     
    260261              else if (strcmp(name,"TransientIsthermal")==0) return TransientIsthermalEnum;
    261262              else if (strcmp(name,"TransientIsgia")==0) return TransientIsgiaEnum;
    262               else if (strcmp(name,"TransientNumRequestedOutputs")==0) return TransientNumRequestedOutputsEnum;
    263263         else stage=3;
    264264   }
    265265   if(stage==3){
    266               if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum;
     266              if (strcmp(name,"TransientNumRequestedOutputs")==0) return TransientNumRequestedOutputsEnum;
     267              else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum;
    267268              else if (strcmp(name,"SolutionType")==0) return SolutionTypeEnum;
    268269              else if (strcmp(name,"AnalysisType")==0) return AnalysisTypeEnum;
     
    383384              else if (strcmp(name,"Air")==0) return AirEnum;
    384385              else if (strcmp(name,"Ice")==0) return IceEnum;
    385               else if (strcmp(name,"Melange")==0) return MelangeEnum;
    386386         else stage=4;
    387387   }
    388388   if(stage==4){
    389               if (strcmp(name,"Water")==0) return WaterEnum;
     389              if (strcmp(name,"Melange")==0) return MelangeEnum;
     390              else if (strcmp(name,"Water")==0) return WaterEnum;
    390391              else if (strcmp(name,"Closed")==0) return ClosedEnum;
    391392              else if (strcmp(name,"Free")==0) return FreeEnum;
     
    506507              else if (strcmp(name,"MinVx")==0) return MinVxEnum;
    507508              else if (strcmp(name,"MaxVx")==0) return MaxVxEnum;
    508               else if (strcmp(name,"MaxAbsVx")==0) return MaxAbsVxEnum;
    509509         else stage=5;
    510510   }
    511511   if(stage==5){
    512               if (strcmp(name,"MinVy")==0) return MinVyEnum;
     512              if (strcmp(name,"MaxAbsVx")==0) return MaxAbsVxEnum;
     513              else if (strcmp(name,"MinVy")==0) return MinVyEnum;
    513514              else if (strcmp(name,"MaxVy")==0) return MaxVyEnum;
    514515              else if (strcmp(name,"MaxAbsVy")==0) return MaxAbsVyEnum;
  • issm/trunk-jpl/src/c/solutions/hydrology_core.cpp

    r14822 r14838  
    3131        femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
    3232        femmodel->parameters->FindParam(&output_frequency,SettingsOutputFrequencyEnum);
    33         femmodel->parameters->FindParam(&hydrology_model,HydrologyEnum);
     33        femmodel->parameters->FindParam(&hydrology_model,HydrologyModelEnum);
    3434
    3535        /*first compute slopes: */
  • issm/trunk-jpl/src/m/classes/hydrologydc.m

    r14784 r14838  
    1313                water_compressibility    = 0;
    1414                isefficientlayer         = 0;
     15                penalty_factor           = 0;
    1516                sedimentlimit_flag       = 0;
    1617                sedimentlimit            = 0;
     
    3738                        obj.sediment_compressibility = 1.0e-08;
    3839                        obj.sediment_porosity        = .4;
    39                         obj.sediment_thickness     = 20.0;
    40                         obj.sediment_transmitivity = 8.0e-04;
    41                         obj.water_compressibility  = 5.04e-10;
    42                         obj.isefficientlayer       = 1;
    43                         obj.sedimentlimit_flag     = 0;
    44                         obj.sedimentlimit          = 0;
     40                        obj.sediment_thickness       = 20.0;
     41                        obj.sediment_transmitivity   = 8.0e-04;
     42                        obj.water_compressibility    = 5.04e-10;
     43                        obj.isefficientlayer         = 1;
     44                        obj.penalty_factor           = 3;
     45                        obj.sedimentlimit_flag       = 0;
     46                        obj.sedimentlimit            = 0;
    4547
    4648                        obj.epl_compressibility = 1.0e-08;
     
    6466                        md = checkfield(md,'hydrology.water_compressibility','>',0,'numel',1);
    6567                        md = checkfield(md,'hydrology.isefficientlayer','numel',[1],'values',[0 1]);
     68                        md = checkfield(md,'hydrology.penalty_factor','>',0,'numel',1);
    6669                        md = checkfield(md,'hydrology.sedimentlimit_flag','numel',[1],'values',[0 1 2 3]);
    6770
     
    8891                        fielddisplay(obj,'sediment_thickness','sediment thickness [m]');
    8992                        fielddisplay(obj,'sediment_transmitivity','sediment transmitivity [m^2/s]');
     93                        fielddisplay(obj,'water_compressibility','compressibility of water [Pa^-1]');
    9094                        fielddisplay(obj,'isefficientlayer','do we use an efficient drainage system [1: true; 0: false]');
    91                         fielddisplay(obj,'sedimentlimit_flag',['what kind of upper limit is applied for the inefficient layer']);
     95                        fielddisplay(obj,'penalty_factor','exponent of the value used in the penalisation method');
     96                        fielddisplay(obj,'sedimentlimit_flag','what kind of upper limit is applied for the inefficient layer');
    9297                        disp(sprintf('%55s  0: no limit',' '));
    9398                        disp(sprintf('%55s  1: user defined: %s',' ','sedimentlimit'));
     
    110115                end % }}}
    111116                function marshall(obj,fid) % {{{
    112                         WriteData(fid,'enum',HydrologyEnum(),'data',HydrologydcEnum(),'format','Integer');
     117                        WriteData(fid,'enum',HydrologyModelEnum(),'data',HydrologydcEnum(),'format','Integer');
    113118                        WriteData(fid,'object',obj,'fieldname','spcsediment_head','format','DoubleMat','mattype',1);
    114119                        WriteData(fid,'object',obj,'fieldname','sediment_compressibility','format','Double');                   
     
    118123                        WriteData(fid,'object',obj,'fieldname','water_compressibility','format','Double');
    119124                        WriteData(fid,'object',obj,'fieldname','isefficientlayer','format','Boolean');
     125                        WriteData(fid,'object',obj,'fieldname','penalty_factor','format','Double');
    120126                        WriteData(fid,'object',obj,'fieldname','sedimentlimit_flag','format','Integer');
    121127
  • issm/trunk-jpl/src/m/classes/hydrologyshreve.m

    r14771 r14838  
    6060                end % }}}
    6161                function marshall(obj,fid) % {{{
    62                         WriteData(fid,'enum',HydrologyEnum(),'data',HydrologyshreveEnum(),'format','Integer');
     62                        WriteData(fid,'enum',HydrologyModelEnum(),'data',HydrologyshreveEnum(),'format','Integer');
    6363                        WriteData(fid,'object',obj,'fieldname','spcwatercolumn','format','DoubleMat','mattype',1);
    6464                        WriteData(fid,'object',obj,'fieldname','n','format','Double');
  • issm/trunk-jpl/src/m/classes/hydrologyshreve.py

    r14771 r14838  
    6363        # }}}
    6464        def marshall(self,fid):    # {{{
    65                 WriteData(fid,'enum',HydrologyEnum(),'data',HydrologyshreveEnum(),'format','Integer');
     65                WriteData(fid,'enum',HydrologyModelEnum(),'data',HydrologyshreveEnum(),'format','Integer');
    6666                WriteData(fid,'object',self,'fieldname','spcwatercolumn','format','DoubleMat','mattype',1)
    6767                WriteData(fid,'object',self,'fieldname','n','format','Double')
  • issm/trunk-jpl/src/m/enum/EnumDefinitions.py

    r14807 r14838  
    679679        return StringToEnum('GeometryHydrostaticRatio')[0]
    680680
    681 def HydrologyEnum():
    682         """
    683         HYDROLOGYENUM - Enum of Hydrology
    684 
    685            Usage:
    686               macro=HydrologyEnum()
    687         """
    688 
    689         return StringToEnum('Hydrology')[0]
     681def HydrologyModelEnum():
     682        """
     683        HYDROLOGYMODELENUM - Enum of HydrologyModel
     684
     685           Usage:
     686              macro=HydrologyModelEnum()
     687        """
     688
     689        return StringToEnum('HydrologyModel')[0]
    690690
    691691def HydrologyshreveEnum():
     
    939939        return StringToEnum('HydrologydcSedimentlimit')[0]
    940940
     941def HydrologydcPenaltyFactorEnum():
     942        """
     943        HYDROLOGYDCPENALTYFACTORENUM - Enum of HydrologydcPenaltyFactor
     944
     945           Usage:
     946              macro=HydrologydcPenaltyFactorEnum()
     947        """
     948
     949        return StringToEnum('HydrologydcPenaltyFactor')[0]
     950
    941951def HydrologyLayerEnum():
    942952        """
     
    54575467        """
    54585468
    5459         return 544
    5460 
     5469        return 545
     5470
  • issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m

    r14807 r14838  
    99%      macro=MaximumNumberOfEnums()
    1010
    11 macro=544;
     11macro=545;
Note: See TracChangeset for help on using the changeset viewer.