Index: /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 12296)
+++ /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 12297)
@@ -159,4 +159,6 @@
 	SurfaceforcingsPrecipitationEnum,
 	SurfaceforcingsMassBalanceEnum,
+	SurfaceforcingsIspddEnum,
+	SurfaceforcingsMonthlytemperatures,
 	ThermalMaxiterEnum,
 	ThermalPenaltyFactorEnum,
@@ -484,5 +486,4 @@
 	PatersonEnum,
 	ArrheniusEnum,
-	SurfaceforcingsIspddEnum,
 	/*}}}*/
 	MaximumNumberOfEnums
Index: /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp
===================================================================
--- /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 12296)
+++ /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 12297)
@@ -163,4 +163,5 @@
 		case SurfaceforcingsPrecipitationEnum : return "SurfaceforcingsPrecipitation";
 		case SurfaceforcingsMassBalanceEnum : return "SurfaceforcingsMassBalance";
+		case SurfaceforcingsIspddEnum : return "SurfaceforcingsIspdd";
 		case ThermalMaxiterEnum : return "ThermalMaxiter";
 		case ThermalPenaltyFactorEnum : return "ThermalPenaltyFactor";
@@ -452,5 +453,4 @@
 		case PatersonEnum : return "Paterson";
 		case ArrheniusEnum : return "Arrhenius";
-		case SurfaceforcingsIspddEnum : return "SurfaceforcingsIspdd";
 		default : return "unknown";
 
Index: /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp	(revision 12296)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp	(revision 12297)
@@ -71,4 +71,5 @@
 	  iomodel->FetchDataToInput(elements,ThermalSpctemperatureEnum);
 	  iomodel->FetchDataToInput(elements,SurfaceforcingsPrecipitationEnum);
+	  iomodel->FetchDataToInput(elements,SurfaceforcingsMonthlytemperatures);
 	}
 	else{
Index: /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp
===================================================================
--- /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 12296)
+++ /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 12297)
@@ -167,4 +167,5 @@
 	      else if (strcmp(name,"SurfaceforcingsPrecipitation")==0) return SurfaceforcingsPrecipitationEnum;
 	      else if (strcmp(name,"SurfaceforcingsMassBalance")==0) return SurfaceforcingsMassBalanceEnum;
+	      else if (strcmp(name,"SurfaceforcingsIspdd")==0) return SurfaceforcingsIspddEnum;
 	      else if (strcmp(name,"ThermalMaxiter")==0) return ThermalMaxiterEnum;
 	      else if (strcmp(name,"ThermalPenaltyFactor")==0) return ThermalPenaltyFactorEnum;
@@ -259,9 +260,9 @@
 	      else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum;
 	      else if (strcmp(name,"MacAyeal2dIceFront")==0) return MacAyeal2dIceFrontEnum;
-	      else if (strcmp(name,"MacAyeal3dIceFront")==0) return MacAyeal3dIceFrontEnum;
          else stage=3;
    }
    if(stage==3){
-	      if (strcmp(name,"Matice")==0) return MaticeEnum;
+	      if (strcmp(name,"MacAyeal3dIceFront")==0) return MacAyeal3dIceFrontEnum;
+	      else if (strcmp(name,"Matice")==0) return MaticeEnum;
 	      else if (strcmp(name,"Matpar")==0) return MatparEnum;
 	      else if (strcmp(name,"Node")==0) return NodeEnum;
@@ -382,9 +383,9 @@
 	      else if (strcmp(name,"P0")==0) return P0Enum;
 	      else if (strcmp(name,"P1")==0) return P1Enum;
-	      else if (strcmp(name,"P1DG")==0) return P1DGEnum;
          else stage=4;
    }
    if(stage==4){
-	      if (strcmp(name,"SaveResults")==0) return SaveResultsEnum;
+	      if (strcmp(name,"P1DG")==0) return P1DGEnum;
+	      else if (strcmp(name,"SaveResults")==0) return SaveResultsEnum;
 	      else if (strcmp(name,"BoolElementResult")==0) return BoolElementResultEnum;
 	      else if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum;
@@ -462,5 +463,4 @@
 	      else if (strcmp(name,"Paterson")==0) return PatersonEnum;
 	      else if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum;
-	      else if (strcmp(name,"SurfaceforcingsIspdd")==0) return SurfaceforcingsIspddEnum;
          else stage=5;
    }
Index: /issm/trunk/src/m/classes/surfaceforcings.m
===================================================================
--- /issm/trunk/src/m/classes/surfaceforcings.m	(revision 12296)
+++ /issm/trunk/src/m/classes/surfaceforcings.m	(revision 12297)
@@ -8,5 +8,6 @@
 		precipitation = NaN;
 		mass_balance  = NaN;
-		ispdd = false;
+		ispdd = 0;
+		monthlytemperatures = NaN;
 	end
 	methods
@@ -22,5 +23,5 @@
 		  
 		  %pdd method not used in default mode
-		  obj.ispdd=false;
+		  obj.ispdd=0;
 
 		end % }}}
@@ -28,11 +29,13 @@
 
 			if ismember(PrognosticAnalysisEnum,analyses),
-				checkfield(md,'surfaceforcings.mass_balance','forcing',1,'NaN',1);
+				checkfield(md,'surfaceforcings.ispdd','numel',1,'values',[0 1]);
+				if(obj.ispdd)
+					checkfield(md,'surfaceforcings.monthlytemperatures','forcing',1,'NaN',1);
+				else
+					checkfield(md,'surfaceforcings.mass_balance','forcing',1,'NaN',1);
+				end
 			end
 			if ismember(BalancethicknessAnalysisEnum,analyses),
 				checkfield(md,'surfaceforcings.mass_balance','size',[md.mesh.numberofvertices 1],'NaN',1);
-			end
-			if (ismember(PrognosticAnalysisEnum,analyses) & md.surfaceforcings.ispdd),
-			  checkfield(md,'surfaceforcings.ispdd','numel',1,'values',[0 1]);
 			end
 		end % }}}
@@ -43,4 +46,5 @@
 			fielddisplay(obj,'mass_balance','surface mass balance [m/yr ice eq]');
 			fielddisplay(obj,'ispdd','is pdd activated (0 or 1, default is 0)');
+			fielddisplay(obj,'monthlytemperatures','monthly surface temperatures required if pdd is activated');
 
 		end % }}}
@@ -49,4 +53,7 @@
 			WriteData(fid,'object',obj,'fieldname','mass_balance','format','DoubleMat','mattype',1);
 			WriteData(fid,'object',obj,'fieldname','ispdd','format','Boolean');
+			if obj.ispdd,
+				WriteData(fid,'object',obj,'fieldname','monthlytemperatures','format','DoubleMat','mattype',1);
+			end
 
 		end % }}}
Index: sm/trunk/src/m/enum/EnumToModelField.m
===================================================================
--- /issm/trunk/src/m/enum/EnumToModelField.m	(revision 12296)
+++ 	(revision )
@@ -1,26 +1,0 @@
-function string=EnumToModelField(enum)
-%ENUMTOMODELFIELD - output string of model field associated to enum
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
-%            Please read src/c/EnumDefinitions/README for more information
-%
-%   Usage:
-%      string=EnumToModelField(enum)
-
-switch enum,
-
-		case ThicknessEnum(), string='thickness'; return
-		case FrictionCoefficientEnum(), string='drag_coefficient'; return
-		case MaterialsRheologyBEnum(), string='rheology_B'; return
-		case MaterialsRheologyBbarEnum(), string='rheology_B'; return
-		case BalancethicknessThickeningRateEnum: string='dhdt'; return
-		case VxEnum(), string='vx'; return
-		case InversionVxObsEnum(), string='vx_obs'; return
-		case VyEnum(), string='vy'; return
-		case InversionVyObsEnum(), string='vy_obs'; return
-		case BasalforcingsMeltingRateEnum(), string='basal_melting_rate'; return
-		case SurfaceforcingsMassBalanceEnum(), string='surface_mass_balance'; return
-		otherwise, error(['Enum ' num2str(enum)  ' not found associated to any model field']);
-
-end
