Index: /issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp	(revision 25373)
+++ /issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp	(revision 25374)
@@ -78,4 +78,5 @@
 			iomodel->FindConstant(&isdelta18o,"md.smb.isdelta18o");
 			iomodel->FindConstant(&ismungsm,"md.smb.ismungsm");
+			iomodel->FindConstant(&issetpddfac,"md.smb.issetpddfac");
 			iomodel->FetchDataToInput(inputs2,elements,"md.thermal.spctemperature",ThermalSpctemperatureEnum);
 			iomodel->FetchDataToInput(inputs2,elements,"md.smb.s0p",SmbS0pEnum);
@@ -89,4 +90,8 @@
 				iomodel->FetchDataToDatasetInput(inputs2,elements,"md.smb.precipitation",SmbPrecipitationEnum);
 				iomodel->FetchDataToDatasetInput(inputs2,elements,"md.smb.monthlytemperatures",SmbMonthlytemperaturesEnum);
+			}
+			if(issetpddfac){
+				iomodel->FetchDataToInput(inputs2,elements,"md.smb.pddfac_snow",SmbPddfacSnowEnum,-1.);
+				iomodel->FetchDataToInput(inputs2,elements,"md.smb.pddfac_ice",SmbPddfacIceEnum,-1.);
 			}
 			break;
Index: /issm/trunk-jpl/src/m/classes/SMBd18opdd.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBd18opdd.m	(revision 25373)
+++ /issm/trunk-jpl/src/m/classes/SMBd18opdd.m	(revision 25374)
@@ -47,6 +47,4 @@
 			if(self.istemperaturescaled==0),self.temperatures_reconstructed=project3d(md,'vector',self.temperatures_reconstructed,'type','node');end
 			if(self.isprecipscaled==0),self.precipitations_reconstructed=project3d(md,'vector',self.precipitations_reconstructed,'type','node');end
-			if(self.issetpddfac), self.pddfac_snow=project3d(md,'vector',self.pddfac_snow,'type','node');end
-			if(self.issetpddfac), self.pddfac_ice=project3d(md,'vector',self.pddfac_ice,'type','node');end
 			self.s0p=project3d(md,'vector',self.s0p,'type','node');
 			self.s0t=project3d(md,'vector',self.s0t,'type','node');
@@ -124,5 +122,5 @@
 			disp(sprintf('\n   PDD and deltaO18 parameters:'));
 			fielddisplay(self,'isd18opd','is delta18o parametrisation from present day temperature and precipitation activated (0 or 1, default is 0)');
-			fielddisplay(self,'issetpddfac','is user passing in defined pdd factors at each vertex (0 or 1, default is 0)');
+			fielddisplay(self,'issetpddfac','is user passing in defined pdd factors (0 or 1, default is 0)');
 			fielddisplay(self,'desfac','desertification elevation factor (between 0 and 1, default is 0.5) [m]');
 			fielddisplay(self,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]');
@@ -145,6 +143,6 @@
 			end
 			if(self.issetpddfac==1)
-				fielddisplay(self,'pddfac_snow','Pdd factor for snow, at each vertex [mm ice equiv/day/degree C]');
-				fielddisplay(self,'pddfac_ice','Pdd factor for ice, at each vertex [mm ice equiv/day/degree C]');
+				fielddisplay(self,'pddfac_snow','Pdd factor for snow for all the domain [mm ice equiv/day/degree C]');
+				fielddisplay(self,'pddfac_ice','Pdd factor for ice for all the domain [mm ice equiv/day/degree C]');
 			end
 			fielddisplay(self, 'steps_per_step', 'number of smb steps per time step');
Index: /issm/trunk-jpl/src/m/classes/SMBd18opdd.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBd18opdd.py	(revision 25373)
+++ /issm/trunk-jpl/src/m/classes/SMBd18opdd.py	(revision 25374)
@@ -48,5 +48,5 @@
 
         string = "%s\n%s" % (string, fielddisplay(self, 'isd18opd', 'is delta18o parametrisation from present day temperature and precipitation activated (0 or 1, default is 0)'))
-        string = "%s\n%s" % (string, fielddisplay(self, 'issetpddfac', 'is user passing in defined pdd factors at each vertex (0 or 1, default is 0)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'issetpddfac', 'is user passing in defined pdd factors (0 or 1, default is 0)'))
         string = "%s\n%s" % (string, fielddisplay(self, 'desfac', 'desertification elevation factor (between 0 and 1, default is 0.5) [m]'))
         string = "%s\n%s" % (string, fielddisplay(self, 's0p', 'should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]'))
@@ -70,6 +70,6 @@
 
         if self.issetpddfac == 1:
-            string = "%s\n%s" % (string, fielddisplay(self, 'pddfac_snow', 'Pdd factor for snow, at each vertex [mm ice equiv/day/degree C]'))
-            string = "%s\n%s" % (string, fielddisplay(self, 'pddfac_ice', 'Pdd factor for ice, at each vertex [mm ice equiv/day/degree C]'))
+            string = "%s\n%s" % (string, fielddisplay(self, 'pddfac_snow', 'Pdd factor for snow for all the domain [mm ice equiv/day/degree C]'))
+            string = "%s\n%s" % (string, fielddisplay(self, 'pddfac_ice', 'Pdd factor for ice for all the domain [mm ice equiv/day/degree C]'))
         string = "%s\n%s" % (string, fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'))
         string = "%s\n%s" % (string, fielddisplay(self, 'averaging', 'averaging methods from short to long steps'))
@@ -94,8 +94,4 @@
         if self.isd18opd:
             self.precipitations_presentday = project3d(md, 'vector', self.precipitations_presentday, 'type', 'node')
-        if self.issetpddfac:
-            self.pddfac_snow = project3d(md, 'vector', self.pddfac_snow, 'type', 'node')
-        if self.issetpddfac:
-            self.pddfac_ice = project3d(md, 'vector', self.pddfac_ice, 'type', 'node')
         self.s0p = project3d(md, 'vector', self.s0p, 'type', 'node')
         self.s0t = project3d(md, 'vector', self.s0t, 'type', 'node')
Index: /issm/trunk-jpl/src/m/classes/SMBpdd.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBpdd.m	(revision 25373)
+++ /issm/trunk-jpl/src/m/classes/SMBpdd.m	(revision 25374)
@@ -25,4 +25,6 @@
 		precipitations_presentday = NaN;
 		precipitations_lgm        = NaN;
+		pddfac_snow               = NaN;
+		pddfac_ice                = NaN;
 		steps_per_step            = 1;
 		averaging                 = 0;
@@ -75,4 +77,5 @@
 		  self.rlaps      = 6.5;
 		  self.rlapslgm   = 6.5;
+		  self.issetpddfac = 0;
 
 		end % }}}
@@ -106,4 +109,8 @@
 					md = checkfield(md,'fieldname','smb.sealev','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
 				end
+				if(self.issetpddfac==1)
+					md = checkfield(md,'fieldname','smb.pddfac_snow','>=',0,'NaN',1,'Inf',1);
+					md = checkfield(md,'fieldname','smb.pddfac_ice','>=',0,'NaN',1,'Inf',1);
+				end
 			end
 			md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]);
@@ -118,4 +125,5 @@
 			fielddisplay(self,'isdelta18o','is temperature and precipitation delta18o parametrisation activated (0 or 1, default is 0)');
 			fielddisplay(self,'ismungsm','is temperature and precipitation mungsm parametrisation activated (0 or 1, default is 0)');
+			fielddisplay(self,'issetpddfac','is user passing in defined pdd factors (0 or 1, default is 0)');
 			fielddisplay(self,'desfac','desertification elevation factor (between 0 and 1, default is 0.5) [m]');
 			fielddisplay(self,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]');
@@ -143,4 +151,8 @@
 				fielddisplay(self,'Tdiff','time interpolation parameter for temperature, 1D(year), required if mungsm is activated');
 				fielddisplay(self,'sealev','sea level [m], 1D(year), required if mungsm is activated');
+			end
+			if(self.issetpddfac==1)
+				fielddisplay(self,'pddfac_snow','Pdd factor for snow for all the domain [mm ice equiv/day/degree C]');
+				fielddisplay(self,'pddfac_ice','Pdd factor for ice for all the domain [mm ice equiv/day/degree C]');
 			end
 			fielddisplay(self, 'steps_per_step', 'number of smb steps per time step');
@@ -190,4 +202,8 @@
 				WriteData(fid,prefix,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
 			end
+			if self.issetpddfac==1
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','pddfac_snow','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+				WriteData(fid,prefix,'object',self,'class','smb','fieldname','pddfac_ice','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
+			end
 
 			%process requested outputs
Index: /issm/trunk-jpl/src/m/classes/SMBpdd.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBpdd.py	(revision 25373)
+++ /issm/trunk-jpl/src/m/classes/SMBpdd.py	(revision 25374)
@@ -34,4 +34,6 @@
         self.precipitations_presentday = float('NaN')
         self.precipitations_lgm = float('NaN')
+        self.pddfac_snow = float('NaN')
+        self.pddfac_ice = float('NaN')
         self.steps_per_step = 1
         self.averaging = 0
@@ -47,4 +49,5 @@
         string = "%s\n%s" % (string, fielddisplay(self, 'isdelta18o', 'is temperature and precipitation delta18o parametrisation activated (0 or 1, default is 0)'))
         string = "%s\n%s" % (string, fielddisplay(self, 'ismungsm', 'is temperature and precipitation mungsm parametrisation activated (0 or 1, default is 0)'))
+        string = "%s\n%s" % (string, fielddisplay(self, 'issetpddfac', 'is user passing in defined pdd factors (0 or 1, default is 0)'))
         string = "%s\n%s" % (string, fielddisplay(self, 'desfac', 'desertification elevation factor (between 0 and 1, default is 0.5) [m]'))
         string = "%s\n%s" % (string, fielddisplay(self, 's0p', 'should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]'))
@@ -73,5 +76,5 @@
                 string = "%s\n%s" % (string, fielddisplay(self, 'Tdiff', 'time interpolation parameter for temperature, 1D(year), required if mungsm is activated'))
                 string = "%s\n%s" % (string, fielddisplay(self, 'sealev', 'sea level [m], 1D(year), required if mungsm is activated'))
-
+                
         string = "%s\n%s" % (string, fielddisplay(self, 'steps_per_step', 'number of smb steps per time step'))
         string = "%s\n%s" % (string, fielddisplay(self, 'averaging', 'averaging methods from short to long steps'))
@@ -101,5 +104,9 @@
             self.precipitations_presentday = project3d(md, 'vector', self.precipitations_presentday, 'type', 'node')
             self.precipitations_lgm = project3d(md, 'vector', self.precipitations_lgm, 'type', 'node')
-
+       
+        if self.issetpddfac:
+            self.pddfac_snow = project3d(md, 'vector', self.pddfac_snow, 'type', 'node')
+        if self.issetpddfac:
+            self.pddfac_ice = project3d(md, 'vector', self.pddfac_ice, 'type', 'node')
         self.s0p = project3d(md, 'vector', self.s0p, 'type', 'node')
         self.s0t = project3d(md, 'vector', self.s0t, 'type', 'node')
@@ -130,4 +137,5 @@
         self.rlaps = 6.5
         self.rlapslgm = 6.5
+        self.issetpddfac = 0
 
         return self
@@ -164,4 +172,8 @@
                 md = checkfield(md, 'fieldname', 'smb.sealev', 'NaN', 1, 'Inf', 1, 'size', [2, np.nan], 'singletimeseries', 1)
 
+            if self.issetpddfac:
+                md = checkfield(md, 'fieldname', 'smb.pddfac_snow', '>=', 0, 'NaN', 1, 'Inf', 1)
+                md = checkfield(md, 'fieldname', 'smb.pddfac_ice', '>=', 0, 'NaN', 1, 'Inf', 1)
+
         md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1])
         md = checkfield(md, 'fieldname', 'smb.averaging', 'numel', [1], 'values', [0, 1, 2])
@@ -206,4 +218,8 @@
             WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'Tdiff', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', md.constants.yts)
             WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'sealev', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', md.constants.yts)
+       
+        if self.issetpddfac:
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'pddfac_snow', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+            WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'pddfac_ice', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
 
         #process requested outputs
Index: /issm/trunk-jpl/test/NightlyRun/test237.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test237.m	(revision 25373)
+++ /issm/trunk-jpl/test/NightlyRun/test237.m	(revision 25374)
@@ -18,5 +18,6 @@
 % creating Present day and lgm temperatures
 % Same temperature over the all region:
-tmonth(1:12)=238.15+20.;
+curve=sin(0:pi/11:pi);
+tmonth(1:12)=238.15+20.0+20.0*curve;
 for imonth=0:11
     md.smb.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
@@ -48,4 +49,8 @@
     md.smb.sealev(2,iint)=(iint-1)*20;
 end
+
+md.smb.issetpddfac=1;
+md.smb.pddfac_snow=2;
+md.smb.pddfac_ice=2;
 
 md=extrude(md,3,1);
Index: /issm/trunk-jpl/test/NightlyRun/test239.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test239.m	(revision 25373)
+++ /issm/trunk-jpl/test/NightlyRun/test239.m	(revision 25374)
@@ -19,5 +19,6 @@
 % creating Present day  temperatures
 % Same temperature over the all region:
-tmonth(1:12)=238.15+20.;
+curve=sin(0:pi/11:pi);
+tmonth(1:12)=238.15+20.0+20.0*curve;
 for imonth=0:11
     md.smb.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
@@ -40,4 +41,8 @@
 md.settings.output_frequency=1;
 md.timestepping.final_time=2;
+
+md.smb.issetpddfac = 1;
+md.smb.pddfac_snow = 3;
+md.smb.pddfac_ice = 3;
 
 md=setflowequation(md,'SSA','all');
Index: /issm/trunk-jpl/test/NightlyRun/test247.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test247.m	(revision 25373)
+++ /issm/trunk-jpl/test/NightlyRun/test247.m	(revision 25374)
@@ -19,5 +19,6 @@
 % creating Present day  temperatures
 % Same temperature over the all region:
-tmonth(1:12)=238.15+20.;
+curve=sin(0:pi/11:pi);
+tmonth(1:12)=238.15+20.0+20.0*curve;
 for imonth=0:11
 	md.smb.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
@@ -56,6 +57,6 @@
 md.smb.s0t = (max(md.geometry.surface,0));
 md.smb.issetpddfac = 1;
-md.smb.pddfac_snow =4.3;
-md.smb.pddfac_ice = 8.3;
+md.smb.pddfac_snow = 8;
+md.smb.pddfac_ice = 10;
 
 md=extrude(md,5,1.2);
