Changeset 27510


Ignore:
Timestamp:
01/11/23 00:42:46 (2 years ago)
Author:
inwoo
Message:

CHG: fix SMB with SEMIC.

1) Update display of SMBsemic.m
2) Enable to use different albedo scheme in SEMIC.
3) Surface mass balance is from SMB_ice in SEMIC.
4) Enable to return surface mass balance of snow in SEMIC.

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

Legend:

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

    r27498 r27510  
    221221                        // assign initial SEMIC temperature from initialization class.
    222222                        if(VerboseSolution()) _printf0_("   smb semic: UpdateElements - temperature.\n");
    223                         iomodel->FetchDataToInput(inputs,elements,"md.initialization.temperature",TemperatureSEMICEnum);
     223                        iomodel->FetchDataToInput(inputs,elements,"md.initialization.temperature",TemperatureEnum);
    224224
    225225                        iomodel->FindConstant(&ismethod,"md.smb.ismethod");
    226226                        if (ismethod == 1){
    227                                 // initial albedo
    228                                 if(VerboseSolution()) _printf0_("   smb semic: UpdateElements - albedo.\n");
    229                                 iomodel->FetchDataToInput(inputs,elements,"md.smb.albedo",SmbAlbedoEnum);
    230                                 iomodel->FetchDataToInput(inputs,elements,"md.smb.albedo_snow",SmbAlbedoSnowEnum);
     227                                // initial albedo: TODO: this is not needed.
     228                                //if(VerboseSolution()) _printf0_("   smb semic: UpdateElements - albedo.\n");
     229                                iomodel->FetchDataToInput(inputs,elements,"md.smb.albedo",SmbAlbedoInitEnum);
     230                                iomodel->FetchDataToInput(inputs,elements,"md.smb.albedo_snow",SmbAlbedoSnowInitEnum);
    231231                                if(VerboseSolution()) _printf0_("   smb semic: UpdateElements - Hice/Hsnow.\n");
    232                                 iomodel->FetchDataToInput(inputs,elements,"md.smb.hice",SmbHIceEnum);
    233                                 iomodel->FetchDataToInput(inputs,elements,"md.smb.hsnow",SmbHSnowEnum);
     232                                iomodel->FetchDataToInput(inputs,elements,"md.smb.hice",SmbHIceInitEnum);
     233                                iomodel->FetchDataToInput(inputs,elements,"md.smb.hsnow",SmbHSnowInitEnum);
    234234
    235235                                // initial Temperature amplitude.
     
    456456                                parameters->AddObject(iomodel->CopyConstantObject("md.smb.albi",SmbAlbedoIceEnum));
    457457                                parameters->AddObject(iomodel->CopyConstantObject("md.smb.albl",SmbAlbedoLandEnum));
     458
     459                                //albedo parameter - slatter
     460                                parameters->AddObject(iomodel->CopyConstantObject("md.smb.tmin",SmbSemicTmaxEnum));
     461                                parameters->AddObject(iomodel->CopyConstantObject("md.smb.tmax",SmbSemicTminEnum));
     462
     463                                //albedo parameter - isba & denby
     464                                parameters->AddObject(iomodel->CopyConstantObject("md.smb.mcrit",SmbSemicMcritEnum));
     465                                //albedo parameter - isba
     466                                parameters->AddObject(iomodel->CopyConstantObject("md.smb.tau_a",SmbSemicTauAEnum));
     467                                parameters->AddObject(iomodel->CopyConstantObject("md.smb.tau_f",SmbSemicTauFEnum));
     468                                parameters->AddObject(iomodel->CopyConstantObject("md.smb.wcrit",SmbSemicWcritEnum));
     469                                //albedo parameter - alex
     470                                parameters->AddObject(iomodel->CopyConstantObject("md.smb.tmid",SmbSemicTmidEnum));
     471                                parameters->AddObject(iomodel->CopyConstantObject("md.smb.afac",SmbSemicAfacEnum));
    458472                        }
    459473                        /*Nothing to add to parameters*/
  • issm/trunk-jpl/src/c/classes/Elements/Element.cpp

    r27507 r27510  
    3030extern "C" void run_semic_(IssmDouble *sf_in, IssmDouble *rf_in, IssmDouble *swd_in, IssmDouble *lwd_in, IssmDouble *wind_in, IssmDouble *sp_in, IssmDouble *rhoa_in,
    3131                        IssmDouble *qq_in, IssmDouble *tt_in, IssmDouble *tsurf_out, IssmDouble *smb_out, IssmDouble *saccu_out, IssmDouble *smelt_out);
     32
    3233extern "C" void run_semic_transient_(IssmDouble *sf_in, IssmDouble *rf_in, IssmDouble *swd_in, IssmDouble *lwd_in, IssmDouble *wind_in, IssmDouble *sp_in, IssmDouble *rhoa_in,
    3334                        IssmDouble *qq_in, IssmDouble *tt_in, IssmDouble *tsurf_in, IssmDouble *tstic,
    3435                        IssmDouble *hcrit, IssmDouble *rcrit,
    3536                        IssmDouble *mask, IssmDouble *hice, IssmDouble *hsnow,
    36                         IssmDouble *albedo, IssmDouble *albedo_snow, int *alb_scheme, IssmDouble *alb_smax, IssmDouble *alb_smin, IssmDouble *albi, IssmDouble *albl,
     37                        IssmDouble *albedo_in, IssmDouble *albedo_snow_in,
     38                        int *alb_scheme, IssmDouble *alb_smax, IssmDouble *alb_smin, IssmDouble *albi, IssmDouble *albl,
    3739                        IssmDouble *Tamp,
    38                         IssmDouble *tsurf_out, IssmDouble *smb_out, IssmDouble *saccu_out, IssmDouble *smelt_out, IssmDouble *albedo_out, IssmDouble *albedo_snow_out, IssmDouble *hsnow_out, IssmDouble *hice_out);
     40                        IssmDouble *tmin, IssmDouble *tmax, IssmDouble *tmid, IssmDouble *mcrit, IssmDouble *wcrit, IssmDouble *tau_a, IssmDouble* tau_f, IssmDouble *afac,
     41                        IssmDouble *tsurf_out, IssmDouble *smb_out, IssmDouble *smbi_out, IssmDouble *smbs_out, IssmDouble *saccu_out, IssmDouble *smelt_out, IssmDouble *albedo_out, IssmDouble *albedo_snow_out, IssmDouble *hsnow_out, IssmDouble *hice_out);
    3942#endif
    4043// _HAVE_SEMIC_
     
    42544257        IssmDouble* tsurf_out  =xNew<IssmDouble>(NUM_VERTICES); memset(tsurf_out, 0., NUM_VERTICES*sizeof(IssmDouble));
    42554258        IssmDouble* smb_out    =xNew<IssmDouble>(NUM_VERTICES); memset(smb_out, 0., NUM_VERTICES*sizeof(IssmDouble));
     4259        IssmDouble* smbi_out   =xNew<IssmDouble>(NUM_VERTICES); memset(smb_out, 0., NUM_VERTICES*sizeof(IssmDouble));
     4260        IssmDouble* smbs_out   =xNew<IssmDouble>(NUM_VERTICES); memset(smb_out, 0., NUM_VERTICES*sizeof(IssmDouble));
    42564261        IssmDouble* saccu_out  =xNew<IssmDouble>(NUM_VERTICES); memset(saccu_out, 0., NUM_VERTICES*sizeof(IssmDouble));
    42574262        IssmDouble* smelt_out  =xNew<IssmDouble>(NUM_VERTICES); memset(smelt_out, 0., NUM_VERTICES*sizeof(IssmDouble));
     
    42634268        IssmDouble rho_water,rho_ice,desfac,desfacElev,rlaps,rdl;
    42644269        IssmDouble alb_smax, alb_smin, albi, albl;
     4270        IssmDouble hcrit, rcrit; // parameters for ? and refreezing.
    42654271        int alb_scheme;
    4266         IssmDouble hcrit, rcrit;
    4267 
    4268         IssmDouble time,yts,time_yr,dt;
     4272        // albedo parameters - slatter
     4273        IssmDouble tmin, tmax;
     4274        // albedo parameters - isba
     4275        IssmDouble mcrit, tau_a, tau_f, wcrit;
     4276        // albedo parameters - alex
     4277        IssmDouble tmid, afac;
     4278
     4279        IssmDouble tstart, time,yts,time_yr,dt;
    42694280
    42704281        /* Get time: */
     
    42724283        this->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
    42734284        this->parameters->FindParam(&yts,ConstantsYtsEnum);
     4285        this->parameters->FindParam(&tstart,TimesteppingStartTimeEnum);
    42744286        time_yr=floor(time/yts)*yts;
    42754287        //dt = dt * yts;
    42764288
    42774289        /*Get material parameters :*/
    4278         rho_water=this->FindParam(MaterialsRhoSeawaterEnum);
     4290        rho_water=this->FindParam(MaterialsRhoFreshwaterEnum);
    42794291        rho_ice=this->FindParam(MaterialsRhoIceEnum);
    42804292        desfac=this->FindParam(SmbDesfacEnum);
     
    42904302        albi=this->FindParam(SmbAlbedoIceEnum);
    42914303        albl=this->FindParam(SmbAlbedoLandEnum);
     4304
     4305        // albedo parameters
     4306        this->FindParam(&tmid,SmbSemicTmidEnum);
     4307        this->FindParam(&tmin,SmbSemicTminEnum);
     4308        this->FindParam(&tmax,SmbSemicTmaxEnum);
     4309        this->FindParam(&mcrit,SmbSemicMcritEnum);
     4310        this->FindParam(&wcrit,SmbSemicWcritEnum);
     4311        this->FindParam(&tau_a,SmbSemicTauAEnum);
     4312        this->FindParam(&tau_f,SmbSemicTauFEnum);
     4313        this->FindParam(&afac,SmbSemicAfacEnum);
    42924314
    42934315        /* Recover info at the vertices: */
     
    43144336        Input* dailytemperature_input = this->GetInput(SmbDailytemperatureEnum,time); _assert_(dailytemperature_input);
    43154337
    4316         Input* tsurf_input            = this->GetInput(TemperatureSEMICEnum); _assert_(tsurf_in);
     4338        /*temporal Enum depending on time*/
     4339        int enum_temp =TemperatureSEMICEnum;
     4340        int enum_hice =SmbHIceEnum;
     4341        int enum_hsnow=SmbHSnowEnum;
     4342        int enum_albedo=SmbAlbedoEnum;
     4343        int enum_albedo_snow=SmbAlbedoSnowEnum;
     4344        if (tstart+dt == time) {
     4345                /* Load inital value at first time step*/
     4346                enum_temp=TemperatureEnum;
     4347                enum_hice=SmbHIceInitEnum;
     4348                enum_hsnow=SmbHSnowInitEnum;
     4349                enum_albedo=SmbAlbedoInitEnum;
     4350                enum_albedo_snow=SmbAlbedoSnowInitEnum;
     4351        }
     4352        Input* tsurf_input       = this->GetInput(enum_temp); _assert_(tsurf_in);
    43174353        Input* mask_input        = this->GetInput(SmbMaskEnum); _assert_(mask_input);
    43184354        Input* Tamp_input        = this->GetInput(SmbTampEnum); _assert_(Tamp_input);
    4319         Input* albedo_input      = this->GetInput(SmbAlbedoEnum); _assert_(albedo_input);
    4320         Input* albedo_snow_input = this->GetInput(SmbAlbedoSnowEnum); _assert_(albedo_snow_input);
    4321         Input* hice_input        = this->GetInput(SmbHIceEnum); _assert_(hice_input);
    4322         Input* hsnow_input       = this->GetInput(SmbHSnowEnum); _assert_(hsnow_input);
     4355        Input* albedo_input      = this->GetInput(enum_albedo); _assert_(albedo_input);
     4356        Input* albedo_snow_input = this->GetInput(enum_albedo_snow); _assert_(albedo_snow_input);
     4357        Input* hice_input        = this->GetInput(enum_hice); _assert_(hice_input);
     4358        Input* hsnow_input       = this->GetInput(enum_hsnow); _assert_(hsnow_input);
    43234359
    43244360        if(VerboseSmb() && this->Sid()==0)_printf0_("smb core: assign inputs.\n");
     
    43384374
    43394375                /* Get Albedo information */
     4376                albedo_input->GetInputValue(&albedo_in[iv],gauss);
     4377                albedo_snow_input->GetInputValue(&albedo_snow_in[iv],gauss);
    43404378                mask_input->GetInputValue(&mask_in[iv],gauss);
    43414379                Tamp_input->GetInputValue(&Tamp_in[iv],gauss);
    4342                 albedo_input->GetInputValue(&albedo_in[iv],gauss);
    4343                 albedo_snow_input->GetInputValue(&albedo_snow_in[iv],gauss);
    43444380
    43454381                hsnow_input->GetInputValue(&hsnow_in[iv],gauss);
     
    43714407                _printf0_("smb core: assign albedo          :" << albedo_in[0] << "\n");
    43724408                _printf0_("smb core: assign albedo_snow     :" << albedo_snow_in[0] << "\n");
     4409                _printf0_("smb core: assign albedo_scheme   :" << alb_scheme  << "\n");
    43734410        }
    43744411
     
    43804417                                &hcrit, &rcrit,
    43814418                                &mask_in[iv], &hice_in[iv], &hsnow_in[iv],
    4382                                 &albedo_in[iv], &albedo_snow_in[iv], &alb_scheme, &alb_smax, &alb_smin, &albi, &albl,
     4419                                &albedo_in[iv], &albedo_snow_in[iv],
     4420                                &alb_scheme, &alb_smax, &alb_smin, &albi, &albl,
    43834421                                &Tamp_in[iv],
    4384                                 &tsurf_out[iv], &smb_out[iv], &saccu_out[iv], &smelt_out[iv],&albedo_out[iv], &albedo_snow_out[iv], &hsnow_out[iv], &hice_out[iv]);
     4422                                &tmin, &tmax, &tmid, &mcrit, &wcrit, &tau_a, &tau_f, &afac,
     4423                                &tsurf_out[iv], &smb_out[iv], &smbi_out[iv], &smbs_out[iv], &saccu_out[iv], &smelt_out[iv],&albedo_out[iv], &albedo_snow_out[iv], &hsnow_out[iv], &hice_out[iv]);
     4424
     4425                /* unit conversion: water -> ice */
     4426                smbi_out[iv] = smbi_out[iv]*rho_water/rho_ice;
     4427                smbs_out[iv] = smbs_out[iv]*yts; // m/sec -> m/yr
    43854428        }
    43864429
    43874430        if(VerboseSmb() && this->Sid()==0){
    4388                 _printf0_("smb core: tsurf_out " << tsurf_out[0] << "\n");
     4431                _printf0_("smb core: tsurf_out[0] " << tsurf_out[0] << "\n");
     4432                _printf0_("smb core: hice_out[0]  " << hice_out[0] << "\n");
     4433                _printf0_("smb core: hsnow_out[0] " << hsnow_out[0] << "\n");
     4434                _printf0_("smb core: smb_ice[0]   " << smbi_out[0]*yts << "\n");
    43894435        }
    43904436
    43914437        switch(this->ObjectEnum()){
    43924438                case TriaEnum:
    4393                         //this->AddInput(TemperatureEnum,&tsurf_out[0],P1Enum); // TODO add TemperatureSEMICEnum to EnumDefinitions
    4394                         this->AddInput(TemperatureSEMICEnum,&tsurf_out[0],P1DGEnum); // TODO add TemperatureSEMICEnum to EnumDefinitions
    4395                         this->AddInput(SmbMassBalanceEnum,&smb_out[0],P1DGEnum);
     4439                        this->AddInput(TemperatureSEMICEnum,&tsurf_out[0],P1DGEnum);
     4440                        // SMBout = SMB_ice + SMB_snow values.
     4441                        //this->AddInput(SmbMassBalanceTotalEnum,&smb_out[0],P1DGEnum);
     4442                        // water equivalent SMB ice to ice equivalent.
     4443                        this->AddInput(SmbMassBalanceEnum,&smbi_out[0],P1DGEnum);
     4444                        this->AddInput(SmbMassBalanceSnowEnum,&smbs_out[0],P1DGEnum);
     4445                        //this->AddInput(SmbMassBalanceSnowEnum,&smbs_out[0],P1DGEnum);
     4446                        // saccu - accumulation of snow.
    43964447                        this->AddInput(SmbAccumulationEnum,&saccu_out[0],P1DGEnum);
     4448                        // smelt
    43974449                        this->AddInput(SmbMeltEnum,&smelt_out[0],P1DGEnum);
    43984450                        this->AddInput(SmbAlbedoEnum,&albedo_out[0],P1DGEnum);
     
    44254477        xDelete<IssmDouble>(tsurf_out);
    44264478        xDelete<IssmDouble>(smb_out);
     4479        xDelete<IssmDouble>(smbi_out);
     4480        xDelete<IssmDouble>(smbs_out);
    44274481        xDelete<IssmDouble>(saccu_out);
    44284482        xDelete<IssmDouble>(smelt_out);
     
    44344488        xDelete<IssmDouble>(mask_in);
    44354489        xDelete<IssmDouble>(Tamp_in);
     4490        xDelete<IssmDouble>(albedo_in);
    44364491        xDelete<IssmDouble>(albedo_snow_in);
    4437         xDelete<IssmDouble>(albedo_in);
    44384492        xDelete<IssmDouble>(tsurf_in);
    44394493        xDelete<IssmDouble>(s);
  • issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/run_semic_transient.f90

    r27498 r27510  
    33      hcrit, rcrit, &
    44      mask, hice, hsnow, &
    5       albedo, albedo_snow, alb_scheme, alb_smax, alb_smin, albi, albl, &
     5      albedo, albedo_snow, &
     6      alb_scheme, alb_smax, alb_smin, albi, albl, &
    67      Tamp, &
    7       tsurf_out, smb_out, saccu_out, smelt_out, alb_out, alb_snow_out,hsnow_out,hice_out)
     8      tmin, tmax, tmid, mcrit, w_crit, tau_a, tau_f, afac, &
     9      tsurf_out, smb_out, smbi_out, smbs_out, saccu_out, smelt_out, alb_out, alb_snow_out,hsnow_out,hice_out)
    810
    911   use utils
     
    2022
    2123   integer, parameter:: dp=kind(0.d0)  !< define precision (machine specific)
    22    integer :: i, k, nx, nloop, ntime, year
     24   integer :: i, k, nx, nloop, year
    2325   integer :: day=1 !< not used value.
    2426
     
    4143   double precision :: tsurf_out  ! Ice surface Temperature [K]
    4244   double precision :: smb_out    ! surface mass balance=(Accu-Melt) [m/s]
     45   double precision :: smbi_out   ! SMB ice  [water equivalent m/s]
     46   double precision :: smbs_out   ! SMB snow [water equivalent m/s]
    4347   double precision :: saccu_out  ! accumulation [m/s]
    4448   double precision :: smelt_out  ! ablation [m/s]
     
    7276   double precision    :: csh
    7377   double precision    :: clh
    74    double precision    :: tmin
    75    double precision    :: tmax
     78   double precision, intent(in) :: tmin
     79   double precision, intent(in) :: tmax
    7680   double precision    :: tsticsub
    7781   ! parameters for isba albedo scheme.
    78    double precision    :: tau_a  !< critical liquide water concent for "isba" albedo scheme [kg/m2]
    79    double precision    :: tau_f
    80    double precision    :: w_crit
    81    double precision    :: mcrit
    82    double precision    :: afac !< param
    83    double precision    :: tmid !< param for "alex" albedo parameterization [K]
     82   double precision, intent(in) :: tau_a  !< critical liquide water concent for "isba" albedo scheme [kg/m2]
     83   double precision, intent(in) :: tau_f
     84   double precision, intent(in) :: w_crit
     85   double precision, intent(in) :: mcrit
     86   double precision, intent(in) :: afac !< param
     87   double precision, intent(in) :: tmid !< param for "alex" albedo parameterization [K]
    8488
    8589   nx = 1
    86    ntime = 365
    8790   year = 0
    8891
     
    9598   !forc%swd(:,:) = swd_in    ! short radiation
    9699   !forc%lwd(:,:) = lwd_in    ! long radiation downward
    97    !forc%wind(:,:) = wind_ina ! wind speed.
     100   !forc%wind(:,:) = wind_in  ! wind speed.
    98101   !forc%sp(:,:) = sp_in      ! surface pressure
    99102   !forc%rhoa(:,:) = rhoa_in  ! air density [kg/m3]
     
    106109   surface%par%tstic = tstic      !< time step [s]
    107110   surface%par%ceff= 2.0e6_dp     !< surface heat capacity of snow/ice [J/K/m2]
    108    surface%par%csh = 2.0e-3_dp
    109    surface%par%clh = 5.0e-4_dp    !< latent heat exchange coefficient [no unit]
     111   surface%par%csh = 2.0e-3_dp    !< turbulent heat exchange coefficient
     112   surface%par%clh = 5.0e-4_dp    !< turbulent heat exchange coefficient [no unit]
    110113   surface%par%alb_smax = alb_smax !0.79_dp !< max snow albedo
    111114   surface%par%alb_smin = alb_smin !0.6_dp  !< min snow albedo
    112115   surface%par%albi = albi !0.41_dp     !< albedo for ice
    113116   surface%par%albl = albl !0.07_dp     !< albedo for land
    114    surface%par%tmin = -999_dp
    115    surface%par%tmax = 273.15_dp
     117   surface%par%tmin = tmin ! -999_dp
     118   surface%par%tmax = tmax ! 273.15_dp
    116119   surface%par%hcrit = hcrit !0.028_dp   !< critical snow height for which grid cell is 50 % snow colvered [m]
    117120   surface%par%rcrit = rcrit !0.85_dp    !< refreezing fraction is 50% [m]
     
    126129      surface%par%alb_scheme = "isba"
    127130   end if
    128    surface%par%tau_a = 0.008_dp
    129    surface%par%tau_f = 0.24_dp
    130    surface%par%w_crit = 15.0_dp
    131    surface%par%mcrit = 6.0e-8_dp
     131   surface%par%tau_a  = tau_a  !0.008_dp
     132   surface%par%tau_f  = tau_f  !0.24_dp
     133   surface%par%w_crit = w_crit !15.0_dp ! default value
     134   surface%par%mcrit  = mcrit  !6.0e-8_dp
    132135   surface%par%n_ksub = 3.0_dp
     136   ! snow albedo of alex
     137   surface%par%afac   = afac
     138   surface%par%tmid   = tmid
    133139   
    134140   ! initialize sub-daily time step tsticsub
     
    140146   ! initialise prognostic variables
    141147   ! these values will be updated through "surface_energy_and_mass_balance" function.
    142    surface%now%mask(:)     = mask   ! 2.0_dp  !loi_mask(:nx)
    143    surface%now%hsnow(:)    = hsnow  ! 1.0_dp !< snow height...
    144    surface%now%hice(:)     = hice   ! 0.0_dp !< ice thickness...
     148   surface%now%mask(:)     = mask        ! 2.0_dp  !loi_mask(:nx)
     149   surface%now%hsnow(:)    = hsnow       ! initial snow height...
     150   surface%now%hice(:)     = hice        ! initial ice height..
    145151   surface%now%tsurf(:)    = tsurf_in
    146    surface%now%alb(:)      = albedo ! 0.8_dp   !< initial albedo
    147    surface%now%alb_snow(:) = albedo_snow ! 0.8_dp
    148    !surface%now%acc(:)   = 0.0_dp
    149    !surface%now%smb(:)   = 0.0_dp
    150    !surface%now%melt(:)  = 0.0_dp
    151    surface%now%qmr_res(:) = 0.0_dp
     152   surface%now%alb(:)      = albedo      !< initial albedo for energy balance.
     153   surface%now%alb_snow(:) = albedo_snow !< initial albedo for ISBA albedo method.
     154   surface%now%qmr_res(:)  = 0.0_dp ! residual heat.
    152155
    153156   ! initialize with zeros
     
    155158
    156159   tsurf_out = 0.0_dp
    157    smb_out = 0.0_dp
     160   smb_out   = 0.0_dp
     161   smbi_out  = 0.0_dp
     162   smbs_out  = 0.0_dp
    158163   saccu_out = 0.0_dp
    159164   smelt_out = 0.0_dp
    160    alb_out = 0.0_dp
     165   alb_out      = 0.0_dp
     166   alb_snow_out = 0.0_dp
    161167
    162168   ! define boundary conditions (not used, here!)
     
    164170   !call print_boundary_opt(surface%bnd)
    165171
    166 
    167    !surface%now%sf = forc%sf(1,day)
    168    !surface%now%rf = forc%rf(1,day)
    169    !surface%now%sp = forc%sp(1,day)
    170    !surface%now%lwd = forc%lwd(1,day)
    171    !surface%now%swd = forc%swd(1,day)
    172    !surface%now%wind = forc%wind(1,day)
    173    !surface%now%rhoa = forc%rhoa(1,day)
    174    !surface%now%t2m = forc%tt(1,day)
    175    !surface%now%qq = forc%qq(1,day)
    176172   
    177173   ! input with single value
     
    194190   tsurf_out=surface%now%tsurf(1)
    195191   ! melt - potential surface melt [m/s]
    196    ! smb
    197    smb_out   =surface%now%smb(1) !*1.0_dp/365.0_dp
    198    saccu_out =surface%now%acc(1) !*1.0_dp/365.0_dp
    199    smelt_out =surface%now%melt(1)!*1.0_dp/365.0_dp
    200    alb_out   =surface%now%alb(1)
    201    alb_snow_out  =surface%now%alb_snow(1)
     192   ! smb = SMB_ice + SMB_snow
     193   ! smbi  - SMB_ice  (water equivalent m/sec)
     194   ! smbs  - SMB_snow (water equivalent m/sec)
     195   smb_out   =surface%now%smb(1)      ! smb = smb_snow + smb_ice
     196   smbi_out  =surface%now%smb_ice(1)  ! Csi (snow>ice) - melted_ice + refrezon_rain.
     197   smbs_out  =surface%now%smb_snow(1) ! smb_snow = snowfall - sublimiation - melted_snow + refrozen_snow
     198   saccu_out =surface%now%acc(1)      ! acc      = snowfall - sublimiation - refreezing
     199   smelt_out =surface%now%melt(1)     ! potential surface melt = melt_ice + melt_snow
     200   alb_out      =surface%now%alb(1)     
     201   alb_snow_out =surface%now%alb_snow(1)
    202202   qmr_out    =surface%now%qmr(1)
    203203   hsnow_out  =surface%now%hsnow(1)
  • issm/trunk-jpl/src/c/shared/Enum/Enum.vim

    r27508 r27510  
    588588syn keyword cConstant SmbSemicHcritEnum
    589589syn keyword cConstant SmbSemicRcritEnum
     590syn keyword cConstant SmbSemicWcritEnum
     591syn keyword cConstant SmbSemicMcritEnum
     592syn keyword cConstant SmbSemicAfacEnum
     593syn keyword cConstant SmbSemicTauAEnum
     594syn keyword cConstant SmbSemicTauFEnum
     595syn keyword cConstant SmbSemicTminEnum
     596syn keyword cConstant SmbSemicTmidEnum
     597syn keyword cConstant SmbSemicTmaxEnum
    590598syn keyword cConstant SmbStepsPerStepEnum
    591599syn keyword cConstant SmbSwIdxEnum
     
    10211029syn keyword cConstant SmbAccumulatedRunoffEnum
    10221030syn keyword cConstant SmbAlbedoEnum
     1031syn keyword cConstant SmbAlbedoInitEnum
    10231032syn keyword cConstant SmbAlbedoSnowEnum
     1033syn keyword cConstant SmbAlbedoSnowInitEnum
    10241034syn keyword cConstant SmbAEnum
    10251035syn keyword cConstant SmbAdiffEnum
     
    10701080syn keyword cConstant SmbGspiniEnum
    10711081syn keyword cConstant SmbHIceEnum
     1082syn keyword cConstant SmbHIceInitEnum
    10721083syn keyword cConstant SmbHSnowEnum
     1084syn keyword cConstant SmbHSnowInitEnum
    10731085syn keyword cConstant SmbHrefEnum
    10741086syn keyword cConstant SmbIsInitializedEnum
    10751087syn keyword cConstant SmbMAddEnum
    10761088syn keyword cConstant SmbMassBalanceEnum
     1089syn keyword cConstant SmbMassBalanceSnowEnum
    10771090syn keyword cConstant SmbMassBalanceSubstepEnum
    10781091syn keyword cConstant SmbMassBalanceTransientEnum
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r27508 r27510  
    582582        SmbSemicHcritEnum,
    583583        SmbSemicRcritEnum,
     584        SmbSemicWcritEnum,
     585        SmbSemicMcritEnum,
     586        SmbSemicAfacEnum,
     587        SmbSemicTauAEnum,
     588        SmbSemicTauFEnum,
     589        SmbSemicTminEnum,
     590        SmbSemicTmidEnum,
     591        SmbSemicTmaxEnum,
    584592        SmbStepsPerStepEnum,
    585593        SmbSwIdxEnum,
     
    10171025        SmbAccumulatedRunoffEnum,
    10181026        SmbAlbedoEnum,
     1027        SmbAlbedoInitEnum,
    10191028        SmbAlbedoSnowEnum,
     1029        SmbAlbedoSnowInitEnum,
    10201030        SmbAEnum,
    10211031        SmbAdiffEnum,
     
    10661076        SmbGspiniEnum,
    10671077        SmbHIceEnum,
     1078        SmbHIceInitEnum,
    10681079        SmbHSnowEnum,
     1080        SmbHSnowInitEnum,
    10691081        SmbHrefEnum,
    10701082        SmbIsInitializedEnum,
    10711083        SmbMAddEnum,
    10721084        SmbMassBalanceEnum,
     1085        SmbMassBalanceSnowEnum,
    10731086   SmbMassBalanceSubstepEnum,
    10741087   SmbMassBalanceTransientEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r27508 r27510  
    590590                case SmbSemicHcritEnum : return "SmbSemicHcrit";
    591591                case SmbSemicRcritEnum : return "SmbSemicRcrit";
     592                case SmbSemicWcritEnum : return "SmbSemicWcrit";
     593                case SmbSemicMcritEnum : return "SmbSemicMcrit";
     594                case SmbSemicAfacEnum : return "SmbSemicAfac";
     595                case SmbSemicTauAEnum : return "SmbSemicTauA";
     596                case SmbSemicTauFEnum : return "SmbSemicTauF";
     597                case SmbSemicTminEnum : return "SmbSemicTmin";
     598                case SmbSemicTmidEnum : return "SmbSemicTmid";
     599                case SmbSemicTmaxEnum : return "SmbSemicTmax";
    592600                case SmbStepsPerStepEnum : return "SmbStepsPerStep";
    593601                case SmbSwIdxEnum : return "SmbSwIdx";
     
    10231031                case SmbAccumulatedRunoffEnum : return "SmbAccumulatedRunoff";
    10241032                case SmbAlbedoEnum : return "SmbAlbedo";
     1033                case SmbAlbedoInitEnum : return "SmbAlbedoInit";
    10251034                case SmbAlbedoSnowEnum : return "SmbAlbedoSnow";
     1035                case SmbAlbedoSnowInitEnum : return "SmbAlbedoSnowInit";
    10261036                case SmbAEnum : return "SmbA";
    10271037                case SmbAdiffEnum : return "SmbAdiff";
     
    10721082                case SmbGspiniEnum : return "SmbGspini";
    10731083                case SmbHIceEnum : return "SmbHIce";
     1084                case SmbHIceInitEnum : return "SmbHIceInit";
    10741085                case SmbHSnowEnum : return "SmbHSnow";
     1086                case SmbHSnowInitEnum : return "SmbHSnowInit";
    10751087                case SmbHrefEnum : return "SmbHref";
    10761088                case SmbIsInitializedEnum : return "SmbIsInitialized";
    10771089                case SmbMAddEnum : return "SmbMAdd";
    10781090                case SmbMassBalanceEnum : return "SmbMassBalance";
     1091                case SmbMassBalanceSnowEnum : return "SmbMassBalanceSnow";
    10791092                case SmbMassBalanceSubstepEnum : return "SmbMassBalanceSubstep";
    10801093                case SmbMassBalanceTransientEnum : return "SmbMassBalanceTransient";
  • issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim

    r27508 r27510  
    581581syn keyword juliaConstC SmbSemicHcritEnum
    582582syn keyword juliaConstC SmbSemicRcritEnum
     583syn keyword juliaConstC SmbSemicWcritEnum
     584syn keyword juliaConstC SmbSemicMcritEnum
     585syn keyword juliaConstC SmbSemicAfacEnum
     586syn keyword juliaConstC SmbSemicTauAEnum
     587syn keyword juliaConstC SmbSemicTauFEnum
     588syn keyword juliaConstC SmbSemicTminEnum
     589syn keyword juliaConstC SmbSemicTmidEnum
     590syn keyword juliaConstC SmbSemicTmaxEnum
    583591syn keyword juliaConstC SmbStepsPerStepEnum
    584592syn keyword juliaConstC SmbSwIdxEnum
     
    10141022syn keyword juliaConstC SmbAccumulatedRunoffEnum
    10151023syn keyword juliaConstC SmbAlbedoEnum
     1024syn keyword juliaConstC SmbAlbedoInitEnum
    10161025syn keyword juliaConstC SmbAlbedoSnowEnum
     1026syn keyword juliaConstC SmbAlbedoSnowInitEnum
    10171027syn keyword juliaConstC SmbAEnum
    10181028syn keyword juliaConstC SmbAdiffEnum
     
    10631073syn keyword juliaConstC SmbGspiniEnum
    10641074syn keyword juliaConstC SmbHIceEnum
     1075syn keyword juliaConstC SmbHIceInitEnum
    10651076syn keyword juliaConstC SmbHSnowEnum
     1077syn keyword juliaConstC SmbHSnowInitEnum
    10661078syn keyword juliaConstC SmbHrefEnum
    10671079syn keyword juliaConstC SmbIsInitializedEnum
    10681080syn keyword juliaConstC SmbMAddEnum
    10691081syn keyword juliaConstC SmbMassBalanceEnum
     1082syn keyword juliaConstC SmbMassBalanceSnowEnum
    10701083syn keyword juliaConstC SmbMassBalanceSubstepEnum
    10711084syn keyword juliaConstC SmbMassBalanceTransientEnum
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r27508 r27510  
    602602              else if (strcmp(name,"SmbSemicHcrit")==0) return SmbSemicHcritEnum;
    603603              else if (strcmp(name,"SmbSemicRcrit")==0) return SmbSemicRcritEnum;
     604              else if (strcmp(name,"SmbSemicWcrit")==0) return SmbSemicWcritEnum;
     605              else if (strcmp(name,"SmbSemicMcrit")==0) return SmbSemicMcritEnum;
     606              else if (strcmp(name,"SmbSemicAfac")==0) return SmbSemicAfacEnum;
     607              else if (strcmp(name,"SmbSemicTauA")==0) return SmbSemicTauAEnum;
     608              else if (strcmp(name,"SmbSemicTauF")==0) return SmbSemicTauFEnum;
     609              else if (strcmp(name,"SmbSemicTmin")==0) return SmbSemicTminEnum;
     610              else if (strcmp(name,"SmbSemicTmid")==0) return SmbSemicTmidEnum;
     611              else if (strcmp(name,"SmbSemicTmax")==0) return SmbSemicTmaxEnum;
    604612              else if (strcmp(name,"SmbStepsPerStep")==0) return SmbStepsPerStepEnum;
    605613              else if (strcmp(name,"SmbSwIdx")==0) return SmbSwIdxEnum;
     
    621629              else if (strcmp(name,"Steps")==0) return StepsEnum;
    622630              else if (strcmp(name,"StressbalanceAbstol")==0) return StressbalanceAbstolEnum;
    623               else if (strcmp(name,"StressbalanceFSreconditioning")==0) return StressbalanceFSreconditioningEnum;
     631         else stage=6;
     632   }
     633   if(stage==6){
     634              if (strcmp(name,"StressbalanceFSreconditioning")==0) return StressbalanceFSreconditioningEnum;
    624635              else if (strcmp(name,"StressbalanceIsnewton")==0) return StressbalanceIsnewtonEnum;
    625636              else if (strcmp(name,"StressbalanceMaxiter")==0) return StressbalanceMaxiterEnum;
     
    629640              else if (strcmp(name,"StressbalanceRequestedOutputs")==0) return StressbalanceRequestedOutputsEnum;
    630641              else if (strcmp(name,"StressbalanceRestol")==0) return StressbalanceRestolEnum;
    631          else stage=6;
    632    }
    633    if(stage==6){
    634               if (strcmp(name,"StressbalanceRiftPenaltyThreshold")==0) return StressbalanceRiftPenaltyThresholdEnum;
     642              else if (strcmp(name,"StressbalanceRiftPenaltyThreshold")==0) return StressbalanceRiftPenaltyThresholdEnum;
    635643              else if (strcmp(name,"StressbalanceShelfDampening")==0) return StressbalanceShelfDampeningEnum;
    636644              else if (strcmp(name,"ThermalForcingMonthlyEffects")==0) return ThermalForcingMonthlyEffectsEnum;
     
    744752              else if (strcmp(name,"BaseOld")==0) return BaseOldEnum;
    745753              else if (strcmp(name,"BaseSlopeX")==0) return BaseSlopeXEnum;
    746               else if (strcmp(name,"BaseSlopeY")==0) return BaseSlopeYEnum;
     754         else stage=7;
     755   }
     756   if(stage==7){
     757              if (strcmp(name,"BaseSlopeY")==0) return BaseSlopeYEnum;
    747758              else if (strcmp(name,"BaselineBasalforcingsFloatingiceMeltingRate")==0) return BaselineBasalforcingsFloatingiceMeltingRateEnum;
    748759              else if (strcmp(name,"BaselineBasalforcingsSpatialDeepwaterMeltingRate")==0) return BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum;
     
    752763              else if (strcmp(name,"Bed")==0) return BedEnum;
    753764              else if (strcmp(name,"BedGRD")==0) return BedGRDEnum;
    754          else stage=7;
    755    }
    756    if(stage==7){
    757               if (strcmp(name,"BedEast")==0) return BedEastEnum;
     765              else if (strcmp(name,"BedEast")==0) return BedEastEnum;
    758766              else if (strcmp(name,"BedEastGRD")==0) return BedEastGRDEnum;
    759767              else if (strcmp(name,"BedNorth")==0) return BedNorthEnum;
     
    867875              else if (strcmp(name,"HydrologyBumpSpacing")==0) return HydrologyBumpSpacingEnum;
    868876              else if (strcmp(name,"HydrologyChannelConductivity")==0) return HydrologyChannelConductivityEnum;
    869               else if (strcmp(name,"HydrologydcBasalMoulinInput")==0) return HydrologydcBasalMoulinInputEnum;
     877         else stage=8;
     878   }
     879   if(stage==8){
     880              if (strcmp(name,"HydrologydcBasalMoulinInput")==0) return HydrologydcBasalMoulinInputEnum;
    870881              else if (strcmp(name,"HydrologydcEplThickness")==0) return HydrologydcEplThicknessEnum;
    871882              else if (strcmp(name,"HydrologydcEplThicknessOld")==0) return HydrologydcEplThicknessOldEnum;
     
    875886              else if (strcmp(name,"HydrologydcMaskEplactiveNode")==0) return HydrologydcMaskEplactiveNodeEnum;
    876887              else if (strcmp(name,"HydrologydcMaskThawedElt")==0) return HydrologydcMaskThawedEltEnum;
    877          else stage=8;
    878    }
    879    if(stage==8){
    880               if (strcmp(name,"HydrologydcMaskThawedNode")==0) return HydrologydcMaskThawedNodeEnum;
     888              else if (strcmp(name,"HydrologydcMaskThawedNode")==0) return HydrologydcMaskThawedNodeEnum;
    881889              else if (strcmp(name,"HydrologydcSedimentTransmitivity")==0) return HydrologydcSedimentTransmitivityEnum;
    882890              else if (strcmp(name,"HydrologyDrainageRate")==0) return HydrologyDrainageRateEnum;
     
    990998              else if (strcmp(name,"SealevelBarystaticOceanArea")==0) return SealevelBarystaticOceanAreaEnum;
    991999              else if (strcmp(name,"SealevelBarystaticOceanLatbar")==0) return SealevelBarystaticOceanLatbarEnum;
    992               else if (strcmp(name,"SealevelBarystaticOceanLongbar")==0) return SealevelBarystaticOceanLongbarEnum;
     1000         else stage=9;
     1001   }
     1002   if(stage==9){
     1003              if (strcmp(name,"SealevelBarystaticOceanLongbar")==0) return SealevelBarystaticOceanLongbarEnum;
    9931004              else if (strcmp(name,"SealevelBarystaticOceanLoad")==0) return SealevelBarystaticOceanLoadEnum;
    9941005              else if (strcmp(name,"SealevelNEsa")==0) return SealevelNEsaEnum;
     
    9981009              else if (strcmp(name,"BslcIce")==0) return BslcIceEnum;
    9991010              else if (strcmp(name,"BslcHydro")==0) return BslcHydroEnum;
    1000          else stage=9;
    1001    }
    1002    if(stage==9){
    1003               if (strcmp(name,"BslcOcean")==0) return BslcOceanEnum;
     1011              else if (strcmp(name,"BslcOcean")==0) return BslcOceanEnum;
    10041012              else if (strcmp(name,"BslcRate")==0) return BslcRateEnum;
    10051013              else if (strcmp(name,"Gmtslc")==0) return GmtslcEnum;
     
    10471055              else if (strcmp(name,"SmbAccumulatedRunoff")==0) return SmbAccumulatedRunoffEnum;
    10481056              else if (strcmp(name,"SmbAlbedo")==0) return SmbAlbedoEnum;
     1057              else if (strcmp(name,"SmbAlbedoInit")==0) return SmbAlbedoInitEnum;
    10491058              else if (strcmp(name,"SmbAlbedoSnow")==0) return SmbAlbedoSnowEnum;
     1059              else if (strcmp(name,"SmbAlbedoSnowInit")==0) return SmbAlbedoSnowInitEnum;
    10501060              else if (strcmp(name,"SmbA")==0) return SmbAEnum;
    10511061              else if (strcmp(name,"SmbAdiff")==0) return SmbAdiffEnum;
     
    10961106              else if (strcmp(name,"SmbGspini")==0) return SmbGspiniEnum;
    10971107              else if (strcmp(name,"SmbHIce")==0) return SmbHIceEnum;
     1108              else if (strcmp(name,"SmbHIceInit")==0) return SmbHIceInitEnum;
    10981109              else if (strcmp(name,"SmbHSnow")==0) return SmbHSnowEnum;
     1110              else if (strcmp(name,"SmbHSnowInit")==0) return SmbHSnowInitEnum;
    10991111              else if (strcmp(name,"SmbHref")==0) return SmbHrefEnum;
    11001112              else if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum;
    11011113              else if (strcmp(name,"SmbMAdd")==0) return SmbMAddEnum;
    11021114              else if (strcmp(name,"SmbMassBalance")==0) return SmbMassBalanceEnum;
     1115              else if (strcmp(name,"SmbMassBalanceSnow")==0) return SmbMassBalanceSnowEnum;
    11031116              else if (strcmp(name,"SmbMassBalanceSubstep")==0) return SmbMassBalanceSubstepEnum;
    11041117              else if (strcmp(name,"SmbMassBalanceTransient")==0) return SmbMassBalanceTransientEnum;
     
    11081121              else if (strcmp(name,"SmbMeanULW")==0) return SmbMeanULWEnum;
    11091122              else if (strcmp(name,"SmbMelt")==0) return SmbMeltEnum;
    1110               else if (strcmp(name,"SmbMonthlytemperatures")==0) return SmbMonthlytemperaturesEnum;
     1123         else stage=10;
     1124   }
     1125   if(stage==10){
     1126              if (strcmp(name,"SmbMonthlytemperatures")==0) return SmbMonthlytemperaturesEnum;
    11111127              else if (strcmp(name,"SmbMSurf")==0) return SmbMSurfEnum;
    11121128              else if (strcmp(name,"SmbNetLW")==0) return SmbNetLWEnum;
     
    11211137              else if (strcmp(name,"SmbPrecipitationsPresentday")==0) return SmbPrecipitationsPresentdayEnum;
    11221138              else if (strcmp(name,"SmbPrecipitationsReconstructed")==0) return SmbPrecipitationsReconstructedEnum;
    1123          else stage=10;
    1124    }
    1125    if(stage==10){
    1126               if (strcmp(name,"SmbRain")==0) return SmbRainEnum;
     1139              else if (strcmp(name,"SmbRain")==0) return SmbRainEnum;
    11271140              else if (strcmp(name,"SmbRe")==0) return SmbReEnum;
    11281141              else if (strcmp(name,"SmbRefreeze")==0) return SmbRefreezeEnum;
     
    12311244              else if (strcmp(name,"VyDebris")==0) return VyDebrisEnum;
    12321245              else if (strcmp(name,"Vy")==0) return VyEnum;
    1233               else if (strcmp(name,"VyMesh")==0) return VyMeshEnum;
     1246         else stage=11;
     1247   }
     1248   if(stage==11){
     1249              if (strcmp(name,"VyMesh")==0) return VyMeshEnum;
    12341250              else if (strcmp(name,"VyObs")==0) return VyObsEnum;
    12351251              else if (strcmp(name,"VyShear")==0) return VyShearEnum;
     
    12441260              else if (strcmp(name,"WaterfractionDrainage")==0) return WaterfractionDrainageEnum;
    12451261              else if (strcmp(name,"WaterfractionDrainageIntegrated")==0) return WaterfractionDrainageIntegratedEnum;
    1246          else stage=11;
    1247    }
    1248    if(stage==11){
    1249               if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
     1262              else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
    12501263              else if (strcmp(name,"Waterheight")==0) return WaterheightEnum;
    12511264              else if (strcmp(name,"WaterPressureArmaPerturbation")==0) return WaterPressureArmaPerturbationEnum;
     
    13541367              else if (strcmp(name,"Outputdefinition97")==0) return Outputdefinition97Enum;
    13551368              else if (strcmp(name,"Outputdefinition98")==0) return Outputdefinition98Enum;
    1356               else if (strcmp(name,"Outputdefinition99")==0) return Outputdefinition99Enum;
     1369         else stage=12;
     1370   }
     1371   if(stage==12){
     1372              if (strcmp(name,"Outputdefinition99")==0) return Outputdefinition99Enum;
    13571373              else if (strcmp(name,"Outputdefinition9")==0) return Outputdefinition9Enum;
    13581374              else if (strcmp(name,"Outputdefinition100")==0) return Outputdefinition100Enum;
     
    13671383              else if (strcmp(name,"AmrBamg")==0) return AmrBamgEnum;
    13681384              else if (strcmp(name,"AmrNeopz")==0) return AmrNeopzEnum;
    1369          else stage=12;
    1370    }
    1371    if(stage==12){
    1372               if (strcmp(name,"AndroidFrictionCoefficient")==0) return AndroidFrictionCoefficientEnum;
     1385              else if (strcmp(name,"AndroidFrictionCoefficient")==0) return AndroidFrictionCoefficientEnum;
    13731386              else if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum;
    13741387              else if (strcmp(name,"AutodiffJacobian")==0) return AutodiffJacobianEnum;
     
    14771490              else if (strcmp(name,"GLheightadvectionAnalysis")==0) return GLheightadvectionAnalysisEnum;
    14781491              else if (strcmp(name,"GaussPenta")==0) return GaussPentaEnum;
    1479               else if (strcmp(name,"GaussSeg")==0) return GaussSegEnum;
     1492         else stage=13;
     1493   }
     1494   if(stage==13){
     1495              if (strcmp(name,"GaussSeg")==0) return GaussSegEnum;
    14801496              else if (strcmp(name,"GaussTetra")==0) return GaussTetraEnum;
    14811497              else if (strcmp(name,"GaussTria")==0) return GaussTriaEnum;
     
    14901506              else if (strcmp(name,"GroundedAreaScaled")==0) return GroundedAreaScaledEnum;
    14911507              else if (strcmp(name,"GroundingOnly")==0) return GroundingOnlyEnum;
    1492          else stage=13;
    1493    }
    1494    if(stage==13){
    1495               if (strcmp(name,"GroundinglineMassFlux")==0) return GroundinglineMassFluxEnum;
     1508              else if (strcmp(name,"GroundinglineMassFlux")==0) return GroundinglineMassFluxEnum;
    14961509              else if (strcmp(name,"Gset")==0) return GsetEnum;
    14971510              else if (strcmp(name,"Gsl")==0) return GslEnum;
     
    16001613              else if (strcmp(name,"MinVy")==0) return MinVyEnum;
    16011614              else if (strcmp(name,"MinVz")==0) return MinVzEnum;
    1602               else if (strcmp(name,"MismipFloatingMeltRate")==0) return MismipFloatingMeltRateEnum;
     1615         else stage=14;
     1616   }
     1617   if(stage==14){
     1618              if (strcmp(name,"MismipFloatingMeltRate")==0) return MismipFloatingMeltRateEnum;
    16031619              else if (strcmp(name,"Moulin")==0) return MoulinEnum;
    16041620              else if (strcmp(name,"MpiDense")==0) return MpiDenseEnum;
     
    16131629              else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
    16141630              else if (strcmp(name,"None")==0) return NoneEnum;
    1615          else stage=14;
    1616    }
    1617    if(stage==14){
    1618               if (strcmp(name,"Numberedcostfunction")==0) return NumberedcostfunctionEnum;
     1631              else if (strcmp(name,"Numberedcostfunction")==0) return NumberedcostfunctionEnum;
    16191632              else if (strcmp(name,"NyeCO2")==0) return NyeCO2Enum;
    16201633              else if (strcmp(name,"NyeH2O")==0) return NyeH2OEnum;
     
    17231736              else if (strcmp(name,"TetraInput")==0) return TetraInputEnum;
    17241737              else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum;
    1725               else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;
     1738         else stage=15;
     1739   }
     1740   if(stage==15){
     1741              if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;
    17261742              else if (strcmp(name,"ThicknessErrorEstimator")==0) return ThicknessErrorEstimatorEnum;
    17271743              else if (strcmp(name,"TotalCalvingFluxLevelset")==0) return TotalCalvingFluxLevelsetEnum;
     
    17361752              else if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
    17371753              else if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
    1738          else stage=15;
    1739    }
    1740    if(stage==15){
    1741               if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;
     1754              else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;
    17421755              else if (strcmp(name,"Tria")==0) return TriaEnum;
    17431756              else if (strcmp(name,"TriaInput")==0) return TriaInputEnum;
Note: See TracChangeset for help on using the changeset viewer.