Index: /issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h	(revision 14174)
+++ /issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h	(revision 14175)
@@ -196,12 +196,7 @@
 	SurfaceforcingsIssmbgradientsEnum,
 	SurfaceforcingsMonthlytemperaturesEnum,
-	SurfaceforcingsHcEnum,
 	SurfaceforcingsHrefEnum,
 	SurfaceforcingsSmbrefEnum,
-	SurfaceforcingsSmbPosMaxEnum,
-	SurfaceforcingsSmbPosMinEnum,
-	SurfaceforcingsAPosEnum,
 	SurfaceforcingsBPosEnum,
-	SurfaceforcingsANegEnum,
 	SurfaceforcingsBNegEnum,
 	ThermalMaxiterEnum,
Index: /issm/trunk-jpl/src/c/classes/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/Elements/Penta.cpp	(revision 14174)
+++ /issm/trunk-jpl/src/c/classes/objects/Elements/Penta.cpp	(revision 14175)
@@ -2727,12 +2727,7 @@
 
 	/*Recover SmbGradients*/
-	GetInputListOnVertices(&Hc[0],SurfaceforcingsHcEnum);
 	GetInputListOnVertices(&Href[0],SurfaceforcingsHrefEnum);
 	GetInputListOnVertices(&Smbref[0],SurfaceforcingsSmbrefEnum);
-	GetInputListOnVertices(&smb_pos_max[0],SurfaceforcingsSmbPosMaxEnum);
-	GetInputListOnVertices(&smb_pos_min[0],SurfaceforcingsSmbPosMinEnum);
-	GetInputListOnVertices(&a_pos[0],SurfaceforcingsAPosEnum);
 	GetInputListOnVertices(&b_pos[0],SurfaceforcingsBPosEnum);
-	GetInputListOnVertices(&a_neg[0],SurfaceforcingsANegEnum);
 	GetInputListOnVertices(&b_neg[0],SurfaceforcingsBNegEnum);
 
@@ -2747,13 +2742,9 @@
    // loop over all vertices
  for(i=0;i<NUMVERTICES;i++){
-     if(s[i]>Hc[i]){
-		  if(Href[i]>Hc[i]){smb[i]=Smbref[i]+b_pos[i]*(s[i]-Href[i]);}
-		  if(Href[i]<=Hc[i]){smb[i]=a_pos[i]+b_pos[i]*s[i];}
-		  if(smb[i]>smb_pos_max[i]){smb[i]=smb_pos_max[i];}
-		  if(smb[i]<smb_pos_min[i]){smb[i]=smb_pos_min[i];}
+     if(Smbref[i]>0){
+		  smb[i]=Smbref[i]+b_pos[i]*(s[i]-Href[i]);
 	  }
 	  else{
-		  if(Href[i]>Hc[i]){smb[i]=a_neg[i]+b_neg[i]*s[i];}
-		  if(Href[i]<=Hc[i]){smb[i]=Smbref[i]+b_neg[i]*(s[i]-Href[i]);}
+		  smb[i]=Smbref[i]+b_neg[i]*(s[i]-Href[i]);
 	  }
 	  smb[i]=smb[i]/rho_ice;      // SMB in m/y ice		
Index: /issm/trunk-jpl/src/c/classes/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/Elements/Tria.cpp	(revision 14174)
+++ /issm/trunk-jpl/src/c/classes/objects/Elements/Tria.cpp	(revision 14175)
@@ -2325,13 +2325,8 @@
    IssmDouble h[NUMVERTICES];					// ice thickness (m)		
 	IssmDouble s[NUMVERTICES];					// surface elevation (m)
-	IssmDouble a_pos[NUMVERTICES];				// Hs-SMB relation parameter 
 	IssmDouble b_pos[NUMVERTICES];				// Hs-SMB relation parameter
-	IssmDouble a_neg[NUMVERTICES];				// Hs-SMB relation parameter
 	IssmDouble b_neg[NUMVERTICES];				// Hs-SMB relation paremeter
-	IssmDouble Hc[NUMVERTICES];					// elevation of transition between accumulation regime and ablation regime
 	IssmDouble Href[NUMVERTICES];					// reference elevation from which deviations are used to calculate the SMB adjustment
 	IssmDouble Smbref[NUMVERTICES];				// reference SMB to which deviations are added
-	IssmDouble smb_pos_max[NUMVERTICES];		// maximum SMB value in the accumulation regime
-	IssmDouble smb_pos_min[NUMVERTICES];		// minimum SMB value in the accumulation regime
    IssmDouble rho_water;                   // density of fresh water
 	IssmDouble rho_ice;                     // density of ice
@@ -2341,12 +2336,7 @@
 
 	/*Recover SmbGradients*/
-	GetInputListOnVertices(&Hc[0],SurfaceforcingsHcEnum);
 	GetInputListOnVertices(&Href[0],SurfaceforcingsHrefEnum);
 	GetInputListOnVertices(&Smbref[0],SurfaceforcingsSmbrefEnum);
-	GetInputListOnVertices(&smb_pos_max[0],SurfaceforcingsSmbPosMaxEnum);
-	GetInputListOnVertices(&smb_pos_min[0],SurfaceforcingsSmbPosMinEnum);
-	GetInputListOnVertices(&a_pos[0],SurfaceforcingsAPosEnum);
 	GetInputListOnVertices(&b_pos[0],SurfaceforcingsBPosEnum);
-	GetInputListOnVertices(&a_neg[0],SurfaceforcingsANegEnum);
 	GetInputListOnVertices(&b_neg[0],SurfaceforcingsBNegEnum);
 
@@ -2361,22 +2351,11 @@
    // loop over all vertices
    for(i=0;i<NUMVERTICES;i++){
-     if(s[i]>Hc[i]){
-		  if(Href[i]>Hc[i]){smb[i]=Smbref[i]+b_pos[i]*(s[i]-Href[i]);}
-		  if(Href[i]<=Hc[i]){smb[i]=a_pos[i]+b_pos[i]*s[i];}
-		  if(smb[i]>smb_pos_max[i]){smb[i]=smb_pos_max[i];}
-		  if(smb[i]<smb_pos_min[i]){smb[i]=smb_pos_min[i];}
+     if(Smbref[i]>0){
+		  smb[i]=Smbref[i]+b_pos[i]*(s[i]-Href[i]);
 	  }
 	  else{
-		  if(Href[i]>Hc[i]){smb[i]=a_neg[i]+b_neg[i]*s[i];}
-		  if(Href[i]<=Hc[i]){smb[i]=Smbref[i]+b_neg[i]*(s[i]-Href[i]);}
+		  smb[i]=Smbref[i]+b_neg[i]*(s[i]-Href[i]);
 	  }
 	  smb[i]=smb[i]/rho_ice;      // SMB in m/y ice		
-  /*   printf("s %e \n",s[i]); 
-     printf("Hsref %e \n",Href[i]); 
-     printf("Hc %e \n",Hc[i]); 
-     printf("Smbref %e \n",Smbref[i]); 
-     printf("b_neg %e \n",b_neg[i]); 
-     printf("smb %e \n",smb[i]); 
-	  _error_("stop-in-code"); */
 		}  //end of the loop over the vertices
 	  /*Update inputs*/
Index: /issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 14174)
+++ /issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 14175)
@@ -201,12 +201,7 @@
 		case SurfaceforcingsIssmbgradientsEnum : return "SurfaceforcingsIssmbgradients";
 		case SurfaceforcingsMonthlytemperaturesEnum : return "SurfaceforcingsMonthlytemperatures";
-		case SurfaceforcingsHcEnum : return "SurfaceforcingsHc";
 		case SurfaceforcingsHrefEnum : return "SurfaceforcingsHref";
 		case SurfaceforcingsSmbrefEnum : return "SurfaceforcingsSmbref";
-		case SurfaceforcingsSmbPosMaxEnum : return "SurfaceforcingsSmbPosMax";
-		case SurfaceforcingsSmbPosMinEnum : return "SurfaceforcingsSmbPosMin";
-		case SurfaceforcingsAPosEnum : return "SurfaceforcingsAPos";
 		case SurfaceforcingsBPosEnum : return "SurfaceforcingsBPos";
-		case SurfaceforcingsANegEnum : return "SurfaceforcingsANeg";
 		case SurfaceforcingsBNegEnum : return "SurfaceforcingsBNeg";
 		case ThermalMaxiterEnum : return "ThermalMaxiter";
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp	(revision 14174)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp	(revision 14175)
@@ -72,12 +72,7 @@
 	}
 	if(issmbgradients){
-	        iomodel->FetchDataToInput(elements,SurfaceforcingsHcEnum);
 	        iomodel->FetchDataToInput(elements,SurfaceforcingsHrefEnum);
 	        iomodel->FetchDataToInput(elements,SurfaceforcingsSmbrefEnum);
-	        iomodel->FetchDataToInput(elements,SurfaceforcingsSmbPosMaxEnum);
-	        iomodel->FetchDataToInput(elements,SurfaceforcingsSmbPosMinEnum);
-	        iomodel->FetchDataToInput(elements,SurfaceforcingsAPosEnum);
 	        iomodel->FetchDataToInput(elements,SurfaceforcingsBPosEnum);
-	        iomodel->FetchDataToInput(elements,SurfaceforcingsANegEnum);
 	        iomodel->FetchDataToInput(elements,SurfaceforcingsBNegEnum);
 	}
Index: /issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 14174)
+++ /issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 14175)
@@ -205,12 +205,7 @@
 	      else if (strcmp(name,"SurfaceforcingsIssmbgradients")==0) return SurfaceforcingsIssmbgradientsEnum;
 	      else if (strcmp(name,"SurfaceforcingsMonthlytemperatures")==0) return SurfaceforcingsMonthlytemperaturesEnum;
-	      else if (strcmp(name,"SurfaceforcingsHc")==0) return SurfaceforcingsHcEnum;
 	      else if (strcmp(name,"SurfaceforcingsHref")==0) return SurfaceforcingsHrefEnum;
 	      else if (strcmp(name,"SurfaceforcingsSmbref")==0) return SurfaceforcingsSmbrefEnum;
-	      else if (strcmp(name,"SurfaceforcingsSmbPosMax")==0) return SurfaceforcingsSmbPosMaxEnum;
-	      else if (strcmp(name,"SurfaceforcingsSmbPosMin")==0) return SurfaceforcingsSmbPosMinEnum;
-	      else if (strcmp(name,"SurfaceforcingsAPos")==0) return SurfaceforcingsAPosEnum;
 	      else if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum;
-	      else if (strcmp(name,"SurfaceforcingsANeg")==0) return SurfaceforcingsANegEnum;
 	      else if (strcmp(name,"SurfaceforcingsBNeg")==0) return SurfaceforcingsBNegEnum;
 	      else if (strcmp(name,"ThermalMaxiter")==0) return ThermalMaxiterEnum;
@@ -261,13 +256,13 @@
 	      else if (strcmp(name,"NoneAnalysis")==0) return NoneAnalysisEnum;
 	      else if (strcmp(name,"PrognosticAnalysis")==0) return PrognosticAnalysisEnum;
-         else stage=3;
-   }
-   if(stage==3){
-	      if (strcmp(name,"PrognosticSolution")==0) return PrognosticSolutionEnum;
+	      else if (strcmp(name,"PrognosticSolution")==0) return PrognosticSolutionEnum;
 	      else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum;
 	      else if (strcmp(name,"SurfaceSlopeAnalysis")==0) return SurfaceSlopeAnalysisEnum;
 	      else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum;
 	      else if (strcmp(name,"SurfaceSlopeXAnalysis")==0) return SurfaceSlopeXAnalysisEnum;
-	      else if (strcmp(name,"SurfaceSlopeYAnalysis")==0) return SurfaceSlopeYAnalysisEnum;
+         else stage=3;
+   }
+   if(stage==3){
+	      if (strcmp(name,"SurfaceSlopeYAnalysis")==0) return SurfaceSlopeYAnalysisEnum;
 	      else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum;
 	      else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;
@@ -384,13 +379,13 @@
 	      else if (strcmp(name,"QmuMelting")==0) return QmuMeltingEnum;
 	      else if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum;
-         else stage=4;
-   }
-   if(stage==4){
-	      if (strcmp(name,"SegmentOnIceShelf")==0) return SegmentOnIceShelfEnum;
+	      else if (strcmp(name,"SegmentOnIceShelf")==0) return SegmentOnIceShelfEnum;
 	      else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;
 	      else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
 	      else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum;
 	      else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum;
-	      else if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum;
+         else stage=4;
+   }
+   if(stage==4){
+	      if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum;
 	      else if (strcmp(name,"SurfaceRelVelMisfit")==0) return SurfaceRelVelMisfitEnum;
 	      else if (strcmp(name,"SurfaceSlopeX")==0) return SurfaceSlopeXEnum;
@@ -507,13 +502,13 @@
 	      else if (strcmp(name,"QmuErrName")==0) return QmuErrNameEnum;
 	      else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;
-         else stage=5;
-   }
-   if(stage==5){
-	      if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
+	      else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
 	      else if (strcmp(name,"Regular")==0) return RegularEnum;
 	      else if (strcmp(name,"Scaled")==0) return ScaledEnum;
 	      else if (strcmp(name,"Separate")==0) return SeparateEnum;
 	      else if (strcmp(name,"Sset")==0) return SsetEnum;
-	      else if (strcmp(name,"Verbose")==0) return VerboseEnum;
+         else stage=5;
+   }
+   if(stage==5){
+	      if (strcmp(name,"Verbose")==0) return VerboseEnum;
 	      else if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum;
 	      else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum;
Index: /issm/trunk-jpl/src/c/shared/Numerics/UnitConversion.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Numerics/UnitConversion.cpp	(revision 14174)
+++ /issm/trunk-jpl/src/c/shared/Numerics/UnitConversion.cpp	(revision 14175)
@@ -65,9 +65,5 @@
 		case SurfaceforcingsPrecipitationEnum:       scale=yts;break;     //m/yr
 		case SurfaceforcingsMassBalanceEnum:         scale=yts;break;     //m/yr
-		case SurfaceforcingsSmbPosMaxEnum:				scale=yts;break;     //m/yr
-		case SurfaceforcingsSmbPosMinEnum:				scale=yts;break;     //m/yr
-		case SurfaceforcingsAPosEnum:						scale=yts;break;     //m/yr
 		case SurfaceforcingsBPosEnum:						scale=yts;break;     //m/yr
-		case SurfaceforcingsANegEnum:						scale=yts;break;     //m/yr
 		case SurfaceforcingsBNegEnum:						scale=yts;break;     //m/yr
 		case SurfaceforcingsSmbrefEnum:					scale=yts;break;     //m/yr
Index: /issm/trunk-jpl/src/m/classes/surfaceforcings.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/surfaceforcings.m	(revision 14174)
+++ /issm/trunk-jpl/src/m/classes/surfaceforcings.m	(revision 14175)
@@ -11,12 +11,7 @@
 		issmbgradients = 0;
 		isdelta18o = 0;
-		hc = NaN;
 		href = NaN;
 		smbref = NaN;
-		smb_pos_max = NaN;
-		smb_pos_min = NaN;
-		a_pos = NaN;
 		b_pos = NaN;
-		a_neg = NaN;
 		b_neg = NaN;
 		monthlytemperatures = NaN;
@@ -61,12 +56,7 @@
 					end
 				elseif(obj.issmbgradients)
-					md = checkfield(md,'surfaceforcings.hc','forcing',1,'NaN',1);
 					md = checkfield(md,'surfaceforcings.href','forcing',1,'NaN',1);
 					md = checkfield(md,'surfaceforcings.smbref','forcing',1,'NaN',1);
-					md = checkfield(md,'surfaceforcings.smb_pos_max','forcing',1,'NaN',1);
-					md = checkfield(md,'surfaceforcings.smb_pos_min','forcing',1,'NaN',1);
-					md = checkfield(md,'surfaceforcings.a_pos','forcing',1,'NaN',1);
 					md = checkfield(md,'surfaceforcings.b_pos','forcing',1,'NaN',1);
-					md = checkfield(md,'surfaceforcings.a_neg','forcing',1,'NaN',1);
 					md = checkfield(md,'surfaceforcings.b_neg','forcing',1,'NaN',1);
 				else
@@ -92,12 +82,7 @@
 			fielddisplay(obj,'delta18o_surface','surface elevation of the delta18o site, required if pdd is activated and delta18o activated');
 			fielddisplay(obj,'issmbgradients','is smb gradients method activated (0 or 1, default is 0)');
-			fielddisplay(obj,'hc',' elevation of intersection between accumulation and ablation regime required if smb gradients is activated');
 			fielddisplay(obj,'href',' reference elevation from which deviation is used to calculate SMB adjustment in smb gradients method');
 			fielddisplay(obj,'smbref',' reference smb from which deviation is calculated in smb gradients method');
-			fielddisplay(obj,'smb_pos_max',' maximum value of positive smb required if smb gradients is activated');
-			fielddisplay(obj,'smb_pos_min',' minimum value of positive smb required if smb gradients is activated');
-			fielddisplay(obj,'a_pos',' intercept of hs - smb regression line for accumulation regime required if smb gradients is activated');
 			fielddisplay(obj,'b_pos',' slope of hs - smb regression line for accumulation regime required if smb gradients is activated');
-			fielddisplay(obj,'a_neg',' intercept of hs - smb regression line for ablation regime required if smb gradients is activated');
 			fielddisplay(obj,'b_neg',' slope of hs - smb regression line for ablation regime required if smb gradients is activated');
 
@@ -122,12 +107,7 @@
 			WriteData(fid,'object',obj,'fieldname','issmbgradients','format','Boolean');
 			if obj.issmbgradients,
-				WriteData(fid,'object',obj,'fieldname','hc','format','DoubleMat','mattype',1);
 				WriteData(fid,'object',obj,'fieldname','href','format','DoubleMat','mattype',1);
 				WriteData(fid,'object',obj,'fieldname','smbref','format','DoubleMat','mattype',1);
-				WriteData(fid,'object',obj,'fieldname','smb_pos_max','format','DoubleMat','mattype',1);
-				WriteData(fid,'object',obj,'fieldname','smb_pos_min','format','DoubleMat','mattype',1);
-				WriteData(fid,'object',obj,'fieldname','a_pos','format','DoubleMat','mattype',1);
 				WriteData(fid,'object',obj,'fieldname','b_pos','format','DoubleMat','mattype',1);
-				WriteData(fid,'object',obj,'fieldname','a_neg','format','DoubleMat','mattype',1);
 				WriteData(fid,'object',obj,'fieldname','b_neg','format','DoubleMat','mattype',1);
 			end
