Index: /issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp	(revision 27855)
+++ /issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp	(revision 27856)
@@ -242,7 +242,21 @@
 			}
 			break;
-		case SMBdebrisMLEnum:
-			iomodel->FetchDataToInput(inputs,elements,"md.initialization.debris",DebrisThicknessEnum);
-			break;
+		case SMBdebrisEvattEnum:
+                        iomodel->FetchDataToInput(inputs,elements,"md.initialization.debris",DebrisThicknessEnum);
+                        iomodel->FetchDataToInput(inputs,elements,"md.smb.s0t",SmbS0tEnum);
+                        iomodel->FetchDataToInput(inputs,elements,"md.smb.snowheight",SmbSnowheightEnum);
+                        iomodel->FetchDataToDatasetInput(inputs,elements,"md.smb.temperature",SmbMonthlytemperaturesEnum);
+                        iomodel->FetchDataToDatasetInput(inputs,elements,"md.smb.precipitation",SmbPrecipitationEnum);
+                        iomodel->FetchDataToDatasetInput(inputs,elements,"md.smb.dsradiation",SmbMonthlydsradiationEnum);
+                        iomodel->FetchDataToDatasetInput(inputs,elements,"md.smb.dlradiation",SmbMonthlydlradiationEnum);
+                        iomodel->FetchDataToDatasetInput(inputs,elements,"md.smb.windspeed",SmbMonthlywindspeedEnum);
+                        iomodel->FetchDataToDatasetInput(inputs,elements,"md.smb.airhumidity",SmbMonthlyairhumidityEnum);
+                        iomodel->FetchDataToInput(inputs,elements,"md.smb.precipitation_anomaly",SmbPrecipitationsAnomalyEnum);
+                        iomodel->FetchDataToInput(inputs,elements,"md.smb.temperature_anomaly",SmbTemperaturesAnomalyEnum);
+                        iomodel->FetchDataToInput(inputs,elements,"md.smb.dsradiation_anomaly",SmbDsradiationAnomalyEnum);
+                        iomodel->FetchDataToInput(inputs,elements,"md.smb.dlradiation_anomaly",SmbDlradiationAnomalyEnum);
+                        iomodel->FetchDataToInput(inputs,elements,"md.smb.windspeed_anomaly",SmbWindspeedAnomalyEnum);
+                        iomodel->FetchDataToInput(inputs,elements,"md.smb.airhumidity_anomaly",SmbAirhumidityAnomalyEnum);
+                        break;
 		default:
 			_error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
@@ -473,5 +487,5 @@
 			/*Nothing to add to parameters*/
 			break;
-		case SMBdebrisMLEnum:
+		case SMBdebrisEvattEnum:
 			/*Nothing to add to parameters*/
 			break;
@@ -573,8 +587,8 @@
 			#endif //_HAVE_SEMIC_
 			break;
-		case SMBdebrisMLEnum:
-			if(VerboseSolution())_printf0_("        call smb debris Mayer & Liculli module\n");
-			SmbDebrisMLx(femmodel);
-			break;
+		case SMBdebrisEvattEnum:
+                        if(VerboseSolution())_printf0_("        call smb Evatt debris module\n");
+                        SmbDebrisEvattx(femmodel);
+                        break;
 		default:
 			_error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 27855)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 27856)
@@ -3729,4 +3729,343 @@
 }
 /*}}}*/
+void       Element::SmbDebrisEvatt(){/*{{{*/
+
+        const int NUM_VERTICES          = this->GetNumberOfVertices();
+        const int NUM_VERTICES_DAYS_PER_YEAR  = NUM_VERTICES * 365; // 365 FIXME
+
+        int             i,vertexlids[MAXVERTICES];;
+        IssmDouble* smb=xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* melt=xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* summermelt=xNew<IssmDouble>(NUM_VERTICES); 
+        IssmDouble* albedo=xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* summeralbedo=xNew<IssmDouble>(NUM_VERTICES); 
+        IssmDouble* accu=xNew<IssmDouble>(NUM_VERTICES);
+        
+        // climate inputs
+        IssmDouble* temperature=xNew<IssmDouble>(NUM_VERTICES_DAYS_PER_YEAR);
+        IssmDouble* precip=xNew<IssmDouble>(NUM_VERTICES_DAYS_PER_YEAR);
+        IssmDouble* lw=xNew<IssmDouble>(NUM_VERTICES_DAYS_PER_YEAR);
+        IssmDouble* sw=xNew<IssmDouble>(NUM_VERTICES_DAYS_PER_YEAR);
+        IssmDouble* wind=xNew<IssmDouble>(NUM_VERTICES_DAYS_PER_YEAR);
+        IssmDouble* humidity=xNew<IssmDouble>(NUM_VERTICES_DAYS_PER_YEAR);
+        IssmDouble* yearlytemperatures=xNew<IssmDouble>(NUM_VERTICES); memset(yearlytemperatures, 0., NUM_VERTICES*sizeof(IssmDouble));
+        IssmDouble* p_ampl=xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* t_ampl=xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* lw_ampl=xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* sw_ampl=xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* wind_ampl=xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* humidity_ampl=xNew<IssmDouble>(NUM_VERTICES);
+
+        IssmDouble* surface=xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* s0t=xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* snowheight=xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* debriscover=xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble rho_water,rho_ice,Tf,debris,debris_here;
+        IssmDouble qlaps,rlaps,dsgrad,dlgrad,windspeedgrad,humiditygrad,Tm;
+        IssmDouble inv_twelve=1./365.;
+        IssmDouble time,yts,time_yr,lambda;
+        IssmDouble DailyMelt,CleanIceDailyMelt, CumDailyMelt=0,CleanIceMelt,CumDailySummerMelt=0;
+        IssmDouble MeanAlbedo=0, MeanSummerAlbedo=0;
+        bool isdebris,isAnderson,iscryokarst;
+        this->parameters->FindParam(&isdebris,TransientIsdebrisEnum);
+        this->parameters->FindParam(&isAnderson,SmbDebrisIsAndersonEnum);
+        this->parameters->FindParam(&iscryokarst,SmbDebrisIsCryokarstEnum);
+        IssmDouble PhiD=0.,p;
+        IssmDouble icealbedo=this->FindParam(SmbIcealbedoEnum);
+        IssmDouble snowalbedo=this->FindParam(SmbSnowalbedoEnum);
+        IssmDouble debrisalbedo=this->FindParam(SmbDebrisalbedoEnum);
+        IssmDouble Lm=this->FindParam(MaterialsLatentheatEnum); 
+        IssmDouble D0=this->FindParam(SmbDebrisAndersonD0Enum);
+        int step;
+        this->FindParam(&step,StepEnum);
+
+        // cryokarst
+        int dim=1,domaintype;
+        this->parameters->FindParam(&domaintype,DomainTypeEnum);
+        if(domaintype!=Domain2DverticalEnum){
+                        dim=2;
+        }
+        IssmDouble taud_plus=110e3, taud_minus=60e3;
+        IssmDouble taud, slope, gravity, taudx, taudy;
+        this->parameters->FindParam(&gravity,ConstantsGEnum);
+        IssmDouble* slopex         = xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* slopey         = xNew<IssmDouble>(NUM_VERTICES);
+        IssmDouble* icethickness   = xNew<IssmDouble>(NUM_VERTICES);
+
+        /*Get material parameters :*/
+        rho_water=this->FindParam(MaterialsRhoSeawaterEnum);
+        rho_ice=this->FindParam(MaterialsRhoIceEnum);
+        IssmDouble sconv=(rho_water/rho_ice); 
+        Tf=this->FindParam(MaterialsMeltingpointEnum);
+
+        /*Get parameters for height corrections*/
+        qlaps=this->FindParam(SmbDesfacEnum); // comment MR; on alpine galciers we dont have the desertification effect
+        rlaps=this->FindParam(SmbRlapsEnum);
+        dsgrad=this->FindParam(SmbSWgradEnum);
+        dlgrad=this->FindParam(SmbLWgradEnum);
+        windspeedgrad=this->FindParam(SmbWindspeedgradEnum);
+        humiditygrad=this->FindParam(SmbHumiditygradEnum);
+
+        /* Get time */
+        this->parameters->FindParam(&time,TimeEnum);
+        this->parameters->FindParam(&yts,ConstantsYtsEnum);
+        time_yr=floor(time/yts)*yts;
+
+        /*Get inputs*/
+        DatasetInput* tempday     =this->GetDatasetInput(SmbMonthlytemperaturesEnum); _assert_(tempday);
+        DatasetInput* precipday   =this->GetDatasetInput(SmbPrecipitationEnum);       _assert_(precipday);
+        DatasetInput* lwday       =this->GetDatasetInput(SmbMonthlydlradiationEnum); _assert_(lwday);
+        DatasetInput* swday       =this->GetDatasetInput(SmbMonthlydsradiationEnum);       _assert_(swday);
+        DatasetInput* windday     =this->GetDatasetInput(SmbMonthlywindspeedEnum); _assert_(windday);
+        DatasetInput* humidityday =this->GetDatasetInput(SmbMonthlyairhumidityEnum); _assert_(humidityday);
+
+        /*loop over vertices: */
+        Gauss* gauss=this->NewGauss();
+        for(int month=0;month<365;month++){
+                for(int iv=0;iv<NUM_VERTICES;iv++){
+                        gauss->GaussVertex(iv);
+                        tempday->GetInputValue(&temperature[iv*365+month],gauss,month);
+                        temperature[iv*365+month]=temperature[iv*365+month]-Tf; // conversion from Kelvin to celcius for PDD module
+                        precipday->GetInputValue(&precip[iv*365+month],gauss,month);
+                        precip[iv*365+month]=precip[iv*365+month]*yts; // from m/s to m/a
+                        lwday->GetInputValue(&lw[iv*365+month],gauss,month);
+                        swday->GetInputValue(&sw[iv*365+month],gauss,month);
+                        windday->GetInputValue(&wind[iv*365+month],gauss,month);
+                        humidityday->GetInputValue(&humidity[iv*365+month],gauss,month);
+                }
+        }
+
+        /*Recover info at the vertices: */
+        GetInputListOnVertices(&surface[0],SurfaceEnum);
+        GetInputListOnVertices(&s0t[0],SmbS0tEnum);
+        GetInputListOnVertices(&snowheight[0],SmbSnowheightEnum);
+        GetInputListOnVertices(&debriscover[0],DebrisThicknessEnum);
+        GetInputListOnVertices(&t_ampl[0],SmbTemperaturesAnomalyEnum);
+        GetInputListOnVertices(&p_ampl[0],SmbPrecipitationsAnomalyEnum);
+        GetInputListOnVertices(&lw_ampl[0],SmbDsradiationAnomalyEnum);
+        GetInputListOnVertices(&sw_ampl[0],SmbDlradiationAnomalyEnum);
+        GetInputListOnVertices(&wind_ampl[0],SmbWindspeedAnomalyEnum);
+        GetInputListOnVertices(&humidity_ampl[0],SmbAirhumidityAnomalyEnum);
+        if(iscryokarst){
+                GetInputListOnVertices(&slopex[0],SurfaceSlopeXEnum);
+                GetInputListOnVertices(&icethickness[0],ThicknessEnum);
+                if(dim==2){
+                        GetInputListOnVertices(&slopey[0],SurfaceSlopeYEnum);
+                }
+                taudx=rho_ice*gravity*icethickness[i]*slopex[i];
+                if(dim==2) taudy=rho_ice*gravity*icethickness[i]*slopey[i];
+                taud=sqrt(taudx*taudx+taudy*taudy);
+        }
+        IssmDouble Alphaeff,Alphaeff_cleanice;
+
+        /*measure the surface mass balance*/
+        for (int iv = 0; iv<NUM_VERTICES; iv++){
+
+                IssmDouble st=(surface[iv]-s0t[iv])/1000.;
+
+                int ismb_end=1;
+                if(isdebris & !isAnderson) ismb_end=2;
+                for (int ismb=0;ismb<ismb_end;ismb++){
+                        if(ismb==0){
+                                // calc a reference smb to identify accum and melt region; debris only develops in ablation area
+                                debris=0.;
+                                PhiD=0.;
+                                if(isAnderson) debris_here=debriscover[iv]; // store debris for later
+                        }else{
+                                // debris only develops in ablation area
+                                /*if((accu[iv]/yts-CleanIceMelt)<(-1e-2)/yts){
+                                        debris=debriscover[iv];
+                                }else{
+                                        debris=0.;
+                                }*/
+                                debris=0.;
+                                if(debris<=0.) debris=0.;
+                                if(isdebris) PhiD=FindParam(DebrisPackingFractionEnum);
+                                CumDailyMelt=0;
+                                CumDailySummerMelt=0;
+                                debris_here=debriscover[iv];
+                        }
+
+                        /* Now run the debris part */
+
+                        // Climate inputs
+                        IssmDouble Tm;          // C air temperature
+                        IssmDouble In;          // Wm^-2 incoming long wave
+                        IssmDouble Q;           // Wm^-2 incoming short wave
+                        IssmDouble Um;          // ms^-1 measured wind speed
+                        IssmDouble Humidity;    // relative humidity
+                        IssmDouble P;           // precip
+
+                        // other parameters
+                        IssmDouble Qh=0.006;   // kg m^-3      saturated humidity level // not used
+                        IssmDouble Qm=0.8*Qh;  // kg m^-3      measured humiditiy level // not used
+                        IssmDouble Rhoaa=1.22; // kgm^-3       air densitiy
+                        IssmDouble K=0.585;    // Wm^-1K^-1    thermal conductivity          0.585
+                        IssmDouble Xr=0.01;    // ms^-1        surface roughness             0.01
+                        IssmDouble Ustar=0.16; // ms^-1        friction velocity             0.16
+                        IssmDouble Ca=1000;    // jkg^-1K^-1   specific heat capacity of air
+                        IssmDouble Lv=2.50E+06;// jkg^-1K^-1   latent heat of evaporation
+                        IssmDouble Eps=0.95;   //              thermal emissivity
+                        IssmDouble Sigma=5.67E-08;// Wm^-2K^-4    Stefan Boltzmann constant
+                        IssmDouble Gamma=180.;    // m^-1         wind speed attenuation        234
+                
+                        // Calculate effective albedo
+                        IssmDouble Alphaeff,Alphaeff_cleanice;
+                        IssmDouble mean_ela,delta=2000;
+                        
+                        // compute cleanice albedo based on previous SMB distribution
+                        //if(step==1){
+                                mean_ela=3000; //FIXME
+                        //}else{
+                        //        mean_ela=FindParam(SmbMeanElaEnum);
+                        //}
+                        Alphaeff_cleanice=icealbedo+(snowalbedo-icealbedo)*(1+tanh(PI*(surface[iv]-mean_ela)/delta))/2;
+                        Alphaeff=Alphaeff_cleanice; // will be updated below
+
+                        
+                        accu[iv]=0.;
+                        for (int iday=0;iday<365;iday++) {
+
+                                Tm=temperature[iv*365+iday]-st*rlaps;//+t_ampl[iv];//+(rand()%10-5)/5;
+                                In=lw[iv*365+iday]-st*dlgrad+lw_ampl[iv];
+                                Q=sw[iv*365+iday]+st*dsgrad+sw_ampl[iv];
+                                Humidity=humidity[iv*365+iday]-st*humiditygrad+humidity_ampl[iv];
+                                Um=wind[iv*365+iday]-st*windspeedgrad+wind_ampl[iv];
+                                P=(qlaps*st*precip[iv*365+iday]+precip[iv*365+iday]+p_ampl[iv])*sconv/365.; // convert precip from w.e. -> i.e
+
+                                /*Partition of precip in solid and liquid parts */
+                                IssmDouble temp_plus=1; 
+                                IssmDouble temp_minus=-1.;
+                                IssmDouble frac_solid;
+                                if(Tm>=temp_plus){
+                                        frac_solid=0;
+                                }else if(Tm<=temp_minus){
+                                        frac_solid=1;
+                                }else{
+                                        frac_solid=1*(1-cos(PI*(temp_plus-Tm)/(temp_plus-temp_minus)))/2;
+                                }
+
+                                /*Get yearly temperatures and accumulation */
+                                yearlytemperatures[iv]=yearlytemperatures[iv]+((temperature[iv*365+iday]-rlaps*st+Tf+t_ampl[iv]))/365; // Has to be in Kelvin
+                                accu[iv]=accu[iv]+P*frac_solid;
+                                if(yearlytemperatures[iv]>Tf) yearlytemperatures[iv]=Tf;
+
+                                CleanIceDailyMelt=((In-(Eps*Sigma*(Tf*Tf*Tf*Tf))+
+                                        Q*(1.-Alphaeff)+
+                                        (Rhoaa*Ca*Ustar*Ustar)/(Um-Ustar*(2.-(exp(Gamma*Xr))))*Tm)/((1-PhiD)*rho_ice*Lm)/(1.+
+                                        ((Rhoaa*Ca*Ustar*Ustar)/(Um-Ustar*(2.-(exp(Gamma*Xr))))+4.*Eps*Sigma*(Tf*Tf*Tf))/
+                                        K*debris)-(Lv*Ustar*Ustar*((Humidity))*(exp(-Gamma*Xr)))/((1.-PhiD)*
+                                        rho_ice*Lm*Ustar)/(((Um
+                                        -2.*Ustar)*exp(-Gamma*Xr))/Ustar+exp(Gamma*debris)));
+                                if(CleanIceDailyMelt<0) CleanIceDailyMelt=0.;
+                                DailyMelt=CleanIceDailyMelt;
+
+                                if(ismb==1){
+
+                                        //snowheight[iv]=snowheight[iv]+(P-CleanIceDailyMelt*yts/365);
+                                        IssmDouble sn_prev;
+                                        sn_prev=snowheight[iv];
+                                        snowheight[iv]=sn_prev+(-CleanIceDailyMelt*yts/365);//P
+                                        
+                                        if(snowheight[iv]<=0) snowheight[iv]=0.;
+                                        if(snowheight[iv]<=0.0001){
+                                                p=debris_here*PhiD/(2*0.2*0.01); //Eq. 51 from Evatt et al 2015 without source term g*t
+                                                if(p>1.) p=1.;
+                                                if(p>=0.999){
+                                                        Alphaeff=debrisalbedo;
+                                                } else {
+                                                        Alphaeff=Alphaeff_cleanice+p*(debrisalbedo-Alphaeff_cleanice);
+                                                }
+                                                debris=debris_here;
+                                                DailyMelt=((In-(Eps*Sigma*(Tf*Tf*Tf*Tf))+
+                                                        Q*(1.-Alphaeff)+
+                                                        (Rhoaa*Ca*Ustar*Ustar)/(Um-Ustar*(2.-(exp(Gamma*Xr))))*Tm)/((1-PhiD)*rho_ice*Lm)/(1.+
+                                                        ((Rhoaa*Ca*Ustar*Ustar)/(Um-Ustar*(2.-(exp(Gamma*Xr))))+4.*Eps*Sigma*(Tf*Tf*Tf))/
+                                                        K*debris)-(Lv*Ustar*Ustar*((Humidity))*(exp(-Gamma*Xr)))/((1.-PhiD)*
+                                                        rho_ice*Lm*Ustar)/(((Um-2.*Ustar)*exp(-Gamma*Xr))/Ustar+exp(Gamma*debris)));
+                                                if(DailyMelt<0) DailyMelt=0.;
+                                                MeanSummerAlbedo=MeanSummerAlbedo+Alphaeff;
+                                                CumDailySummerMelt=CumDailySummerMelt+DailyMelt/365;
+                                        }
+                                }
+                                CumDailyMelt=CumDailyMelt+DailyMelt/365;
+                        }
+                        MeanAlbedo=MeanAlbedo+Alphaeff;
+                        if(ismb==0) CleanIceMelt=CumDailyMelt;
+                }
+
+                if(iscryokarst){
+                        if(taud>=taud_plus){
+                                lambda=0;
+                        }else if(taud>=taud_minus & taud<taud_plus){
+                                lambda=0.1*(1-cos(PI*(taud_plus-taud)/(taud_plus-taud_minus)))/2;
+                        }else if(taud<taud_minus){
+                                lambda=0.1;
+                        }
+                }
+
+                // update values
+                melt[iv]=CumDailyMelt; // is already in m/s
+                accu[iv]=accu[iv]/yts;
+                if(isAnderson){
+                        smb[iv]=(accu[iv]-melt[iv])*D0/(D0+debris_here);
+                        if(iscryokarst){ 
+                                smb[iv]=lambda*(accu[iv]-melt[iv])+(1-lambda)*(accu[iv]-melt[iv])*D0/(D0+debris_here);
+                        }else{
+                                smb[iv]=(accu[iv]-melt[iv])*D0/(D0+debris_here);
+                        }
+                }else{
+                        if(iscryokarst){ 
+                                smb[iv]=lambda*(accu[iv]-CleanIceMelt)+(1-lambda)*(accu[iv]-melt[iv]);
+                        }else{
+                                smb[iv]=(accu[iv]-melt[iv]);
+                        }
+                }
+                albedo[iv]=MeanAlbedo;
+                summeralbedo[iv]=MeanSummerAlbedo;
+                summermelt[iv]=CumDailySummerMelt;
+        }
+
+        this->AddInput(SmbMassBalanceEnum,smb,P1Enum);
+        this->AddInput(SmbAccumulationEnum,accu,P1Enum);
+        this->AddInput(SmbMeltEnum,melt,P1Enum);
+        this->AddInput(SmbSummerMeltEnum,summermelt,P1Enum);
+        this->AddInput(SmbSnowheightEnum,snowheight,P1Enum);
+        this->AddInput(SmbAlbedoEnum,albedo,P1Enum);
+        this->AddInput(SmbSummerAlbedoEnum,summeralbedo,P1Enum);
+        this->AddInput(TemperaturePDDEnum,yearlytemperatures,P1Enum); // TemperaturePDD is wrong here, but don't want to create new Enum ...
+
+        /*clean-up*/
+        xDelete<IssmDouble>(temperature);
+        xDelete<IssmDouble>(precip);
+        xDelete<IssmDouble>(lw);
+        xDelete<IssmDouble>(sw);
+        xDelete<IssmDouble>(wind);
+        xDelete<IssmDouble>(humidity);
+        xDelete<IssmDouble>(smb);
+        xDelete<IssmDouble>(surface);
+        xDelete<IssmDouble>(melt);
+        xDelete<IssmDouble>(summermelt);
+        xDelete<IssmDouble>(albedo);
+        xDelete<IssmDouble>(summeralbedo);
+        xDelete<IssmDouble>(accu);
+        xDelete<IssmDouble>(yearlytemperatures);
+        xDelete<IssmDouble>(s0t);
+        xDelete<IssmDouble>(snowheight);
+        xDelete<IssmDouble>(debriscover);
+        xDelete<IssmDouble>(t_ampl);
+        xDelete<IssmDouble>(p_ampl);
+        xDelete<IssmDouble>(lw_ampl);
+        xDelete<IssmDouble>(sw_ampl);
+        xDelete<IssmDouble>(humidity_ampl);
+        xDelete<IssmDouble>(wind_ampl);
+        xDelete<IssmDouble>(slopex);
+        xDelete<IssmDouble>(slopey);
+        xDelete<IssmDouble>(icethickness);
+}
+/*}}}*/
+
+
+
 void       Element::ResultInterpolation(int* pinterpolation,int* pnodesperelement,int* parray_size, int output_enum){/*{{{*/
 
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 27855)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 27856)
@@ -177,4 +177,5 @@
 		void               PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm,bool ismungsm,bool issetpddfac);
 		void               PositiveDegreeDaySicopolis(bool isfirnwarming);
+		void               SmbDebrisEvatt();
 		void               RignotMeltParameterization();
 		void               ResultInterpolation(int* pinterpolation,int*nodesperelement,int* parray_size, int output_enum);
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 27855)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 27856)
@@ -489,6 +489,18 @@
 			parameters->AddObject(iomodel->CopyConstantObject("md.smb.ismethod",SmbSemicMethodEnum));
 			break;
-		case SMBdebrisMLEnum:
-			break;
+		case SMBdebrisEvattEnum:
+                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.qlaps",SmbDesfacEnum));
+                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.rlaps",SmbRlapsEnum));
+                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.dsgrad",SmbSWgradEnum));
+                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.dlgrad",SmbLWgradEnum));
+                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.windspeedgrad",SmbWindspeedgradEnum));
+                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.humiditygrad",SmbHumiditygradEnum));
+                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.icealbedo",SmbIcealbedoEnum));
+                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.snowalbedo",SmbSnowalbedoEnum));
+                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.debrisalbedo",SmbDebrisalbedoEnum));
+                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.isAnderson",SmbDebrisIsAndersonEnum));
+                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.iscryokarst",SmbDebrisIsCryokarstEnum));
+                        parameters->AddObject(iomodel->CopyConstantObject("md.smb.AndersonD0",SmbDebrisAndersonD0Enum));
+                        break;
 		default:
 			_error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
Index: /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp	(revision 27855)
+++ /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp	(revision 27856)
@@ -504,145 +504,9 @@
 
 }/*}}}*/
-void SmbDebrisMLx(FemModel* femmodel){/*{{{*/
-
-	//      The function is based on:
-	//      Evatt GW, Abrahams ID, Heil M, Mayer C, Kingslake J, Mitchell SL, et al. Glacial melt under a porous debris layer. Journal of Glaciology 61 (2015) 825–836, doi:10.3189/2
-	//      Constants/Values are taken from Mayer, Licciulli (2021): https://www.frontiersin.org/articles/10.3389/feart.2021.710276/full#B7
-	//      function taken from https://github.com/carlolic/DebrisExp/blob/main/USFs/USF_DebrisCoverage.f90
-
-	/*Intermediaries*/
-	// altitude gradients of the crucial parameters (radiation from Marty et al., TaAClimat; 2002)
-	IssmDouble LW=2.9;          // W/m^2 /100m                       2.9
-	IssmDouble SW=1.3;          // W/m^2 /100m                       1.3
-	IssmDouble HumidityG=0;     // % /100m         rough estimate
-	IssmDouble AirTemp=0.7;     // C /100m
-	IssmDouble WindSpeed=0.02;  // m/s /100m       rough estimate    0.2
-
-	// accumulation follows a linear increase above the ELA up to a plateau
-	IssmDouble AccG=0.1;                    // m w.e. /100m
-	IssmDouble AccMax=1.;                    // m w.e.
-	IssmDouble ReferenceElevation; 
-	IssmDouble AblationDays=120.;            //
-
-	IssmDouble In=100.;                 // Wm^-2        incoming long wave
-	IssmDouble Q=500.;                  // Wm^-2        incoming short wave
-	IssmDouble K=0.585;                // Wm^-1K^-1    thermal conductivity          0.585
-	IssmDouble Qm=0.0012;              // kg m^-3      measured humiditiy level
-	IssmDouble Qh=0.006 ;              // kg m^-3      saturated humidity level
-	IssmDouble Tm=2.;                   // C            air temperature
-	IssmDouble Rhoaa=1.22;             // kgm^-3       air densitiy
-	IssmDouble Um=1.5;                 // ms^-1        measured wind speed
-	IssmDouble Xm=1.5;                 // ms^-1        measurement height
-        IssmDouble Xr=0.01;                // ms^-1        surface roughness             0.01
-        IssmDouble Alphad=0.07;            //              debris albedo                 0.07
-        IssmDouble Alphai=0.4;             //              ice ablbedo
-        IssmDouble Alphaeff;
-        IssmDouble Ustar=0.16;             // ms^-1        friction velocity             0.16
-        IssmDouble Ca=1000.;                // jkg^-1K^-1   specific heat capacity of air
-        IssmDouble Lm;//=3.34E+05;            // jkg^-1K^-1   latent heat of ice melt
-        IssmDouble Lv=2.50E+06;            // jkg^-1K^-1   latent heat of evaporation
-        IssmDouble Tf=273.;                 // K            water freeezing temperature
-        IssmDouble Eps=0.95;               //              thermal emissivity
-        IssmDouble Rhoi=900.;               // kgm^-3       ice density
-        IssmDouble Sigma=5.67E-08;         // Wm^-2K^-4    Stefan Boltzmann constant
-        IssmDouble Kstar=0.4;              //              von kármán constant
-        IssmDouble Gamma=180.;              // m^-1         wind speed attenuation        234
-	IssmDouble PhiD;//=0.005;              //              debris packing fraction       0.01
-	IssmDouble Humidity=0.2;           //              relative humidity
-
-	IssmDouble smb,yts,z,debris;
-	IssmDouble MassBalanceCmDayDebris,MassBalanceMYearDebris;
-	bool isdebris;
-	int domaintype;
-	femmodel->parameters->FindParam(&isdebris,TransientIsdebrisEnum);
-
-	/*Get material parameters and constants */
-	//femmodel->parameters->FindParam(&Rhoi,MaterialsRhoIceEnum); // Note Carlo's model used as  benchmark was run with different densities for debris and FS
-	femmodel->parameters->FindParam(&Lm,MaterialsLatentheatEnum);
-	femmodel->parameters->FindParam(&yts,ConstantsYtsEnum); 
-	PhiD=0.;
-	if(isdebris) femmodel->parameters->FindParam(&PhiD,DebrisPackingFractionEnum);
-
-	/* Loop over all the elements of this partition */
-	for(Object* & object : femmodel->elements->objects){
-		Element* element=xDynamicCast<Element*>(object);
-
-		/* Allocate all arrays */
-		int         numvertices=element->GetNumberOfVertices();
-		IssmDouble* surfacelist=xNew<IssmDouble>(numvertices);
-		IssmDouble* smb=xNew<IssmDouble>(numvertices);
-		IssmDouble* debriscover=xNew<IssmDouble>(numvertices);
-		element->GetInputListOnVertices(surfacelist,SurfaceEnum);
-
-		/* Get inputs */
-		element->GetInputListOnVertices(debriscover,DebrisThicknessEnum);
-		element->FindParam(&domaintype,DomainTypeEnum);		
-
-		/*Loop over all vertices of element and calculate SMB as function of Debris Cover and z */
-		for(int v=0;v<numvertices;v++){
-
-			/*Get vertex elevation */
-			z=surfacelist[v];
-
-			/*Get top element*/
-			//if(domaintype==Domain3DEnum){
-
-			//}else{
-			//	Alphaeff=Alphad;
-			//	ReferenceElevation=2200.;     // m M&L                        	
-			//}
-
-			/* compute smb */
-			for (int ismb=0;ismb<2;ismb++){
-				if(ismb==0){
-					// calc a reference smb to identify accum and melt region; debris only develops in ablation area
-					debris=0.;
-					PhiD=0.;
-				}else{
-					// only in the meltregime debris develops
-					if(-MassBalanceCmDayDebris<1e-14) debris=debriscover[v]; 
-				}
-				if(debris<=0.) debris=0.;
-				IssmDouble dk=1e-5; // TODO make Alphad and Alphai a user input
-				IssmDouble n=debris/dk;
-				IssmDouble nmax=1000;
-				IssmDouble Alphaeff;
-				if(n>nmax){
-					Alphaeff=Alphad;
-				} else {
-					Alphaeff=Alphai+n*(Alphad-Alphai)/nmax;
-				}
-				ReferenceElevation=3200.;     // m HEF
-
-
-				Alphaeff=Alphad;
-				ReferenceElevation=2200.;     // m M&L  
-
-				MassBalanceCmDayDebris=(((In-(z-ReferenceElevation)*LW/100.)-(Eps*Sigma*(Tf*Tf*Tf*Tf))+ 
-							(Q+(z-ReferenceElevation)*SW/100.)*(1.-Alphaeff)+ 
-							(Rhoaa*Ca*Ustar*Ustar)/((Um-(z-ReferenceElevation)* 
-									WindSpeed/100.)-Ustar*(2.-(exp(Gamma*Xr))))*(Tm-(z- 
-										ReferenceElevation)*AirTemp/100.))/((1-PhiD)*Rhoi*Lm)/(1.+ 
-									((Rhoaa*Ca*Ustar*Ustar)/((Um-(z-ReferenceElevation)* 
-											WindSpeed/100.)-Ustar*(2.-(exp(Gamma*Xr))))+4.*Eps*Sigma*(Tf*Tf*Tf))/ 
-									K*debris)-(Lv*Ustar*Ustar*(Qh-(Qh*(Humidity-(z- 
-														ReferenceElevation)*HumidityG/100.)))*(exp(-Gamma*Xr)))/((1.-PhiD)* 
-											Rhoi*Lm*Ustar)/((((Um-(z-ReferenceElevation)*WindSpeed/100.) 
-                                    -2.*Ustar)*exp(-Gamma*Xr))/Ustar+exp(Gamma*debris)))*100.*24.*60.*60.;
-                        }
-
-                        /* account form ablation days, and convert to m/s */
-			MassBalanceMYearDebris=-MassBalanceCmDayDebris/100.*AblationDays/yts;
-
-			/*Update array accordingly*/
-			smb[v]=MassBalanceMYearDebris;
-		}
-
-		/*Add input to element and Free memory*/
-		element->AddInput(SmbMassBalanceEnum,smb,P1Enum);
-		xDelete<IssmDouble>(surfacelist);
-		xDelete<IssmDouble>(smb);
-		xDelete<IssmDouble>(debriscover);
-	}
+void SmbDebrisEvattx(FemModel* femmodel){/*{{{*/
+        for(Object* & object : femmodel->elements->objects){
+                Element* element=xDynamicCast<Element*>(object);
+                element->SmbDebrisEvatt();
+        }
 }/*}}}*/
 void SmbGradientsComponentsx(FemModel* femmodel){/*{{{*/
Index: /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h
===================================================================
--- /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h	(revision 27855)
+++ /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h	(revision 27856)
@@ -23,5 +23,5 @@
 void SmbMeltComponentsx(FemModel* femmodel);
 void SmbGradientsComponentsx(FemModel* femmodel);
-void SmbDebrisMLx(FemModel* femmodel);
+void SmbDebrisEvattx(FemModel* femmodel);
 /* SEMIC: */
 void SmbSemicx(FemModel* femmodel, int ismethod);
Index: /issm/trunk-jpl/src/c/shared/Enum/Enum.vim
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 27855)
+++ /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 27856)
@@ -539,4 +539,10 @@
 syn keyword cConstant SmbARMAmaOrderEnum
 syn keyword cConstant SmbAveragingEnum
+syn keyword cConstant SmbDebrisalbedoEnum
+syn keyword cConstant SmbIcealbedoEnum
+syn keyword cConstant SmbSnowalbedoEnum
+syn keyword cConstant SmbDebrisIsAndersonEnum
+syn keyword cConstant SmbDebrisIsCryokarstEnum
+syn keyword cConstant SmbDebrisAndersonD0Enum
 syn keyword cConstant SmbDesfacEnum
 syn keyword cConstant SmbDesfacElevEnum
@@ -552,4 +558,5 @@
 syn keyword cConstant SmbEIdxEnum
 syn keyword cConstant SmbFEnum
+syn keyword cConstant SmbHumiditygradEnum
 syn keyword cConstant SmbInitDensityScalingEnum
 syn keyword cConstant SmbIsaccumulationEnum
@@ -572,4 +579,5 @@
 syn keyword cConstant SmbKEnum
 syn keyword cConstant SmbLapseRatesEnum
+syn keyword cConstant SmbLWgradEnum
 syn keyword cConstant SmbNumBasinsEnum
 syn keyword cConstant SmbNumBreaksEnum
@@ -604,4 +612,5 @@
 syn keyword cConstant SmbStepsPerStepEnum
 syn keyword cConstant SmbSwIdxEnum
+syn keyword cConstant SmbSWgradEnum
 syn keyword cConstant SmbT0dryEnum
 syn keyword cConstant SmbT0wetEnum
@@ -612,4 +621,5 @@
 syn keyword cConstant SmbTemperaturesReconstructedYearsEnum
 syn keyword cConstant SmbPrecipitationsReconstructedYearsEnum
+syn keyword cConstant SmbWindspeedgradEnum
 syn keyword cConstant SmoothThicknessMultiplierEnum
 syn keyword cConstant SolutionTypeEnum
@@ -1107,4 +1117,8 @@
 syn keyword cConstant SmbMeltEnum
 syn keyword cConstant SmbMonthlytemperaturesEnum
+syn keyword cConstant SmbMonthlydsradiationEnum
+syn keyword cConstant SmbMonthlydlradiationEnum
+syn keyword cConstant SmbMonthlywindspeedEnum
+syn keyword cConstant SmbMonthlyairhumidityEnum
 syn keyword cConstant SmbMSurfEnum
 syn keyword cConstant SmbNetLWEnum
@@ -1116,4 +1130,8 @@
 syn keyword cConstant SmbPrecipitationEnum
 syn keyword cConstant SmbPrecipitationsAnomalyEnum
+syn keyword cConstant SmbDsradiationAnomalyEnum
+syn keyword cConstant SmbDlradiationAnomalyEnum
+syn keyword cConstant SmbWindspeedAnomalyEnum
+syn keyword cConstant SmbAirhumidityAnomalyEnum
 syn keyword cConstant SmbPrecipitationsLgmEnum
 syn keyword cConstant SmbPrecipitationsPresentdayEnum
@@ -1135,4 +1153,7 @@
 syn keyword cConstant SmbSmbrefEnum
 syn keyword cConstant SmbSzaValueEnum
+syn keyword cConstant SmbSummerMeltEnum
+syn keyword cConstant SmbSummerAlbedoEnum
+syn keyword cConstant SmbSnowheightEnum
 syn keyword cConstant SmbTEnum
 syn keyword cConstant SmbTaEnum
@@ -1654,5 +1675,5 @@
 syn keyword cConstant SMBarmaEnum
 syn keyword cConstant SMBcomponentsEnum
-syn keyword cConstant SMBdebrisMLEnum
+syn keyword cConstant SMBdebrisEvattEnum
 syn keyword cConstant SMBd18opddEnum
 syn keyword cConstant SMBforcingEnum
@@ -1780,4 +1801,5 @@
 syn keyword cType Cfsurfacesquaretransient
 syn keyword cType Channel
+syn keyword cType classes
 syn keyword cType Constraint
 syn keyword cType Constraints
@@ -1787,6 +1809,6 @@
 syn keyword cType ControlParam
 syn keyword cType Covertree
+syn keyword cType DatasetInput
 syn keyword cType DataSetParam
-syn keyword cType DatasetInput
 syn keyword cType Definition
 syn keyword cType DependentObject
@@ -1801,6 +1823,6 @@
 syn keyword cType ElementInput
 syn keyword cType ElementMatrix
+syn keyword cType Elements
 syn keyword cType ElementVector
-syn keyword cType Elements
 syn keyword cType ExponentialVariogram
 syn keyword cType ExternalResult
@@ -1809,9 +1831,10 @@
 syn keyword cType Friction
 syn keyword cType Gauss
+syn keyword cType GaussianVariogram
+syn keyword cType gaussobjects
 syn keyword cType GaussPenta
 syn keyword cType GaussSeg
 syn keyword cType GaussTetra
 syn keyword cType GaussTria
-syn keyword cType GaussianVariogram
 syn keyword cType GenericExternalResult
 syn keyword cType GenericOption
@@ -1830,4 +1853,5 @@
 syn keyword cType IssmDirectApplicInterface
 syn keyword cType IssmParallelDirectApplicInterface
+syn keyword cType krigingobjects
 syn keyword cType Load
 syn keyword cType Loads
@@ -1840,4 +1864,5 @@
 syn keyword cType Matice
 syn keyword cType Matlitho
+syn keyword cType matrixobjects
 syn keyword cType MatrixParam
 syn keyword cType Misfit
@@ -1852,6 +1877,6 @@
 syn keyword cType Observations
 syn keyword cType Option
+syn keyword cType Options
 syn keyword cType OptionUtilities
-syn keyword cType Options
 syn keyword cType Param
 syn keyword cType Parameters
@@ -1867,11 +1892,11 @@
 syn keyword cType Regionaloutput
 syn keyword cType Results
+syn keyword cType Riftfront
 syn keyword cType RiftStruct
-syn keyword cType Riftfront
 syn keyword cType SealevelGeometry
 syn keyword cType Seg
 syn keyword cType SegInput
+syn keyword cType Segment
 syn keyword cType SegRef
-syn keyword cType Segment
 syn keyword cType SpcDynamic
 syn keyword cType SpcStatic
@@ -1892,8 +1917,4 @@
 syn keyword cType Vertex
 syn keyword cType Vertices
-syn keyword cType classes
-syn keyword cType gaussobjects
-syn keyword cType krigingobjects
-syn keyword cType matrixobjects
 syn keyword cType AdjointBalancethickness2Analysis
 syn keyword cType AdjointBalancethicknessAnalysis
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27855)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27856)
@@ -533,4 +533,10 @@
    SmbARMAmaOrderEnum,
 	SmbAveragingEnum,
+	SmbDebrisalbedoEnum,
+	SmbIcealbedoEnum,
+	SmbSnowalbedoEnum,
+        SmbDebrisIsAndersonEnum,
+        SmbDebrisIsCryokarstEnum,
+        SmbDebrisAndersonD0Enum,
 	SmbDesfacEnum,
 	SmbDesfacElevEnum,
@@ -546,4 +552,5 @@
 	SmbEIdxEnum,
 	SmbFEnum,
+	SmbHumiditygradEnum,
 	SmbInitDensityScalingEnum,
 	SmbIsaccumulationEnum,
@@ -566,4 +573,5 @@
 	SmbKEnum,
    SmbLapseRatesEnum,
+   	SmbLWgradEnum,
 	SmbNumBasinsEnum,
 	SmbNumBreaksEnum,
@@ -598,4 +606,5 @@
 	SmbStepsPerStepEnum,
 	SmbSwIdxEnum,
+	SmbSWgradEnum,
 	SmbT0dryEnum,
 	SmbT0wetEnum,
@@ -606,4 +615,5 @@
 	SmbTemperaturesReconstructedYearsEnum,
 	SmbPrecipitationsReconstructedYearsEnum,
+	SmbWindspeedgradEnum,
 	SmoothThicknessMultiplierEnum,
 	SolutionTypeEnum,
@@ -1104,4 +1114,8 @@
 	SmbMInitnum,
 	SmbMonthlytemperaturesEnum,
+	SmbMonthlydsradiationEnum,
+        SmbMonthlydlradiationEnum,
+        SmbMonthlywindspeedEnum,
+        SmbMonthlyairhumidityEnum,
 	SmbMSurfEnum,
 	SmbNetLWEnum,
@@ -1113,4 +1127,8 @@
 	SmbPrecipitationEnum,
 	SmbPrecipitationsAnomalyEnum,
+	SmbDsradiationAnomalyEnum,
+        SmbDlradiationAnomalyEnum,
+        SmbWindspeedAnomalyEnum,
+        SmbAirhumidityAnomalyEnum,
 	SmbPrecipitationsLgmEnum,
 	SmbPrecipitationsPresentdayEnum,
@@ -1132,4 +1150,7 @@
 	SmbSmbrefEnum,
 	SmbSzaValueEnum,
+	SmbSummerMeltEnum,
+        SmbSummerAlbedoEnum,
+        SmbSnowheightEnum,
 	SmbTEnum,
 	SmbTaEnum,
@@ -1653,5 +1674,5 @@
 	SMBarmaEnum,
 	SMBcomponentsEnum,
-	SMBdebrisMLEnum,
+	SMBdebrisEvattEnum,
 	SMBd18opddEnum,
 	SMBforcingEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 27855)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 27856)
@@ -541,4 +541,10 @@
 		case SmbARMAmaOrderEnum : return "SmbARMAmaOrder";
 		case SmbAveragingEnum : return "SmbAveraging";
+		case SmbDebrisalbedoEnum : return "SmbDebrisalbedo";
+		case SmbIcealbedoEnum : return "SmbIcealbedo";
+		case SmbSnowalbedoEnum : return "SmbSnowalbedo";
+		case SmbDebrisIsAndersonEnum : return "SmbDebrisIsAnderson";
+		case SmbDebrisIsCryokarstEnum : return "SmbDebrisIsCryokarst";
+		case SmbDebrisAndersonD0Enum : return "SmbDebrisAndersonD0";
 		case SmbDesfacEnum : return "SmbDesfac";
 		case SmbDesfacElevEnum : return "SmbDesfacElev";
@@ -554,4 +560,5 @@
 		case SmbEIdxEnum : return "SmbEIdx";
 		case SmbFEnum : return "SmbF";
+		case SmbHumiditygradEnum : return "SmbHumiditygrad";
 		case SmbInitDensityScalingEnum : return "SmbInitDensityScaling";
 		case SmbIsaccumulationEnum : return "SmbIsaccumulation";
@@ -574,4 +581,5 @@
 		case SmbKEnum : return "SmbK";
 		case SmbLapseRatesEnum : return "SmbLapseRates";
+		case SmbLWgradEnum : return "SmbLWgrad";
 		case SmbNumBasinsEnum : return "SmbNumBasins";
 		case SmbNumBreaksEnum : return "SmbNumBreaks";
@@ -606,4 +614,5 @@
 		case SmbStepsPerStepEnum : return "SmbStepsPerStep";
 		case SmbSwIdxEnum : return "SmbSwIdx";
+		case SmbSWgradEnum : return "SmbSWgrad";
 		case SmbT0dryEnum : return "SmbT0dry";
 		case SmbT0wetEnum : return "SmbT0wet";
@@ -614,4 +623,5 @@
 		case SmbTemperaturesReconstructedYearsEnum : return "SmbTemperaturesReconstructedYears";
 		case SmbPrecipitationsReconstructedYearsEnum : return "SmbPrecipitationsReconstructedYears";
+		case SmbWindspeedgradEnum : return "SmbWindspeedgrad";
 		case SmoothThicknessMultiplierEnum : return "SmoothThicknessMultiplier";
 		case SolutionTypeEnum : return "SolutionType";
@@ -1109,4 +1119,8 @@
 		case SmbMeltEnum : return "SmbMelt";
 		case SmbMonthlytemperaturesEnum : return "SmbMonthlytemperatures";
+		case SmbMonthlydsradiationEnum : return "SmbMonthlydsradiation";
+		case SmbMonthlydlradiationEnum : return "SmbMonthlydlradiation";
+		case SmbMonthlywindspeedEnum : return "SmbMonthlywindspeed";
+		case SmbMonthlyairhumidityEnum : return "SmbMonthlyairhumidity";
 		case SmbMSurfEnum : return "SmbMSurf";
 		case SmbNetLWEnum : return "SmbNetLW";
@@ -1118,4 +1132,8 @@
 		case SmbPrecipitationEnum : return "SmbPrecipitation";
 		case SmbPrecipitationsAnomalyEnum : return "SmbPrecipitationsAnomaly";
+		case SmbDsradiationAnomalyEnum : return "SmbDsradiationAnomaly";
+		case SmbDlradiationAnomalyEnum : return "SmbDlradiationAnomaly";
+		case SmbWindspeedAnomalyEnum : return "SmbWindspeedAnomaly";
+		case SmbAirhumidityAnomalyEnum : return "SmbAirhumidityAnomaly";
 		case SmbPrecipitationsLgmEnum : return "SmbPrecipitationsLgm";
 		case SmbPrecipitationsPresentdayEnum : return "SmbPrecipitationsPresentday";
@@ -1137,4 +1155,7 @@
 		case SmbSmbrefEnum : return "SmbSmbref";
 		case SmbSzaValueEnum : return "SmbSzaValue";
+		case SmbSummerMeltEnum : return "SmbSummerMelt";
+		case SmbSummerAlbedoEnum : return "SmbSummerAlbedo";
+		case SmbSnowheightEnum : return "SmbSnowheight";
 		case SmbTEnum : return "SmbT";
 		case SmbTaEnum : return "SmbTa";
@@ -1656,5 +1677,5 @@
 		case SMBarmaEnum : return "SMBarma";
 		case SMBcomponentsEnum : return "SMBcomponents";
-		case SMBdebrisMLEnum : return "SMBdebrisML";
+		case SMBdebrisEvattEnum : return "SMBdebrisEvatt";
 		case SMBd18opddEnum : return "SMBd18opdd";
 		case SMBforcingEnum : return "SMBforcing";
Index: /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 27855)
+++ /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 27856)
@@ -532,4 +532,10 @@
 syn keyword juliaConstC SmbARMAmaOrderEnum
 syn keyword juliaConstC SmbAveragingEnum
+syn keyword juliaConstC SmbDebrisalbedoEnum
+syn keyword juliaConstC SmbIcealbedoEnum
+syn keyword juliaConstC SmbSnowalbedoEnum
+syn keyword juliaConstC SmbDebrisIsAndersonEnum
+syn keyword juliaConstC SmbDebrisIsCryokarstEnum
+syn keyword juliaConstC SmbDebrisAndersonD0Enum
 syn keyword juliaConstC SmbDesfacEnum
 syn keyword juliaConstC SmbDesfacElevEnum
@@ -545,4 +551,5 @@
 syn keyword juliaConstC SmbEIdxEnum
 syn keyword juliaConstC SmbFEnum
+syn keyword juliaConstC SmbHumiditygradEnum
 syn keyword juliaConstC SmbInitDensityScalingEnum
 syn keyword juliaConstC SmbIsaccumulationEnum
@@ -565,4 +572,5 @@
 syn keyword juliaConstC SmbKEnum
 syn keyword juliaConstC SmbLapseRatesEnum
+syn keyword juliaConstC SmbLWgradEnum
 syn keyword juliaConstC SmbNumBasinsEnum
 syn keyword juliaConstC SmbNumBreaksEnum
@@ -597,4 +605,5 @@
 syn keyword juliaConstC SmbStepsPerStepEnum
 syn keyword juliaConstC SmbSwIdxEnum
+syn keyword juliaConstC SmbSWgradEnum
 syn keyword juliaConstC SmbT0dryEnum
 syn keyword juliaConstC SmbT0wetEnum
@@ -605,4 +614,5 @@
 syn keyword juliaConstC SmbTemperaturesReconstructedYearsEnum
 syn keyword juliaConstC SmbPrecipitationsReconstructedYearsEnum
+syn keyword juliaConstC SmbWindspeedgradEnum
 syn keyword juliaConstC SmoothThicknessMultiplierEnum
 syn keyword juliaConstC SolutionTypeEnum
@@ -1100,4 +1110,8 @@
 syn keyword juliaConstC SmbMeltEnum
 syn keyword juliaConstC SmbMonthlytemperaturesEnum
+syn keyword juliaConstC SmbMonthlydsradiationEnum
+syn keyword juliaConstC SmbMonthlydlradiationEnum
+syn keyword juliaConstC SmbMonthlywindspeedEnum
+syn keyword juliaConstC SmbMonthlyairhumidityEnum
 syn keyword juliaConstC SmbMSurfEnum
 syn keyword juliaConstC SmbNetLWEnum
@@ -1109,4 +1123,8 @@
 syn keyword juliaConstC SmbPrecipitationEnum
 syn keyword juliaConstC SmbPrecipitationsAnomalyEnum
+syn keyword juliaConstC SmbDsradiationAnomalyEnum
+syn keyword juliaConstC SmbDlradiationAnomalyEnum
+syn keyword juliaConstC SmbWindspeedAnomalyEnum
+syn keyword juliaConstC SmbAirhumidityAnomalyEnum
 syn keyword juliaConstC SmbPrecipitationsLgmEnum
 syn keyword juliaConstC SmbPrecipitationsPresentdayEnum
@@ -1128,4 +1146,7 @@
 syn keyword juliaConstC SmbSmbrefEnum
 syn keyword juliaConstC SmbSzaValueEnum
+syn keyword juliaConstC SmbSummerMeltEnum
+syn keyword juliaConstC SmbSummerAlbedoEnum
+syn keyword juliaConstC SmbSnowheightEnum
 syn keyword juliaConstC SmbTEnum
 syn keyword juliaConstC SmbTaEnum
@@ -1647,5 +1668,5 @@
 syn keyword juliaConstC SMBarmaEnum
 syn keyword juliaConstC SMBcomponentsEnum
-syn keyword juliaConstC SMBdebrisMLEnum
+syn keyword juliaConstC SMBdebrisEvattEnum
 syn keyword juliaConstC SMBd18opddEnum
 syn keyword juliaConstC SMBforcingEnum
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 27855)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 27856)
@@ -553,4 +553,10 @@
 	      else if (strcmp(name,"SmbARMAmaOrder")==0) return SmbARMAmaOrderEnum;
 	      else if (strcmp(name,"SmbAveraging")==0) return SmbAveragingEnum;
+	      else if (strcmp(name,"SmbDebrisalbedo")==0) return SmbDebrisalbedoEnum;
+	      else if (strcmp(name,"SmbIcealbedo")==0) return SmbIcealbedoEnum;
+	      else if (strcmp(name,"SmbSnowalbedo")==0) return SmbSnowalbedoEnum;
+	      else if (strcmp(name,"SmbDebrisIsAnderson")==0) return SmbDebrisIsAndersonEnum;
+	      else if (strcmp(name,"SmbDebrisIsCryokarst")==0) return SmbDebrisIsCryokarstEnum;
+	      else if (strcmp(name,"SmbDebrisAndersonD0")==0) return SmbDebrisAndersonD0Enum;
 	      else if (strcmp(name,"SmbDesfac")==0) return SmbDesfacEnum;
 	      else if (strcmp(name,"SmbDesfacElev")==0) return SmbDesfacElevEnum;
@@ -566,4 +572,5 @@
 	      else if (strcmp(name,"SmbEIdx")==0) return SmbEIdxEnum;
 	      else if (strcmp(name,"SmbF")==0) return SmbFEnum;
+	      else if (strcmp(name,"SmbHumiditygrad")==0) return SmbHumiditygradEnum;
 	      else if (strcmp(name,"SmbInitDensityScaling")==0) return SmbInitDensityScalingEnum;
 	      else if (strcmp(name,"SmbIsaccumulation")==0) return SmbIsaccumulationEnum;
@@ -586,4 +593,5 @@
 	      else if (strcmp(name,"SmbK")==0) return SmbKEnum;
 	      else if (strcmp(name,"SmbLapseRates")==0) return SmbLapseRatesEnum;
+	      else if (strcmp(name,"SmbLWgrad")==0) return SmbLWgradEnum;
 	      else if (strcmp(name,"SmbNumBasins")==0) return SmbNumBasinsEnum;
 	      else if (strcmp(name,"SmbNumBreaks")==0) return SmbNumBreaksEnum;
@@ -618,7 +626,11 @@
 	      else if (strcmp(name,"SmbStepsPerStep")==0) return SmbStepsPerStepEnum;
 	      else if (strcmp(name,"SmbSwIdx")==0) return SmbSwIdxEnum;
+	      else if (strcmp(name,"SmbSWgrad")==0) return SmbSWgradEnum;
 	      else if (strcmp(name,"SmbT0dry")==0) return SmbT0dryEnum;
 	      else if (strcmp(name,"SmbT0wet")==0) return SmbT0wetEnum;
-	      else if (strcmp(name,"SmbTcIdx")==0) return SmbTcIdxEnum;
+         else stage=6;
+   }
+   if(stage==6){
+	      if (strcmp(name,"SmbTcIdx")==0) return SmbTcIdxEnum;
 	      else if (strcmp(name,"SmbTeThresh")==0) return SmbTeThreshEnum;
 	      else if (strcmp(name,"SmbTdiff")==0) return SmbTdiffEnum;
@@ -626,11 +638,9 @@
 	      else if (strcmp(name,"SmbTemperaturesReconstructedYears")==0) return SmbTemperaturesReconstructedYearsEnum;
 	      else if (strcmp(name,"SmbPrecipitationsReconstructedYears")==0) return SmbPrecipitationsReconstructedYearsEnum;
+	      else if (strcmp(name,"SmbWindspeedgrad")==0) return SmbWindspeedgradEnum;
 	      else if (strcmp(name,"SmoothThicknessMultiplier")==0) return SmoothThicknessMultiplierEnum;
 	      else if (strcmp(name,"SolutionType")==0) return SolutionTypeEnum;
 	      else if (strcmp(name,"SteadystateMaxiter")==0) return SteadystateMaxiterEnum;
-         else stage=6;
-   }
-   if(stage==6){
-	      if (strcmp(name,"SteadystateNumRequestedOutputs")==0) return SteadystateNumRequestedOutputsEnum;
+	      else if (strcmp(name,"SteadystateNumRequestedOutputs")==0) return SteadystateNumRequestedOutputsEnum;
 	      else if (strcmp(name,"SteadystateReltol")==0) return SteadystateReltolEnum;
 	      else if (strcmp(name,"SteadystateRequestedOutputs")==0) return SteadystateRequestedOutputsEnum;
@@ -742,5 +752,8 @@
 	      else if (strcmp(name,"BasalforcingsSpatialUpperwaterMeltingRate")==0) return BasalforcingsSpatialUpperwaterMeltingRateEnum;
 	      else if (strcmp(name,"BasalforcingsIsmip6BasinId")==0) return BasalforcingsIsmip6BasinIdEnum;
-	      else if (strcmp(name,"BasalforcingsIsmip6Tf")==0) return BasalforcingsIsmip6TfEnum;
+         else stage=7;
+   }
+   if(stage==7){
+	      if (strcmp(name,"BasalforcingsIsmip6Tf")==0) return BasalforcingsIsmip6TfEnum;
 	      else if (strcmp(name,"BasalforcingsIsmip6TfShelf")==0) return BasalforcingsIsmip6TfShelfEnum;
 	      else if (strcmp(name,"BasalforcingsIsmip6MeltAnomaly")==0) return BasalforcingsIsmip6MeltAnomalyEnum;
@@ -752,8 +765,5 @@
 	      else if (strcmp(name,"BasalforcingsPicoOverturningCoeff")==0) return BasalforcingsPicoOverturningCoeffEnum;
 	      else if (strcmp(name,"BasalforcingsPicoSubShelfOceanOverturning")==0) return BasalforcingsPicoSubShelfOceanOverturningEnum;
-         else stage=7;
-   }
-   if(stage==7){
-	      if (strcmp(name,"BasalforcingsPicoSubShelfOceanSalinity")==0) return BasalforcingsPicoSubShelfOceanSalinityEnum;
+	      else if (strcmp(name,"BasalforcingsPicoSubShelfOceanSalinity")==0) return BasalforcingsPicoSubShelfOceanSalinityEnum;
 	      else if (strcmp(name,"BasalforcingsPicoSubShelfOceanTemp")==0) return BasalforcingsPicoSubShelfOceanTempEnum;
 	      else if (strcmp(name,"BasalStressx")==0) return BasalStressxEnum;
@@ -865,5 +875,8 @@
 	      else if (strcmp(name,"FrictionWaterLayer")==0) return FrictionWaterLayerEnum;
 	      else if (strcmp(name,"FrictionWaterPressure")==0) return FrictionWaterPressureEnum;
-	      else if (strcmp(name,"FrictionWaterPressureNoise")==0) return FrictionWaterPressureNoiseEnum;
+         else stage=8;
+   }
+   if(stage==8){
+	      if (strcmp(name,"FrictionWaterPressureNoise")==0) return FrictionWaterPressureNoiseEnum;
 	      else if (strcmp(name,"Frictionf")==0) return FrictionfEnum;
 	      else if (strcmp(name,"FrontalForcingsBasinId")==0) return FrontalForcingsBasinIdEnum;
@@ -875,8 +888,5 @@
 	      else if (strcmp(name,"UGia")==0) return UGiaEnum;
 	      else if (strcmp(name,"UGiaRate")==0) return UGiaRateEnum;
-         else stage=8;
-   }
-   if(stage==8){
-	      if (strcmp(name,"Gradient")==0) return GradientEnum;
+	      else if (strcmp(name,"Gradient")==0) return GradientEnum;
 	      else if (strcmp(name,"GroundinglineHeight")==0) return GroundinglineHeightEnum;
 	      else if (strcmp(name,"HydraulicPotential")==0) return HydraulicPotentialEnum;
@@ -988,5 +998,8 @@
 	      else if (strcmp(name,"SealevelBarystaticMask")==0) return SealevelBarystaticMaskEnum;
 	      else if (strcmp(name,"SealevelBarystaticIceMask")==0) return SealevelBarystaticIceMaskEnum;
-	      else if (strcmp(name,"SealevelBarystaticIceWeights")==0) return SealevelBarystaticIceWeightsEnum;
+         else stage=9;
+   }
+   if(stage==9){
+	      if (strcmp(name,"SealevelBarystaticIceWeights")==0) return SealevelBarystaticIceWeightsEnum;
 	      else if (strcmp(name,"SealevelBarystaticIceArea")==0) return SealevelBarystaticIceAreaEnum;
 	      else if (strcmp(name,"SealevelBarystaticIceLatbar")==0) return SealevelBarystaticIceLatbarEnum;
@@ -998,8 +1011,5 @@
 	      else if (strcmp(name,"SealevelBarystaticHydroLatbar")==0) return SealevelBarystaticHydroLatbarEnum;
 	      else if (strcmp(name,"SealevelBarystaticHydroLongbar")==0) return SealevelBarystaticHydroLongbarEnum;
-         else stage=9;
-   }
-   if(stage==9){
-	      if (strcmp(name,"SealevelBarystaticHydroLoad")==0) return SealevelBarystaticHydroLoadEnum;
+	      else if (strcmp(name,"SealevelBarystaticHydroLoad")==0) return SealevelBarystaticHydroLoadEnum;
 	      else if (strcmp(name,"SealevelBarystaticBpMask")==0) return SealevelBarystaticBpMaskEnum;
 	      else if (strcmp(name,"SealevelBarystaticBpWeights")==0) return SealevelBarystaticBpWeightsEnum;
@@ -1111,5 +1121,8 @@
 	      else if (strcmp(name,"SmbFAC")==0) return SmbFACEnum;
 	      else if (strcmp(name,"SmbGdn")==0) return SmbGdnEnum;
-	      else if (strcmp(name,"SmbGdnini")==0) return SmbGdniniEnum;
+         else stage=10;
+   }
+   if(stage==10){
+	      if (strcmp(name,"SmbGdnini")==0) return SmbGdniniEnum;
 	      else if (strcmp(name,"SmbGsp")==0) return SmbGspEnum;
 	      else if (strcmp(name,"SmbGspini")==0) return SmbGspiniEnum;
@@ -1121,8 +1134,5 @@
 	      else if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum;
 	      else if (strcmp(name,"SmbMAdd")==0) return SmbMAddEnum;
-         else stage=10;
-   }
-   if(stage==10){
-	      if (strcmp(name,"SmbMassBalance")==0) return SmbMassBalanceEnum;
+	      else if (strcmp(name,"SmbMassBalance")==0) return SmbMassBalanceEnum;
 	      else if (strcmp(name,"SmbMassBalanceSnow")==0) return SmbMassBalanceSnowEnum;
 	      else if (strcmp(name,"SmbMassBalanceIce")==0) return SmbMassBalanceIceEnum;
@@ -1136,4 +1146,8 @@
 	      else if (strcmp(name,"SmbMelt")==0) return SmbMeltEnum;
 	      else if (strcmp(name,"SmbMonthlytemperatures")==0) return SmbMonthlytemperaturesEnum;
+	      else if (strcmp(name,"SmbMonthlydsradiation")==0) return SmbMonthlydsradiationEnum;
+	      else if (strcmp(name,"SmbMonthlydlradiation")==0) return SmbMonthlydlradiationEnum;
+	      else if (strcmp(name,"SmbMonthlywindspeed")==0) return SmbMonthlywindspeedEnum;
+	      else if (strcmp(name,"SmbMonthlyairhumidity")==0) return SmbMonthlyairhumidityEnum;
 	      else if (strcmp(name,"SmbMSurf")==0) return SmbMSurfEnum;
 	      else if (strcmp(name,"SmbNetLW")==0) return SmbNetLWEnum;
@@ -1145,4 +1159,8 @@
 	      else if (strcmp(name,"SmbPrecipitation")==0) return SmbPrecipitationEnum;
 	      else if (strcmp(name,"SmbPrecipitationsAnomaly")==0) return SmbPrecipitationsAnomalyEnum;
+	      else if (strcmp(name,"SmbDsradiationAnomaly")==0) return SmbDsradiationAnomalyEnum;
+	      else if (strcmp(name,"SmbDlradiationAnomaly")==0) return SmbDlradiationAnomalyEnum;
+	      else if (strcmp(name,"SmbWindspeedAnomaly")==0) return SmbWindspeedAnomalyEnum;
+	      else if (strcmp(name,"SmbAirhumidityAnomaly")==0) return SmbAirhumidityAnomalyEnum;
 	      else if (strcmp(name,"SmbPrecipitationsLgm")==0) return SmbPrecipitationsLgmEnum;
 	      else if (strcmp(name,"SmbPrecipitationsPresentday")==0) return SmbPrecipitationsPresentdayEnum;
@@ -1164,4 +1182,7 @@
 	      else if (strcmp(name,"SmbSmbref")==0) return SmbSmbrefEnum;
 	      else if (strcmp(name,"SmbSzaValue")==0) return SmbSzaValueEnum;
+	      else if (strcmp(name,"SmbSummerMelt")==0) return SmbSummerMeltEnum;
+	      else if (strcmp(name,"SmbSummerAlbedo")==0) return SmbSummerAlbedoEnum;
+	      else if (strcmp(name,"SmbSnowheight")==0) return SmbSnowheightEnum;
 	      else if (strcmp(name,"SmbT")==0) return SmbTEnum;
 	      else if (strcmp(name,"SmbTa")==0) return SmbTaEnum;
@@ -1223,5 +1244,8 @@
 	      else if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum;
 	      else if (strcmp(name,"SurfaceObservation")==0) return SurfaceObservationEnum;
-	      else if (strcmp(name,"SurfaceRelVelMisfit")==0) return SurfaceRelVelMisfitEnum;
+         else stage=11;
+   }
+   if(stage==11){
+	      if (strcmp(name,"SurfaceRelVelMisfit")==0) return SurfaceRelVelMisfitEnum;
 	      else if (strcmp(name,"SurfaceSlopeX")==0) return SurfaceSlopeXEnum;
 	      else if (strcmp(name,"SurfaceSlopeY")==0) return SurfaceSlopeYEnum;
@@ -1244,8 +1268,5 @@
 	      else if (strcmp(name,"ThicknessResidual")==0) return ThicknessResidualEnum;
 	      else if (strcmp(name,"TransientAccumulatedDeltaIceThickness")==0) return TransientAccumulatedDeltaIceThicknessEnum;
-         else stage=11;
-   }
-   if(stage==11){
-	      if (strcmp(name,"Vel")==0) return VelEnum;
+	      else if (strcmp(name,"Vel")==0) return VelEnum;
 	      else if (strcmp(name,"VxAverage")==0) return VxAverageEnum;
 	      else if (strcmp(name,"VxBase")==0) return VxBaseEnum;
@@ -1346,5 +1367,8 @@
 	      else if (strcmp(name,"Outputdefinition63")==0) return Outputdefinition63Enum;
 	      else if (strcmp(name,"Outputdefinition64")==0) return Outputdefinition64Enum;
-	      else if (strcmp(name,"Outputdefinition65")==0) return Outputdefinition65Enum;
+         else stage=12;
+   }
+   if(stage==12){
+	      if (strcmp(name,"Outputdefinition65")==0) return Outputdefinition65Enum;
 	      else if (strcmp(name,"Outputdefinition66")==0) return Outputdefinition66Enum;
 	      else if (strcmp(name,"Outputdefinition67")==0) return Outputdefinition67Enum;
@@ -1367,8 +1391,5 @@
 	      else if (strcmp(name,"Outputdefinition82")==0) return Outputdefinition82Enum;
 	      else if (strcmp(name,"Outputdefinition83")==0) return Outputdefinition83Enum;
-         else stage=12;
-   }
-   if(stage==12){
-	      if (strcmp(name,"Outputdefinition84")==0) return Outputdefinition84Enum;
+	      else if (strcmp(name,"Outputdefinition84")==0) return Outputdefinition84Enum;
 	      else if (strcmp(name,"Outputdefinition85")==0) return Outputdefinition85Enum;
 	      else if (strcmp(name,"Outputdefinition86")==0) return Outputdefinition86Enum;
@@ -1469,5 +1490,8 @@
 	      else if (strcmp(name,"DepthAverageAnalysis")==0) return DepthAverageAnalysisEnum;
 	      else if (strcmp(name,"DeviatoricStressErrorEstimator")==0) return DeviatoricStressErrorEstimatorEnum;
-	      else if (strcmp(name,"Divergence")==0) return DivergenceEnum;
+         else stage=13;
+   }
+   if(stage==13){
+	      if (strcmp(name,"Divergence")==0) return DivergenceEnum;
 	      else if (strcmp(name,"Domain3Dsurface")==0) return Domain3DsurfaceEnum;
 	      else if (strcmp(name,"DoubleArrayInput")==0) return DoubleArrayInputEnum;
@@ -1490,8 +1514,5 @@
 	      else if (strcmp(name,"ExtrapolationAnalysis")==0) return ExtrapolationAnalysisEnum;
 	      else if (strcmp(name,"ExtrudeFromBaseAnalysis")==0) return ExtrudeFromBaseAnalysisEnum;
-         else stage=13;
-   }
-   if(stage==13){
-	      if (strcmp(name,"ExtrudeFromTopAnalysis")==0) return ExtrudeFromTopAnalysisEnum;
+	      else if (strcmp(name,"ExtrudeFromTopAnalysis")==0) return ExtrudeFromTopAnalysisEnum;
 	      else if (strcmp(name,"FSApproximation")==0) return FSApproximationEnum;
 	      else if (strcmp(name,"FSSolver")==0) return FSSolverEnum;
@@ -1592,5 +1613,8 @@
 	      else if (strcmp(name,"LoveLf")==0) return LoveLfEnum;
 	      else if (strcmp(name,"LoveLt")==0) return LoveLtEnum;
-	      else if (strcmp(name,"LoveTidalHt")==0) return LoveTidalHtEnum;
+         else stage=14;
+   }
+   if(stage==14){
+	      if (strcmp(name,"LoveTidalHt")==0) return LoveTidalHtEnum;
 	      else if (strcmp(name,"LoveTidalKt")==0) return LoveTidalKtEnum;
 	      else if (strcmp(name,"LoveTidalLt")==0) return LoveTidalLtEnum;
@@ -1613,8 +1637,5 @@
 	      else if (strcmp(name,"Materials")==0) return MaterialsEnum;
 	      else if (strcmp(name,"Matestar")==0) return MatestarEnum;
-         else stage=14;
-   }
-   if(stage==14){
-	      if (strcmp(name,"Matice")==0) return MaticeEnum;
+	      else if (strcmp(name,"Matice")==0) return MaticeEnum;
 	      else if (strcmp(name,"Matlitho")==0) return MatlithoEnum;
 	      else if (strcmp(name,"Mathydro")==0) return MathydroEnum;
@@ -1695,5 +1716,5 @@
 	      else if (strcmp(name,"SMBarma")==0) return SMBarmaEnum;
 	      else if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum;
-	      else if (strcmp(name,"SMBdebrisML")==0) return SMBdebrisMLEnum;
+	      else if (strcmp(name,"SMBdebrisEvatt")==0) return SMBdebrisEvattEnum;
 	      else if (strcmp(name,"SMBd18opdd")==0) return SMBd18opddEnum;
 	      else if (strcmp(name,"SMBforcing")==0) return SMBforcingEnum;
@@ -1715,5 +1736,8 @@
 	      else if (strcmp(name,"SealevelEmotion")==0) return SealevelEmotionEnum;
 	      else if (strcmp(name,"SealevelchangePolarMotionX")==0) return SealevelchangePolarMotionXEnum;
-	      else if (strcmp(name,"SealevelchangePolarMotionY")==0) return SealevelchangePolarMotionYEnum;
+         else stage=15;
+   }
+   if(stage==15){
+	      if (strcmp(name,"SealevelchangePolarMotionY")==0) return SealevelchangePolarMotionYEnum;
 	      else if (strcmp(name,"SealevelchangePolarMotionZ")==0) return SealevelchangePolarMotionZEnum;
 	      else if (strcmp(name,"SealevelchangePolarMotion")==0) return SealevelchangePolarMotionEnum;
@@ -1736,8 +1760,5 @@
 	      else if (strcmp(name,"SpcTransient")==0) return SpcTransientEnum;
 	      else if (strcmp(name,"Sset")==0) return SsetEnum;
-         else stage=15;
-   }
-   if(stage==15){
-	      if (strcmp(name,"StatisticsSolution")==0) return StatisticsSolutionEnum;
+	      else if (strcmp(name,"StatisticsSolution")==0) return StatisticsSolutionEnum;
 	      else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum;
 	      else if (strcmp(name,"StressIntensityFactor")==0) return StressIntensityFactorEnum;
Index: /issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp	(revision 27855)
+++ /issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp	(revision 27856)
@@ -262,5 +262,5 @@
 		case 12: return SMBsemicEnum;	 
 		case 13: return SMBarmaEnum;
-		case 14: return SMBdebrisMLEnum;
+		case 14: return SMBdebrisEvattEnum;
 		default: _error_("Marshalled SMB code \""<<enum_in<<"\" not supported yet");
 	}
