Index: /issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp	(revision 26195)
+++ /issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp	(revision 26196)
@@ -218,5 +218,5 @@
 	int     numoutputs;
 	char**  requestedoutputs = NULL;
-	bool    isdelta18o,ismungsm,isd18opd,issetpddfac,interp,isfirnwarming;
+	bool    isdelta18o,ismungsm,isd18opd,issetpddfac,interp,cycle,isfirnwarming;
 	int     smb_model, smbslices, averaging;
 	IssmDouble *temp = NULL;
@@ -227,4 +227,5 @@
 	iomodel->FindConstant(&smb_model,"md.smb.model");
 	iomodel->FindConstant(&interp,"md.timestepping.interp_forcings");
+	iomodel->FindConstant(&cycle,"md.timestepping.cycle_forcing");
 
 	iomodel->FindConstant(&smbslices,"md.smb.steps_per_step");
@@ -273,22 +274,22 @@
 			if(ismungsm){
 			  iomodel->FetchData(&temp,&N,&M,"md.smb.Pfac"); _assert_(N==2);
-			  parameters->AddObject(new TransientParam(SmbPfacEnum,&temp[0],&temp[M],interp,M));
+			  parameters->AddObject(new TransientParam(SmbPfacEnum,&temp[0],&temp[M],interp,cycle,M));
 			  iomodel->DeleteData(temp,"md.smb.Pfac");
 
 			  iomodel->FetchData(&temp,&N,&M,"md.smb.Tdiff"); _assert_(N==2);
-			  parameters->AddObject(new TransientParam(SmbTdiffEnum,&temp[0],&temp[M],interp,M));
+			  parameters->AddObject(new TransientParam(SmbTdiffEnum,&temp[0],&temp[M],interp,cycle,M));
 			  iomodel->DeleteData(temp,"md.smb.Tdiff");
 
 			  iomodel->FetchData(&temp,&N,&M,"md.smb.sealev"); _assert_(N==2);
-			  parameters->AddObject(new TransientParam(SmbSealevEnum,&temp[0],&temp[M],interp,M));
+			  parameters->AddObject(new TransientParam(SmbSealevEnum,&temp[0],&temp[M],interp,cycle,M));
 			  iomodel->DeleteData(temp,"md.smb.sealev");
 			}
 			if(isdelta18o){
 				iomodel->FetchData(&temp,&N,&M,"md.smb.delta18o"); _assert_(N==2);
-				parameters->AddObject(new TransientParam(SmbDelta18oEnum,&temp[0],&temp[M],interp,M));
+				parameters->AddObject(new TransientParam(SmbDelta18oEnum,&temp[0],&temp[M],interp,cycle,M));
 				iomodel->DeleteData(temp,"md.smb.delta18o");
 
 				iomodel->FetchData(&temp,&N,&M,"md.smb.delta18o_surface"); _assert_(N==2);
-				parameters->AddObject(new TransientParam(SmbDelta18oSurfaceEnum,&temp[0],&temp[M],interp,M));
+				parameters->AddObject(new TransientParam(SmbDelta18oSurfaceEnum,&temp[0],&temp[M],interp,cycle,M));
 				iomodel->DeleteData(temp,"md.smb.delta18o_surface");
 			}
@@ -310,5 +311,5 @@
 				parameters->AddObject(iomodel->CopyConstantObject("md.smb.isprecipscaled",SmbIsprecipscaledEnum));
 				iomodel->FetchData(&temp,&N,&M,"md.smb.delta18o"); _assert_(N==2);
-				parameters->AddObject(new TransientParam(SmbDelta18oEnum,&temp[0],&temp[M],interp,M));
+				parameters->AddObject(new TransientParam(SmbDelta18oEnum,&temp[0],&temp[M],interp,cycle,M));
 				iomodel->DeleteData(temp,"md.smb.delta18o");
 
@@ -391,15 +392,15 @@
 
 				iomodel->FetchData(&temp,&N,&M,"md.smb.accugrad"); _assert_(N==2);
-				parameters->AddObject(new TransientParam(SmbAccugradEnum,&temp[0],&temp[M],interp,M));
+				parameters->AddObject(new TransientParam(SmbAccugradEnum,&temp[0],&temp[M],interp,cycle,M));
 				iomodel->DeleteData(temp,"md.smb.accugrad");
 				iomodel->FetchData(&temp,&N,&M,"md.smb.runoffgrad"); _assert_(N==2);
-				parameters->AddObject(new TransientParam(SmbRunoffgradEnum,&temp[0],&temp[M],interp,M));
+				parameters->AddObject(new TransientParam(SmbRunoffgradEnum,&temp[0],&temp[M],interp,cycle,M));
 				iomodel->DeleteData(temp,"md.smb.runoffgrad");
 
 				iomodel->FetchData(&temp,&N,&M,"md.smb.accuref"); _assert_(N==2);
-				parameters->AddObject(new TransientParam(SmbAccurefEnum,&temp[0],&temp[M],interp,M));
+				parameters->AddObject(new TransientParam(SmbAccurefEnum,&temp[0],&temp[M],interp,cycle,M));
 				iomodel->DeleteData(temp,"md.smb.accuref");
 				iomodel->FetchData(&temp,&N,&M,"md.smb.runoffref"); _assert_(N==2);
-				parameters->AddObject(new TransientParam(SmbRunoffrefEnum,&temp[0],&temp[M],interp,M));
+				parameters->AddObject(new TransientParam(SmbRunoffrefEnum,&temp[0],&temp[M],interp,cycle,M));
 				iomodel->DeleteData(temp,"md.smb.runoffref");
 			break;
Index: /issm/trunk-jpl/src/c/classes/Inputs/TransientInput.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/TransientInput.cpp	(revision 26195)
+++ /issm/trunk-jpl/src/c/classes/Inputs/TransientInput.cpp	(revision 26196)
@@ -416,6 +416,9 @@
 
 	/*First, recover current time from parameters: */
-	bool linear_interp;
+	bool linear_interp,cycle;
 	this->parameters->FindParam(&linear_interp,TimesteppingInterpForcingsEnum);
+	this->parameters->FindParam(&cycle,TimesteppingCycleForcingEnum);
+
+	if(cycle) _error_("not implemented yet");
 
 	/*Figure step out*/
Index: /issm/trunk-jpl/src/c/classes/Inputs/TransientInput.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/TransientInput.h	(revision 26195)
+++ /issm/trunk-jpl/src/c/classes/Inputs/TransientInput.h	(revision 26196)
@@ -18,12 +18,12 @@
 
 	public:
-		int         enum_type;
-		int         numtimesteps;
-		Input**    inputs;
-		IssmDouble *timesteps;
-		Parameters *parameters;     //to find current time.
+		int          enum_type;
+		int          numtimesteps;
+		Input      **inputs;
+		IssmDouble  *timesteps;
+		Parameters  *parameters;      //to find current time.
 
-		IssmDouble  current_step;
-		Input*     current_input;
+		IssmDouble   current_step;
+		Input       *current_input;
 
 		/*TransientInput constructors, destructors: {{{*/
Index: /issm/trunk-jpl/src/c/classes/Params/TransientArrayParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/TransientArrayParam.cpp	(revision 26195)
+++ /issm/trunk-jpl/src/c/classes/Params/TransientArrayParam.cpp	(revision 26196)
@@ -20,5 +20,5 @@
 }
 /*}}}*/
-TransientArrayParam::TransientArrayParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_on,int in_N,int in_M){/*{{{*/
+TransientArrayParam::TransientArrayParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_on,bool cycle_in,int in_N,int in_M){/*{{{*/
 
 	_assert_(in_values && in_time);
@@ -28,10 +28,11 @@
 	this->N=in_N; //Number of timesteps
 	this->interpolation=interpolation_on;
+	this->cycle=cycle_in;
 
 	this->values=xNew<IssmDouble>(M*N);
-	xMemCpy<IssmDouble>(values,in_values,M*N);
+	xMemCpy<IssmDouble>(this->values,in_values,M*N);
 
 	this->timesteps=xNew<IssmDouble>(N);
-	xMemCpy<IssmDouble>(timesteps,in_time,N);
+	xMemCpy<IssmDouble>(this->timesteps,in_time,N);
 }
 /*}}}*/
@@ -44,5 +45,5 @@
 Param* TransientArrayParam::copy() {/*{{{*/
 
-	return new TransientArrayParam(this->enum_type,this->values,this->timesteps,this->interpolation,this->M,this->N);
+	return new TransientArrayParam(this->enum_type,this->values,this->timesteps,this->interpolation,this->cycle,this->M,this->N);
 
 }
@@ -80,4 +81,5 @@
 	marshallhandle->call(this->enum_type);
 	marshallhandle->call(this->interpolation);
+	marshallhandle->call(this->cycle);
 	marshallhandle->call(this->M);
 	marshallhandle->call(this->N);
@@ -102,4 +104,6 @@
 	bool       found;
 	_assert_(row>=0 && row<this->M); 
+
+	if(this->cycle) _error_("not implemented yet");
 
 	/*Ok, we have the time and row, go through the timesteps, and figure out which interval we 
@@ -129,5 +133,5 @@
 					IssmDouble deltat = this->timesteps[i+1]-this->timesteps[i];
 					IssmDouble alpha  = (time-this->timesteps[i])/deltat;
-					if(interpolation==true) output=(1.0-alpha)*this->values[row*this->N+i] + alpha*this->values[row*this->N+i+1];
+					if(this->interpolation==true) output=(1.0-alpha)*this->values[row*this->N+i] + alpha*this->values[row*this->N+i+1];
 					else output=this->values[row*this->N+i];
 					found=true;
Index: /issm/trunk-jpl/src/c/classes/Params/TransientArrayParam.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/TransientArrayParam.h	(revision 26195)
+++ /issm/trunk-jpl/src/c/classes/Params/TransientArrayParam.h	(revision 26196)
@@ -25,4 +25,5 @@
 		int         M;
 		bool        interpolation;
+		bool        cycle;
 		IssmDouble *values;
 		IssmDouble *timesteps;
@@ -31,5 +32,5 @@
 		/*TransientArrayParam constructors, destructors: {{{*/
 		TransientArrayParam();
-		TransientArrayParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_on,int in_N,int in_M);
+		TransientArrayParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_on,bool cycle_in,int in_N,int in_M);
 		~TransientArrayParam();
 		/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Params/TransientParam.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/TransientParam.cpp	(revision 26195)
+++ /issm/trunk-jpl/src/c/classes/Params/TransientParam.cpp	(revision 26196)
@@ -20,17 +20,18 @@
 }
 /*}}}*/
-TransientParam::TransientParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_on,int in_N){/*{{{*/
+TransientParam::TransientParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_on,bool cycle_in,int in_N){/*{{{*/
 
 	_assert_(in_values && in_time);
 
-	enum_type=in_enum_type;
-	N=in_N;
-	interpolation=interpolation_on;
+	this->enum_type=in_enum_type;
+	this->N=in_N;
+	this->interpolation=interpolation_on;
+	this->cycle=cycle_in;
 
-	values=xNew<IssmDouble>(N);
-	xMemCpy<IssmDouble>(values,in_values,N);
+	this->values=xNew<IssmDouble>(N);
+	xMemCpy<IssmDouble>(this->values,in_values,N);
 
-	timesteps=xNew<IssmDouble>(N);
-	xMemCpy<IssmDouble>(timesteps,in_time,N);
+	this->timesteps=xNew<IssmDouble>(N);
+	xMemCpy<IssmDouble>(this->timesteps,in_time,N);
 }
 /*}}}*/
@@ -44,5 +45,5 @@
 Param* TransientParam::copy() {/*{{{*/
 
-	return new TransientParam(this->enum_type,this->values,this->timesteps,this->interpolation,this->N);
+	return new TransientParam(this->enum_type,this->values,this->timesteps,this->interpolation,this->cycle,this->N);
 
 }
@@ -75,4 +76,5 @@
 	marshallhandle->call(this->enum_type);
 	marshallhandle->call(this->interpolation);
+	marshallhandle->call(this->cycle);
 	marshallhandle->call(this->N);
 	if(marshallhandle->OperationNumber()==MARSHALLING_LOAD){
@@ -97,4 +99,6 @@
 	IssmDouble output;
 	bool   found;
+
+	if(this->cycle) _error_("not implemented yet!");
 
 	/*Ok, we have the time, go through the timesteps, and figure out which interval we 
@@ -124,5 +128,5 @@
 					IssmDouble deltat=this->timesteps[i+1]-this->timesteps[i];
 					IssmDouble alpha=(time-this->timesteps[i])/deltat;
-					if(interpolation==true) output=(1.0-alpha)*this->values[i] + alpha*this->values[i+1];
+					if(this->interpolation==true) output=(1.0-alpha)*this->values[i] + alpha*this->values[i+1];
 					else output=this->values[i];
 					found=true;
Index: /issm/trunk-jpl/src/c/classes/Params/TransientParam.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Params/TransientParam.h	(revision 26195)
+++ /issm/trunk-jpl/src/c/classes/Params/TransientParam.h	(revision 26196)
@@ -24,4 +24,5 @@
 		int         N;
 		bool        interpolation;
+		bool        cycle;
 		IssmDouble *values;
 		IssmDouble *timesteps;
@@ -30,5 +31,5 @@
 		/*TransientParam constructors, destructors: {{{*/
 		TransientParam();
-		TransientParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_on,int in_N);
+		TransientParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_in,bool cycle_in,int in_N);
 		~TransientParam();
 		/*}}}*/
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 26195)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 26196)
@@ -30,5 +30,5 @@
 	bool         autodiff_mass_flux_present = false;
 	bool         mass_flux_present          = false;
-	bool         interp;
+	bool         interp,cycle;
 	IssmDouble **array                      = NULL;
 	int         *mdims_array                = NULL;
@@ -160,4 +160,5 @@
 		case LinearFloatingMeltRateEnum:
 			iomodel->FindConstant(&interp,"md.timestepping.interp_forcings");
+			iomodel->FindConstant(&cycle,"md.timestepping.cycle_forcing");
 			iomodel->FetchData(&transparam,&N,&M,"md.basalforcings.deepwater_melting_rate");
 			if(N==1){
@@ -167,5 +168,5 @@
 			else{
 				_assert_(N==2);
-				parameters->AddObject(new TransientParam(BasalforcingsDeepwaterMeltingRateEnum,&transparam[0],&transparam[M],interp,M));
+				parameters->AddObject(new TransientParam(BasalforcingsDeepwaterMeltingRateEnum,&transparam[0],&transparam[M],interp,cycle,M));
 			}
 			xDelete<IssmDouble>(transparam);
@@ -177,5 +178,5 @@
 			else{
 				_assert_(N==2);
-				parameters->AddObject(new TransientParam(BasalforcingsUpperwaterMeltingRateEnum,&transparam[0],&transparam[M],interp,M));
+				parameters->AddObject(new TransientParam(BasalforcingsUpperwaterMeltingRateEnum,&transparam[0],&transparam[M],interp,cycle,M));
 			}
 			xDelete<IssmDouble>(transparam);
@@ -187,5 +188,5 @@
 			else{
 				_assert_(N==2);
-				parameters->AddObject(new TransientParam(BasalforcingsDeepwaterElevationEnum,&transparam[0],&transparam[M],interp,M));
+				parameters->AddObject(new TransientParam(BasalforcingsDeepwaterElevationEnum,&transparam[0],&transparam[M],interp,cycle,M));
 			}
 			xDelete<IssmDouble>(transparam);
@@ -197,5 +198,5 @@
 			else{
 				_assert_(N==2);
-				parameters->AddObject(new TransientParam(BasalforcingsUpperwaterElevationEnum,&transparam[0],&transparam[M],interp,M));
+				parameters->AddObject(new TransientParam(BasalforcingsUpperwaterElevationEnum,&transparam[0],&transparam[M],interp,cycle,M));
 			}
 			xDelete<IssmDouble>(transparam);
@@ -224,4 +225,5 @@
 		case BasalforcingsPicoEnum:
 			iomodel->FindConstant(&interp,"md.timestepping.interp_forcings");
+			iomodel->FindConstant(&cycle,"md.timestepping.cycle_forcing");
 			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.num_basins",BasalforcingsPicoNumBasinsEnum));
 			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.maxboxcount",BasalforcingsPicoMaxboxcountEnum));
@@ -230,9 +232,9 @@
 			iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.farocean_temperature");
 			_assert_(M>=1 && N>=1);
-			parameters->AddObject(new TransientArrayParam(BasalforcingsPicoFarOceantemperatureEnum,transparam,&transparam[N*(M-1)],interp,N,M));
+			parameters->AddObject(new TransientArrayParam(BasalforcingsPicoFarOceantemperatureEnum,transparam,&transparam[N*(M-1)],interp,cycle,N,M));
 			xDelete<IssmDouble>(transparam);
 			iomodel->FetchData(&transparam,&M,&N,"md.basalforcings.farocean_salinity");
 			_assert_(M>=1 && N>=1);
-			parameters->AddObject(new TransientArrayParam(BasalforcingsPicoFarOceansalinityEnum,transparam,&transparam[N*(M-1)],interp,N,M));
+			parameters->AddObject(new TransientArrayParam(BasalforcingsPicoFarOceansalinityEnum,transparam,&transparam[N*(M-1)],interp,cycle,N,M));
 			xDelete<IssmDouble>(transparam);
 			break;
@@ -266,4 +268,5 @@
 			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.time_step",TimesteppingTimeStepEnum));
 			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.interp_forcings",TimesteppingInterpForcingsEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.cycle_forcing",TimesteppingCycleForcingEnum));
 			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.coupling_time",TimesteppingCouplingTimeEnum));
 			break;
@@ -275,4 +278,5 @@
 			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.cfl_coefficient",TimesteppingCflCoefficientEnum));
 			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.interp_forcings",TimesteppingInterpForcingsEnum));
+			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.cycle_forcing",TimesteppingCycleForcingEnum));
 			parameters->AddObject(iomodel->CopyConstantObject("md.timestepping.coupling_time",TimesteppingCouplingTimeEnum));
 			break;
Index: /issm/trunk-jpl/src/c/shared/Enum/Enum.vim
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 26195)
+++ /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 26196)
@@ -478,4 +478,5 @@
 syn keyword cConstant TimesteppingFinalTimeEnum
 syn keyword cConstant TimesteppingInterpForcingsEnum
+syn keyword cConstant TimesteppingCycleForcingEnum
 syn keyword cConstant TimesteppingStartTimeEnum
 syn keyword cConstant TimesteppingTimeStepEnum
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 26195)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 26196)
@@ -472,4 +472,5 @@
 	TimesteppingFinalTimeEnum,
 	TimesteppingInterpForcingsEnum,
+	TimesteppingCycleForcingEnum,
 	TimesteppingStartTimeEnum,
 	TimesteppingTimeStepEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 26195)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 26196)
@@ -480,4 +480,5 @@
 		case TimesteppingFinalTimeEnum : return "TimesteppingFinalTime";
 		case TimesteppingInterpForcingsEnum : return "TimesteppingInterpForcings";
+		case TimesteppingCycleForcingEnum : return "TimesteppingCycleForcing";
 		case TimesteppingStartTimeEnum : return "TimesteppingStartTime";
 		case TimesteppingTimeStepEnum : return "TimesteppingTimeStep";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 26195)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 26196)
@@ -489,4 +489,5 @@
 	      else if (strcmp(name,"TimesteppingFinalTime")==0) return TimesteppingFinalTimeEnum;
 	      else if (strcmp(name,"TimesteppingInterpForcings")==0) return TimesteppingInterpForcingsEnum;
+	      else if (strcmp(name,"TimesteppingCycleForcing")==0) return TimesteppingCycleForcingEnum;
 	      else if (strcmp(name,"TimesteppingStartTime")==0) return TimesteppingStartTimeEnum;
 	      else if (strcmp(name,"TimesteppingTimeStep")==0) return TimesteppingTimeStepEnum;
@@ -505,9 +506,9 @@
 	      else if (strcmp(name,"TransientIsgroundingline")==0) return TransientIsgroundinglineEnum;
 	      else if (strcmp(name,"TransientIshydrology")==0) return TransientIshydrologyEnum;
-	      else if (strcmp(name,"TransientIsmasstransport")==0) return TransientIsmasstransportEnum;
          else stage=5;
    }
    if(stage==5){
-	      if (strcmp(name,"TransientIsoceantransport")==0) return TransientIsoceantransportEnum;
+	      if (strcmp(name,"TransientIsmasstransport")==0) return TransientIsmasstransportEnum;
+	      else if (strcmp(name,"TransientIsoceantransport")==0) return TransientIsoceantransportEnum;
 	      else if (strcmp(name,"TransientIsmovingfront")==0) return TransientIsmovingfrontEnum;
 	      else if (strcmp(name,"TransientIsoceancoupling")==0) return TransientIsoceancouplingEnum;
@@ -628,9 +629,9 @@
 	      else if (strcmp(name,"EplHead")==0) return EplHeadEnum;
 	      else if (strcmp(name,"EplHeadOld")==0) return EplHeadOldEnum;
-	      else if (strcmp(name,"EplHeadSlopeX")==0) return EplHeadSlopeXEnum;
          else stage=6;
    }
    if(stage==6){
-	      if (strcmp(name,"EplHeadSlopeY")==0) return EplHeadSlopeYEnum;
+	      if (strcmp(name,"EplHeadSlopeX")==0) return EplHeadSlopeXEnum;
+	      else if (strcmp(name,"EplHeadSlopeY")==0) return EplHeadSlopeYEnum;
 	      else if (strcmp(name,"EplHeadSubstep")==0) return EplHeadSubstepEnum;
 	      else if (strcmp(name,"EplHeadTransient")==0) return EplHeadTransientEnum;
@@ -751,9 +752,9 @@
 	      else if (strcmp(name,"RadarIcePeriod")==0) return RadarIcePeriodEnum;
 	      else if (strcmp(name,"RadarPowerMacGregor")==0) return RadarPowerMacGregorEnum;
-	      else if (strcmp(name,"RadarPowerWolff")==0) return RadarPowerWolffEnum;
          else stage=7;
    }
    if(stage==7){
-	      if (strcmp(name,"RheologyBAbsGradient")==0) return RheologyBAbsGradientEnum;
+	      if (strcmp(name,"RadarPowerWolff")==0) return RadarPowerWolffEnum;
+	      else if (strcmp(name,"RheologyBAbsGradient")==0) return RheologyBAbsGradientEnum;
 	      else if (strcmp(name,"RheologyBInitialguess")==0) return RheologyBInitialguessEnum;
 	      else if (strcmp(name,"RheologyBInitialguessMisfit")==0) return RheologyBInitialguessMisfitEnum;
@@ -874,9 +875,9 @@
 	      else if (strcmp(name,"SmbReini")==0) return SmbReiniEnum;
 	      else if (strcmp(name,"SmbRunoff")==0) return SmbRunoffEnum;
-	      else if (strcmp(name,"SmbRunoffSubstep")==0) return SmbRunoffSubstepEnum;
          else stage=8;
    }
    if(stage==8){
-	      if (strcmp(name,"SmbRunoffTransient")==0) return SmbRunoffTransientEnum;
+	      if (strcmp(name,"SmbRunoffSubstep")==0) return SmbRunoffSubstepEnum;
+	      else if (strcmp(name,"SmbRunoffTransient")==0) return SmbRunoffTransientEnum;
 	      else if (strcmp(name,"SmbS0gcm")==0) return SmbS0gcmEnum;
 	      else if (strcmp(name,"SmbS0p")==0) return SmbS0pEnum;
@@ -997,9 +998,9 @@
 	      else if (strcmp(name,"Outputdefinition22")==0) return Outputdefinition22Enum;
 	      else if (strcmp(name,"Outputdefinition23")==0) return Outputdefinition23Enum;
-	      else if (strcmp(name,"Outputdefinition24")==0) return Outputdefinition24Enum;
          else stage=9;
    }
    if(stage==9){
-	      if (strcmp(name,"Outputdefinition25")==0) return Outputdefinition25Enum;
+	      if (strcmp(name,"Outputdefinition24")==0) return Outputdefinition24Enum;
+	      else if (strcmp(name,"Outputdefinition25")==0) return Outputdefinition25Enum;
 	      else if (strcmp(name,"Outputdefinition26")==0) return Outputdefinition26Enum;
 	      else if (strcmp(name,"Outputdefinition27")==0) return Outputdefinition27Enum;
@@ -1120,9 +1121,9 @@
 	      else if (strcmp(name,"CalvingHab")==0) return CalvingHabEnum;
 	      else if (strcmp(name,"CalvingLevermann")==0) return CalvingLevermannEnum;
-	      else if (strcmp(name,"CalvingVonmises")==0) return CalvingVonmisesEnum;
          else stage=10;
    }
    if(stage==10){
-	      if (strcmp(name,"Cfdragcoeffabsgrad")==0) return CfdragcoeffabsgradEnum;
+	      if (strcmp(name,"CalvingVonmises")==0) return CalvingVonmisesEnum;
+	      else if (strcmp(name,"Cfdragcoeffabsgrad")==0) return CfdragcoeffabsgradEnum;
 	      else if (strcmp(name,"Cfsurfacelogvel")==0) return CfsurfacelogvelEnum;
 	      else if (strcmp(name,"Cfsurfacesquare")==0) return CfsurfacesquareEnum;
@@ -1243,9 +1244,9 @@
 	      else if (strcmp(name,"IntParam")==0) return IntParamEnum;
 	      else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum;
-	      else if (strcmp(name,"Inputs")==0) return InputsEnum;
          else stage=11;
    }
    if(stage==11){
-	      if (strcmp(name,"Internal")==0) return InternalEnum;
+	      if (strcmp(name,"Inputs")==0) return InputsEnum;
+	      else if (strcmp(name,"Internal")==0) return InternalEnum;
 	      else if (strcmp(name,"Intersect")==0) return IntersectEnum;
 	      else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum;
@@ -1366,9 +1367,9 @@
 	      else if (strcmp(name,"SMBd18opdd")==0) return SMBd18opddEnum;
 	      else if (strcmp(name,"SMBforcing")==0) return SMBforcingEnum;
-	      else if (strcmp(name,"SMBgcm")==0) return SMBgcmEnum;
          else stage=12;
    }
    if(stage==12){
-	      if (strcmp(name,"SMBgemb")==0) return SMBgembEnum;
+	      if (strcmp(name,"SMBgcm")==0) return SMBgcmEnum;
+	      else if (strcmp(name,"SMBgemb")==0) return SMBgembEnum;
 	      else if (strcmp(name,"SMBgradients")==0) return SMBgradientsEnum;
 	      else if (strcmp(name,"SMBgradientscomponents")==0) return SMBgradientscomponentsEnum;
