Index: /issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp	(revision 25208)
+++ /issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp	(revision 25209)
@@ -377,15 +377,19 @@
 		case SMBgradientscomponentsEnum:
 				parameters->AddObject(iomodel->CopyConstantObject("md.smb.accualti",SmbAccualtiEnum));
-				parameters->AddObject(iomodel->CopyConstantObject("md.smb.accugrad",SmbAccugradEnum));
 				parameters->AddObject(iomodel->CopyConstantObject("md.smb.runoffalti",SmbRunoffaltiEnum));
-				parameters->AddObject(iomodel->CopyConstantObject("md.smb.runoffgrad",SmbRunoffgradEnum));
-
-			  iomodel->FetchData(&temp,&N,&M,"md.smb.accuref"); _assert_(N==2);
-			  parameters->AddObject(new TransientParam(SmbAccurefEnum,&temp[0],&temp[M],interp,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));
-			  iomodel->DeleteData(temp,"md.smb.runoffref");
+
+				iomodel->FetchData(&temp,&N,&M,"md.smb.accugrad"); _assert_(N==2);
+				parameters->AddObject(new TransientParam(SmbAccugradEnum,&temp[0],&temp[M],interp,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));
+				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));
+				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));
+				iomodel->DeleteData(temp,"md.smb.runoffref");
 			break;
 		case SMBsemicEnum:
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 25208)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 25209)
@@ -680,9 +680,9 @@
 	parameters->FindParam(&time,TimeEnum);
 	parameters->FindParam(&accualti,SmbAccualtiEnum);
-	parameters->FindParam(&accugrad,SmbAccugradEnum);
 	parameters->FindParam(&runoffalti,SmbRunoffaltiEnum);
-	parameters->FindParam(&runoffgrad,SmbRunoffgradEnum);
 
 	/*Recover reference values at current time*/
+	parameters->FindParam(&accugrad,SmbAccugradEnum,time);
+	parameters->FindParam(&runoffgrad,SmbRunoffgradEnum,time);
 	parameters->FindParam(&accuref,SmbAccurefEnum,time);
 	parameters->FindParam(&runoffref,SmbRunoffrefEnum,time);
Index: /issm/trunk-jpl/src/m/classes/SMBgradientscomponents.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBgradientscomponents.m	(revision 25208)
+++ /issm/trunk-jpl/src/m/classes/SMBgradientscomponents.m	(revision 25209)
@@ -49,8 +49,8 @@
 				md = checkfield(md,'fieldname','smb.accuref','singletimeseries',1,'NaN',1,'Inf',1);
 				md = checkfield(md,'fieldname','smb.accualti','numel',1,'NaN',1,'Inf',1);
-				md = checkfield(md,'fieldname','smb.accugrad','numel',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.accugrad','singletimeseries',1,'NaN',1,'Inf',1);
 				md = checkfield(md,'fieldname','smb.runoffref','singletimeseries',1,'NaN',1,'Inf',1);
 				md = checkfield(md,'fieldname','smb.runoffalti','numel',1,'NaN',1,'Inf',1);
-				md = checkfield(md,'fieldname','smb.runoffgrad','numel',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.runoffgrad','singletimeseries',1,'NaN',1,'Inf',1);
 			end
 			md = checkfield(md,'fieldname','smb.steps_per_step','>=',1,'numel',[1]);
@@ -81,9 +81,8 @@
 			WriteData(fid,prefix,'object',self,'class','smb','fieldname','accuref','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts,'scale',1./md.constants.yts);
 			WriteData(fid,prefix,'object',self,'class','smb','fieldname','accualti','format','Double');
-			WriteData(fid,prefix,'object',self,'class','smb','fieldname','accugrad','format','Double','scale',1./md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','accugrad','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts,'scale',1./md.constants.yts);
 			WriteData(fid,prefix,'object',self,'class','smb','fieldname','runoffref','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts,'scale',1./md.constants.yts);
 			WriteData(fid,prefix,'object',self,'class','smb','fieldname','runoffalti','format','Double');
-			WriteData(fid,prefix,'object',self,'class','smb','fieldname','runoffgrad', ...
-				  'format','Double','scale',1./md.constants.yts);
+			WriteData(fid,prefix,'object',self,'class','smb','fieldname','runoffgrad','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts,'scale',1./md.constants.yts);
 			WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer');
 			WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer');
Index: /issm/trunk-jpl/src/m/classes/SMBgradientscomponents.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBgradientscomponents.py	(revision 25208)
+++ /issm/trunk-jpl/src/m/classes/SMBgradientscomponents.py	(revision 25209)
@@ -64,8 +64,8 @@
             md = checkfield(md, 'fieldname', 'smb.accuref', 'singletimeseries', 1, 'NaN', 1, 'Inf', 1)
             md = checkfield(md, 'fieldname', 'smb.accualti', 'numel', [1], 'NaN', 1, 'Inf', 1)
-            md = checkfield(md, 'fieldname', 'smb.accugrad', 'numel', [1], 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.accugrad', 'singletimeseries', 1, 'NaN', 1, 'Inf', 1)
             md = checkfield(md, 'fieldname', 'smb.runoffref', 'singletimeseries', 1, 'NaN', 1, 'Inf', 1)
             md = checkfield(md, 'fieldname', 'smb.runoffalti', 'numel', [1], 'NaN', 1, 'Inf', 1)
-            md = checkfield(md, 'fieldname', 'smb.runoffgrad', 'numel', [1], 'NaN', 1, 'Inf', 1)
+            md = checkfield(md, 'fieldname', 'smb.runoffgrad', 'singletimeseries', 1, 'NaN', 1, 'Inf', 1)
 
         md = checkfield(md, 'fieldname', 'smb.steps_per_step', '>=', 1, 'numel', [1])
@@ -80,8 +80,8 @@
         WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'accuref', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', yts, 'scale', 1. / yts)
         WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'accualti', 'format', 'Double')
-        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'accugrad', 'format', 'Double', 'scale', 1. / md.constants.yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'accugrad', 'format', 'DoubleMat', 'scale', 1. / yts, 'scale', 1. / yts)
         WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'runoffref', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', 2, 'yts', yts, 'scale', 1. / yts)
         WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'runoffalti', 'format', 'Double')
-        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'runoffgrad', 'format', 'Double', 'scale', 1. / md.constants.yts)
+        WriteData(fid, prefix, 'object', self, 'class', 'smb', 'fieldname', 'runoffgrad', 'format', 'DoubleMat', 'scale', 1. / yts, 'scale', 1. / yts)
         WriteData(fid, prefix, 'object', self, 'fieldname', 'steps_per_step', 'format', 'Integer')
         WriteData(fid, prefix, 'object', self, 'fieldname', 'averaging', 'format', 'Integer')
Index: /issm/trunk-jpl/test/NightlyRun/test905.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test905.m	(revision 25208)
+++ /issm/trunk-jpl/test/NightlyRun/test905.m	(revision 25209)
@@ -41,12 +41,12 @@
 
 ddf=10.0e-3;
-md.smb.accuref=[[0.5 0.5];[0. 2.0]];
+md.smb.accuref=[[0.5 0.5];[md.timestepping.start_time md.timestepping.final_time]];
 md.smb.accualti=0.0;
-md.smb.accugrad=0.0;
+md.smb.accugrad=[[0. 0.];[md.timestepping.start_time md.timestepping.final_time]];
 
 md.smb.runoffref=0.9*duration*ddf;
 md.smb.runoffref=[md.smb.runoffref;duration];
 md.smb.runoffalti=0.0;
-md.smb.runoffgrad=-6.5e-3*ddf;  %lapse rate *ddf*day per year
+md.smb.runoffgrad=[[-6.5e-3*ddf -6.5e-3*ddf];[md.timestepping.start_time md.timestepping.final_time]];  %lapse rate *ddf*day per year
 
 md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
Index: /issm/trunk-jpl/test/NightlyRun/test905.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test905.py	(revision 25208)
+++ /issm/trunk-jpl/test/NightlyRun/test905.py	(revision 25209)
@@ -55,7 +55,7 @@
 
 ddf = 10.0e-3
-md.smb.accuref = np.array([[0.5, 0.5], [0., 2.0]])
+md.smb.accuref = np.array([[0.5, 0.5], [md.timestepping.start_time, md.timestepping.final_time]])
 md.smb.accualti = 0.0
-md.smb.accugrad = 0.0
+md.smb.accugrad = np.array([[0., 0.], [md.timestepping.start_time, md.timestepping.final_time]])
 
 #md.smb.runoffref = 9. * ddf * np.ones(np.shape(duration))  #constant input for testing
@@ -63,5 +63,5 @@
 md.smb.runoffref = np.vstack((md.smb.runoffref, duration))
 md.smb.runoffalti = 0.0
-md.smb.runoffgrad = -6.5e-3 * ddf  #lapse rate *ddf*day per year
+md.smb.runoffgrad = np.array([[-6.5e-3 * ddf, -6.5e-3 * ddf], [md.timestepping.start_time, md.timestepping.final_time]])  #lapse rate *ddf*day per year
 
 md.basalforcings.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices))
