Changeset 28145


Ignore:
Timestamp:
03/14/24 07:39:26 (12 months ago)
Author:
Mathieu Morlighem
Message:

CHG: better error message if 2 different versions of ISSM are being used

Location:
issm/trunk-jpl/src/c
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/IoModel.cpp

    r27717 r28145  
    4848IoConstant::IoConstant(bool value,const char* name_in){/*{{{*/
    4949        this->isindependent = false;
    50         this->constant      = new BoolParam(0,value);
     50        this->constant      = new BoolParam(IoConstantEnum,value);
    5151
    5252        _assert_(name_in);
     
    5858IoConstant::IoConstant(int value,const char* name_in){/*{{{*/
    5959        this->isindependent = false;
    60         this->constant      = new IntParam(0,value);
     60        this->constant      = new IntParam(IoConstantEnum, value);
    6161
    6262        _assert_(name_in);
     
    6868IoConstant::IoConstant(IssmDouble value,const char* name_in){/*{{{*/
    6969        this->isindependent = false;
    70         this->constant      = new DoubleParam(0,value);
     70        this->constant      = new DoubleParam(IoConstantEnum, value);
    7171
    7272        _assert_(name_in);
     
    7878IoConstant::IoConstant(char* value,const char* name_in){/*{{{*/
    7979        this->isindependent = false;
    80         this->constant      = new StringParam(0,value);
     80        this->constant      = new StringParam(IoConstantEnum, value);
    8181
    8282        _assert_(name_in);
     
    8888IoConstant::IoConstant(char** value,int numstrings,const char* name_in){/*{{{*/
    8989        this->isindependent = false;
    90         this->constant      = new StringArrayParam(0,value,numstrings);
     90        this->constant      = new StringArrayParam(IoConstantEnum, value, numstrings);
    9191
    9292        _assert_(name_in);
     
    406406                        _printf0_(" Marshalled file is corrupted                                            \n");
    407407                        _printf0_("                                                                         \n");
    408                         _printf0_("   * Last record found is :                                              \n");
    409                         _printf0_("     the corresponding model field has probably been marshalled          \n");
    410                         _printf0_("     incorrectly                                                         \n");
     408                        _printf0_("    Last record found is:                                                \n");
     409                        _printf0_("    the corresponding model field has probably been marshalled           \n");
     410                        _printf0_("    incorrectly                                                          \n");
    411411                        _printf0_("                                                                         \n");
    412412                        _printf0_("=========================================================================\n");
     
    27372737
    27382738                if(strcmp(ioconstant->name,constant_name)==0){
     2739                        if(ioconstant->constant->ObjectEnum()!=BoolParamEnum){
     2740                                _printf0_("=========================================================================\n");
     2741                                _printf0_(" Marshalled file is not consistent with compiled code                    \n");
     2742                                _printf0_("                                                                         \n");
     2743                                _printf0_("    This problem typically happens when two different versions of ISSM   \n");
     2744                                _printf0_("    are being used. Make sure that you are running the same version:     \n");
     2745                                _printf0_("    - to marshall the model (i.e., MATLAB/python interface)              \n");
     2746                                _printf0_("    - to run ISSM (i.e., the compiled code issm.exe)                     \n");
     2747                                _printf0_("                                                                         \n");
     2748                                _printf0_("=========================================================================\n\n");
     2749                                _error_("\""<< constant_name <<"\" cannot return a bool, it is a " << EnumToStringx(ioconstant->constant->ObjectEnum()));
     2750                        }
    27392751                        ioconstant->constant->GetParameterValue(pvalue);
    27402752                        return;
     
    27552767
    27562768                if(strcmp(ioconstant->name,constant_name)==0){
     2769                        if(ioconstant->constant->ObjectEnum()!=IntParamEnum){
     2770                                _printf0_("=========================================================================\n");
     2771                                _printf0_(" Marshalled file is not consistent with compiled code                    \n");
     2772                                _printf0_("                                                                         \n");
     2773                                _printf0_("    This problem typically happens when two different versions of ISSM   \n");
     2774                                _printf0_("    are being used. Make sure that you are running the same version:     \n");
     2775                                _printf0_("    - to marshall the model (i.e., MATLAB/python interface)              \n");
     2776                                _printf0_("    - to run ISSM (i.e., the compiled code issm.exe)                     \n");
     2777                                _printf0_("                                                                         \n");
     2778                                _printf0_("=========================================================================\n\n");
     2779                                _error_("\""<< constant_name <<"\" cannot return an int, it is a " << EnumToStringx(ioconstant->constant->ObjectEnum()));
     2780                        }
    27572781                        ioconstant->constant->GetParameterValue(pvalue);
    27582782                        return;
     
    27722796
    27732797                if(strcmp(ioconstant->name,constant_name)==0){
     2798                        if(ioconstant->constant->ObjectEnum()!=DoubleParamEnum){
     2799                                _printf0_("=========================================================================\n");
     2800                                _printf0_(" Marshalled file is not consistent with compiled code                    \n");
     2801                                _printf0_("                                                                         \n");
     2802                                _printf0_("    This problem typically happens when two different versions of ISSM   \n");
     2803                                _printf0_("    are being used. Make sure that you are running the same version:     \n");
     2804                                _printf0_("    - to marshall the model (i.e., MATLAB/python interface)              \n");
     2805                                _printf0_("    - to run ISSM (i.e., the compiled code issm.exe)                     \n");
     2806                                _printf0_("                                                                         \n");
     2807                                _printf0_("=========================================================================\n\n");
     2808                                _error_("\""<< constant_name <<"\" cannot return a double, it is a " << EnumToStringx(ioconstant->constant->ObjectEnum()));
     2809                        }
    27742810                        ioconstant->constant->GetParameterValue(pvalue);
    27752811                        return;
     
    27892825
    27902826                if(strcmp(ioconstant->name,constant_name)==0){
     2827                        if(ioconstant->constant->ObjectEnum()!=StringParamEnum){
     2828                                _printf0_("=========================================================================\n");
     2829                                _printf0_(" Marshalled file is not consistent with compiled code                    \n");
     2830                                _printf0_("                                                                         \n");
     2831                                _printf0_("    This problem typically happens when two different versions of ISSM   \n");
     2832                                _printf0_("    are being used. Make sure that you are running the same version:     \n");
     2833                                _printf0_("    - to marshall the model (i.e., MATLAB/python interface)              \n");
     2834                                _printf0_("    - to run ISSM (i.e., the compiled code issm.exe)                     \n");
     2835                                _printf0_("                                                                         \n");
     2836                                _printf0_("=========================================================================\n\n");
     2837                                _error_("\""<< constant_name <<"\" cannot return a string, it is a " << EnumToStringx(ioconstant->constant->ObjectEnum()));
     2838                        }
    27912839                        ioconstant->constant->GetParameterValue(pvalue);
    27922840                        return;
     
    28062854
    28072855                if(strcmp(ioconstant->name,constant_name)==0){
     2856                        if(ioconstant->constant->ObjectEnum()!=StringArrayParamEnum){
     2857                                _printf0_("=========================================================================\n");
     2858                                _printf0_(" Marshalled file is not consistent with compiled code                    \n");
     2859                                _printf0_("                                                                         \n");
     2860                                _printf0_("    This problem typically happens when two different versions of ISSM   \n");
     2861                                _printf0_("    are being used. Make sure that you are running the same version:     \n");
     2862                                _printf0_("    - to marshall the model (i.e., MATLAB/python interface)              \n");
     2863                                _printf0_("    - to run ISSM (i.e., the compiled code issm.exe)                     \n");
     2864                                _printf0_("                                                                         \n");
     2865                                _printf0_("=========================================================================\n\n");
     2866                                _error_("\""<< constant_name <<"\" cannot return a string array, it is a " << EnumToStringx(ioconstant->constant->ObjectEnum()));
     2867                        }
    28082868                        ioconstant->constant->GetParameterValue(pvalue,psize);
    28092869                        return;
  • issm/trunk-jpl/src/c/shared/Enum/Enum.vim

    r28115 r28145  
    246246syn keyword cConstant GrdModelEnum
    247247syn keyword cConstant GroundinglineFrictionInterpolationEnum
     248syn keyword cConstant GroundinglineIntrusionDistanceEnum
    248249syn keyword cConstant GroundinglineMeltInterpolationEnum
    249250syn keyword cConstant GroundinglineMigrationEnum
     
    337338syn keyword cConstant InversionStopFlagEnum
    338339syn keyword cConstant InversionTypeEnum
     340syn keyword cConstant IoConstantEnum
    339341syn keyword cConstant IvinsEnum
    340342syn keyword cConstant IsSlcCouplingEnum
     
    868870syn keyword cConstant FrontalForcingsSubglacialDischargeEnum
    869871syn keyword cConstant GeometryHydrostaticRatioEnum
    870 syn keyword cConstant GroundinglineIntrusionDistanceEnum
    871872syn keyword cConstant NGiaEnum
    872873syn keyword cConstant NGiaRateEnum
     
    926927syn keyword cConstant InversionVxObsEnum
    927928syn keyword cConstant InversionVyObsEnum
    928 syn keyword cConstant IntrusionMeltEnum
    929929syn keyword cConstant LevelsetfunctionSlopeXEnum
    930930syn keyword cConstant LevelsetfunctionSlopeYEnum
     
    17421742syn keyword cConstant SubelementFriction1Enum
    17431743syn keyword cConstant SubelementFriction2Enum
     1744syn keyword cConstant IntrusionMeltEnum
    17441745syn keyword cConstant SubelementMelt1Enum
    17451746syn keyword cConstant SubelementMelt2Enum
     
    19271928syn keyword cType Tria
    19281929syn keyword cType TriaInput
     1930syn keyword cType Tria_MICI
    19291931syn keyword cType TriaRef
    19301932syn keyword cType Variogram
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r28115 r28145  
    332332        InversionStopFlagEnum,
    333333        InversionTypeEnum,
     334        IoConstantEnum,
    334335        IvinsEnum,
    335336        IsSlcCouplingEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r28115 r28145  
    248248                case GrdModelEnum : return "GrdModel";
    249249                case GroundinglineFrictionInterpolationEnum : return "GroundinglineFrictionInterpolation";
     250                case GroundinglineIntrusionDistanceEnum : return "GroundinglineIntrusionDistance";
    250251                case GroundinglineMeltInterpolationEnum : return "GroundinglineMeltInterpolation";
    251252                case GroundinglineMigrationEnum : return "GroundinglineMigration";
     
    339340                case InversionStopFlagEnum : return "InversionStopFlag";
    340341                case InversionTypeEnum : return "InversionType";
     342                case IoConstantEnum : return "IoConstant";
    341343                case IvinsEnum : return "Ivins";
    342344                case IsSlcCouplingEnum : return "IsSlcCoupling";
     
    870872                case FrontalForcingsSubglacialDischargeEnum : return "FrontalForcingsSubglacialDischarge";
    871873                case GeometryHydrostaticRatioEnum : return "GeometryHydrostaticRatio";
    872                 case GroundinglineIntrusionDistanceEnum : return "GroundinglineIntrusionDistance";
    873874                case NGiaEnum : return "NGia";
    874875                case NGiaRateEnum : return "NGiaRate";
     
    928929                case InversionVxObsEnum : return "InversionVxObs";
    929930                case InversionVyObsEnum : return "InversionVyObs";
    930                 case IntrusionMeltEnum : return "IntrusionMelt";
    931931                case LevelsetfunctionSlopeXEnum : return "LevelsetfunctionSlopeX";
    932932                case LevelsetfunctionSlopeYEnum : return "LevelsetfunctionSlopeY";
     
    17441744                case SubelementFriction1Enum : return "SubelementFriction1";
    17451745                case SubelementFriction2Enum : return "SubelementFriction2";
     1746                case IntrusionMeltEnum : return "IntrusionMelt";
    17461747                case SubelementMelt1Enum : return "SubelementMelt1";
    17471748                case SubelementMelt2Enum : return "SubelementMelt2";
  • issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim

    r28115 r28145  
    239239syn keyword juliaConstC GrdModelEnum
    240240syn keyword juliaConstC GroundinglineFrictionInterpolationEnum
     241syn keyword juliaConstC GroundinglineIntrusionDistanceEnum
    241242syn keyword juliaConstC GroundinglineMeltInterpolationEnum
    242243syn keyword juliaConstC GroundinglineMigrationEnum
     
    330331syn keyword juliaConstC InversionStopFlagEnum
    331332syn keyword juliaConstC InversionTypeEnum
     333syn keyword juliaConstC IoConstantEnum
    332334syn keyword juliaConstC IvinsEnum
    333335syn keyword juliaConstC IsSlcCouplingEnum
     
    861863syn keyword juliaConstC FrontalForcingsSubglacialDischargeEnum
    862864syn keyword juliaConstC GeometryHydrostaticRatioEnum
    863 syn keyword juliaConstC GroundinglineIntrusionDistanceEnum
    864865syn keyword juliaConstC NGiaEnum
    865866syn keyword juliaConstC NGiaRateEnum
     
    919920syn keyword juliaConstC InversionVxObsEnum
    920921syn keyword juliaConstC InversionVyObsEnum
    921 syn keyword juliaConstC IntrusionMeltEnum
    922922syn keyword juliaConstC LevelsetfunctionSlopeXEnum
    923923syn keyword juliaConstC LevelsetfunctionSlopeYEnum
     
    17351735syn keyword juliaConstC SubelementFriction1Enum
    17361736syn keyword juliaConstC SubelementFriction2Enum
     1737syn keyword juliaConstC IntrusionMeltEnum
    17371738syn keyword juliaConstC SubelementMelt1Enum
    17381739syn keyword juliaConstC SubelementMelt2Enum
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r28115 r28145  
    251251              else if (strcmp(name,"GrdModel")==0) return GrdModelEnum;
    252252              else if (strcmp(name,"GroundinglineFrictionInterpolation")==0) return GroundinglineFrictionInterpolationEnum;
     253              else if (strcmp(name,"GroundinglineIntrusionDistance")==0) return GroundinglineIntrusionDistanceEnum;
    253254              else if (strcmp(name,"GroundinglineMeltInterpolation")==0) return GroundinglineMeltInterpolationEnum;
    254255              else if (strcmp(name,"GroundinglineMigration")==0) return GroundinglineMigrationEnum;
     
    259260              else if (strcmp(name,"Hydrologyarmadatebreaks")==0) return HydrologyarmadatebreaksEnum;
    260261              else if (strcmp(name,"Hydrologyarmamalagcoefs")==0) return HydrologyarmamalagcoefsEnum;
    261               else if (strcmp(name,"HydrologyarmamaOrder")==0) return HydrologyarmamaOrderEnum;
    262262         else stage=3;
    263263   }
    264264   if(stage==3){
    265               if (strcmp(name,"HydrologyarmaMonthlyFactors")==0) return HydrologyarmaMonthlyFactorsEnum;
     265              if (strcmp(name,"HydrologyarmamaOrder")==0) return HydrologyarmamaOrderEnum;
     266              else if (strcmp(name,"HydrologyarmaMonthlyFactors")==0) return HydrologyarmaMonthlyFactorsEnum;
    266267              else if (strcmp(name,"HydrologyarmaNumBreaks")==0) return HydrologyarmaNumBreaksEnum;
    267268              else if (strcmp(name,"HydrologyarmaNumParams")==0) return HydrologyarmaNumParamsEnum;
     
    345346              else if (strcmp(name,"InversionStopFlag")==0) return InversionStopFlagEnum;
    346347              else if (strcmp(name,"InversionType")==0) return InversionTypeEnum;
     348              else if (strcmp(name,"IoConstant")==0) return IoConstantEnum;
    347349              else if (strcmp(name,"Ivins")==0) return IvinsEnum;
    348350              else if (strcmp(name,"IsSlcCoupling")==0) return IsSlcCouplingEnum;
     
    381383              else if (strcmp(name,"LoveHypergeomNZ")==0) return LoveHypergeomNZEnum;
    382384              else if (strcmp(name,"LoveHypergeomNAlpha")==0) return LoveHypergeomNAlphaEnum;
    383               else if (strcmp(name,"MassFluxSegments")==0) return MassFluxSegmentsEnum;
    384               else if (strcmp(name,"MassFluxSegmentsPresent")==0) return MassFluxSegmentsPresentEnum;
    385385         else stage=4;
    386386   }
    387387   if(stage==4){
    388               if (strcmp(name,"MasstransportHydrostaticAdjustment")==0) return MasstransportHydrostaticAdjustmentEnum;
     388              if (strcmp(name,"MassFluxSegments")==0) return MassFluxSegmentsEnum;
     389              else if (strcmp(name,"MassFluxSegmentsPresent")==0) return MassFluxSegmentsPresentEnum;
     390              else if (strcmp(name,"MasstransportHydrostaticAdjustment")==0) return MasstransportHydrostaticAdjustmentEnum;
    389391              else if (strcmp(name,"MasstransportIsfreesurface")==0) return MasstransportIsfreesurfaceEnum;
    390392              else if (strcmp(name,"MasstransportMinThickness")==0) return MasstransportMinThicknessEnum;
     
    504506              else if (strcmp(name,"SealevelchangePolarMotionTransferFunctionOrthogonal")==0) return SealevelchangePolarMotionTransferFunctionOrthogonalEnum;
    505507              else if (strcmp(name,"SealevelchangePolarMotionTransferFunctionZ")==0) return SealevelchangePolarMotionTransferFunctionZEnum;
    506               else if (strcmp(name,"SealevelchangeTidalK2")==0) return SealevelchangeTidalK2Enum;
    507               else if (strcmp(name,"SealevelchangeTidalH2")==0) return SealevelchangeTidalH2Enum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"SealevelchangeTidalL2")==0) return SealevelchangeTidalL2Enum;
     511              if (strcmp(name,"SealevelchangeTidalK2")==0) return SealevelchangeTidalK2Enum;
     512              else if (strcmp(name,"SealevelchangeTidalH2")==0) return SealevelchangeTidalH2Enum;
     513              else if (strcmp(name,"SealevelchangeTidalL2")==0) return SealevelchangeTidalL2Enum;
    512514              else if (strcmp(name,"SolidearthSettingsSealevelLoading")==0) return SolidearthSettingsSealevelLoadingEnum;
    513515              else if (strcmp(name,"SolidearthSettingsGRD")==0) return SolidearthSettingsGRDEnum;
     
    627629              else if (strcmp(name,"SmbSemicTauA")==0) return SmbSemicTauAEnum;
    628630              else if (strcmp(name,"SmbSemicTauF")==0) return SmbSemicTauFEnum;
    629               else if (strcmp(name,"SmbSemicTmin")==0) return SmbSemicTminEnum;
    630               else if (strcmp(name,"SmbSemicTmid")==0) return SmbSemicTmidEnum;
    631631         else stage=6;
    632632   }
    633633   if(stage==6){
    634               if (strcmp(name,"SmbSemicTmax")==0) return SmbSemicTmaxEnum;
     634              if (strcmp(name,"SmbSemicTmin")==0) return SmbSemicTminEnum;
     635              else if (strcmp(name,"SmbSemicTmid")==0) return SmbSemicTmidEnum;
     636              else if (strcmp(name,"SmbSemicTmax")==0) return SmbSemicTmaxEnum;
    635637              else if (strcmp(name,"SmbStepsPerStep")==0) return SmbStepsPerStepEnum;
    636638              else if (strcmp(name,"SmbSwIdx")==0) return SmbSwIdxEnum;
     
    750752              else if (strcmp(name,"BasalforcingsGeothermalflux")==0) return BasalforcingsGeothermalfluxEnum;
    751753              else if (strcmp(name,"BasalforcingsGroundediceMeltingRate")==0) return BasalforcingsGroundediceMeltingRateEnum;
    752               else if (strcmp(name,"BasalforcingsGroundediceMeltingRateObs")==0) return BasalforcingsGroundediceMeltingRateObsEnum;
    753               else if (strcmp(name,"BasalforcingsLinearBasinId")==0) return BasalforcingsLinearBasinIdEnum;
    754754         else stage=7;
    755755   }
    756756   if(stage==7){
    757               if (strcmp(name,"BasalforcingsPerturbationMeltingRate")==0) return BasalforcingsPerturbationMeltingRateEnum;
     757              if (strcmp(name,"BasalforcingsGroundediceMeltingRateObs")==0) return BasalforcingsGroundediceMeltingRateObsEnum;
     758              else if (strcmp(name,"BasalforcingsLinearBasinId")==0) return BasalforcingsLinearBasinIdEnum;
     759              else if (strcmp(name,"BasalforcingsPerturbationMeltingRate")==0) return BasalforcingsPerturbationMeltingRateEnum;
    758760              else if (strcmp(name,"BasalforcingsSpatialDeepwaterElevation")==0) return BasalforcingsSpatialDeepwaterElevationEnum;
    759761              else if (strcmp(name,"BasalforcingsSpatialDeepwaterMeltingRate")==0) return BasalforcingsSpatialDeepwaterMeltingRateEnum;
     
    873875              else if (strcmp(name,"FrictionCoefficientcoulomb")==0) return FrictionCoefficientcoulombEnum;
    874876              else if (strcmp(name,"FrictionEffectivePressure")==0) return FrictionEffectivePressureEnum;
    875               else if (strcmp(name,"FrictionK")==0) return FrictionKEnum;
    876               else if (strcmp(name,"FrictionM")==0) return FrictionMEnum;
    877877         else stage=8;
    878878   }
    879879   if(stage==8){
    880               if (strcmp(name,"FrictionP")==0) return FrictionPEnum;
     880              if (strcmp(name,"FrictionK")==0) return FrictionKEnum;
     881              else if (strcmp(name,"FrictionM")==0) return FrictionMEnum;
     882              else if (strcmp(name,"FrictionP")==0) return FrictionPEnum;
    881883              else if (strcmp(name,"FrictionPressureAdjustedTemperature")==0) return FrictionPressureAdjustedTemperatureEnum;
    882884              else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;
     
    891893              else if (strcmp(name,"FrontalForcingsSubglacialDischarge")==0) return FrontalForcingsSubglacialDischargeEnum;
    892894              else if (strcmp(name,"GeometryHydrostaticRatio")==0) return GeometryHydrostaticRatioEnum;
    893               else if (strcmp(name,"GroundinglineIntrusionDistance")==0) return GroundinglineIntrusionDistanceEnum;
    894895              else if (strcmp(name,"NGia")==0) return NGiaEnum;
    895896              else if (strcmp(name,"NGiaRate")==0) return NGiaRateEnum;
     
    949950              else if (strcmp(name,"InversionVxObs")==0) return InversionVxObsEnum;
    950951              else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum;
    951               else if (strcmp(name,"IntrusionMelt")==0) return IntrusionMeltEnum;
    952952              else if (strcmp(name,"LevelsetfunctionSlopeX")==0) return LevelsetfunctionSlopeXEnum;
    953953              else if (strcmp(name,"LevelsetfunctionSlopeY")==0) return LevelsetfunctionSlopeYEnum;
     
    17861786              else if (strcmp(name,"SubelementFriction1")==0) return SubelementFriction1Enum;
    17871787              else if (strcmp(name,"SubelementFriction2")==0) return SubelementFriction2Enum;
     1788              else if (strcmp(name,"IntrusionMelt")==0) return IntrusionMeltEnum;
    17881789              else if (strcmp(name,"SubelementMelt1")==0) return SubelementMelt1Enum;
    17891790              else if (strcmp(name,"SubelementMelt2")==0) return SubelementMelt2Enum;
Note: See TracChangeset for help on using the changeset viewer.