Index: /issm/trunk-jpl/src/m/classes/timestepping.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/timestepping.m	(revision 27177)
+++ /issm/trunk-jpl/src/m/classes/timestepping.m	(revision 27178)
@@ -5,9 +5,10 @@
 
 classdef timestepping
-	properties (SetAccess=public) 
+	properties (SetAccess=public)
 		start_time      = 0.;
 		final_time      = 0.;
 		time_step       = 0.;
 		interp_forcing  = 1;
+		average_forcing  = 0;
 		cycle_forcing   = 0;
 		coupling_time   = 0.;
@@ -32,4 +33,5 @@
 			fielddisplay(self,'time_step',['length of time steps [' unit ']']);
 			fielddisplay(self,'interp_forcing','interpolate in time between requested forcing values? (0 or 1)');
+			fielddisplay(self,'average_forcing','average in time if there are several forcing values between steps? (0 or 1, default is 0)');
 			fielddisplay(self,'cycle_forcing','cycle through forcing? (0 or 1)');
 			fielddisplay(self,'coupling_time',['length of coupling time step with ocean model [' unit ']']);
@@ -46,4 +48,5 @@
 			%should we interpolate forcing between timesteps?
 			self.interp_forcing=1;
+			self.average_forcing=0;
 			self.cycle_forcing=0;
 		end % }}}
@@ -54,8 +57,9 @@
 			md = checkfield(md,'fieldname','timestepping.time_step','numel',[1],'>=',0,'NaN',1,'Inf',1);
 			md = checkfield(md,'fieldname','timestepping.interp_forcing','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','timestepping.average_forcing','numel',[1],'values',[0 1]);
 			md = checkfield(md,'fieldname','timestepping.cycle_forcing','numel',[1],'values',[0 1]);
 			if self.final_time-self.start_time<0,
 				md = checkmessage(md,'timestepping.final_time should be larger than timestepping.start_time');
-			end 
+			end
 			if strcmp(solution,'TransientSolution'),
 				md = checkfield(md,'fieldname','timestepping.time_step','numel',[1],'>',0,'NaN',1,'Inf',1);
@@ -70,13 +74,15 @@
 			WriteData(fid,prefix,'object',self,'fieldname','time_step','format','Double','scale',scale);
 			WriteData(fid,prefix,'object',self,'fieldname','interp_forcing','format','Boolean');
+			WriteData(fid,prefix,'object',self,'fieldname','average_forcing','format','Boolean');
 			WriteData(fid,prefix,'object',self,'fieldname','cycle_forcing','format','Boolean');
 			WriteData(fid,prefix,'object',self,'fieldname','coupling_time','format','Double','scale',scale);
 		end % }}}
 		function savemodeljs(self,fid,modelname) % {{{
-		
+
 			writejsdouble(fid,[modelname '.timestepping.start_time'],self.start_time);
 			writejsdouble(fid,[modelname '.timestepping.final_time'],self.final_time);
 			writejsdouble(fid,[modelname '.timestepping.time_step'],self.time_step);
 			writejsdouble(fid,[modelname '.timestepping.interp_forcing'],self.interp_forcing);
+			writejsdouble(fid,[modelname '.timestepping.average_forcing'],self.interp_forcing);
 			writejsdouble(fid,[modelname '.timestepping.cycle_forcing'],self.cycle_forcing);
 
Index: /issm/trunk-jpl/src/m/classes/timestepping.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/timestepping.py	(revision 27177)
+++ /issm/trunk-jpl/src/m/classes/timestepping.py	(revision 27178)
@@ -11,9 +11,10 @@
     """
 
-    def __init__(self, *args): #{{{
+    def __init__(self, *args):  #{{{
         self.start_time = 0
         self.final_time = 0
         self.time_step = 0
         self.interp_forcing = 1
+        self.average_forcing = 0
         self.cycle_forcing = 0
         self.coupling_time = 0
@@ -24,5 +25,6 @@
             raise RuntimeError('constructor not supported')
     #}}}
-    def __repr__(self): #{{{
+
+    def __repr__(self):  #{{{
         s = '   timestepping parameters:\n'
         unit = 'yr'
@@ -31,9 +33,11 @@
         s += '{}\n'.format(fielddisplay(self, 'time_step', 'length of time steps [' + unit + ']'))
         s += '{}\n'.format(fielddisplay(self, 'interp_forcing', 'interpolate in time between requested forcing values? (0 or 1)'))
+        s += '{}\n'.format(fielddisplay(self, 'average_forcing', 'average in time if there are several forcing values between steps? (0 or 1, default is 0)'))
         s += '{}\n'.format(fielddisplay(self, 'cycle_forcing', 'cycle through forcing? (0 or 1)'))
         s += '{}\n'.format(fielddisplay(self, 'coupling_time', 'length of coupling time steps with ocean model [' + unit + ']'))
         return s
     #}}}
-    def setdefaultparameters(self): #{{{
+
+    def setdefaultparameters(self):  #{{{
         # Time between 2 time steps
         self.time_step = 1 / 2
@@ -44,12 +48,16 @@
         # Should we interpolate forcing between timesteps?
         self.interp_forcing = 1
+        self.average_forcing = 0
         self.cycle_forcing = 0
 
         return self
     #}}}
-    def checkconsistency(self, md, solution, analyses): #{{{
+
+    def checkconsistency(self, md, solution, analyses):  #{{{
         md = checkfield(md, 'fieldname', 'timestepping.start_time', 'numel', [1], 'NaN', 1, 'Inf', 1)
         md = checkfield(md, 'fieldname', 'timestepping.final_time', 'numel', [1], 'NaN', 1, 'Inf', 1)
         md = checkfield(md, 'fieldname', 'timestepping.time_step', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
+        md = checkfield(md, 'fieldname', 'timestepping.interp_forcing', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'timestepping.average_forcing', 'numel', [1], 'values', [0, 1])
         md = checkfield(md, 'fieldname', 'timestepping.cycle_forcing', 'numel', [1], 'values', [0, 1])
         if (self.final_time - self.start_time) < 0:
@@ -60,5 +68,6 @@
         return md
     #}}}
-    def marshall(self, prefix, md, fid): #{{{
+
+    def marshall(self, prefix, md, fid):  #{{{
         scale = md.constants.yts
         WriteData(fid, prefix, 'name', 'md.timestepping.type', 'data', 1, 'format', 'Integer')
@@ -67,4 +76,5 @@
         WriteData(fid, prefix, 'object', self, 'fieldname', 'time_step', 'format', 'Double', 'scale', scale)
         WriteData(fid, prefix, 'object', self, 'fieldname', 'interp_forcing', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'average_forcing', 'format', 'Boolean')
         WriteData(fid, prefix, 'object', self, 'fieldname', 'cycle_forcing', 'format', 'Boolean')
         WriteData(fid, prefix, 'object', self, 'fieldname', 'coupling_time', 'format', 'Double', 'scale', scale)
Index: /issm/trunk-jpl/src/m/classes/timesteppingadaptive.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/timesteppingadaptive.m	(revision 27177)
+++ /issm/trunk-jpl/src/m/classes/timesteppingadaptive.m	(revision 27178)
@@ -5,5 +5,5 @@
 
 classdef timesteppingadaptive
-	properties (SetAccess=public) 
+	properties (SetAccess=public)
 		start_time      = 0.;
 		final_time      = 0.;
@@ -11,6 +11,7 @@
 		time_step_max   = 0.;
 		cfl_coefficient = 0.;
-		interp_forcing = 1;
-		cycle_forcing = 1;
+		interp_forcing  = 1;
+		average_forcing = 0;
+		cycle_forcing   = 1;
 		coupling_time   = 0.;
 	end
@@ -40,4 +41,5 @@
 			%should we interpolate forcing between timesteps?
 			self.interp_forcing=1;
+			self.average_forcing=0;
 			self.cycle_forcing=0;
 		end % }}}
@@ -50,9 +52,10 @@
 			md = checkfield(md,'fieldname','timestepping.cfl_coefficient','numel',[1],'>',0,'<=',1);
 			md = checkfield(md,'fieldname','timestepping.interp_forcing','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','timestepping.average_forcing','numel',[1],'values',[0 1]);
 			md = checkfield(md,'fieldname','timestepping.cycle_forcing','numel',[1],'values',[0 1]);
 			md = checkfield(md,'fieldname','timestepping.coupling_time','numel',[1],'>=',md.timestepping.coupling_time,'NaN',1,'Inf',1);
 			if self.final_time-self.start_time<0,
 				md = checkmessage(md,'timestepping.final_time should be larger than timestepping.start_time');
-			end 
+			end
 		end % }}}
 		function disp(self) % {{{
@@ -66,4 +69,5 @@
 			fielddisplay(self,'cfl_coefficient','coefficient applied to cfl condition');
 			fielddisplay(self,'interp_forcing','interpolate in time between requested forcing values ? (0 or 1)');
+			fielddisplay(self,'average_forcing','average in time if there are several forcing values between steps? (0 or 1, default is 0)');
 			fielddisplay(self,'cycle_forcing','cycle through forcing ? (0 or 1)');
 			fielddisplay(self,'coupling_time',['coupling time step with ocean model [' unit ']']);
@@ -80,9 +84,10 @@
 			WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','cfl_coefficient','format','Double');
 			WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','interp_forcing','format','Boolean');
+			WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','average_forcing','format','Boolean');
 			WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','cycle_forcing','format','Boolean');
 			WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','coupling_time','format','Double','scale',scale);
 		end % }}}
 		function savemodeljs(self,fid,modelname) % {{{
-		
+
 			writejsdouble(fid,[modelname '.timesteppingadaptive.start_time'],self.start_time);
 			writejsdouble(fid,[modelname '.timesteppingadaptive.final_time'],self.final_time);
@@ -91,4 +96,5 @@
 			writejsdouble(fid,[modelname '.timesteppingadaptive.cfl_coefficient'],self.cfl_coefficient);
 			writejsdouble(fid,[modelname '.timesteppingadaptive.interp_forcing'],self.interp_forcing);
+			writejsdouble(fid,[modelname '.timesteppingadaptive.average_forcing'],self.interp_forcing);
 			writejsdouble(fid,[modelname '.timesteppingadaptive.cycle_forcing'],self.cycle_forcing);
 			writejsdouble(fid,[modelname '.timesteppingadaptive.coupling_time'],self.time_step_max);
Index: /issm/trunk-jpl/src/m/classes/timesteppingadaptive.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/timesteppingadaptive.py	(revision 27177)
+++ /issm/trunk-jpl/src/m/classes/timesteppingadaptive.py	(revision 27178)
@@ -20,4 +20,5 @@
             self.cfl_coefficient = 0.
             self.interp_forcing = 1
+            self.average_forcing = 0
             self.cycle_forcing = 0
             self.coupling_time = 0.
@@ -33,4 +34,5 @@
             self.final_time = old.final_time
             self.interp_forcing = old.interp_forcing
+            self.average_forcing = old.average_forcing
             self.cycle_forcing = old.cycle_forcing
             self.coupling_time = old.coupling_time
@@ -42,12 +44,13 @@
     def __repr__(self):  # {{{
         string = "   timesteppingadaptive parameters:"
-        string = "%s\n%s" % (string, fielddisplay(self, "start_time", "simulation starting time [yr]"))
-        string = "%s\n%s" % (string, fielddisplay(self, "final_time", "final time to stop the simulation [yr]"))
-        string = "%s\n%s" % (string, fielddisplay(self, "time_step_min", "minimum length of time steps [yr]"))
-        string = "%s\n%s" % (string, fielddisplay(self, "time_step_max", "maximum length of time steps [yr]"))
-        string = "%s\n%s" % (string, fielddisplay(self, "cfl_coefficient", "coefficient applied to cfl condition"))
-        string = "%s\n%s" % (string, fielddisplay(self, "interp_forcing", "interpolate in time between requested forcing values ? (0 or 1)"))
-        string = "%s\n%s" % (string, fielddisplay(self, "cycle_forcing", "cycle through forcing ? (0 or 1)"))
-        string = "%s\n%s" % (string, fielddisplay(self, "coupling_time", "coupling time steps with ocean model [yr]"))
+        string = '{}\n{}'.format (string, fielddisplay(self, "start_time", "simulation starting time [yr]"))
+        string = '{}\n{}'.format(string, fielddisplay(self, "final_time", "final time to stop the simulation [yr]"))
+        string = '{}\n{}'.format (string, fielddisplay(self, "time_step_min", "minimum length of time steps [yr]"))
+        string = '{}\n{}'.format (string, fielddisplay(self, "time_step_max", "maximum length of time steps [yr]"))
+        string = '{}\n{}'.format (string, fielddisplay(self, "cfl_coefficient", "coefficient applied to cfl condition"))
+        string = '{}\n{}'.format (string, fielddisplay(self, "interp_forcing", "interpolate in time between requested forcing values ? (0 or 1)"))
+        string = '{}\n{}'.format(string, fielddisplay(self, 'average_forcing', 'average in time if there are several forcing values between steps? (0 or 1, default is 0)'))
+        string = '{}\n{}'.format(string, fielddisplay(self, "cycle_forcing", "cycle through forcing ? (0 or 1)"))
+        string = '{}\n{}'.format(string, fielddisplay(self, "coupling_time", "coupling time steps with ocean model [yr]"))
         return string
     # }}}
@@ -63,4 +66,5 @@
         #should we interpolate forcing between timesteps?
         self.interp_forcing = 1
+        self.average_forcing = 0
         self.cycle_forcing   = 0
         return self
@@ -76,4 +80,5 @@
             md.checkmessage("timestepping.final_time should be larger than timestepping.start_time")
         md = checkfield(md, 'fieldname', 'timestepping.interp_forcing', 'numel', [1], 'values', [0, 1])
+        md = checkfield(md, 'fieldname', 'timestepping.average_forcing', 'numel', [1], 'values', [0, 1])
         md = checkfield(md, 'fieldname', 'timestepping.cycle_forcing', 'numel', [1], 'values', [0, 1])
         md = checkfield(md, 'fieldname', 'timestepping.coupling_time', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
@@ -91,4 +96,5 @@
         WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'cfl_coefficient', 'format', 'Double')
         WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'interp_forcing', 'format', 'Boolean')
+        WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'average_forcing', 'format', 'Boolean')
         WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'cycle_forcing', 'format', 'Boolean')
         WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'coupling_time', 'format', 'Double', 'scale', yts)
