Changeset 26196


Ignore:
Timestamp:
04/16/21 10:47:27 (4 years ago)
Author:
Mathieu Morlighem
Message:

CHG: preparing for cycling forcing

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

Legend:

Unmodified
Added
Removed
  • TabularUnified issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp

    r26047 r26196  
    218218        int     numoutputs;
    219219        char**  requestedoutputs = NULL;
    220         bool    isdelta18o,ismungsm,isd18opd,issetpddfac,interp,isfirnwarming;
     220        bool    isdelta18o,ismungsm,isd18opd,issetpddfac,interp,cycle,isfirnwarming;
    221221        int     smb_model, smbslices, averaging;
    222222        IssmDouble *temp = NULL;
     
    227227        iomodel->FindConstant(&smb_model,"md.smb.model");
    228228        iomodel->FindConstant(&interp,"md.timestepping.interp_forcings");
     229        iomodel->FindConstant(&cycle,"md.timestepping.cycle_forcing");
    229230
    230231        iomodel->FindConstant(&smbslices,"md.smb.steps_per_step");
     
    273274                        if(ismungsm){
    274275                          iomodel->FetchData(&temp,&N,&M,"md.smb.Pfac"); _assert_(N==2);
    275                           parameters->AddObject(new TransientParam(SmbPfacEnum,&temp[0],&temp[M],interp,M));
     276                          parameters->AddObject(new TransientParam(SmbPfacEnum,&temp[0],&temp[M],interp,cycle,M));
    276277                          iomodel->DeleteData(temp,"md.smb.Pfac");
    277278
    278279                          iomodel->FetchData(&temp,&N,&M,"md.smb.Tdiff"); _assert_(N==2);
    279                           parameters->AddObject(new TransientParam(SmbTdiffEnum,&temp[0],&temp[M],interp,M));
     280                          parameters->AddObject(new TransientParam(SmbTdiffEnum,&temp[0],&temp[M],interp,cycle,M));
    280281                          iomodel->DeleteData(temp,"md.smb.Tdiff");
    281282
    282283                          iomodel->FetchData(&temp,&N,&M,"md.smb.sealev"); _assert_(N==2);
    283                           parameters->AddObject(new TransientParam(SmbSealevEnum,&temp[0],&temp[M],interp,M));
     284                          parameters->AddObject(new TransientParam(SmbSealevEnum,&temp[0],&temp[M],interp,cycle,M));
    284285                          iomodel->DeleteData(temp,"md.smb.sealev");
    285286                        }
    286287                        if(isdelta18o){
    287288                                iomodel->FetchData(&temp,&N,&M,"md.smb.delta18o"); _assert_(N==2);
    288                                 parameters->AddObject(new TransientParam(SmbDelta18oEnum,&temp[0],&temp[M],interp,M));
     289                                parameters->AddObject(new TransientParam(SmbDelta18oEnum,&temp[0],&temp[M],interp,cycle,M));
    289290                                iomodel->DeleteData(temp,"md.smb.delta18o");
    290291
    291292                                iomodel->FetchData(&temp,&N,&M,"md.smb.delta18o_surface"); _assert_(N==2);
    292                                 parameters->AddObject(new TransientParam(SmbDelta18oSurfaceEnum,&temp[0],&temp[M],interp,M));
     293                                parameters->AddObject(new TransientParam(SmbDelta18oSurfaceEnum,&temp[0],&temp[M],interp,cycle,M));
    293294                                iomodel->DeleteData(temp,"md.smb.delta18o_surface");
    294295                        }
     
    310311                                parameters->AddObject(iomodel->CopyConstantObject("md.smb.isprecipscaled",SmbIsprecipscaledEnum));
    311312                                iomodel->FetchData(&temp,&N,&M,"md.smb.delta18o"); _assert_(N==2);
    312                                 parameters->AddObject(new TransientParam(SmbDelta18oEnum,&temp[0],&temp[M],interp,M));
     313                                parameters->AddObject(new TransientParam(SmbDelta18oEnum,&temp[0],&temp[M],interp,cycle,M));
    313314                                iomodel->DeleteData(temp,"md.smb.delta18o");
    314315
     
    391392
    392393                                iomodel->FetchData(&temp,&N,&M,"md.smb.accugrad"); _assert_(N==2);
    393                                 parameters->AddObject(new TransientParam(SmbAccugradEnum,&temp[0],&temp[M],interp,M));
     394                                parameters->AddObject(new TransientParam(SmbAccugradEnum,&temp[0],&temp[M],interp,cycle,M));
    394395                                iomodel->DeleteData(temp,"md.smb.accugrad");
    395396                                iomodel->FetchData(&temp,&N,&M,"md.smb.runoffgrad"); _assert_(N==2);
    396                                 parameters->AddObject(new TransientParam(SmbRunoffgradEnum,&temp[0],&temp[M],interp,M));
     397                                parameters->AddObject(new TransientParam(SmbRunoffgradEnum,&temp[0],&temp[M],interp,cycle,M));
    397398                                iomodel->DeleteData(temp,"md.smb.runoffgrad");
    398399
    399400                                iomodel->FetchData(&temp,&N,&M,"md.smb.accuref"); _assert_(N==2);
    400                                 parameters->AddObject(new TransientParam(SmbAccurefEnum,&temp[0],&temp[M],interp,M));
     401                                parameters->AddObject(new TransientParam(SmbAccurefEnum,&temp[0],&temp[M],interp,cycle,M));
    401402                                iomodel->DeleteData(temp,"md.smb.accuref");
    402403                                iomodel->FetchData(&temp,&N,&M,"md.smb.runoffref"); _assert_(N==2);
    403                                 parameters->AddObject(new TransientParam(SmbRunoffrefEnum,&temp[0],&temp[M],interp,M));
     404                                parameters->AddObject(new TransientParam(SmbRunoffrefEnum,&temp[0],&temp[M],interp,cycle,M));
    404405                                iomodel->DeleteData(temp,"md.smb.runoffref");
    405406                        break;
  • TabularUnified issm/trunk-jpl/src/c/classes/Inputs/TransientInput.cpp

    r26170 r26196  
    416416
    417417        /*First, recover current time from parameters: */
    418         bool linear_interp;
     418        bool linear_interp,cycle;
    419419        this->parameters->FindParam(&linear_interp,TimesteppingInterpForcingsEnum);
     420        this->parameters->FindParam(&cycle,TimesteppingCycleForcingEnum);
     421
     422        if(cycle) _error_("not implemented yet");
    420423
    421424        /*Figure step out*/
  • TabularUnified issm/trunk-jpl/src/c/classes/Inputs/TransientInput.h

    r25508 r26196  
    1818
    1919        public:
    20                 int         enum_type;
    21                 int         numtimesteps;
    22                 Input**    inputs;
    23                 IssmDouble *timesteps;
    24                 Parameters *parameters;     //to find current time.
     20                int          enum_type;
     21                int          numtimesteps;
     22                Input      **inputs;
     23                IssmDouble  *timesteps;
     24                Parameters  *parameters;      //to find current time.
    2525
    26                 IssmDouble  current_step;
    27                 Input*     current_input;
     26                IssmDouble   current_step;
     27                Input       *current_input;
    2828
    2929                /*TransientInput constructors, destructors: {{{*/
  • TabularUnified issm/trunk-jpl/src/c/classes/Params/TransientArrayParam.cpp

    r25508 r26196  
    2020}
    2121/*}}}*/
    22 TransientArrayParam::TransientArrayParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_on,int in_N,int in_M){/*{{{*/
     22TransientArrayParam::TransientArrayParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_on,bool cycle_in,int in_N,int in_M){/*{{{*/
    2323
    2424        _assert_(in_values && in_time);
     
    2828        this->N=in_N; //Number of timesteps
    2929        this->interpolation=interpolation_on;
     30        this->cycle=cycle_in;
    3031
    3132        this->values=xNew<IssmDouble>(M*N);
    32         xMemCpy<IssmDouble>(values,in_values,M*N);
     33        xMemCpy<IssmDouble>(this->values,in_values,M*N);
    3334
    3435        this->timesteps=xNew<IssmDouble>(N);
    35         xMemCpy<IssmDouble>(timesteps,in_time,N);
     36        xMemCpy<IssmDouble>(this->timesteps,in_time,N);
    3637}
    3738/*}}}*/
     
    4445Param* TransientArrayParam::copy() {/*{{{*/
    4546
    46         return new TransientArrayParam(this->enum_type,this->values,this->timesteps,this->interpolation,this->M,this->N);
     47        return new TransientArrayParam(this->enum_type,this->values,this->timesteps,this->interpolation,this->cycle,this->M,this->N);
    4748
    4849}
     
    8081        marshallhandle->call(this->enum_type);
    8182        marshallhandle->call(this->interpolation);
     83        marshallhandle->call(this->cycle);
    8284        marshallhandle->call(this->M);
    8385        marshallhandle->call(this->N);
     
    102104        bool       found;
    103105        _assert_(row>=0 && row<this->M);
     106
     107        if(this->cycle) _error_("not implemented yet");
    104108
    105109        /*Ok, we have the time and row, go through the timesteps, and figure out which interval we
     
    129133                                        IssmDouble deltat = this->timesteps[i+1]-this->timesteps[i];
    130134                                        IssmDouble alpha  = (time-this->timesteps[i])/deltat;
    131                                         if(interpolation==true) output=(1.0-alpha)*this->values[row*this->N+i] + alpha*this->values[row*this->N+i+1];
     135                                        if(this->interpolation==true) output=(1.0-alpha)*this->values[row*this->N+i] + alpha*this->values[row*this->N+i+1];
    132136                                        else output=this->values[row*this->N+i];
    133137                                        found=true;
  • TabularUnified issm/trunk-jpl/src/c/classes/Params/TransientArrayParam.h

    r25508 r26196  
    2525                int         M;
    2626                bool        interpolation;
     27                bool        cycle;
    2728                IssmDouble *values;
    2829                IssmDouble *timesteps;
     
    3132                /*TransientArrayParam constructors, destructors: {{{*/
    3233                TransientArrayParam();
    33                 TransientArrayParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_on,int in_N,int in_M);
     34                TransientArrayParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_on,bool cycle_in,int in_N,int in_M);
    3435                ~TransientArrayParam();
    3536                /*}}}*/
  • TabularUnified issm/trunk-jpl/src/c/classes/Params/TransientParam.cpp

    r25508 r26196  
    2020}
    2121/*}}}*/
    22 TransientParam::TransientParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_on,int in_N){/*{{{*/
     22TransientParam::TransientParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_on,bool cycle_in,int in_N){/*{{{*/
    2323
    2424        _assert_(in_values && in_time);
    2525
    26         enum_type=in_enum_type;
    27         N=in_N;
    28         interpolation=interpolation_on;
     26        this->enum_type=in_enum_type;
     27        this->N=in_N;
     28        this->interpolation=interpolation_on;
     29        this->cycle=cycle_in;
    2930
    30         values=xNew<IssmDouble>(N);
    31         xMemCpy<IssmDouble>(values,in_values,N);
     31        this->values=xNew<IssmDouble>(N);
     32        xMemCpy<IssmDouble>(this->values,in_values,N);
    3233
    33         timesteps=xNew<IssmDouble>(N);
    34         xMemCpy<IssmDouble>(timesteps,in_time,N);
     34        this->timesteps=xNew<IssmDouble>(N);
     35        xMemCpy<IssmDouble>(this->timesteps,in_time,N);
    3536}
    3637/*}}}*/
     
    4445Param* TransientParam::copy() {/*{{{*/
    4546
    46         return new TransientParam(this->enum_type,this->values,this->timesteps,this->interpolation,this->N);
     47        return new TransientParam(this->enum_type,this->values,this->timesteps,this->interpolation,this->cycle,this->N);
    4748
    4849}
     
    7576        marshallhandle->call(this->enum_type);
    7677        marshallhandle->call(this->interpolation);
     78        marshallhandle->call(this->cycle);
    7779        marshallhandle->call(this->N);
    7880        if(marshallhandle->OperationNumber()==MARSHALLING_LOAD){
     
    9799        IssmDouble output;
    98100        bool   found;
     101
     102        if(this->cycle) _error_("not implemented yet!");
    99103
    100104        /*Ok, we have the time, go through the timesteps, and figure out which interval we
     
    124128                                        IssmDouble deltat=this->timesteps[i+1]-this->timesteps[i];
    125129                                        IssmDouble alpha=(time-this->timesteps[i])/deltat;
    126                                         if(interpolation==true) output=(1.0-alpha)*this->values[i] + alpha*this->values[i+1];
     130                                        if(this->interpolation==true) output=(1.0-alpha)*this->values[i] + alpha*this->values[i+1];
    127131                                        else output=this->values[i];
    128132                                        found=true;
  • TabularUnified issm/trunk-jpl/src/c/classes/Params/TransientParam.h

    r25508 r26196  
    2424                int         N;
    2525                bool        interpolation;
     26                bool        cycle;
    2627                IssmDouble *values;
    2728                IssmDouble *timesteps;
     
    3031                /*TransientParam constructors, destructors: {{{*/
    3132                TransientParam();
    32                 TransientParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_on,int in_N);
     33                TransientParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_in,bool cycle_in,int in_N);
    3334                ~TransientParam();
    3435                /*}}}*/
  • TabularUnified issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r26097 r26196  
    3030        bool         autodiff_mass_flux_present = false;
    3131        bool         mass_flux_present          = false;
    32         bool         interp;
     32        bool         interp,cycle;
    3333        IssmDouble **array                      = NULL;
    3434        int         *mdims_array                = NULL;
     
    160160                case LinearFloatingMeltRateEnum:
    161161                        iomodel->FindConstant(&interp,"md.timestepping.interp_forcings");
     162                        iomodel->FindConstant(&cycle,"md.timestepping.cycle_forcing");
    162163                        iomodel->FetchData(&transparam,&N,&M,"md.basalforcings.deepwater_melting_rate");
    163164                        if(N==1){
     
    167168                        else{
    168169                                _assert_(N==2);
    169                                 parameters->AddObject(new TransientParam(BasalforcingsDeepwaterMeltingRateEnum,&transparam[0],&transparam[M],interp,M));
     170                                parameters->AddObject(new TransientParam(BasalforcingsDeepwaterMeltingRateEnum,&transparam[0],&transparam[M],interp,cycle,M));
    170171                        }
    171172                        xDelete<IssmDouble>(transparam);
     
    177178                        else{
    178179                                _assert_(N==2);
    179                                 parameters->AddObject(new TransientParam(BasalforcingsUpperwaterMeltingRateEnum,&transparam[0],&transparam[M],interp,M));
     180                                parameters->AddObject(new TransientParam(BasalforcingsUpperwaterMeltingRateEnum,&transparam[0],&transparam[M],interp,cycle,M));
    180181                        }
    181182                        xDelete<IssmDouble>(transparam);
     
    187188                        else{
    188189                                _assert_(N==2);
    189                                 parameters->AddObject(new TransientParam(BasalforcingsDeepwaterElevationEnum,&transparam[0],&transparam[M],interp,M));
     190                                parameters->AddObject(new TransientParam(BasalforcingsDeepwaterElevationEnum,&transparam[0],&transparam[M],interp,cycle,M));
    190191                        }
    191192                        xDelete<IssmDouble>(transparam);
     
    197198                        else{
    198199                                _assert_(N==2);
    199                                 parameters->AddObject(new TransientParam(BasalforcingsUpperwaterElevationEnum,&transparam[0],&transparam[M],interp,M));
     200                                parameters->AddObject(new TransientParam(BasalforcingsUpperwaterElevationEnum,&transparam[0],&transparam[M],interp,cycle,M));
    200201                        }
    201202                        xDelete<IssmDouble>(transparam);
     
    224225                case BasalforcingsPicoEnum:
    225226                        iomodel->FindConstant(&interp,"md.timestepping.interp_forcings");
     227                        iomodel->FindConstant(&cycle,"md.timestepping.cycle_forcing");
    226228                        parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.num_basins",BasalforcingsPicoNumBasinsEnum));
    227229                        parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.maxboxcount",BasalforcingsPicoMaxboxcountEnum));
     
    230232                        iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.farocean_temperature");
    231233                        _assert_(M>=1 && N>=1);
    232                         parameters->AddObject(new TransientArrayParam(BasalforcingsPicoFarOceantemperatureEnum,transparam,&transparam[N*(M-1)],interp,N,M));
     234                        parameters->AddObject(new TransientArrayParam(BasalforcingsPicoFarOceantemperatureEnum,transparam,&transparam[N*(M-1)],interp,cycle,N,M));
    233235                        xDelete<IssmDouble>(transparam);
    234236                        iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.farocean_salinity");
    235237                        _assert_(M>=1 && N>=1);
    236                         parameters->AddObject(new TransientArrayParam(BasalforcingsPicoFarOceansalinityEnum,transparam,&transparam[N*(M-1)],interp,N,M));
     238                        parameters->AddObject(new TransientArrayParam(BasalforcingsPicoFarOceansalinityEnum,transparam,&transparam[N*(M-1)],interp,cycle,N,M));
    237239                        xDelete<IssmDouble>(transparam);
    238240                        break;
     
    266268                        parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.time_step",TimesteppingTimeStepEnum));
    267269                        parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.interp_forcings",TimesteppingInterpForcingsEnum));
     270                        parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.cycle_forcing",TimesteppingCycleForcingEnum));
    268271                        parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.coupling_time",TimesteppingCouplingTimeEnum));
    269272                        break;
     
    275278                        parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.cfl_coefficient",TimesteppingCflCoefficientEnum));
    276279                        parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.interp_forcings",TimesteppingInterpForcingsEnum));
     280                        parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.cycle_forcing",TimesteppingCycleForcingEnum));
    277281                        parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.coupling_time",TimesteppingCouplingTimeEnum));
    278282                        break;
  • TabularUnified issm/trunk-jpl/src/c/shared/Enum/Enum.vim

    r26192 r26196  
    478478syn keyword cConstant TimesteppingFinalTimeEnum
    479479syn keyword cConstant TimesteppingInterpForcingsEnum
     480syn keyword cConstant TimesteppingCycleForcingEnum
    480481syn keyword cConstant TimesteppingStartTimeEnum
    481482syn keyword cConstant TimesteppingTimeStepEnum
  • TabularUnified issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r26192 r26196  
    472472        TimesteppingFinalTimeEnum,
    473473        TimesteppingInterpForcingsEnum,
     474        TimesteppingCycleForcingEnum,
    474475        TimesteppingStartTimeEnum,
    475476        TimesteppingTimeStepEnum,
  • TabularUnified issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r26192 r26196  
    480480                case TimesteppingFinalTimeEnum : return "TimesteppingFinalTime";
    481481                case TimesteppingInterpForcingsEnum : return "TimesteppingInterpForcings";
     482                case TimesteppingCycleForcingEnum : return "TimesteppingCycleForcing";
    482483                case TimesteppingStartTimeEnum : return "TimesteppingStartTime";
    483484                case TimesteppingTimeStepEnum : return "TimesteppingTimeStep";
  • TabularUnified issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r26192 r26196  
    489489              else if (strcmp(name,"TimesteppingFinalTime")==0) return TimesteppingFinalTimeEnum;
    490490              else if (strcmp(name,"TimesteppingInterpForcings")==0) return TimesteppingInterpForcingsEnum;
     491              else if (strcmp(name,"TimesteppingCycleForcing")==0) return TimesteppingCycleForcingEnum;
    491492              else if (strcmp(name,"TimesteppingStartTime")==0) return TimesteppingStartTimeEnum;
    492493              else if (strcmp(name,"TimesteppingTimeStep")==0) return TimesteppingTimeStepEnum;
     
    505506              else if (strcmp(name,"TransientIsgroundingline")==0) return TransientIsgroundinglineEnum;
    506507              else if (strcmp(name,"TransientIshydrology")==0) return TransientIshydrologyEnum;
    507               else if (strcmp(name,"TransientIsmasstransport")==0) return TransientIsmasstransportEnum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"TransientIsoceantransport")==0) return TransientIsoceantransportEnum;
     511              if (strcmp(name,"TransientIsmasstransport")==0) return TransientIsmasstransportEnum;
     512              else if (strcmp(name,"TransientIsoceantransport")==0) return TransientIsoceantransportEnum;
    512513              else if (strcmp(name,"TransientIsmovingfront")==0) return TransientIsmovingfrontEnum;
    513514              else if (strcmp(name,"TransientIsoceancoupling")==0) return TransientIsoceancouplingEnum;
     
    628629              else if (strcmp(name,"EplHead")==0) return EplHeadEnum;
    629630              else if (strcmp(name,"EplHeadOld")==0) return EplHeadOldEnum;
    630               else if (strcmp(name,"EplHeadSlopeX")==0) return EplHeadSlopeXEnum;
    631631         else stage=6;
    632632   }
    633633   if(stage==6){
    634               if (strcmp(name,"EplHeadSlopeY")==0) return EplHeadSlopeYEnum;
     634              if (strcmp(name,"EplHeadSlopeX")==0) return EplHeadSlopeXEnum;
     635              else if (strcmp(name,"EplHeadSlopeY")==0) return EplHeadSlopeYEnum;
    635636              else if (strcmp(name,"EplHeadSubstep")==0) return EplHeadSubstepEnum;
    636637              else if (strcmp(name,"EplHeadTransient")==0) return EplHeadTransientEnum;
     
    751752              else if (strcmp(name,"RadarIcePeriod")==0) return RadarIcePeriodEnum;
    752753              else if (strcmp(name,"RadarPowerMacGregor")==0) return RadarPowerMacGregorEnum;
    753               else if (strcmp(name,"RadarPowerWolff")==0) return RadarPowerWolffEnum;
    754754         else stage=7;
    755755   }
    756756   if(stage==7){
    757               if (strcmp(name,"RheologyBAbsGradient")==0) return RheologyBAbsGradientEnum;
     757              if (strcmp(name,"RadarPowerWolff")==0) return RadarPowerWolffEnum;
     758              else if (strcmp(name,"RheologyBAbsGradient")==0) return RheologyBAbsGradientEnum;
    758759              else if (strcmp(name,"RheologyBInitialguess")==0) return RheologyBInitialguessEnum;
    759760              else if (strcmp(name,"RheologyBInitialguessMisfit")==0) return RheologyBInitialguessMisfitEnum;
     
    874875              else if (strcmp(name,"SmbReini")==0) return SmbReiniEnum;
    875876              else if (strcmp(name,"SmbRunoff")==0) return SmbRunoffEnum;
    876               else if (strcmp(name,"SmbRunoffSubstep")==0) return SmbRunoffSubstepEnum;
    877877         else stage=8;
    878878   }
    879879   if(stage==8){
    880               if (strcmp(name,"SmbRunoffTransient")==0) return SmbRunoffTransientEnum;
     880              if (strcmp(name,"SmbRunoffSubstep")==0) return SmbRunoffSubstepEnum;
     881              else if (strcmp(name,"SmbRunoffTransient")==0) return SmbRunoffTransientEnum;
    881882              else if (strcmp(name,"SmbS0gcm")==0) return SmbS0gcmEnum;
    882883              else if (strcmp(name,"SmbS0p")==0) return SmbS0pEnum;
     
    997998              else if (strcmp(name,"Outputdefinition22")==0) return Outputdefinition22Enum;
    998999              else if (strcmp(name,"Outputdefinition23")==0) return Outputdefinition23Enum;
    999               else if (strcmp(name,"Outputdefinition24")==0) return Outputdefinition24Enum;
    10001000         else stage=9;
    10011001   }
    10021002   if(stage==9){
    1003               if (strcmp(name,"Outputdefinition25")==0) return Outputdefinition25Enum;
     1003              if (strcmp(name,"Outputdefinition24")==0) return Outputdefinition24Enum;
     1004              else if (strcmp(name,"Outputdefinition25")==0) return Outputdefinition25Enum;
    10041005              else if (strcmp(name,"Outputdefinition26")==0) return Outputdefinition26Enum;
    10051006              else if (strcmp(name,"Outputdefinition27")==0) return Outputdefinition27Enum;
     
    11201121              else if (strcmp(name,"CalvingHab")==0) return CalvingHabEnum;
    11211122              else if (strcmp(name,"CalvingLevermann")==0) return CalvingLevermannEnum;
    1122               else if (strcmp(name,"CalvingVonmises")==0) return CalvingVonmisesEnum;
    11231123         else stage=10;
    11241124   }
    11251125   if(stage==10){
    1126               if (strcmp(name,"Cfdragcoeffabsgrad")==0) return CfdragcoeffabsgradEnum;
     1126              if (strcmp(name,"CalvingVonmises")==0) return CalvingVonmisesEnum;
     1127              else if (strcmp(name,"Cfdragcoeffabsgrad")==0) return CfdragcoeffabsgradEnum;
    11271128              else if (strcmp(name,"Cfsurfacelogvel")==0) return CfsurfacelogvelEnum;
    11281129              else if (strcmp(name,"Cfsurfacesquare")==0) return CfsurfacesquareEnum;
     
    12431244              else if (strcmp(name,"IntParam")==0) return IntParamEnum;
    12441245              else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum;
    1245               else if (strcmp(name,"Inputs")==0) return InputsEnum;
    12461246         else stage=11;
    12471247   }
    12481248   if(stage==11){
    1249               if (strcmp(name,"Internal")==0) return InternalEnum;
     1249              if (strcmp(name,"Inputs")==0) return InputsEnum;
     1250              else if (strcmp(name,"Internal")==0) return InternalEnum;
    12501251              else if (strcmp(name,"Intersect")==0) return IntersectEnum;
    12511252              else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum;
     
    13661367              else if (strcmp(name,"SMBd18opdd")==0) return SMBd18opddEnum;
    13671368              else if (strcmp(name,"SMBforcing")==0) return SMBforcingEnum;
    1368               else if (strcmp(name,"SMBgcm")==0) return SMBgcmEnum;
    13691369         else stage=12;
    13701370   }
    13711371   if(stage==12){
    1372               if (strcmp(name,"SMBgemb")==0) return SMBgembEnum;
     1372              if (strcmp(name,"SMBgcm")==0) return SMBgcmEnum;
     1373              else if (strcmp(name,"SMBgemb")==0) return SMBgembEnum;
    13731374              else if (strcmp(name,"SMBgradients")==0) return SMBgradientsEnum;
    13741375              else if (strcmp(name,"SMBgradientscomponents")==0) return SMBgradientscomponentsEnum;
Note: See TracChangeset for help on using the changeset viewer.