Changeset 27462


Ignore:
Timestamp:
12/20/22 05:28:05 (2 years ago)
Author:
vverjans
Message:

NEW arma hydrology model implemented (nightly test and python translation to be done)

Location:
issm/trunk-jpl
Files:
19 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/m4/analyses.m4

    r27299 r27462  
    374374AC_MSG_RESULT($HAVE_HYDROLOGYSHREVE)
    375375dnl }}}
     376dnl with-HydrologyArmapw{{{
     377AC_ARG_WITH([HydrologyArmapw],
     378        AS_HELP_STRING([--with-HydrologyArmapw = YES], [compile with HydrologyArmapw capabilities (default is yes)]),
     379        [HYDROLOGYARMAPW=$withval],[HYDROLOGYARMAPW=yes])
     380AC_MSG_CHECKING(for HydrologyArmapw capability compilation)
     381
     382HAVE_HYDROLOGYARMAPW=no
     383if test "x$HYDROLOGYARMAPW" = "xyes"; then
     384        HAVE_HYDROLOGYARMAPW=yes
     385        AC_DEFINE([_HAVE_HYDROLOGYARMAPW_],[1],[with HydrologyArmapw capability])
     386fi
     387AM_CONDITIONAL([HYDROLOGYARMAPW], [test x$HAVE_HYDROLOGYARMAPW = xyes])
     388AC_MSG_RESULT($HAVE_HYDROLOGYARMAPW)
     389dnl }}}
    376390dnl with-L2ProjectionBase{{{
    377391AC_ARG_WITH([L2ProjectionBase],
  • issm/trunk-jpl/src/c/Makefile.am

    r27399 r27462  
    487487issm_sources += ./analyses/HydrologyDCEfficientAnalysis.cpp
    488488endif
     489if HYDROLOGYARMAPW
     490issm_sources += ./analyses/HydrologyArmapwAnalysis.cpp
     491endif
    489492if L2PROJECTIONEPL
    490493issm_sources += ./analyses/L2ProjectionEPLAnalysis.cpp
  • issm/trunk-jpl/src/c/analyses/EnumToAnalysis.cpp

    r27299 r27462  
    7474                case GLheightadvectionAnalysisEnum : return new GLheightadvectionAnalysis();
    7575                #endif
     76                #ifdef _HAVE_HYDROLOGYARMAPW_
     77                case HydrologyArmapwAnalysisEnum : return new HydrologyArmapwAnalysis();
     78                #endif
    7679                #ifdef _HAVE_HYDROLOGYDCEFFICIENT_
    7780                case HydrologyDCEfficientAnalysisEnum : return new HydrologyDCEfficientAnalysis();
  • issm/trunk-jpl/src/c/analyses/analyses.h

    r27298 r27462  
    2828#include "./LoveAnalysis.h"
    2929#include "./EsaAnalysis.h"
     30#include "./HydrologyArmapwAnalysis.h"
    3031#include "./HydrologyDCEfficientAnalysis.h"
    3132#include "./HydrologyDCInefficientAnalysis.h"
  • issm/trunk-jpl/src/c/classes/Elements/Element.cpp

    r27449 r27462  
    105105         noiseenum_type = SubglacialdischargeARMANoiseEnum;
    106106         outenum_type   = FrontalForcingsSubglacialDischargeEnum;
     107         break;
     108                case(HydrologyarmapwEnum):
     109         arenum_type    = WaterPressureValuesAutoregressionEnum;
     110         maenum_type    = WaterPressureValuesMovingaverageEnum;
     111         basinenum_type = HydrologyBasinsIdEnum;
     112         noiseenum_type = FrictionWaterPressureNoiseEnum;
     113         outenum_type   = WaterPressureArmaPerturbationEnum;
    107114         break;
    108115        }
     
    27332740       
    27342741        /*Variable declaration*/
     2742        bool ratevariable;
    27352743   const int numvertices = this->GetNumberOfVertices();
    27362744        int basinid,mindex,mindexnext,basinenum_type,varenum_type,indperiod;
     
    27492757         basinenum_type = FrontalForcingsBasinIdEnum;
    27502758         varenum_type   = FrontalForcingsSubglacialDischargeEnum;
    2751          break;
     2759         ratevariable   = true;
     2760                        break;
     2761                case(HydrologyarmapwEnum):
     2762         basinenum_type = HydrologyBasinsIdEnum;
     2763         varenum_type   = FrictionWaterPressureEnum;
     2764         ratevariable   = false;
     2765                        break;
    27522766        }
    27532767       
     
    27872801        for(int v=0;v<numvertices;v++){
    27882802                for(int i=0;i<12;i++){
    2789                         rateinmonth[v*12+i] = varlistinput[v]*monthlyfac_b[i]*12;
    2790                         varlist[v]          = varlist[v]+fracdtinmonth[i]*rateinmonth[v*12+i];
     2803                        if(ratevariable){
     2804                                rateinmonth[v*12+i] = varlistinput[v]*monthlyfac_b[i]*12;
     2805                                varlist[v]          = varlist[v]+fracdtinmonth[i]*rateinmonth[v*12+i];
     2806                        }
     2807                        else varlist[v]       = varlist[v]+fracdtinmonth[i]*monthlyfac_b[i]*varlistinput[v];
    27912808                }
    27922809        }
    27932810        /*Update input*/
    2794    this->AddInput(varenum_type,varlist,P1Enum);
     2811   this->AddInput(varenum_type,varlist,P1DGEnum);
    27952812
    27962813        /*Clean-up*/
     
    47134730void       Element::SubglacialWaterPressure(int output_enum){/*{{{*/
    47144731
    4715         int numvertices = this->GetNumberOfVertices();
    4716         IssmDouble p_water[numvertices];
    4717         Gauss* gauss=this->NewGauss();
     4732        bool ispwHydroArma;
     4733   int M;
     4734   int numvertices = this->GetNumberOfVertices();
     4735   IssmDouble p_water[numvertices];
     4736   IssmDouble* perturbationvalues = xNew<IssmDouble>(numvertices);
     4737   Gauss* gauss=this->NewGauss();
    47184738   Friction* friction = new Friction(this);
     4739   /*Calculate subglacial water pressure*/
    47194740   for(int i=0;i<numvertices;i++){
    47204741         gauss->GaussVertex(i);
    47214742         p_water[i] = friction->SubglacialWaterPressure(gauss);
    4722         }
    4723         this->AddInput(output_enum,p_water,P1DGEnum);
    4724         delete gauss;
     4743   }
     4744   /*Add perturbation in water pressure if HydrologyIsWaterPressureArmaEnum is true*/
     4745   this->parameters->FindParam(&ispwHydroArma,HydrologyIsWaterPressureArmaEnum);
     4746   if(ispwHydroArma){
     4747      this->GetInputListOnVertices(perturbationvalues,WaterPressureArmaPerturbationEnum);
     4748                for(int i=0;i<numvertices;i++) p_water[i] = p_water[i]+perturbationvalues[i];
     4749   }
     4750   /*Save*/
     4751   this->AddInput(output_enum,p_water,P1DGEnum);
     4752   /*Clean-up*/
     4753   delete gauss;
    47254754   delete friction;
     4755   xDelete<IssmDouble>(perturbationvalues);
    47264756
    47274757}/*}}}*/
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r27459 r27462  
    796796                                analyses_temp[numanalyses++]=L2ProjectionEPLAnalysisEnum;
    797797                                analyses_temp[numanalyses++]=L2ProjectionBaseAnalysisEnum;
     798                        }
     799                        if(hydrology_model==HydrologyarmapwEnum){
     800                                analyses_temp[numanalyses++]=HydrologyArmapwAnalysisEnum;
    798801                        }
    799802                }
  • issm/trunk-jpl/src/c/classes/Loads/Friction.cpp

    r27450 r27462  
    344344
    345345        /*Get effective pressure*/
    346         bool ispwStochastic;
    347         IssmDouble Neff;
    348         element->parameters->FindParam(&ispwStochastic,StochasticForcingIsWaterPressureEnum);
    349         if(ispwStochastic){
    350                 /*Retrieve stochastic water pressure and compute ice pressure*/
    351                 IssmDouble p_ice,p_water,Neff_limit;
    352                 element->GetInputValue(&p_water,gauss,FrictionWaterPressureEnum);
    353                 element->parameters->FindParam(&Neff_limit,FrictionEffectivePressureLimitEnum);
    354                 p_ice = IcePressure(gauss);
    355                 Neff  = max(Neff_limit*p_ice, p_ice - p_water);
    356         }       
    357         else{
    358                 /*Compute effective pressure directly*/
    359                 Neff = EffectivePressure(gauss);
    360         }
     346        bool ispwHydro,ispwStochastic;
     347   IssmDouble Neff;
     348   element->parameters->FindParam(&ispwStochastic,StochasticForcingIsWaterPressureEnum);
     349   element->parameters->FindParam(&ispwHydro,HydrologyIsWaterPressureArmaEnum);
     350   if(ispwStochastic || ispwHydro){
     351      /*Retrieve pre-computed water pressure and compute ice pressure*/
     352      IssmDouble p_ice,p_water,Neff_limit;
     353      element->GetInputValue(&p_water,gauss,FrictionWaterPressureEnum);
     354      element->parameters->FindParam(&Neff_limit,FrictionEffectivePressureLimitEnum);
     355      p_ice = IcePressure(gauss);
     356      Neff  = max(Neff_limit*p_ice, p_ice - p_water);
     357   }
     358   else{
     359      /*Compute effective pressure directly*/
     360      Neff = EffectivePressure(gauss);
     361   }
    361362       
    362363        /*Get velocity magnitude*/
     
    559560        IssmDouble vmag = VelMag(gauss);
    560561
    561         bool ispwStochastic;
    562         IssmDouble Neff;
    563         element->parameters->FindParam(&ispwStochastic,StochasticForcingIsWaterPressureEnum);
    564         if(ispwStochastic){
    565                 /*Retrieve stochastic water pressure and compute ice pressure*/
    566                 IssmDouble p_ice,p_water,Neff_limit;
    567                 element->GetInputValue(&p_water,gauss,FrictionWaterPressureEnum);
     562        bool ispwHydro,ispwStochastic;
     563   IssmDouble Neff;
     564   element->parameters->FindParam(&ispwStochastic,StochasticForcingIsWaterPressureEnum);
     565   element->parameters->FindParam(&ispwHydro,HydrologyIsWaterPressureArmaEnum);
     566   if(ispwStochastic || ispwHydro){
     567      /*Retrieve pre-computed water pressure and compute ice pressure*/
     568      IssmDouble p_ice,p_water,Neff_limit;
     569      element->GetInputValue(&p_water,gauss,FrictionWaterPressureEnum);
    568570                element->parameters->FindParam(&Neff_limit,FrictionEffectivePressureLimitEnum);
    569                 p_ice = IcePressure(gauss);
    570                 Neff  = max(Neff_limit*p_ice, p_ice - p_water);
    571         }       
     571      p_ice = IcePressure(gauss);
     572      Neff  = max(Neff_limit*p_ice, p_ice - p_water);
     573   }   
    572574        else{
    573575                /*Compute effective pressure directly*/
  • issm/trunk-jpl/src/c/cores/hydrology_core.cpp

    r27186 r27462  
    261261                delete analysis;
    262262        }
     263
     264        /*Using the armaPw hydrology model*/
     265   else if (hydrology_model==HydrologyarmapwEnum){
     266      femmodel->SetCurrentConfiguration(HydrologyArmapwAnalysisEnum);
     267      if(VerboseSolution()) _printf0_("   updating subglacial water pressure\n");
     268      HydrologyArmapwAnalysis* analysis = new HydrologyArmapwAnalysis();
     269      analysis->UpdateSubglacialWaterPressure(femmodel);
     270      delete analysis;
     271   }
    263272        else{
    264273                _error_("Hydrology model "<< EnumToStringx(hydrology_model) <<" not supported yet");
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r27318 r27462  
    496496        int hydrology_model;
    497497        iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
     498        parameters->AddObject(new BoolParam(HydrologyIsWaterPressureArmaEnum,false));
    498499        if(hydrology_model==HydrologydcEnum){
    499500                IssmDouble sedcomp, sedporo, watcomp, rhofresh, g;
     
    533534                /*Nothing to add*/
    534535        }
     536        else if(hydrology_model==HydrologyarmapwEnum){
     537                parameters->SetParam(true,HydrologyIsWaterPressureArmaEnum);
     538      parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.num_basins",HydrologyNumBasinsEnum));
     539      parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.num_breaks",HydrologyarmaNumBreaksEnum));
     540      parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.num_params",HydrologyarmaNumParamsEnum));
     541      parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.ar_order",HydrologyarmaarOrderEnum));
     542      parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.ma_order",HydrologyarmamaOrderEnum));
     543      parameters->AddObject(iomodel->CopyConstantObject("md.hydrology.arma_timestep",HydrologyarmaTimestepEnum));
     544      iomodel->FetchData(&transparam,&M,&N,"md.hydrology.datebreaks");
     545      parameters->AddObject(new DoubleMatParam(HydrologyarmadatebreaksEnum,transparam,M,N));
     546      xDelete<IssmDouble>(transparam);
     547      iomodel->FetchData(&transparam,&M,&N,"md.hydrology.polynomialparams");
     548      parameters->AddObject(new DoubleMatParam(HydrologyarmapolyparamsEnum,transparam,M,N));
     549      xDelete<IssmDouble>(transparam);
     550      iomodel->FetchData(&transparam,&M,&N,"md.hydrology.arlag_coefs");
     551      parameters->AddObject(new DoubleMatParam(HydrologyarmaarlagcoefsEnum,transparam,M,N));
     552      xDelete<IssmDouble>(transparam);
     553      iomodel->FetchData(&transparam,&M,&N,"md.hydrology.malag_coefs");
     554      parameters->AddObject(new DoubleMatParam(HydrologyarmamalagcoefsEnum,transparam,M,N));
     555      xDelete<IssmDouble>(transparam);
     556      iomodel->FetchData(&transparam,&M,&N,"md.hydrology.monthlyfactors");
     557      parameters->AddObject(new DoubleMatParam(HydrologyarmaMonthlyFactorsEnum,transparam,M,N));
     558      xDelete<IssmDouble>(transparam);
     559   }
    535560        else{
    536561                _error_("Hydrology model "<<EnumToStringx(hydrology_model)<<" not supported yet");
  • issm/trunk-jpl/src/c/modules/StochasticForcingx/StochasticForcingx.cpp

    r27450 r27462  
    3333   femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum);
    3434   femmodel->parameters->FindParam(&tstep_stoch,StochasticForcingTimestepEnum);
    35                
     35       
     36        /*Check if we use HydroarmaPw*/
     37        bool ispwHydro;
     38        femmodel->parameters->FindParam(&ispwHydro,HydrologyIsWaterPressureArmaEnum);
     39
    3640        #ifndef _HAVE_AD_
    3741   if((fmod(time,tstep_stoch)<fmod((time-dt),tstep_stoch)) || (time<=starttime+dt) || tstep_stoch==dt) isstepforstoch = true;
     
    7680
    7781                /*Deal with the ARMA models*/
    78                 if(fields[j]==SMBarmaEnum || fields[j]==FrontalForcingsRignotarmaEnum || fields[j]==BasalforcingsDeepwaterMeltingRatearmaEnum || fields[j]==FrontalForcingsSubglacialDischargearmaEnum){
     82                if(fields[j]==SMBarmaEnum || fields[j]==FrontalForcingsRignotarmaEnum || fields[j]==BasalforcingsDeepwaterMeltingRatearmaEnum || fields[j]==FrontalForcingsSubglacialDischargearmaEnum || (fields[j]==FrictionWaterPressureEnum && ispwHydro)){
    7983                        switch(fields[j]){
    8084                                case SMBarmaEnum:
     
    9397                                        dimenum_type   = FrontalForcingsBasinIdEnum;
    9498                                        noiseenum_type = SubglacialdischargeARMANoiseEnum;
     99                                        break; 
     100                                case FrictionWaterPressureEnum:
     101                                        dimenum_type   = HydrologyBasinsIdEnum;
     102                                        noiseenum_type = FrictionWaterPressureNoiseEnum;
    95103                                        break; 
    96104                        }
  • issm/trunk-jpl/src/c/shared/Enum/Enum.vim

    r27450 r27462  
    245245syn keyword cConstant GroundinglineNumRequestedOutputsEnum
    246246syn keyword cConstant GroundinglineRequestedOutputsEnum
     247syn keyword cConstant HydrologyarmaarOrderEnum
     248syn keyword cConstant HydrologyarmaarlagcoefsEnum
     249syn keyword cConstant HydrologyarmadatebreaksEnum
     250syn keyword cConstant HydrologyarmamalagcoefsEnum
     251syn keyword cConstant HydrologyarmamaOrderEnum
     252syn keyword cConstant HydrologyarmaMonthlyFactorsEnum
     253syn keyword cConstant HydrologyarmaNumBreaksEnum
     254syn keyword cConstant HydrologyarmaNumParamsEnum
     255syn keyword cConstant HydrologyarmapolyparamsEnum
     256syn keyword cConstant HydrologyarmaTimestepEnum
    247257syn keyword cConstant HydrologyAveragingEnum
    248258syn keyword cConstant HydrologyCavitySpacingEnum
     
    250260syn keyword cConstant HydrologyEnglacialVoidRatioEnum
    251261syn keyword cConstant HydrologyIschannelsEnum
     262syn keyword cConstant HydrologyIsWaterPressureArmaEnum
    252263syn keyword cConstant HydrologyMeltFlagEnum
    253264syn keyword cConstant HydrologyModelEnum
     265syn keyword cConstant HydrologyNumBasinsEnum
    254266syn keyword cConstant HydrologyNumRequestedOutputsEnum
    255267syn keyword cConstant HydrologyPressureMeltCoefficientEnum
     
    804816syn keyword cConstant FrictionWaterLayerEnum
    805817syn keyword cConstant FrictionWaterPressureEnum
     818syn keyword cConstant FrictionWaterPressureNoiseEnum
    806819syn keyword cConstant FrictionfEnum
    807820syn keyword cConstant FrontalForcingsBasinIdEnum
     
    818831syn keyword cConstant HydraulicPotentialOldEnum
    819832syn keyword cConstant HydrologyBasalFluxEnum
     833syn keyword cConstant HydrologyBasinsIdEnum
    820834syn keyword cConstant HydrologyBumpHeightEnum
    821835syn keyword cConstant HydrologyBumpSpacingEnum
     
    11841198syn keyword cConstant WaterfractionEnum
    11851199syn keyword cConstant WaterheightEnum
     1200syn keyword cConstant WaterPressureArmaPerturbationEnum
     1201syn keyword cConstant WaterPressureValuesAutoregressionEnum
     1202syn keyword cConstant WaterPressureValuesMovingaverageEnum
    11861203syn keyword cConstant WeightsLevelsetObservationEnum
    11871204syn keyword cConstant WeightsSurfaceObservationEnum
     
    14251442syn keyword cConstant HOFSApproximationEnum
    14261443syn keyword cConstant HookEnum
     1444syn keyword cConstant HydrologyArmapwAnalysisEnum
     1445syn keyword cConstant HydrologyarmapwEnum
    14271446syn keyword cConstant HydrologyDCEfficientAnalysisEnum
    14281447syn keyword cConstant HydrologyDCInefficientAnalysisEnum
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r27450 r27462  
    239239        GroundinglineNumRequestedOutputsEnum,
    240240        GroundinglineRequestedOutputsEnum,
     241        HydrologyarmaarOrderEnum,
     242   HydrologyarmaarlagcoefsEnum,
     243   HydrologyarmadatebreaksEnum,
     244   HydrologyarmamalagcoefsEnum,
     245   HydrologyarmamaOrderEnum,
     246   HydrologyarmaMonthlyFactorsEnum,
     247   HydrologyarmaNumBreaksEnum,
     248   HydrologyarmaNumParamsEnum,
     249   HydrologyarmapolyparamsEnum,
     250   HydrologyarmaTimestepEnum,
    241251        HydrologyAveragingEnum,
    242252        HydrologyCavitySpacingEnum,     
     
    244254        HydrologyEnglacialVoidRatioEnum,
    245255        HydrologyIschannelsEnum,
     256        HydrologyIsWaterPressureArmaEnum,
    246257        HydrologyMeltFlagEnum,
    247258        HydrologyModelEnum,
     259        HydrologyNumBasinsEnum,
    248260        HydrologyNumRequestedOutputsEnum,
    249261        HydrologyPressureMeltCoefficientEnum,
     
    800812        FrictionWaterLayerEnum,
    801813        FrictionWaterPressureEnum,
     814        FrictionWaterPressureNoiseEnum,
    802815        FrictionfEnum,
    803816        FrontalForcingsBasinIdEnum,
     
    814827        HydraulicPotentialOldEnum,
    815828        HydrologyBasalFluxEnum,
     829        HydrologyBasinsIdEnum,
    816830        HydrologyBumpHeightEnum,
    817831        HydrologyBumpSpacingEnum,
     
    11811195        WaterfractionEnum,
    11821196        WaterheightEnum,
     1197        WaterPressureArmaPerturbationEnum,
     1198   WaterPressureValuesAutoregressionEnum,
     1199   WaterPressureValuesMovingaverageEnum,
    11831200        WeightsLevelsetObservationEnum,
    11841201        WeightsSurfaceObservationEnum,
     
    14241441        HOFSApproximationEnum,
    14251442        HookEnum,
     1443        HydrologyArmapwAnalysisEnum,
     1444   HydrologyarmapwEnum,
    14261445        HydrologyDCEfficientAnalysisEnum,
    14271446        HydrologyDCInefficientAnalysisEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r27450 r27462  
    247247                case GroundinglineNumRequestedOutputsEnum : return "GroundinglineNumRequestedOutputs";
    248248                case GroundinglineRequestedOutputsEnum : return "GroundinglineRequestedOutputs";
     249                case HydrologyarmaarOrderEnum : return "HydrologyarmaarOrder";
     250                case HydrologyarmaarlagcoefsEnum : return "Hydrologyarmaarlagcoefs";
     251                case HydrologyarmadatebreaksEnum : return "Hydrologyarmadatebreaks";
     252                case HydrologyarmamalagcoefsEnum : return "Hydrologyarmamalagcoefs";
     253                case HydrologyarmamaOrderEnum : return "HydrologyarmamaOrder";
     254                case HydrologyarmaMonthlyFactorsEnum : return "HydrologyarmaMonthlyFactors";
     255                case HydrologyarmaNumBreaksEnum : return "HydrologyarmaNumBreaks";
     256                case HydrologyarmaNumParamsEnum : return "HydrologyarmaNumParams";
     257                case HydrologyarmapolyparamsEnum : return "Hydrologyarmapolyparams";
     258                case HydrologyarmaTimestepEnum : return "HydrologyarmaTimestep";
    249259                case HydrologyAveragingEnum : return "HydrologyAveraging";
    250260                case HydrologyCavitySpacingEnum : return "HydrologyCavitySpacing";
     
    252262                case HydrologyEnglacialVoidRatioEnum : return "HydrologyEnglacialVoidRatio";
    253263                case HydrologyIschannelsEnum : return "HydrologyIschannels";
     264                case HydrologyIsWaterPressureArmaEnum : return "HydrologyIsWaterPressureArma";
    254265                case HydrologyMeltFlagEnum : return "HydrologyMeltFlag";
    255266                case HydrologyModelEnum : return "HydrologyModel";
     267                case HydrologyNumBasinsEnum : return "HydrologyNumBasins";
    256268                case HydrologyNumRequestedOutputsEnum : return "HydrologyNumRequestedOutputs";
    257269                case HydrologyPressureMeltCoefficientEnum : return "HydrologyPressureMeltCoefficient";
     
    806818                case FrictionWaterLayerEnum : return "FrictionWaterLayer";
    807819                case FrictionWaterPressureEnum : return "FrictionWaterPressure";
     820                case FrictionWaterPressureNoiseEnum : return "FrictionWaterPressureNoise";
    808821                case FrictionfEnum : return "Frictionf";
    809822                case FrontalForcingsBasinIdEnum : return "FrontalForcingsBasinId";
     
    820833                case HydraulicPotentialOldEnum : return "HydraulicPotentialOld";
    821834                case HydrologyBasalFluxEnum : return "HydrologyBasalFlux";
     835                case HydrologyBasinsIdEnum : return "HydrologyBasinsId";
    822836                case HydrologyBumpHeightEnum : return "HydrologyBumpHeight";
    823837                case HydrologyBumpSpacingEnum : return "HydrologyBumpSpacing";
     
    11861200                case WaterfractionEnum : return "Waterfraction";
    11871201                case WaterheightEnum : return "Waterheight";
     1202                case WaterPressureArmaPerturbationEnum : return "WaterPressureArmaPerturbation";
     1203                case WaterPressureValuesAutoregressionEnum : return "WaterPressureValuesAutoregression";
     1204                case WaterPressureValuesMovingaverageEnum : return "WaterPressureValuesMovingaverage";
    11881205                case WeightsLevelsetObservationEnum : return "WeightsLevelsetObservation";
    11891206                case WeightsSurfaceObservationEnum : return "WeightsSurfaceObservation";
     
    14271444                case HOFSApproximationEnum : return "HOFSApproximation";
    14281445                case HookEnum : return "Hook";
     1446                case HydrologyArmapwAnalysisEnum : return "HydrologyArmapwAnalysis";
     1447                case HydrologyarmapwEnum : return "Hydrologyarmapw";
    14291448                case HydrologyDCEfficientAnalysisEnum : return "HydrologyDCEfficientAnalysis";
    14301449                case HydrologyDCInefficientAnalysisEnum : return "HydrologyDCInefficientAnalysis";
  • issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim

    r27450 r27462  
    238238syn keyword juliaConstC GroundinglineNumRequestedOutputsEnum
    239239syn keyword juliaConstC GroundinglineRequestedOutputsEnum
     240syn keyword juliaConstC HydrologyarmaarOrderEnum
     241syn keyword juliaConstC HydrologyarmaarlagcoefsEnum
     242syn keyword juliaConstC HydrologyarmadatebreaksEnum
     243syn keyword juliaConstC HydrologyarmamalagcoefsEnum
     244syn keyword juliaConstC HydrologyarmamaOrderEnum
     245syn keyword juliaConstC HydrologyarmaMonthlyFactorsEnum
     246syn keyword juliaConstC HydrologyarmaNumBreaksEnum
     247syn keyword juliaConstC HydrologyarmaNumParamsEnum
     248syn keyword juliaConstC HydrologyarmapolyparamsEnum
     249syn keyword juliaConstC HydrologyarmaTimestepEnum
    240250syn keyword juliaConstC HydrologyAveragingEnum
    241251syn keyword juliaConstC HydrologyCavitySpacingEnum
     
    243253syn keyword juliaConstC HydrologyEnglacialVoidRatioEnum
    244254syn keyword juliaConstC HydrologyIschannelsEnum
     255syn keyword juliaConstC HydrologyIsWaterPressureArmaEnum
    245256syn keyword juliaConstC HydrologyMeltFlagEnum
    246257syn keyword juliaConstC HydrologyModelEnum
     258syn keyword juliaConstC HydrologyNumBasinsEnum
    247259syn keyword juliaConstC HydrologyNumRequestedOutputsEnum
    248260syn keyword juliaConstC HydrologyPressureMeltCoefficientEnum
     
    797809syn keyword juliaConstC FrictionWaterLayerEnum
    798810syn keyword juliaConstC FrictionWaterPressureEnum
     811syn keyword juliaConstC FrictionWaterPressureNoiseEnum
    799812syn keyword juliaConstC FrictionfEnum
    800813syn keyword juliaConstC FrontalForcingsBasinIdEnum
     
    811824syn keyword juliaConstC HydraulicPotentialOldEnum
    812825syn keyword juliaConstC HydrologyBasalFluxEnum
     826syn keyword juliaConstC HydrologyBasinsIdEnum
    813827syn keyword juliaConstC HydrologyBumpHeightEnum
    814828syn keyword juliaConstC HydrologyBumpSpacingEnum
     
    11771191syn keyword juliaConstC WaterfractionEnum
    11781192syn keyword juliaConstC WaterheightEnum
     1193syn keyword juliaConstC WaterPressureArmaPerturbationEnum
     1194syn keyword juliaConstC WaterPressureValuesAutoregressionEnum
     1195syn keyword juliaConstC WaterPressureValuesMovingaverageEnum
    11791196syn keyword juliaConstC WeightsLevelsetObservationEnum
    11801197syn keyword juliaConstC WeightsSurfaceObservationEnum
     
    14181435syn keyword juliaConstC HOFSApproximationEnum
    14191436syn keyword juliaConstC HookEnum
     1437syn keyword juliaConstC HydrologyArmapwAnalysisEnum
     1438syn keyword juliaConstC HydrologyarmapwEnum
    14201439syn keyword juliaConstC HydrologyDCEfficientAnalysisEnum
    14211440syn keyword juliaConstC HydrologyDCInefficientAnalysisEnum
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r27450 r27462  
    250250              else if (strcmp(name,"GroundinglineNumRequestedOutputs")==0) return GroundinglineNumRequestedOutputsEnum;
    251251              else if (strcmp(name,"GroundinglineRequestedOutputs")==0) return GroundinglineRequestedOutputsEnum;
    252               else if (strcmp(name,"HydrologyAveraging")==0) return HydrologyAveragingEnum;
     252              else if (strcmp(name,"HydrologyarmaarOrder")==0) return HydrologyarmaarOrderEnum;
     253              else if (strcmp(name,"Hydrologyarmaarlagcoefs")==0) return HydrologyarmaarlagcoefsEnum;
     254              else if (strcmp(name,"Hydrologyarmadatebreaks")==0) return HydrologyarmadatebreaksEnum;
     255              else if (strcmp(name,"Hydrologyarmamalagcoefs")==0) return HydrologyarmamalagcoefsEnum;
     256              else if (strcmp(name,"HydrologyarmamaOrder")==0) return HydrologyarmamaOrderEnum;
     257              else if (strcmp(name,"HydrologyarmaMonthlyFactors")==0) return HydrologyarmaMonthlyFactorsEnum;
     258              else if (strcmp(name,"HydrologyarmaNumBreaks")==0) return HydrologyarmaNumBreaksEnum;
     259              else if (strcmp(name,"HydrologyarmaNumParams")==0) return HydrologyarmaNumParamsEnum;
     260              else if (strcmp(name,"Hydrologyarmapolyparams")==0) return HydrologyarmapolyparamsEnum;
     261              else if (strcmp(name,"HydrologyarmaTimestep")==0) return HydrologyarmaTimestepEnum;
     262         else stage=3;
     263   }
     264   if(stage==3){
     265              if (strcmp(name,"HydrologyAveraging")==0) return HydrologyAveragingEnum;
    253266              else if (strcmp(name,"HydrologyCavitySpacing")==0) return HydrologyCavitySpacingEnum;
    254267              else if (strcmp(name,"HydrologyChannelSheetWidth")==0) return HydrologyChannelSheetWidthEnum;
    255268              else if (strcmp(name,"HydrologyEnglacialVoidRatio")==0) return HydrologyEnglacialVoidRatioEnum;
    256269              else if (strcmp(name,"HydrologyIschannels")==0) return HydrologyIschannelsEnum;
     270              else if (strcmp(name,"HydrologyIsWaterPressureArma")==0) return HydrologyIsWaterPressureArmaEnum;
    257271              else if (strcmp(name,"HydrologyMeltFlag")==0) return HydrologyMeltFlagEnum;
    258272              else if (strcmp(name,"HydrologyModel")==0) return HydrologyModelEnum;
     273              else if (strcmp(name,"HydrologyNumBasins")==0) return HydrologyNumBasinsEnum;
    259274              else if (strcmp(name,"HydrologyNumRequestedOutputs")==0) return HydrologyNumRequestedOutputsEnum;
    260275              else if (strcmp(name,"HydrologyPressureMeltCoefficient")==0) return HydrologyPressureMeltCoefficientEnum;
    261276              else if (strcmp(name,"HydrologyRelaxation")==0) return HydrologyRelaxationEnum;
    262          else stage=3;
    263    }
    264    if(stage==3){
    265               if (strcmp(name,"HydrologyRequestedOutputs")==0) return HydrologyRequestedOutputsEnum;
     277              else if (strcmp(name,"HydrologyRequestedOutputs")==0) return HydrologyRequestedOutputsEnum;
    266278              else if (strcmp(name,"HydrologySedimentKmax")==0) return HydrologySedimentKmaxEnum;
    267279              else if (strcmp(name,"HydrologyStepsPerStep")==0) return HydrologyStepsPerStepEnum;
     
    371383              else if (strcmp(name,"MaterialsHeatcapacity")==0) return MaterialsHeatcapacityEnum;
    372384              else if (strcmp(name,"MaterialsLatentheat")==0) return MaterialsLatentheatEnum;
    373               else if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum;
     385         else stage=4;
     386   }
     387   if(stage==4){
     388              if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum;
    374389              else if (strcmp(name,"MaterialsMixedLayerCapacity")==0) return MaterialsMixedLayerCapacityEnum;
    375390              else if (strcmp(name,"MaterialsMuWater")==0) return MaterialsMuWaterEnum;
     
    383398              else if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum;
    384399              else if (strcmp(name,"MeshAverageVertexConnectivity")==0) return MeshAverageVertexConnectivityEnum;
    385          else stage=4;
    386    }
    387    if(stage==4){
    388               if (strcmp(name,"MeshElementtype")==0) return MeshElementtypeEnum;
     400              else if (strcmp(name,"MeshElementtype")==0) return MeshElementtypeEnum;
    389401              else if (strcmp(name,"MeshNumberoflayers")==0) return MeshNumberoflayersEnum;
    390402              else if (strcmp(name,"MeshNumberofvertices")==0) return MeshNumberofverticesEnum;
     
    494506              else if (strcmp(name,"StochasticForcingDefaultDimension")==0) return StochasticForcingDefaultDimensionEnum;
    495507              else if (strcmp(name,"StochasticForcingDimensions")==0) return StochasticForcingDimensionsEnum;
    496               else if (strcmp(name,"StochasticForcingFields")==0) return StochasticForcingFieldsEnum;
     508         else stage=5;
     509   }
     510   if(stage==5){
     511              if (strcmp(name,"StochasticForcingFields")==0) return StochasticForcingFieldsEnum;
    497512              else if (strcmp(name,"StochasticForcingIsEffectivePressure")==0) return StochasticForcingIsEffectivePressureEnum;
    498513              else if (strcmp(name,"StochasticForcingIsStochasticForcing")==0) return StochasticForcingIsStochasticForcingEnum;
     
    506521              else if (strcmp(name,"SolidearthSettingsRotation")==0) return SolidearthSettingsRotationEnum;
    507522              else if (strcmp(name,"SolidearthSettingsMaxSHCoeff")==0) return SolidearthSettingsMaxSHCoeffEnum;
    508          else stage=5;
    509    }
    510    if(stage==5){
    511               if (strcmp(name,"SettingsIoGather")==0) return SettingsIoGatherEnum;
     523              else if (strcmp(name,"SettingsIoGather")==0) return SettingsIoGatherEnum;
    512524              else if (strcmp(name,"SettingsNumResultsOnNodes")==0) return SettingsNumResultsOnNodesEnum;
    513525              else if (strcmp(name,"SettingsOutputFrequency")==0) return SettingsOutputFrequencyEnum;
     
    617629              else if (strcmp(name,"ThermalPenaltyLock")==0) return ThermalPenaltyLockEnum;
    618630              else if (strcmp(name,"ThermalPenaltyThreshold")==0) return ThermalPenaltyThresholdEnum;
    619               else if (strcmp(name,"ThermalReltol")==0) return ThermalReltolEnum;
     631         else stage=6;
     632   }
     633   if(stage==6){
     634              if (strcmp(name,"ThermalReltol")==0) return ThermalReltolEnum;
    620635              else if (strcmp(name,"ThermalRequestedOutputs")==0) return ThermalRequestedOutputsEnum;
    621636              else if (strcmp(name,"ThermalStabilization")==0) return ThermalStabilizationEnum;
     
    629644              else if (strcmp(name,"TimesteppingCycleForcing")==0) return TimesteppingCycleForcingEnum;
    630645              else if (strcmp(name,"TimesteppingStartTime")==0) return TimesteppingStartTimeEnum;
    631          else stage=6;
    632    }
    633    if(stage==6){
    634               if (strcmp(name,"TimesteppingTimeStep")==0) return TimesteppingTimeStepEnum;
     646              else if (strcmp(name,"TimesteppingTimeStep")==0) return TimesteppingTimeStepEnum;
    635647              else if (strcmp(name,"TimesteppingTimeStepMax")==0) return TimesteppingTimeStepMaxEnum;
    636648              else if (strcmp(name,"TimesteppingTimeStepMin")==0) return TimesteppingTimeStepMinEnum;
     
    740752              else if (strcmp(name,"CalvingHabFraction")==0) return CalvingHabFractionEnum;
    741753              else if (strcmp(name,"CalvingAblationrate")==0) return CalvingAblationrateEnum;
    742               else if (strcmp(name,"CalvingMeltingrate")==0) return CalvingMeltingrateEnum;
     754         else stage=7;
     755   }
     756   if(stage==7){
     757              if (strcmp(name,"CalvingMeltingrate")==0) return CalvingMeltingrateEnum;
    743758              else if (strcmp(name,"CalvingStressThresholdFloatingice")==0) return CalvingStressThresholdFloatingiceEnum;
    744759              else if (strcmp(name,"CalvingStressThresholdGroundedice")==0) return CalvingStressThresholdGroundediceEnum;
     
    752767              else if (strcmp(name,"DamageD")==0) return DamageDEnum;
    753768              else if (strcmp(name,"DamageDOld")==0) return DamageDOldEnum;
    754          else stage=7;
    755    }
    756    if(stage==7){
    757               if (strcmp(name,"DamageDbar")==0) return DamageDbarEnum;
     769              else if (strcmp(name,"DamageDbar")==0) return DamageDbarEnum;
    758770              else if (strcmp(name,"DamageDbarOld")==0) return DamageDbarOldEnum;
    759771              else if (strcmp(name,"DamageF")==0) return DamageFEnum;
     
    824836              else if (strcmp(name,"FrictionWaterLayer")==0) return FrictionWaterLayerEnum;
    825837              else if (strcmp(name,"FrictionWaterPressure")==0) return FrictionWaterPressureEnum;
     838              else if (strcmp(name,"FrictionWaterPressureNoise")==0) return FrictionWaterPressureNoiseEnum;
    826839              else if (strcmp(name,"Frictionf")==0) return FrictionfEnum;
    827840              else if (strcmp(name,"FrontalForcingsBasinId")==0) return FrontalForcingsBasinIdEnum;
     
    838851              else if (strcmp(name,"HydraulicPotentialOld")==0) return HydraulicPotentialOldEnum;
    839852              else if (strcmp(name,"HydrologyBasalFlux")==0) return HydrologyBasalFluxEnum;
     853              else if (strcmp(name,"HydrologyBasinsId")==0) return HydrologyBasinsIdEnum;
    840854              else if (strcmp(name,"HydrologyBumpHeight")==0) return HydrologyBumpHeightEnum;
    841855              else if (strcmp(name,"HydrologyBumpSpacing")==0) return HydrologyBumpSpacingEnum;
     
    861875              else if (strcmp(name,"HydrologyHeadOld")==0) return HydrologyHeadOldEnum;
    862876              else if (strcmp(name,"HydrologyMoulinInput")==0) return HydrologyMoulinInputEnum;
    863               else if (strcmp(name,"HydrologyNeumannflux")==0) return HydrologyNeumannfluxEnum;
     877         else stage=8;
     878   }
     879   if(stage==8){
     880              if (strcmp(name,"HydrologyNeumannflux")==0) return HydrologyNeumannfluxEnum;
    864881              else if (strcmp(name,"HydrologyReynolds")==0) return HydrologyReynoldsEnum;
    865882              else if (strcmp(name,"HydrologySheetConductivity")==0) return HydrologySheetConductivityEnum;
     
    875892              else if (strcmp(name,"Ice")==0) return IceEnum;
    876893              else if (strcmp(name,"IceMaskNodeActivation")==0) return IceMaskNodeActivationEnum;
    877          else stage=8;
    878    }
    879    if(stage==8){
    880               if (strcmp(name,"Input")==0) return InputEnum;
     894              else if (strcmp(name,"Input")==0) return InputEnum;
    881895              else if (strcmp(name,"InversionCostFunctionsCoefficients")==0) return InversionCostFunctionsCoefficientsEnum;
    882896              else if (strcmp(name,"InversionSurfaceObs")==0) return InversionSurfaceObsEnum;
     
    984998              else if (strcmp(name,"SealevelchangeAlphaIndex")==0) return SealevelchangeAlphaIndexEnum;
    985999              else if (strcmp(name,"SealevelchangeAzimuthIndex")==0) return SealevelchangeAzimuthIndexEnum;
    986               else if (strcmp(name,"SealevelchangeGrot")==0) return SealevelchangeGrotEnum;
     1000         else stage=9;
     1001   }
     1002   if(stage==9){
     1003              if (strcmp(name,"SealevelchangeGrot")==0) return SealevelchangeGrotEnum;
    9871004              else if (strcmp(name,"SealevelchangeGSatGravirot")==0) return SealevelchangeGSatGravirotEnum;
    9881005              else if (strcmp(name,"SealevelchangeGUrot")==0) return SealevelchangeGUrotEnum;
     
    9981015              else if (strcmp(name,"SealevelchangeViscousSG")==0) return SealevelchangeViscousSGEnum;
    9991016              else if (strcmp(name,"SealevelchangeViscousU")==0) return SealevelchangeViscousUEnum;
    1000          else stage=9;
    1001    }
    1002    if(stage==9){
    1003               if (strcmp(name,"SealevelchangeViscousN")==0) return SealevelchangeViscousNEnum;
     1017              else if (strcmp(name,"SealevelchangeViscousN")==0) return SealevelchangeViscousNEnum;
    10041018              else if (strcmp(name,"SealevelchangeViscousE")==0) return SealevelchangeViscousEEnum;
    10051019              else if (strcmp(name,"CouplingTransferCount")==0) return CouplingTransferCountEnum;
     
    11071121              else if (strcmp(name,"SmbTeValue")==0) return SmbTeValueEnum;
    11081122              else if (strcmp(name,"SmbTemperaturesAnomaly")==0) return SmbTemperaturesAnomalyEnum;
    1109               else if (strcmp(name,"SmbTemperaturesLgm")==0) return SmbTemperaturesLgmEnum;
     1123         else stage=10;
     1124   }
     1125   if(stage==10){
     1126              if (strcmp(name,"SmbTemperaturesLgm")==0) return SmbTemperaturesLgmEnum;
    11101127              else if (strcmp(name,"SmbTemperaturesPresentday")==0) return SmbTemperaturesPresentdayEnum;
    11111128              else if (strcmp(name,"SmbTemperaturesReconstructed")==0) return SmbTemperaturesReconstructedEnum;
     
    11211138              else if (strcmp(name,"SmbWAdd")==0) return SmbWAddEnum;
    11221139              else if (strcmp(name,"SmbWini")==0) return SmbWiniEnum;
    1123          else stage=10;
    1124    }
    1125    if(stage==10){
    1126               if (strcmp(name,"SmbZMax")==0) return SmbZMaxEnum;
     1140              else if (strcmp(name,"SmbZMax")==0) return SmbZMaxEnum;
    11271141              else if (strcmp(name,"SmbZMin")==0) return SmbZMinEnum;
    11281142              else if (strcmp(name,"SmbZTop")==0) return SmbZTopEnum;
     
    12131227              else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
    12141228              else if (strcmp(name,"Waterheight")==0) return WaterheightEnum;
     1229              else if (strcmp(name,"WaterPressureArmaPerturbation")==0) return WaterPressureArmaPerturbationEnum;
     1230              else if (strcmp(name,"WaterPressureValuesAutoregression")==0) return WaterPressureValuesAutoregressionEnum;
     1231              else if (strcmp(name,"WaterPressureValuesMovingaverage")==0) return WaterPressureValuesMovingaverageEnum;
    12151232              else if (strcmp(name,"WeightsLevelsetObservation")==0) return WeightsLevelsetObservationEnum;
    12161233              else if (strcmp(name,"WeightsSurfaceObservation")==0) return WeightsSurfaceObservationEnum;
     
    12271244              else if (strcmp(name,"Outputdefinition16")==0) return Outputdefinition16Enum;
    12281245              else if (strcmp(name,"Outputdefinition17")==0) return Outputdefinition17Enum;
    1229               else if (strcmp(name,"Outputdefinition18")==0) return Outputdefinition18Enum;
     1246         else stage=11;
     1247   }
     1248   if(stage==11){
     1249              if (strcmp(name,"Outputdefinition18")==0) return Outputdefinition18Enum;
    12301250              else if (strcmp(name,"Outputdefinition19")==0) return Outputdefinition19Enum;
    12311251              else if (strcmp(name,"Outputdefinition20")==0) return Outputdefinition20Enum;
     
    12441264              else if (strcmp(name,"Outputdefinition32")==0) return Outputdefinition32Enum;
    12451265              else if (strcmp(name,"Outputdefinition33")==0) return Outputdefinition33Enum;
    1246          else stage=11;
    1247    }
    1248    if(stage==11){
    1249               if (strcmp(name,"Outputdefinition34")==0) return Outputdefinition34Enum;
     1266              else if (strcmp(name,"Outputdefinition34")==0) return Outputdefinition34Enum;
    12501267              else if (strcmp(name,"Outputdefinition35")==0) return Outputdefinition35Enum;
    12511268              else if (strcmp(name,"Outputdefinition36")==0) return Outputdefinition36Enum;
     
    13501367              else if (strcmp(name,"BoolInput")==0) return BoolInputEnum;
    13511368              else if (strcmp(name,"IntInput")==0) return IntInputEnum;
    1352               else if (strcmp(name,"DoubleInput")==0) return DoubleInputEnum;
     1369         else stage=12;
     1370   }
     1371   if(stage==12){
     1372              if (strcmp(name,"DoubleInput")==0) return DoubleInputEnum;
    13531373              else if (strcmp(name,"BoolParam")==0) return BoolParamEnum;
    13541374              else if (strcmp(name,"Boundary")==0) return BoundaryEnum;
     
    13671387              else if (strcmp(name,"Channel")==0) return ChannelEnum;
    13681388              else if (strcmp(name,"ChannelArea")==0) return ChannelAreaEnum;
    1369          else stage=12;
    1370    }
    1371    if(stage==12){
    1372               if (strcmp(name,"ChannelAreaOld")==0) return ChannelAreaOldEnum;
     1389              else if (strcmp(name,"ChannelAreaOld")==0) return ChannelAreaOldEnum;
    13731390              else if (strcmp(name,"ChannelDischarge")==0) return ChannelDischargeEnum;
    13741391              else if (strcmp(name,"Closed")==0) return ClosedEnum;
     
    14601477              else if (strcmp(name,"HOFSApproximation")==0) return HOFSApproximationEnum;
    14611478              else if (strcmp(name,"Hook")==0) return HookEnum;
     1479              else if (strcmp(name,"HydrologyArmapwAnalysis")==0) return HydrologyArmapwAnalysisEnum;
     1480              else if (strcmp(name,"Hydrologyarmapw")==0) return HydrologyarmapwEnum;
    14621481              else if (strcmp(name,"HydrologyDCEfficientAnalysis")==0) return HydrologyDCEfficientAnalysisEnum;
    14631482              else if (strcmp(name,"HydrologyDCInefficientAnalysis")==0) return HydrologyDCInefficientAnalysisEnum;
     
    14711490              else if (strcmp(name,"HydrologySubTime")==0) return HydrologySubTimeEnum;
    14721491              else if (strcmp(name,"Hydrologydc")==0) return HydrologydcEnum;
    1473               else if (strcmp(name,"Hydrologypism")==0) return HydrologypismEnum;
     1492         else stage=13;
     1493   }
     1494   if(stage==13){
     1495              if (strcmp(name,"Hydrologypism")==0) return HydrologypismEnum;
    14741496              else if (strcmp(name,"Hydrologyshakti")==0) return HydrologyshaktiEnum;
    14751497              else if (strcmp(name,"Hydrologyshreve")==0) return HydrologyshreveEnum;
     
    14901512              else if (strcmp(name,"IntParam")==0) return IntParamEnum;
    14911513              else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum;
    1492          else stage=13;
    1493    }
    1494    if(stage==13){
    1495               if (strcmp(name,"Inputs")==0) return InputsEnum;
     1514              else if (strcmp(name,"Inputs")==0) return InputsEnum;
    14961515              else if (strcmp(name,"Internal")==0) return InternalEnum;
    14971516              else if (strcmp(name,"Intersect")==0) return IntersectEnum;
     
    15941613              else if (strcmp(name,"P1bubble")==0) return P1bubbleEnum;
    15951614              else if (strcmp(name,"P1bubblecondensed")==0) return P1bubblecondensedEnum;
    1596               else if (strcmp(name,"P1xP2")==0) return P1xP2Enum;
     1615         else stage=14;
     1616   }
     1617   if(stage==14){
     1618              if (strcmp(name,"P1xP2")==0) return P1xP2Enum;
    15971619              else if (strcmp(name,"P1xP3")==0) return P1xP3Enum;
    15981620              else if (strcmp(name,"P1xP4")==0) return P1xP4Enum;
     
    16131635              else if (strcmp(name,"Regionaloutput")==0) return RegionaloutputEnum;
    16141636              else if (strcmp(name,"Regular")==0) return RegularEnum;
    1615          else stage=14;
    1616    }
    1617    if(stage==14){
    1618               if (strcmp(name,"RecoveryAnalysis")==0) return RecoveryAnalysisEnum;
     1637              else if (strcmp(name,"RecoveryAnalysis")==0) return RecoveryAnalysisEnum;
    16191638              else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum;
    16201639              else if (strcmp(name,"SamplingAnalysis")==0) return SamplingAnalysisEnum;
     
    17171736              else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum;
    17181737              else if (strcmp(name,"CalvingdevCoeff")==0) return CalvingdevCoeffEnum;
    1719               else if (strcmp(name,"DeviatoricStress")==0) return DeviatoricStressEnum;
     1738         else stage=15;
     1739   }
     1740   if(stage==15){
     1741              if (strcmp(name,"DeviatoricStress")==0) return DeviatoricStressEnum;
    17201742              else if (strcmp(name,"EtaAbsGradient")==0) return EtaAbsGradientEnum;
    17211743              else if (strcmp(name,"MeshZ")==0) return MeshZEnum;
     
    17311753              else if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum;
    17321754              else if (strcmp(name,"MaximumNumberOfDefinitions")==0) return MaximumNumberOfDefinitionsEnum;
    1733          else stage=15;
     1755         else stage=16;
    17341756   }
    17351757        /*If we reach this point, the string provided has not been found*/
  • issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp

    r27297 r27462  
    291291                case 5: return HydrologyGlaDSEnum;
    292292                case 6: return HydrologyTwsEnum;
     293                case 7: return HydrologyarmapwEnum;
    293294                default: _error_("Marshalled hydrology code \""<<enum_in<<"\" not supported yet");
    294295        }
  • issm/trunk-jpl/src/m/classes/stochasticforcing.m

    r27450 r27462  
    5050                        checkdefaults   = false; %need to check defaults only if one of the fields does not have its own dimensionality
    5151                        structstoch             = structstochforcing();
     52                        % Check if hydrolgyarmapw is used
     53                        if(strcmp(class(md.hydrology),'hydrologyarmapw') && md.transient.ishydrology==1)
     54                                ispwHydroarma = 1;
     55                        else
     56                                ispwHydroarma = 0;
     57                        end
    5258                        for field=self.fields
    5359                                %Checking agreement of classes
     
    116122            end
    117123                                %Checking for specific dimensions
    118                                 if ~(strcmp(field,'SMBarma') || strcmp(field,'FrontalForcingsRignotarma') || strcmp(field,'BasalforcingsDeepwaterMeltingRatearma'))
     124                                if ~(strcmp(field,'SMBarma') || strcmp(field,'FrontalForcingsRignotarma') || strcmp(field,'BasalforcingsDeepwaterMeltingRatearma') || strcmp(field,'FrontalForcingsSubglacialDischargearma') || ((strcmp(field,'FrictionWaterPressure') && ispwHydroarma)))
    119125                                        checkdefaults = true; %field with non-specific dimensionality
    120126                                end
    121127                        end
    122 
    123128                        %Retrieve all the field dimensionalities
    124129                        dimensions = self.defaultdimension*ones(1,num_fields);
     
    126131                        indTFarma  = -1; %about to check for index of FrontalForcingsRignotarma
    127132                        indSdarma  = -1; %about to check for index of SubglacialDischargearma
    128                         indBDWarma  = -1; %about to check for index of BasalforcingsDeepwaterMeltingRatearma
     133                        indBDWarma = -1; %about to check for index of BasalforcingsDeepwaterMeltingRatearma
     134                        indPwarma  = -1; %about to check for index of hydrologyarmapw
     135                       
     136
    129137                        if any(contains(self.fields,'SMBarma'))
    130138                                indSMBarma = find(contains(self.fields,'SMBarma')); %index of SMBarma, now check for consistency with other arma timesteps
     
    155163                                end
    156164                        end
     165                        if (any(contains(self.fields,'FrictionWaterPressure')) && ispwHydroarma)
     166                                indPwarma       = find(contains(self.fields,'FrictionWaterPressure')); %index of Pwarma, now check for consistency with other arma timesteps
     167                                dimensions(indPwarma) = md.hydrology.num_basins;
     168                                if(md.hydrology.arma_timestep<self.stochastictimestep)
     169                                        error('hydrologyarmapw cannot have a timestep shorter than stochastictimestep');
     170                                end
     171                        end
    157172                        size_tot = sum(dimensions);
    158173
     174                        %%% Check consistency between ARMA models %%%
    159175                        if(indSMBarma~=-1 && indTFarma~=-1) %both ARMA models are used: check ARMA time step consistency
    160176                                if(md.smb.arma_timestep~=md.frontalforcings.arma_timestep)
     
    189205                                end
    190206                        end
     207                        if(indSMBarma~=-1 && indPwarma~=-1) %both ARMA models are used: check ARMA time step consistency
     208                                if(md.smb.arma_timestep~=md.hydrology.arma_timestep)
     209                                        crossentries = reshape(self.covariance(1+sum(dimensions(1:indSMBarma-1)):sum(dimensions(1:indSMBarma)),1+sum(dimensions(1:indPwarma-1)):sum(dimensions(1:indPwarma))),1,[]);
     210                                        if any(crossentries~=0)
     211                                                error('SMBarma and hydrologyarmapw have different arma_timestep and non-zero covariance');
     212                                        end
     213                                end
     214                        end
    191215                        if(indSdarma~=-1 && indBDWarma~=-1) %both ARMA models are used: check ARMA time step consistency
    192216                                if(md.frontalforcings.sd_arma_timestep~=md.basalforcings.arma_timestep)
     
    205229                                end
    206230                        end
     231                        if(indTFarma~=-1 && indPwarma~=-1) %both ARMA models are used: check ARMA time step consistency
     232                                if(md.frontalforcings.arma_timestep~=md.hydrology.arma_timestep)
     233                                        crossentries = reshape(self.covariance(1+sum(dimensions(1:indTFarma-1)):sum(dimensions(1:indTFarma)),1+sum(dimensions(1:indPwarma-1)):sum(dimensions(1:indPwarma))),1,[]);
     234                                        if any(crossentries~=0)
     235                                                error('FrontalForcingsRignotarma and hydrologyarmapw have different arma_timestep and non-zero covariance');
     236                                        end
     237                                end
     238                        end
     239                        if(indSdarma~=-1 && indPwarma~=-1) %both ARMA models are used: check ARMA time step consistency
     240                                if(md.frontalforcings.sd_arma_timestep~=md.hydrology.arma_timestep)
     241                                        crossentries = reshape(self.covariance(1+sum(dimensions(1:indSdarma-1)):sum(dimensions(1:indSdarma)),1+sum(dimensions(1:indPwarma-1)):sum(dimensions(1:indPwarma))),1,[]);
     242                                        if any(crossentries~=0)
     243                                                error('FrontalForcingsSubglacialDischargearma and hydrologyarmapw have different arma_timestep and non-zero covariance');
     244                                        end
     245                                end
     246                        end
     247                        if(indBDWarma~=-1 && indPwarma~=-1) %both ARMA models are used: check ARMA time step consistency
     248                                if(md.basalforcings.arma_timestep~=md.hydrology.arma_timestep)
     249                                        crossentries = reshape(self.covariance(1+sum(dimensions(1:indBDWarma-1)):sum(dimensions(1:indBDWarma)),1+sum(dimensions(1:indPwarma-1)):sum(dimensions(1:indPwarma))),1,[]);
     250                                        if any(crossentries~=0)
     251                                                error('BasalforcingsDeepwaterMeltingRatearma and hydrologyarmapw have different arma_timestep and non-zero covariance');
     252                                        end
     253                                end
     254                        end
     255                        %%% End of consistency checks between ARMA models %%%
     256
    207257                        md = checkfield(md,'fieldname','stochasticforcing.isstochasticforcing','values',[0 1]);
    208258                        md = checkfield(md,'fieldname','stochasticforcing.fields','numel',num_fields,'cell',1,'values',supportedstochforcings());
     
    244294                                end
    245295
     296                                % Check if hydrolgyarmapw is used
     297                                if(strcmp(class(md.hydrology),'hydrologyarmapw') && md.transient.ishydrology==1)
     298                   ispwHydroarma = 1;
     299                else
     300                   ispwHydroarma = 0;
     301                end
    246302                                %Retrieve dimensionality of each field
    247303                                dimensions = self.defaultdimension*ones(1,num_fields);
     
    261317                                                dimensions(ind) = md.basalforcings.num_basins;
    262318                                        end
     319                                        if(strcmp(field,'BasalforcingsDeepwaterMeltingRatearma'))
     320                                                dimensions(ind) = md.basalforcings.num_basins;
     321                                        end
     322                                        if(strcmp(field,'FrictionWaterPressure') && ispwHydroarma)
     323                  dimensions(ind) = md.hydrology.num_basins;
     324               end
    263325                                        ind = ind+1;
    264326                                end
  • issm/trunk-jpl/src/m/classes/stochasticforcing.py

    r27458 r27462  
    7878        checkdefaults = False  # Need to check defaults only if one of the fields does not have its own dimensionality
    7979        structstoch = self.structstochforcing()
     80        # Check if hydrologyarmapw is used
     81        if((type(md.hydrology).__name__ == 'hydrologyarmapw') and md.transient.hydrology==1):
     82            ispwHydroarma = 1
     83        else:
     84            ispwHydroarma = 0
    8085        for field in self.fields:
    8186            # Checking agreement of classes
     
    127132
    128133            # Checking for specific dimensions
    129             if field not in['SMBarma', 'FrontalForcingsRignotarma','BasalforcingsDeepwaterMeltingRatearma']:
     134            if ((field not in['SMBarma', 'FrontalForcingsRignotarma','BasalforcingsDeepwaterMeltingRatearma']) and ((field=='FrictionWaterPressure' and ispwHydroarma==True)==False)):
    130135                checkdefaults = True  # field with non-specific dimensionality
    131136
     
    136141        indSdarma    = -1  # About to check for index of FrontalForcingsSubglacialDischargearma
    137142        indBDWarma   = -1  # About to check for index of BasalforcingsDeepwaterMeltingRatearma
     143        indPwarma    = -1  # About to check for index of hydrologyarmapw
    138144        if ('SMBarma' in self.fields):
    139145            indSMBarma = self.fields.index('SMBarma')  # Index of SMBarma, now check for consistency with other timesteps
     
    156162            if(md.basalforcings.arma_timestep<self.stochastictimestep):
    157163                raise TypeError('BasalforcingsDeepwaterMeltingRatearma cannot have a timestep shorter than stochastictimestep')
     164        if (('FrictionWaterPressure' in self.fields) and ispwHydroarma):
     165            indPwarma = self.fields.index('FrictionWaterPressure')  # Index of Pwarma, now check for consistency with other timesteps
     166            dimensions[indPwarma] = md.hydrology.num_basins
     167            if(md.hydrology.arma_timestep<self.stochastictimestep):
     168                raise TypeError('hydrologyarmapw cannot have a timestep shorter than stochastictimestep')
    158169        size_tot = np.sum(dimensions)
    159170
     
    182193            if((md.frontalforcings.sd_arma_timestep != md.frontalforcings.arma_timestep) and np.any(covsum != 0)):
    183194                raise IOError('FrontalForcingsSubglacialDischargearma and FrontalForcingsRignotarma have different arma_timestep and non-zero covariance')
    184 
     195        if (indSMBarma != -1 and indPwarma != -1):  # Both ARMA models are used: check ARMA time step consistency
     196            covsum = self.covariance[np.sum(dimensions[0:indSMBarma]).astype(int):np.sum(dimensions[0:indSMBarma + 1]).astype(int), np.sum(dimensions[0:indPwarma]).astype(int):np.sum(dimensions[0:indPwarma + 1]).astype(int)]
     197            if((md.smb.arma_timestep != md.hydrology.arma_timestep) and np.any(covsum != 0)):
     198                raise IOError('SMBarma and hydrologyarmapw have different arma_timestep and non-zero covariance')
     199        if (indTFarma != -1 and indPwarma != -1):  # Both ARMA models are used: check ARMA time step consistency
     200            covsum = self.covariance[np.sum(dimensions[0:indTFarma]).astype(int):np.sum(dimensions[0:indTFarma + 1]).astype(int), np.sum(dimensions[0:indPwarma]).astype(int):np.sum(dimensions[0:indPwarma + 1]).astype(int)]
     201            if((md.frontalforcings.arma_timestep != md.hydrology.arma_timestep) and np.any(covsum != 0)):
     202                raise IOError('FrontalForcingsRignotarma and hydrologyarmapw have different arma_timestep and non-zero covariance')
     203        if (indSdarma != -1 and indPwarma != -1):  # Both ARMA models are used: check ARMA time step consistency
     204            covsum = self.covariance[np.sum(dimensions[0:indSdarma]).astype(int):np.sum(dimensions[0:indSdarma + 1]).astype(int), np.sum(dimensions[0:indPwarma]).astype(int):np.sum(dimensions[0:indPwarma + 1]).astype(int)]
     205            if((md.frontalforcings.sd_arma_timestep != md.hydrology.arma_timestep) and np.any(covsum != 0)):
     206                raise IOError('FrontalForingsSubglacialDischargearma and hydrologyarmapw have different arma_timestep and non-zero covariance')
     207        if (indBDWarma != -1 and indPwarma != -1):  # Both ARMA models are used: check ARMA time step consistency
     208            covsum = self.covariance[np.sum(dimensions[0:indBDWarma]).astype(int):np.sum(dimensions[0:indBDWarma + 1]).astype(int), np.sum(dimensions[0:indPwarma]).astype(int):np.sum(dimensions[0:indPwarma + 1]).astype(int)]
     209            if((md.smb.arma_timestep != md.hydrology.arma_timestep) and np.any(covsum != 0)):
     210                raise IOError('BasalforcingsDeepwaterMeltingRatarma and hydrologyarmapw have different arma_timestep and non-zero covariance')
     211 
    185212
    186213        md = checkfield(md, 'fieldname', 'stochasticforcing.isstochasticforcing', 'values', [0, 1])
     
    206233        if not self.isstochasticforcing:
    207234            return md
    208 
    209235        else:
    210236            num_fields = len(self.fields)
    211237            if(self.stochastictimestep==0):
    212238                md.stochasticforcing.stochastictimestep = md.timestepping.time_step #by default: stochastictimestep set to ISSM time step
     239            # Check if hydroarmapw is used
     240            if((type(md.hydrology).__name__ == 'hydrologyarmapw') and md.transient.hydrology==1):
     241                ispwHydroarma = 1
     242            else:
     243                ispwHydroarma = 0
     244
    213245            # Retrieve dimensionality of each field
    214246            dimensions = self.defaultdimension * np.ones((num_fields))
     
    223255                if (field == 'BasalforcingsDeepwaterMeltingRatearma'):
    224256                    dimensions[ind] = md.basalforcings.num_basins
     257                if (field == 'FrictionWaterPressure' and ispwHydroarma):
     258                    dimensions[ind] = md.hydrology.num_basins
    225259
    226260            # Scaling covariance matrix (scale column-by-column and row-by-row)
  • issm/trunk-jpl/src/m/consistency/ismodelselfconsistent.m

    r27461 r27462  
    7373                analyses={'EsaAnalysis'};
    7474        elseif strcmp(solutiontype,'TransientSolution')
    75                 analyses={'StressbalanceAnalysis','StressbalanceVerticalAnalysis','StressbalanceSIAAnalysis','L2ProjectionBaseAnalysis','ThermalAnalysis','MeltingAnalysis','EnthalpyAnalysis','MasstransportAnalysis','OceantransportAnalysis','HydrologyShaktiAnalysis','HydrologyGladsAnalysis','HydrologyShreveAnalysis','HydrologyTwsAnalysis','HydrologyDCInefficientAnalysis','HydrologyDCEfficientAnalysis','SealevelchangeAnalysis', 'AgeAnalysis'};
     75                analyses={'StressbalanceAnalysis','StressbalanceVerticalAnalysis','StressbalanceSIAAnalysis','L2ProjectionBaseAnalysis','ThermalAnalysis','MeltingAnalysis','EnthalpyAnalysis','MasstransportAnalysis','OceantransportAnalysis','HydrologyShaktiAnalysis','HydrologyGladsAnalysis','HydrologyShreveAnalysis','HydrologyTwsAnalysis','HydrologyDCInefficientAnalysis','HydrologyDCEfficientAnalysis','SealevelchangeAnalysis','AgeAnalysis','HydrologyArmapwAnalysis'};
    7676        elseif strcmp(solutiontype,'SealevelchangeSolution')
    7777                analyses={'SealevelchangeAnalysis'};
    7878        elseif strcmp(solutiontype,'HydrologySolution')
    79                 analyses={'L2ProjectionBaseAnalysis','HydrologyShreveAnalysis','HydrologyDCInefficientAnalysis','HydrologyDCEfficientAnalysis','HydrologyGladsAnalysis','HydrologyShaktiAnalysis','HydrologyTwsAnalysis'};
     79                analyses={'L2ProjectionBaseAnalysis','HydrologyShreveAnalysis','HydrologyDCInefficientAnalysis','HydrologyDCEfficientAnalysis','HydrologyGladsAnalysis','HydrologyShaktiAnalysis','HydrologyTwsAnalysis','HydrologyArmapwAnalysis'};
    8080        elseif strcmp(solutiontype,'DamageEvolutionSolution')
    8181                analyses={'DamageEvolutionAnalysis'};
Note: See TracChangeset for help on using the changeset viewer.