Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 28272)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 28273)
@@ -4979,5 +4979,5 @@
 }
 /*}}}*/
-void       Element::SmbGemb(IssmDouble timeinputs, int count){/*{{{*/
+void       Element::SmbGemb(IssmDouble timeinputs, int count, int steps){/*{{{*/
 
 	/*only compute SMB at the surface: */
@@ -5086,4 +5086,19 @@
 	IssmDouble* adiffini = NULL;
 	IssmDouble* Tini = NULL;
+	IssmDouble* ECsub=NULL;
+	IssmDouble* SMBsub=NULL;
+	IssmDouble* Msub=NULL;
+	IssmDouble* Rsub=NULL;
+	IssmDouble* Fsub=NULL;
+	IssmDouble* Rasub=NULL;
+	IssmDouble* Psub=NULL;
+	IssmDouble* FACsub=NULL;
+	IssmDouble* ECdsub=NULL;
+	IssmDouble* SMBdsub=NULL;
+	IssmDouble* Mdsub=NULL;
+	IssmDouble* Rdsub=NULL;
+	IssmDouble* Fdsub=NULL;
+	IssmDouble* Radsub=NULL;
+	IssmDouble* Pdsub=NULL;
 	int         m=0;
 	/*}}}*/
@@ -5298,4 +5313,56 @@
 		sumP_input->GetInputAverage(&sumP);
 		sumP=sumP*dt*rho_ice;
+
+		this->inputs->GetArray(SmbAccumulatedECSubstepEnum,this->lid,&ECsub,&steps);
+		this->inputs->GetArray(SmbAccumulatedMeltSubstepEnum,this->lid,&Msub,&steps);
+		this->inputs->GetArray(SmbAccumulatedRunoffSubstepEnum,this->lid,&Rsub,&steps);
+		this->inputs->GetArray(SmbAccumulatedRefreezeSubstepEnum,this->lid,&Fsub,&steps);
+		this->inputs->GetArray(SmbAccumulatedRainSubstepEnum,this->lid,&Rasub,&steps);
+		this->inputs->GetArray(SmbAccumulatedPrecipitationSubstepEnum,this->lid,&Psub,&steps);
+		this->inputs->GetArray(SmbAccumulatedMassBalanceSubstepEnum,this->lid,&SMBsub,&steps);
+		this->inputs->GetArray(SmbFACSubstepEnum,this->lid,&FACsub,&steps);
+
+		this->inputs->GetArray(SmbECSubstepEnum,this->lid,&ECdsub,&steps);
+		this->inputs->GetArray(SmbMeltSubstepEnum,this->lid,&Mdsub,&steps);
+		this->inputs->GetArray(SmbRunoffSubstepEnum,this->lid,&Rdsub,&steps);
+		this->inputs->GetArray(SmbRefreezeSubstepEnum,this->lid,&Fdsub,&steps);
+		this->inputs->GetArray(SmbRainSubstepEnum,this->lid,&Radsub,&steps);
+		this->inputs->GetArray(SmbPrecipitationSubstepEnum,this->lid,&Pdsub,&steps);
+		this->inputs->GetArray(SmbMassBalanceSubstepEnum,this->lid,&SMBdsub,&steps);
+	}
+	else{
+		ECsub=xNewZeroInit<IssmDouble>(steps);
+		SMBsub=xNewZeroInit<IssmDouble>(steps);
+		Msub=xNewZeroInit<IssmDouble>(steps);
+		Rsub=xNewZeroInit<IssmDouble>(steps);
+		Fsub=xNewZeroInit<IssmDouble>(steps);
+		Rasub=xNewZeroInit<IssmDouble>(steps);
+		Psub=xNewZeroInit<IssmDouble>(steps);
+		FACsub=xNewZeroInit<IssmDouble>(steps);
+
+		this->inputs->SetArrayInput(SmbAccumulatedECSubstepEnum,this->lid,ECsub,steps);
+		this->inputs->SetArrayInput(SmbAccumulatedMeltSubstepEnum,this->lid,Msub,steps);
+		this->inputs->SetArrayInput(SmbAccumulatedRunoffSubstepEnum,this->lid,Rsub,steps);
+		this->inputs->SetArrayInput(SmbAccumulatedRefreezeSubstepEnum,this->lid,Fsub,steps);
+		this->inputs->SetArrayInput(SmbAccumulatedRainSubstepEnum,this->lid,Rasub,steps);
+		this->inputs->SetArrayInput(SmbAccumulatedPrecipitationSubstepEnum,this->lid,Psub,steps);
+		this->inputs->SetArrayInput(SmbAccumulatedMassBalanceSubstepEnum,this->lid,SMBsub,steps);
+		this->inputs->SetArrayInput(SmbFACSubstepEnum,this->lid,FACsub,steps);
+
+		ECdsub=xNewZeroInit<IssmDouble>(steps);
+		SMBdsub=xNewZeroInit<IssmDouble>(steps);
+		Mdsub=xNewZeroInit<IssmDouble>(steps);
+		Rdsub=xNewZeroInit<IssmDouble>(steps);
+		Fdsub=xNewZeroInit<IssmDouble>(steps);
+		Radsub=xNewZeroInit<IssmDouble>(steps);
+		Pdsub=xNewZeroInit<IssmDouble>(steps);
+
+		this->inputs->SetArrayInput(SmbECSubstepEnum,this->lid,ECdsub,steps);
+		this->inputs->SetArrayInput(SmbMeltSubstepEnum,this->lid,Mdsub,steps);
+		this->inputs->SetArrayInput(SmbRunoffSubstepEnum,this->lid,Rdsub,steps);
+		this->inputs->SetArrayInput(SmbRefreezeSubstepEnum,this->lid,Fdsub,steps);
+		this->inputs->SetArrayInput(SmbRainSubstepEnum,this->lid,Radsub,steps);
+		this->inputs->SetArrayInput(SmbPrecipitationSubstepEnum,this->lid,Pdsub,steps);
+		this->inputs->SetArrayInput(SmbMassBalanceSubstepEnum,this->lid,SMBdsub,steps);
 	}
 	/*}}}*/
@@ -5463,4 +5530,38 @@
 	this->SetElementInput(SmbAccumulatedRainEnum,accsumRa+Ra/rho_ice);
 	this->SetElementInput(SmbAccumulatedPrecipitationEnum,accsumP+P/rho_ice);
+
+	ECsub[count-1]=accsumEC+EC/rho_ice;
+	Msub[count-1]=accsumM+M/rho_ice;
+	Fsub[count-1]=accsumF+F/rho_ice;
+	Rsub[count-1]=accsumR+R/rho_ice;
+	Rasub[count-1]=accsumRa+Ra/rho_ice;
+	Psub[count-1]=accsumP+P/rho_ice;
+	SMBsub[count-1]=accsumSMB+(P + EC -R)/rho_ice;
+	FACsub[count-1]=fac/1000.;
+
+	ECdsub[count-1]=EC/rho_ice;
+	Mdsub[count-1]=M/rho_ice;
+	Fdsub[count-1]=F/rho_ice;
+	Rdsub[count-1]=R/rho_ice;
+	Radsub[count-1]=Ra/rho_ice;
+	Pdsub[count-1]=P/rho_ice;
+	SMBdsub[count-1]=(P + EC -R)/rho_ice;
+
+	this->inputs->SetArrayInput(SmbAccumulatedECSubstepEnum,this->lid,ECsub,steps);
+	this->inputs->SetArrayInput(SmbAccumulatedMeltSubstepEnum,this->lid,Msub,steps);
+	this->inputs->SetArrayInput(SmbAccumulatedRunoffSubstepEnum,this->lid,Rsub,steps);
+	this->inputs->SetArrayInput(SmbAccumulatedRefreezeSubstepEnum,this->lid,Fsub,steps);
+	this->inputs->SetArrayInput(SmbAccumulatedRainSubstepEnum,this->lid,Rasub,steps);
+	this->inputs->SetArrayInput(SmbAccumulatedPrecipitationSubstepEnum,this->lid,Psub,steps);
+	this->inputs->SetArrayInput(SmbAccumulatedMassBalanceSubstepEnum,this->lid,SMBsub,steps);
+	this->inputs->SetArrayInput(SmbFACSubstepEnum,this->lid,FACsub,steps);
+
+	this->inputs->SetArrayInput(SmbECSubstepEnum,this->lid,ECdsub,steps);
+	this->inputs->SetArrayInput(SmbMeltSubstepEnum,this->lid,Mdsub,steps);
+	this->inputs->SetArrayInput(SmbRunoffSubstepEnum,this->lid,Rdsub,steps);
+	this->inputs->SetArrayInput(SmbRefreezeSubstepEnum,this->lid,Fdsub,steps);
+	this->inputs->SetArrayInput(SmbRainSubstepEnum,this->lid,Radsub,steps);
+	this->inputs->SetArrayInput(SmbPrecipitationSubstepEnum,this->lid,Pdsub,steps);
+	this->inputs->SetArrayInput(SmbMassBalanceSubstepEnum,this->lid,SMBdsub,steps);
    /*}}}*/
 
@@ -5475,11 +5576,11 @@
 	this->inputs->SetArrayInput(SmbAEnum,this->lid,a,m);
 	this->inputs->SetArrayInput(SmbAdiffEnum,this->lid,adiff,m);
-	this->SetElementInput(SmbECEnum,sumEC/dt/rho_ice);
-	this->SetElementInput(SmbMassBalanceEnum,(sumP + sumEC -sumR)/dt/rho_ice);
-	this->SetElementInput(SmbMeltEnum,sumM/dt/rho_ice);
-	this->SetElementInput(SmbRunoffEnum,sumR/dt/rho_ice);
-	this->SetElementInput(SmbRefreezeEnum,sumF/dt/rho_ice);
-	this->SetElementInput(SmbRainEnum,sumRa/dt/rho_ice);
-	this->SetElementInput(SmbPrecipitationEnum,sumP/dt/rho_ice);
+	this->SetElementInput(SmbECEnum,cellsum(ECdsub,steps)/dt);
+	this->SetElementInput(SmbMassBalanceEnum,cellsum(SMBdsub,steps)/dt);
+	this->SetElementInput(SmbMeltEnum,cellsum(Mdsub,steps)/dt);
+	this->SetElementInput(SmbRunoffEnum,cellsum(Rdsub,steps)/dt);
+	this->SetElementInput(SmbRefreezeEnum,cellsum(Fdsub,steps)/dt);
+	this->SetElementInput(SmbRainEnum,cellsum(Radsub,steps)/dt);
+	this->SetElementInput(SmbPrecipitationEnum,cellsum(Pdsub,steps)/dt);
 	this->SetElementInput(SmbMeanULWEnum,meanULW);
 	this->SetElementInput(SmbNetLWEnum,netLW);
@@ -5516,4 +5617,20 @@
 	if(Tini) xDelete<IssmDouble>(Tini);
 	if(swf) xDelete<IssmDouble>(swf);
+
+	if(ECsub) xDelete<IssmDouble>(ECsub);
+	if(SMBsub) xDelete<IssmDouble>(SMBsub);
+	if(Msub) xDelete<IssmDouble>(Msub);
+	if(Rsub) xDelete<IssmDouble>(Rsub);
+	if(Fsub) xDelete<IssmDouble>(Fsub);
+	if(Rasub) xDelete<IssmDouble>(Rasub);
+	if(Psub) xDelete<IssmDouble>(Psub);
+	if(FACsub) xDelete<IssmDouble>(FACsub);
+	if(ECdsub) xDelete<IssmDouble>(ECdsub);
+	if(SMBdsub) xDelete<IssmDouble>(SMBdsub);
+	if(Mdsub) xDelete<IssmDouble>(Mdsub);
+	if(Rdsub) xDelete<IssmDouble>(Rdsub);
+	if(Fdsub) xDelete<IssmDouble>(Fdsub);
+	if(Radsub) xDelete<IssmDouble>(Radsub);
+	if(Pdsub) xDelete<IssmDouble>(Pdsub);
 
 	delete gauss;
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 28272)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 28273)
@@ -190,5 +190,5 @@
 		void               SmbSemicTransient();
 		int                Sid();
-		void               SmbGemb(IssmDouble timeinputs, int count);
+		void               SmbGemb(IssmDouble timeinputs, int count, int steps);
 		void               StrainRateESA(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
 		void               StrainRateFS(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
Index: /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/Gembx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/Gembx.cpp	(revision 28272)
+++ /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/Gembx.cpp	(revision 28273)
@@ -35,4 +35,5 @@
 
 	int        count=0;
+	int        steps=0;
 	IssmDouble time,dt,finaltime;
 	IssmDouble timeclim=0.0;
@@ -53,4 +54,9 @@
 	IssmDouble timeinputs = time;
 
+	steps=0;
+	for (t=time;t<=time+dt-smb_dt;t=t+smb_dt){
+		steps=steps+1;
+	}
+
 	/*Start loop: */
 	count=1;
@@ -63,5 +69,5 @@
 			if (linear_interp) timeinputs = t-time+timeclim;
 			else timeinputs = t-time+timeclim+smb_dt/2;
-			element->SmbGemb(timeinputs,count);
+			element->SmbGemb(timeinputs,count,steps);
 		}
 		count=count+1;
Index: /issm/trunk-jpl/src/c/shared/Enum/Enum.vim
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 28272)
+++ /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 28273)
@@ -1058,4 +1058,11 @@
 syn keyword cConstant SmbAccumulatedRefreezeEnum
 syn keyword cConstant SmbAccumulatedRunoffEnum
+syn keyword cConstant SmbAccumulatedECSubstepEnum
+syn keyword cConstant SmbAccumulatedMassBalanceSubstepEnum
+syn keyword cConstant SmbAccumulatedMeltSubstepEnum
+syn keyword cConstant SmbAccumulatedPrecipitationSubstepEnum
+syn keyword cConstant SmbAccumulatedRainSubstepEnum
+syn keyword cConstant SmbAccumulatedRefreezeSubstepEnum
+syn keyword cConstant SmbAccumulatedRunoffSubstepEnum
 syn keyword cConstant SmbAlbedoEnum
 syn keyword cConstant SmbAlbedoInitEnum
@@ -1100,4 +1107,5 @@
 syn keyword cConstant SmbEAirEnum
 syn keyword cConstant SmbECEnum
+syn keyword cConstant SmbECSubstepEnum
 syn keyword cConstant SmbECDtEnum
 syn keyword cConstant SmbECiniEnum
@@ -1105,4 +1113,5 @@
 syn keyword cConstant SmbEvaporationEnum
 syn keyword cConstant SmbFACEnum
+syn keyword cConstant SmbFACSubstepEnum
 syn keyword cConstant SmbGdnEnum
 syn keyword cConstant SmbGdniniEnum
@@ -1126,4 +1135,5 @@
 syn keyword cConstant SmbMeanULWEnum
 syn keyword cConstant SmbMeltEnum
+syn keyword cConstant SmbMeltSubstepEnum
 syn keyword cConstant SmbMonthlytemperaturesEnum
 syn keyword cConstant SmbMonthlydsradiationEnum
@@ -1140,4 +1150,5 @@
 syn keyword cConstant SmbPddfacSnowEnum
 syn keyword cConstant SmbPrecipitationEnum
+syn keyword cConstant SmbPrecipitationSubstepEnum
 syn keyword cConstant SmbPrecipitationsAnomalyEnum
 syn keyword cConstant SmbDsradiationAnomalyEnum
@@ -1149,6 +1160,8 @@
 syn keyword cConstant SmbPrecipitationsReconstructedEnum
 syn keyword cConstant SmbRainEnum
+syn keyword cConstant SmbRainSubstepEnum
 syn keyword cConstant SmbReEnum
 syn keyword cConstant SmbRefreezeEnum
+syn keyword cConstant SmbRefreezeSubstepEnum
 syn keyword cConstant SmbReiniEnum
 syn keyword cConstant SmbRunoffEnum
@@ -1817,5 +1830,4 @@
 syn keyword cType Cfsurfacesquaretransient
 syn keyword cType Channel
-syn keyword cType classes
 syn keyword cType Constraint
 syn keyword cType Constraints
@@ -1825,6 +1837,6 @@
 syn keyword cType ControlParam
 syn keyword cType Covertree
+syn keyword cType DataSetParam
 syn keyword cType DatasetInput
-syn keyword cType DataSetParam
 syn keyword cType Definition
 syn keyword cType DependentObject
@@ -1839,6 +1851,6 @@
 syn keyword cType ElementInput
 syn keyword cType ElementMatrix
+syn keyword cType ElementVector
 syn keyword cType Elements
-syn keyword cType ElementVector
 syn keyword cType ExponentialVariogram
 syn keyword cType ExternalResult
@@ -1847,10 +1859,9 @@
 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
@@ -1869,5 +1880,4 @@
 syn keyword cType IssmDirectApplicInterface
 syn keyword cType IssmParallelDirectApplicInterface
-syn keyword cType krigingobjects
 syn keyword cType Load
 syn keyword cType Loads
@@ -1880,5 +1890,4 @@
 syn keyword cType Matice
 syn keyword cType Matlitho
-syn keyword cType matrixobjects
 syn keyword cType MatrixParam
 syn keyword cType Misfit
@@ -1893,6 +1902,6 @@
 syn keyword cType Observations
 syn keyword cType Option
+syn keyword cType OptionUtilities
 syn keyword cType Options
-syn keyword cType OptionUtilities
 syn keyword cType Param
 syn keyword cType Parameters
@@ -1908,11 +1917,11 @@
 syn keyword cType Regionaloutput
 syn keyword cType Results
+syn keyword cType RiftStruct
 syn keyword cType Riftfront
-syn keyword cType RiftStruct
 syn keyword cType SealevelGeometry
 syn keyword cType Seg
 syn keyword cType SegInput
+syn keyword cType SegRef
 syn keyword cType Segment
-syn keyword cType SegRef
 syn keyword cType SpcDynamic
 syn keyword cType SpcStatic
@@ -1928,5 +1937,4 @@
 syn keyword cType Tria
 syn keyword cType TriaInput
-syn keyword cType Tria_MICI
 syn keyword cType TriaRef
 syn keyword cType Variogram
@@ -1934,4 +1942,8 @@
 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 28272)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 28273)
@@ -1056,4 +1056,11 @@
 	SmbAccumulatedRefreezeEnum,
 	SmbAccumulatedRunoffEnum,
+	SmbAccumulatedECSubstepEnum,
+	SmbAccumulatedMassBalanceSubstepEnum,
+	SmbAccumulatedMeltSubstepEnum,
+	SmbAccumulatedPrecipitationSubstepEnum,
+	SmbAccumulatedRainSubstepEnum,
+	SmbAccumulatedRefreezeSubstepEnum,
+	SmbAccumulatedRunoffSubstepEnum,
 	SmbAlbedoEnum,
 	SmbAlbedoInitEnum,
@@ -1098,4 +1105,5 @@
 	SmbEAirEnum,
 	SmbECEnum,
+	SmbECSubstepEnum,
 	SmbECDtEnum,
 	SmbECiniEnum,
@@ -1103,4 +1111,5 @@
 	SmbEvaporationEnum,
 	SmbFACEnum,
+	SmbFACSubstepEnum,
 	SmbGdnEnum,
 	SmbGdniniEnum,
@@ -1124,4 +1133,5 @@
 	SmbMeanULWEnum,
 	SmbMeltEnum,
+	SmbMeltSubstepEnum,
 	SmbMInitnum,
 	SmbMonthlytemperaturesEnum,
@@ -1139,4 +1149,5 @@
 	SmbPddfacSnowEnum,
 	SmbPrecipitationEnum,
+	SmbPrecipitationSubstepEnum,
 	SmbPrecipitationsAnomalyEnum,
 	SmbDsradiationAnomalyEnum,
@@ -1148,9 +1159,11 @@
 	SmbPrecipitationsReconstructedEnum,
 	SmbRainEnum,
+	SmbRainSubstepEnum,
 	SmbReEnum,
 	SmbRefreezeEnum,
+	SmbRefreezeSubstepEnum,
 	SmbReiniEnum,
 	SmbRunoffEnum,
-   SmbRunoffSubstepEnum,
+	SmbRunoffSubstepEnum,
    SmbRunoffTransientEnum,
 	SmbS0gcmEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 28272)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 28273)
@@ -1060,4 +1060,11 @@
 		case SmbAccumulatedRefreezeEnum : return "SmbAccumulatedRefreeze";
 		case SmbAccumulatedRunoffEnum : return "SmbAccumulatedRunoff";
+		case SmbAccumulatedECSubstepEnum : return "SmbAccumulatedECSubstep";
+		case SmbAccumulatedMassBalanceSubstepEnum : return "SmbAccumulatedMassBalanceSubstep";
+		case SmbAccumulatedMeltSubstepEnum : return "SmbAccumulatedMeltSubstep";
+		case SmbAccumulatedPrecipitationSubstepEnum : return "SmbAccumulatedPrecipitationSubstep";
+		case SmbAccumulatedRainSubstepEnum : return "SmbAccumulatedRainSubstep";
+		case SmbAccumulatedRefreezeSubstepEnum : return "SmbAccumulatedRefreezeSubstep";
+		case SmbAccumulatedRunoffSubstepEnum : return "SmbAccumulatedRunoffSubstep";
 		case SmbAlbedoEnum : return "SmbAlbedo";
 		case SmbAlbedoInitEnum : return "SmbAlbedoInit";
@@ -1102,4 +1109,5 @@
 		case SmbEAirEnum : return "SmbEAir";
 		case SmbECEnum : return "SmbEC";
+		case SmbECSubstepEnum : return "SmbECSubstep";
 		case SmbECDtEnum : return "SmbECDt";
 		case SmbECiniEnum : return "SmbECini";
@@ -1107,4 +1115,5 @@
 		case SmbEvaporationEnum : return "SmbEvaporation";
 		case SmbFACEnum : return "SmbFAC";
+		case SmbFACSubstepEnum : return "SmbFACSubstep";
 		case SmbGdnEnum : return "SmbGdn";
 		case SmbGdniniEnum : return "SmbGdnini";
@@ -1128,4 +1137,5 @@
 		case SmbMeanULWEnum : return "SmbMeanULW";
 		case SmbMeltEnum : return "SmbMelt";
+		case SmbMeltSubstepEnum : return "SmbMeltSubstep";
 		case SmbMonthlytemperaturesEnum : return "SmbMonthlytemperatures";
 		case SmbMonthlydsradiationEnum : return "SmbMonthlydsradiation";
@@ -1142,4 +1152,5 @@
 		case SmbPddfacSnowEnum : return "SmbPddfacSnow";
 		case SmbPrecipitationEnum : return "SmbPrecipitation";
+		case SmbPrecipitationSubstepEnum : return "SmbPrecipitationSubstep";
 		case SmbPrecipitationsAnomalyEnum : return "SmbPrecipitationsAnomaly";
 		case SmbDsradiationAnomalyEnum : return "SmbDsradiationAnomaly";
@@ -1151,6 +1162,8 @@
 		case SmbPrecipitationsReconstructedEnum : return "SmbPrecipitationsReconstructed";
 		case SmbRainEnum : return "SmbRain";
+		case SmbRainSubstepEnum : return "SmbRainSubstep";
 		case SmbReEnum : return "SmbRe";
 		case SmbRefreezeEnum : return "SmbRefreeze";
+		case SmbRefreezeSubstepEnum : return "SmbRefreezeSubstep";
 		case SmbReiniEnum : return "SmbReini";
 		case SmbRunoffEnum : return "SmbRunoff";
Index: /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 28272)
+++ /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 28273)
@@ -1051,4 +1051,11 @@
 syn keyword juliaConstC SmbAccumulatedRefreezeEnum
 syn keyword juliaConstC SmbAccumulatedRunoffEnum
+syn keyword juliaConstC SmbAccumulatedECSubstepEnum
+syn keyword juliaConstC SmbAccumulatedMassBalanceSubstepEnum
+syn keyword juliaConstC SmbAccumulatedMeltSubstepEnum
+syn keyword juliaConstC SmbAccumulatedPrecipitationSubstepEnum
+syn keyword juliaConstC SmbAccumulatedRainSubstepEnum
+syn keyword juliaConstC SmbAccumulatedRefreezeSubstepEnum
+syn keyword juliaConstC SmbAccumulatedRunoffSubstepEnum
 syn keyword juliaConstC SmbAlbedoEnum
 syn keyword juliaConstC SmbAlbedoInitEnum
@@ -1093,4 +1100,5 @@
 syn keyword juliaConstC SmbEAirEnum
 syn keyword juliaConstC SmbECEnum
+syn keyword juliaConstC SmbECSubstepEnum
 syn keyword juliaConstC SmbECDtEnum
 syn keyword juliaConstC SmbECiniEnum
@@ -1098,4 +1106,5 @@
 syn keyword juliaConstC SmbEvaporationEnum
 syn keyword juliaConstC SmbFACEnum
+syn keyword juliaConstC SmbFACSubstepEnum
 syn keyword juliaConstC SmbGdnEnum
 syn keyword juliaConstC SmbGdniniEnum
@@ -1119,4 +1128,5 @@
 syn keyword juliaConstC SmbMeanULWEnum
 syn keyword juliaConstC SmbMeltEnum
+syn keyword juliaConstC SmbMeltSubstepEnum
 syn keyword juliaConstC SmbMonthlytemperaturesEnum
 syn keyword juliaConstC SmbMonthlydsradiationEnum
@@ -1133,4 +1143,5 @@
 syn keyword juliaConstC SmbPddfacSnowEnum
 syn keyword juliaConstC SmbPrecipitationEnum
+syn keyword juliaConstC SmbPrecipitationSubstepEnum
 syn keyword juliaConstC SmbPrecipitationsAnomalyEnum
 syn keyword juliaConstC SmbDsradiationAnomalyEnum
@@ -1142,6 +1153,8 @@
 syn keyword juliaConstC SmbPrecipitationsReconstructedEnum
 syn keyword juliaConstC SmbRainEnum
+syn keyword juliaConstC SmbRainSubstepEnum
 syn keyword juliaConstC SmbReEnum
 syn keyword juliaConstC SmbRefreezeEnum
+syn keyword juliaConstC SmbRefreezeSubstepEnum
 syn keyword juliaConstC SmbReiniEnum
 syn keyword juliaConstC SmbRunoffEnum
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 28272)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 28273)
@@ -1084,4 +1084,11 @@
 	      else if (strcmp(name,"SmbAccumulatedRefreeze")==0) return SmbAccumulatedRefreezeEnum;
 	      else if (strcmp(name,"SmbAccumulatedRunoff")==0) return SmbAccumulatedRunoffEnum;
+	      else if (strcmp(name,"SmbAccumulatedECSubstep")==0) return SmbAccumulatedECSubstepEnum;
+	      else if (strcmp(name,"SmbAccumulatedMassBalanceSubstep")==0) return SmbAccumulatedMassBalanceSubstepEnum;
+	      else if (strcmp(name,"SmbAccumulatedMeltSubstep")==0) return SmbAccumulatedMeltSubstepEnum;
+	      else if (strcmp(name,"SmbAccumulatedPrecipitationSubstep")==0) return SmbAccumulatedPrecipitationSubstepEnum;
+	      else if (strcmp(name,"SmbAccumulatedRainSubstep")==0) return SmbAccumulatedRainSubstepEnum;
+	      else if (strcmp(name,"SmbAccumulatedRefreezeSubstep")==0) return SmbAccumulatedRefreezeSubstepEnum;
+	      else if (strcmp(name,"SmbAccumulatedRunoffSubstep")==0) return SmbAccumulatedRunoffSubstepEnum;
 	      else if (strcmp(name,"SmbAlbedo")==0) return SmbAlbedoEnum;
 	      else if (strcmp(name,"SmbAlbedoInit")==0) return SmbAlbedoInitEnum;
@@ -1114,5 +1121,8 @@
 	      else if (strcmp(name,"SmbDailytemperature")==0) return SmbDailytemperatureEnum;
 	      else if (strcmp(name,"SmbDailywindspeed")==0) return SmbDailywindspeedEnum;
-	      else if (strcmp(name,"SmbDini")==0) return SmbDiniEnum;
+         else stage=10;
+   }
+   if(stage==10){
+	      if (strcmp(name,"SmbDini")==0) return SmbDiniEnum;
 	      else if (strcmp(name,"SmbDlwrf")==0) return SmbDlwrfEnum;
 	      else if (strcmp(name,"SmbDulwrfValue")==0) return SmbDulwrfValueEnum;
@@ -1121,12 +1131,10 @@
 	      else if (strcmp(name,"SmbDzAdd")==0) return SmbDzAddEnum;
 	      else if (strcmp(name,"SmbDz")==0) return SmbDzEnum;
-         else stage=10;
-   }
-   if(stage==10){
-	      if (strcmp(name,"SmbDzMin")==0) return SmbDzMinEnum;
+	      else if (strcmp(name,"SmbDzMin")==0) return SmbDzMinEnum;
 	      else if (strcmp(name,"SmbDzTop")==0) return SmbDzTopEnum;
 	      else if (strcmp(name,"SmbDzini")==0) return SmbDziniEnum;
 	      else if (strcmp(name,"SmbEAir")==0) return SmbEAirEnum;
 	      else if (strcmp(name,"SmbEC")==0) return SmbECEnum;
+	      else if (strcmp(name,"SmbECSubstep")==0) return SmbECSubstepEnum;
 	      else if (strcmp(name,"SmbECDt")==0) return SmbECDtEnum;
 	      else if (strcmp(name,"SmbECini")==0) return SmbECiniEnum;
@@ -1134,4 +1142,5 @@
 	      else if (strcmp(name,"SmbEvaporation")==0) return SmbEvaporationEnum;
 	      else if (strcmp(name,"SmbFAC")==0) return SmbFACEnum;
+	      else if (strcmp(name,"SmbFACSubstep")==0) return SmbFACSubstepEnum;
 	      else if (strcmp(name,"SmbGdn")==0) return SmbGdnEnum;
 	      else if (strcmp(name,"SmbGdnini")==0) return SmbGdniniEnum;
@@ -1155,4 +1164,5 @@
 	      else if (strcmp(name,"SmbMeanULW")==0) return SmbMeanULWEnum;
 	      else if (strcmp(name,"SmbMelt")==0) return SmbMeltEnum;
+	      else if (strcmp(name,"SmbMeltSubstep")==0) return SmbMeltSubstepEnum;
 	      else if (strcmp(name,"SmbMonthlytemperatures")==0) return SmbMonthlytemperaturesEnum;
 	      else if (strcmp(name,"SmbMonthlydsradiation")==0) return SmbMonthlydsradiationEnum;
@@ -1169,4 +1179,5 @@
 	      else if (strcmp(name,"SmbPddfacSnow")==0) return SmbPddfacSnowEnum;
 	      else if (strcmp(name,"SmbPrecipitation")==0) return SmbPrecipitationEnum;
+	      else if (strcmp(name,"SmbPrecipitationSubstep")==0) return SmbPrecipitationSubstepEnum;
 	      else if (strcmp(name,"SmbPrecipitationsAnomaly")==0) return SmbPrecipitationsAnomalyEnum;
 	      else if (strcmp(name,"SmbDsradiationAnomaly")==0) return SmbDsradiationAnomalyEnum;
@@ -1178,6 +1189,8 @@
 	      else if (strcmp(name,"SmbPrecipitationsReconstructed")==0) return SmbPrecipitationsReconstructedEnum;
 	      else if (strcmp(name,"SmbRain")==0) return SmbRainEnum;
+	      else if (strcmp(name,"SmbRainSubstep")==0) return SmbRainSubstepEnum;
 	      else if (strcmp(name,"SmbRe")==0) return SmbReEnum;
 	      else if (strcmp(name,"SmbRefreeze")==0) return SmbRefreezeEnum;
+	      else if (strcmp(name,"SmbRefreezeSubstep")==0) return SmbRefreezeSubstepEnum;
 	      else if (strcmp(name,"SmbReini")==0) return SmbReiniEnum;
 	      else if (strcmp(name,"SmbRunoff")==0) return SmbRunoffEnum;
@@ -1231,5 +1244,8 @@
 	      else if (strcmp(name,"StrainRatexz")==0) return StrainRatexzEnum;
 	      else if (strcmp(name,"StrainRateyy")==0) return StrainRateyyEnum;
-	      else if (strcmp(name,"StrainRateyz")==0) return StrainRateyzEnum;
+         else stage=11;
+   }
+   if(stage==11){
+	      if (strcmp(name,"StrainRateyz")==0) return StrainRateyzEnum;
 	      else if (strcmp(name,"StrainRatezz")==0) return StrainRatezzEnum;
 	      else if (strcmp(name,"StressMaxPrincipal")==0) return StressMaxPrincipalEnum;
@@ -1244,8 +1260,5 @@
 	      else if (strcmp(name,"SubglacialdischargeValuesMovingaverage")==0) return SubglacialdischargeValuesMovingaverageEnum;
 	      else if (strcmp(name,"SurfaceAbsMisfit")==0) return SurfaceAbsMisfitEnum;
-         else stage=11;
-   }
-   if(stage==11){
-	      if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;
+	      else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;
 	      else if (strcmp(name,"Area")==0) return AreaEnum;
 	      else if (strcmp(name,"SealevelArea")==0) return SealevelAreaEnum;
@@ -1354,5 +1367,8 @@
 	      else if (strcmp(name,"Outputdefinition41")==0) return Outputdefinition41Enum;
 	      else if (strcmp(name,"Outputdefinition42")==0) return Outputdefinition42Enum;
-	      else if (strcmp(name,"Outputdefinition43")==0) return Outputdefinition43Enum;
+         else stage=12;
+   }
+   if(stage==12){
+	      if (strcmp(name,"Outputdefinition43")==0) return Outputdefinition43Enum;
 	      else if (strcmp(name,"Outputdefinition44")==0) return Outputdefinition44Enum;
 	      else if (strcmp(name,"Outputdefinition45")==0) return Outputdefinition45Enum;
@@ -1367,8 +1383,5 @@
 	      else if (strcmp(name,"Outputdefinition53")==0) return Outputdefinition53Enum;
 	      else if (strcmp(name,"Outputdefinition54")==0) return Outputdefinition54Enum;
-         else stage=12;
-   }
-   if(stage==12){
-	      if (strcmp(name,"Outputdefinition55")==0) return Outputdefinition55Enum;
+	      else if (strcmp(name,"Outputdefinition55")==0) return Outputdefinition55Enum;
 	      else if (strcmp(name,"Outputdefinition56")==0) return Outputdefinition56Enum;
 	      else if (strcmp(name,"Outputdefinition57")==0) return Outputdefinition57Enum;
@@ -1477,5 +1490,8 @@
 	      else if (strcmp(name,"Closed")==0) return ClosedEnum;
 	      else if (strcmp(name,"Colinear")==0) return ColinearEnum;
-	      else if (strcmp(name,"Constraints")==0) return ConstraintsEnum;
+         else stage=13;
+   }
+   if(stage==13){
+	      if (strcmp(name,"Constraints")==0) return ConstraintsEnum;
 	      else if (strcmp(name,"Contact")==0) return ContactEnum;
 	      else if (strcmp(name,"Contour")==0) return ContourEnum;
@@ -1490,8 +1506,5 @@
 	      else if (strcmp(name,"Cuffey")==0) return CuffeyEnum;
 	      else if (strcmp(name,"CuffeyTemperate")==0) return CuffeyTemperateEnum;
-         else stage=13;
-   }
-   if(stage==13){
-	      if (strcmp(name,"DamageEvolutionAnalysis")==0) return DamageEvolutionAnalysisEnum;
+	      else if (strcmp(name,"DamageEvolutionAnalysis")==0) return DamageEvolutionAnalysisEnum;
 	      else if (strcmp(name,"DamageEvolutionSolution")==0) return DamageEvolutionSolutionEnum;
 	      else if (strcmp(name,"DataSet")==0) return DataSetEnum;
@@ -1600,5 +1613,8 @@
 	      else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum;
 	      else if (strcmp(name,"Inputs")==0) return InputsEnum;
-	      else if (strcmp(name,"Internal")==0) return InternalEnum;
+         else stage=14;
+   }
+   if(stage==14){
+	      if (strcmp(name,"Internal")==0) return InternalEnum;
 	      else if (strcmp(name,"Intersect")==0) return IntersectEnum;
 	      else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum;
@@ -1613,8 +1629,5 @@
 	      else if (strcmp(name,"LevelsetAnalysis")==0) return LevelsetAnalysisEnum;
 	      else if (strcmp(name,"LevelsetfunctionPicard")==0) return LevelsetfunctionPicardEnum;
-         else stage=14;
-   }
-   if(stage==14){
-	      if (strcmp(name,"LinearFloatingMeltRate")==0) return LinearFloatingMeltRateEnum;
+	      else if (strcmp(name,"LinearFloatingMeltRate")==0) return LinearFloatingMeltRateEnum;
 	      else if (strcmp(name,"LinearFloatingMeltRatearma")==0) return LinearFloatingMeltRatearmaEnum;
 	      else if (strcmp(name,"LliboutryDuval")==0) return LliboutryDuvalEnum;
@@ -1723,5 +1736,8 @@
 	      else if (strcmp(name,"Regular")==0) return RegularEnum;
 	      else if (strcmp(name,"RecoveryAnalysis")==0) return RecoveryAnalysisEnum;
-	      else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum;
+         else stage=15;
+   }
+   if(stage==15){
+	      if (strcmp(name,"Riftfront")==0) return RiftfrontEnum;
 	      else if (strcmp(name,"SamplingAnalysis")==0) return SamplingAnalysisEnum;
 	      else if (strcmp(name,"SamplingSolution")==0) return SamplingSolutionEnum;
@@ -1736,8 +1752,5 @@
 	      else if (strcmp(name,"SMBgradients")==0) return SMBgradientsEnum;
 	      else if (strcmp(name,"SMBgradientscomponents")==0) return SMBgradientscomponentsEnum;
-         else stage=15;
-   }
-   if(stage==15){
-	      if (strcmp(name,"SMBgradientsela")==0) return SMBgradientselaEnum;
+	      else if (strcmp(name,"SMBgradientsela")==0) return SMBgradientselaEnum;
 	      else if (strcmp(name,"SMBhenning")==0) return SMBhenningEnum;
 	      else if (strcmp(name,"SMBmeltcomponents")==0) return SMBmeltcomponentsEnum;
