Index: /issm/trunk-jpl/src/m/classes/SMBcomponents.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBcomponents.m	(revision 18000)
+++ /issm/trunk-jpl/src/m/classes/SMBcomponents.m	(revision 18000)
@@ -0,0 +1,80 @@
+%SMBcomponents Class definition
+%
+%   Usage:
+%      SMBcomponents=SMBcomponents();
+
+classdef SMBcomponents
+	properties (SetAccess=public) 
+		accumulation = NaN;
+		runoff = NaN;
+		evaporation = NaN;
+	end
+	methods
+		function obj = SMBcomponents(varargin) % {{{
+			switch nargin
+				case 0
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+
+			self.accumulation=project3d(md,'vector',self.accumulation,'type','node');
+			self.runoff=project3d(md,'vector',self.runoff,'type','node');
+			self.evaporation=project3d(md,'vector',self.evaporation,'type','node');
+
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.accumulation)
+				self.accumulation=zeros(md.mesh.numberofvertices,1);
+				disp('      no surfaceforcings.accumulation specified: values set as zero');
+			end
+			if isnan(self.evaporation)
+				self.evaporation=zeros(md.mesh.numberofvertices,1);
+				disp('      no surfaceforcings.evaporation specified: values set as zero');
+			end
+			if isnan(self.runoff)
+				self.runoff=zeros(md.mesh.numberofvertices,1);
+				disp('      no surfaceforcings.runoff specified: values set as zero');
+			end
+
+		end % }}}
+		function md = checkconsistency(obj,md,solution,analyses) % {{{
+
+			if ismember(MasstransportAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','surfaceforcings.accumulation','forcing',1,'NaN',1);
+			end
+			if ismember(BalancethicknessAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','surfaceforcings.accumulation','size',[md.mesh.numberofvertices 1],'NaN',1);
+			end
+			if ismember(MasstransportAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','surfaceforcings.runoff','forcing',1,'NaN',1);
+			end
+			if ismember(BalancethicknessAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','surfaceforcings.runoff','size',[md.mesh.numberofvertices 1],'NaN',1);
+			end
+			if ismember(MasstransportAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','surfaceforcings.evaporation','forcing',1,'NaN',1);
+			end
+			if ismember(BalancethicknessAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','surfaceforcings.evaporation','size',[md.mesh.numberofvertices 1],'NaN',1);
+			end
+		end % }}}
+		function disp(obj) % {{{
+			disp(sprintf('   surface forcings parameters (SMB=accumulation-runoff-evaporation) :'));
+			fielddisplay(obj,'accumulation','accumulated snow [m/yr ice eq]');
+			fielddisplay(obj,'runoff','amount of ice melt lost from the ice column [m/yr ice eq]');
+			fielddisplay(obj,'evaporation','amount of ice lost to evaporative processes [m/yr ice eq]');
+		end % }}}
+		function marshall(obj,md,fid) % {{{
+
+			yts=365.0*24.0*3600.0;
+
+			WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBcomponentsEnum(),'format','Integer');
+			WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','runoff','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1);
+		end % }}}
+	end
+end
Index: /issm/trunk-jpl/src/m/classes/SMBcomponents.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBcomponents.py	(revision 18000)
+++ /issm/trunk-jpl/src/m/classes/SMBcomponents.py	(revision 18000)
@@ -0,0 +1,80 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import *
+from project3d import *
+from WriteData import *
+
+class SMBcomponents(object):
+	"""
+	SMBcomponents Class definition
+
+	   Usage:
+	      SMBcomponents=SMBcomponents();
+	"""
+
+	def __init__(self): # {{{
+		self.accumulation = float('NaN')
+		self.runoff = float('NaN')
+		self.evaporation = float('NaN')
+		#}}}
+	def __repr__(self): # {{{
+		string="   surface forcings parameters (SMB=accumulation-runoff-evaporation) :"
+		string="%s\n%s"%(string,fielddisplay(self,'accumulation','accumulated snow [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'runoff','amount of ice melt lost from the ice column [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'evaporation','mount of ice lost to evaporative processes [m/yr ice eq]'))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+
+		self.mass_balance=project3d(md,'vector',self.accumulation,'type','node');
+		self.mass_balance=project3d(md,'vector',self.runoff,'type','node');
+		self.mass_balance=project3d(md,'vector',self.evaporation,'type','node');
+		return self
+	#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.accumulation)):
+			self.accumulation=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMB.accumulation specified: values set as zero"
+
+		if numpy.all(numpy.isnan(self.runoff)):
+			self.runoff=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMB.runoff specified: values set as zero"
+
+		if numpy.all(numpy.isnan(self.evaporation)):
+			self.evaporation=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMB.evaporation specified: values set as zero"
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','surfaceforcings.accumulation','forcing',1,'NaN',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','surfaceforcings.accumulation','size',[md.mesh.numberofvertices],'NaN',1)
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','surfaceforcings.runoff','forcing',1,'NaN',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','surfaceforcings.runoff','size',[md.mesh.numberofvertices],'NaN',1)
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','surfaceforcings.evaporation','forcing',1,'NaN',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','surfaceforcings.evaporation','size',[md.mesh.numberofvertices],'NaN',1)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBEnum(),'format','Integer');
+		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','runoff','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1)
+	# }}}
Index: /issm/trunk-jpl/src/m/classes/SMBmeltcomponents.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBmeltcomponents.m	(revision 18000)
+++ /issm/trunk-jpl/src/m/classes/SMBmeltcomponents.m	(revision 18000)
@@ -0,0 +1,94 @@
+%SMBmeltcomponents Class definition
+%
+%   Usage:
+%      SMBmeltcomponents=SMBmeltcomponents();
+
+classdef SMBmeltcomponents
+	properties (SetAccess=public) 
+		accumulation = NaN;
+		evaporation = NaN;
+		melt = NaN;
+		refreeze = NaN;
+	end
+	methods
+		function obj = SMBmeltcomponents(varargin) % {{{
+			switch nargin
+				case 0
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+
+			self.accumulation=project3d(md,'vector',self.accumulation,'type','node');
+			self.evaporation=project3d(md,'vector',self.evaporation,'type','node');
+			self.melt=project3d(md,'vector',self.melt,'type','node');
+			self.refreeze=project3d(md,'vector',self.refreeze,'type','node');
+
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.accumulation)
+				self.accumulation=zeros(md.mesh.numberofvertices,1);
+				disp('      no surfaceforcings.accumulation specified: values set as zero');
+			end
+			if isnan(self.evaporation)
+				self.evaporation=zeros(md.mesh.numberofvertices,1);
+				disp('      no surfaceforcings.evaporation specified: values set as zero');
+			end
+			if isnan(self.refreeze)
+				self.refreeze=zeros(md.mesh.numberofvertices,1);
+				disp('      no surfaceforcings.refreeze specified: values set as zero');
+			end
+			if isnan(self.melt)
+				self.melt=zeros(md.mesh.numberofvertices,1);
+				disp('      no surfaceforcings.melt specified: values set as zero');
+			end
+
+		end % }}}
+		function md = checkconsistency(obj,md,solution,analyses) % {{{
+
+			if ismember(MasstransportAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','surfaceforcings.accumulation','forcing',1,'NaN',1);
+			end
+			if ismember(BalancethicknessAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','surfaceforcings.accumulation','size',[md.mesh.numberofvertices 1],'NaN',1);
+			end
+			if ismember(MasstransportAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','surfaceforcings.evaporation','forcing',1,'NaN',1);
+			end
+			if ismember(BalancethicknessAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','surfaceforcings.evaporation','size',[md.mesh.numberofvertices 1],'NaN',1);
+			end
+			if ismember(MasstransportAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','surfaceforcings.refreeze','forcing',1,'NaN',1);
+			end
+			if ismember(BalancethicknessAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','surfaceforcings.refreeze','size',[md.mesh.numberofvertices 1],'NaN',1);
+			end
+			if ismember(MasstransportAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','surfaceforcings.melt','forcing',1,'NaN',1);
+			end
+			if ismember(BalancethicknessAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','surfaceforcings.melt','size',[md.mesh.numberofvertices 1],'NaN',1);
+			end
+		end % }}}
+		function disp(obj) % {{{
+			disp(sprintf('   surface forcings parameters with melt (SMB=accumulation-evaporation-melt+refreeze) :'));
+			fielddisplay(obj,'accumulation','accumulated snow [m/yr ice eq]');
+			fielddisplay(obj,'evaporation','amount of ice lost to evaporative processes [m/yr ice eq]');
+			fielddisplay(obj,'melt','amount of ice melt in ice column [m/yr ice eq]');
+			fielddisplay(obj,'refreeze','amount of ice melt refrozen in ice column [m/yr ice eq]');
+		end % }}}
+		function marshall(obj,md,fid) % {{{
+
+			yts=365.0*24.0*3600.0;
+
+			WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBmeltcomponentsEnum(),'format','Integer');
+			WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','melt','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','refreeze','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1);
+		end % }}}
+	end
+end
Index: /issm/trunk-jpl/src/m/classes/SMBmeltcomponents.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBmeltcomponents.py	(revision 18000)
+++ /issm/trunk-jpl/src/m/classes/SMBmeltcomponents.py	(revision 18000)
@@ -0,0 +1,93 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import *
+from project3d import *
+from WriteData import *
+
+class SMBmeltcomponents(object):
+	"""
+	SMBmeltcomponents Class definition
+
+	   Usage:
+	      SMBmeltcomponents=SMBmeltcomponents();
+	"""
+
+	def __init__(self): # {{{
+		self.accumulation = float('NaN')
+		self.runoff = float('NaN')
+		self.evaporation = float('NaN')
+		#}}}
+	def __repr__(self): # {{{
+		string="   surface forcings parameters with melt (SMB=accumulation-evaporation-melt+refreeze) :"
+		string="%s\n%s"%(string,fielddisplay(self,'accumulation','accumulated snow [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'evaporation','mount of ice lost to evaporative processes [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'melt','amount of ice melt in the ice column [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'refreeze','amount of ice melt refrozen in the ice column [m/yr ice eq]'))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+
+		self.mass_balance=project3d(md,'vector',self.accumulation,'type','node');
+		self.mass_balance=project3d(md,'vector',self.evaporation,'type','node');
+		self.mass_balance=project3d(md,'vector',self.melt,'type','node');
+		self.mass_balance=project3d(md,'vector',self.refreeze,'type','node');
+		return self
+	#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.accumulation)):
+			self.accumulation=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMB.accumulation specified: values set as zero"
+
+		if numpy.all(numpy.isnan(self.evaporation)):
+			self.evaporation=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMB.evaporation specified: values set as zero"
+
+		if numpy.all(numpy.isnan(self.melt)):
+			self.melt=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMB.melt specified: values set as zero"
+
+		if numpy.all(numpy.isnan(self.refreeze)):
+			self.refreeze=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMB.refreeze specified: values set as zero"
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','surfaceforcings.accumulation','forcing',1,'NaN',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','surfaceforcings.accumulation','size',[md.mesh.numberofvertices],'NaN',1)
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','surfaceforcings.melt','forcing',1,'NaN',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','surfaceforcings.melt','size',[md.mesh.numberofvertices],'NaN',1)
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','surfaceforcings.refreeze','forcing',1,'NaN',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','surfaceforcings.refreeze','size',[md.mesh.numberofvertices],'NaN',1)
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','surfaceforcings.evaporation','forcing',1,'NaN',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','surfaceforcings.evaporation','size',[md.mesh.numberofvertices],'NaN',1)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBEnum(),'format','Integer');
+		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','melt','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','refreeze','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1)
+	# }}}
Index: /issm/trunk-jpl/src/m/classes/timestepping.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/timestepping.m	(revision 17999)
+++ /issm/trunk-jpl/src/m/classes/timestepping.m	(revision 18000)
@@ -11,4 +11,5 @@
 		time_adapt      = 0;
 		cfl_coefficient = 0.;
+		interp_forcings = 1;
 	end
 	methods
@@ -46,4 +47,7 @@
 			obj.time_adapt=0;
 			obj.cfl_coefficient=0.5;
+
+			%should we interpolate forcings between timesteps?
+			obj.interp_forcings=1;
 		end % }}}
 		function md = checkconsistency(obj,md,solution,analyses) % {{{
@@ -54,4 +58,5 @@
 			md = checkfield(md,'fieldname','timestepping.time_adapt','numel',[1],'values',[0 1]);
 			md = checkfield(md,'fieldname','timestepping.cfl_coefficient','numel',[1],'>',0,'<=',1);
+			md = checkfield(md,'fieldname','timestepping.interp_forcings','numel',[1],'values',[0 1]);
 			if obj.final_time-obj.start_time<0,
 				md = checkmessage(md,'timestepping.final_time should be larger than timestepping.start_time');
@@ -66,4 +71,5 @@
 			fielddisplay(obj,'time_adapt','use cfl condition to define time step ? (0 or 1) ');
 			fielddisplay(obj,'cfl_coefficient','coefficient applied to cfl condition');
+			fielddisplay(obj,'interp_forcings','interpolate in time between requested forcing values ? (0 or 1)');
 
 		end % }}}
@@ -77,4 +83,5 @@
 			WriteData(fid,'object',obj,'fieldname','time_adapt','format','Boolean');
 			WriteData(fid,'object',obj,'fieldname','cfl_coefficient','format','Double');
+			WriteData(fid,'object',obj,'fieldname','interp_forcings','format','Boolean');
 		end % }}}
 	end
Index: /issm/trunk-jpl/src/m/classes/timestepping.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/timestepping.py	(revision 17999)
+++ /issm/trunk-jpl/src/m/classes/timestepping.py	(revision 18000)
@@ -18,4 +18,5 @@
 		self.time_adapt      = 0
 		self.cfl_coefficient = 0.
+		self.interp_forcings = 1
 		
 		#set defaults
@@ -30,4 +31,5 @@
 		string="%s\n%s"%(string,fielddisplay(self,"time_adapt","use cfl condition to define time step ? (0 or 1) "))
 		string="%s\n%s"%(string,fielddisplay(self,"cfl_coefficient","coefficient applied to cfl condition"))
+		string="%s\n%s"%(string,fielddisplay(self,"interp_forcings","interpolate in time between requested forcing values ? (0 or 1)"))
 		return string
 		#}}}
@@ -43,4 +45,7 @@
 		self.time_adapt=0
 		self.cfl_coefficient=0.5
+		
+		#should we interpolate forcings between timesteps?
+		self.interp_forcings=1
 
 		return self
@@ -55,4 +60,5 @@
 		if self.final_time-self.start_time<0:
 			md.checkmessage("timestepping.final_time should be larger than timestepping.start_time")
+		md = checkfield(md,'fieldname','timestepping.interp_forcings','numel',[1],'values',[0,1])
 
 		return md
@@ -67,3 +73,4 @@
 		WriteData(fid,'object',self,'fieldname','time_adapt','format','Boolean')
 		WriteData(fid,'object',self,'fieldname','cfl_coefficient','format','Double')
+		WriteData(fid,'object',self,'fieldname','interp_forcings','format','Boolean')
 	# }}}
Index: /issm/trunk-jpl/src/m/enum/EnumDefinitions.py
===================================================================
--- /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 17999)
+++ /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 18000)
@@ -322,4 +322,11 @@
 def SurfaceforcingsBNegEnum(): return StringToEnum("SurfaceforcingsBNeg")[0]
 def SMBhenningEnum(): return StringToEnum("SMBhenning")[0]
+def SMBcomponentsEnum(): return StringToEnum("SMBcomponents")[0]
+def SurfaceforcingsAccumulationEnum(): return StringToEnum("SurfaceforcingsAccumulation")[0]
+def SurfaceforcingsEvaporationEnum(): return StringToEnum("SurfaceforcingsEvaporation")[0]
+def SurfaceforcingsRunoffEnum(): return StringToEnum("SurfaceforcingsRunoff")[0]
+def SMBmeltcomponentsEnum(): return StringToEnum("SMBmeltcomponents")[0]
+def SurfaceforcingsMeltEnum(): return StringToEnum("SurfaceforcingsMelt")[0]
+def SurfaceforcingsRefreezeEnum(): return StringToEnum("SurfaceforcingsRefreeze")[0]
 def SurfaceforcingsIspddEnum(): return StringToEnum("SurfaceforcingsIspdd")[0]
 def SurfaceforcingsIssmbgradientsEnum(): return StringToEnum("SurfaceforcingsIssmbgradients")[0]
Index: /issm/trunk-jpl/src/m/enum/SMBcomponentsEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SMBcomponentsEnum.m	(revision 18000)
+++ /issm/trunk-jpl/src/m/enum/SMBcomponentsEnum.m	(revision 18000)
@@ -0,0 +1,11 @@
+function macro=SMBcomponentsEnum()
+%SMBCOMPONENTSENUM - Enum of SMBcomponents
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SMBcomponentsEnum()
+
+macro=StringToEnum('SMBcomponents');
Index: /issm/trunk-jpl/src/m/enum/SMBmeltcomponentsEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SMBmeltcomponentsEnum.m	(revision 18000)
+++ /issm/trunk-jpl/src/m/enum/SMBmeltcomponentsEnum.m	(revision 18000)
@@ -0,0 +1,11 @@
+function macro=SMBmeltcomponentsEnum()
+%SMBMELTCOMPONENTSENUM - Enum of SMBmeltcomponents
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SMBmeltcomponentsEnum()
+
+macro=StringToEnum('SMBmeltcomponents');
Index: /issm/trunk-jpl/src/m/enum/SurfaceforcingsAccumulationEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsAccumulationEnum.m	(revision 18000)
+++ /issm/trunk-jpl/src/m/enum/SurfaceforcingsAccumulationEnum.m	(revision 18000)
@@ -0,0 +1,11 @@
+function macro=SurfaceforcingsAccumulationEnum()
+%SURFACEFORCINGSACCUMULATIONENUM - Enum of SurfaceforcingsAccumulation
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SurfaceforcingsAccumulationEnum()
+
+macro=StringToEnum('SurfaceforcingsAccumulation');
Index: /issm/trunk-jpl/src/m/enum/SurfaceforcingsEvaporationEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsEvaporationEnum.m	(revision 18000)
+++ /issm/trunk-jpl/src/m/enum/SurfaceforcingsEvaporationEnum.m	(revision 18000)
@@ -0,0 +1,11 @@
+function macro=SurfaceforcingsEvaporationEnum()
+%SURFACEFORCINGSEVAPORATIONENUM - Enum of SurfaceforcingsEvaporation
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SurfaceforcingsEvaporationEnum()
+
+macro=StringToEnum('SurfaceforcingsEvaporation');
Index: /issm/trunk-jpl/src/m/enum/SurfaceforcingsMeltEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsMeltEnum.m	(revision 18000)
+++ /issm/trunk-jpl/src/m/enum/SurfaceforcingsMeltEnum.m	(revision 18000)
@@ -0,0 +1,11 @@
+function macro=SurfaceforcingsMeltEnum()
+%SURFACEFORCINGSMELTENUM - Enum of SurfaceforcingsMelt
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SurfaceforcingsMeltEnum()
+
+macro=StringToEnum('SurfaceforcingsMelt');
Index: /issm/trunk-jpl/src/m/enum/SurfaceforcingsRefreezeEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsRefreezeEnum.m	(revision 18000)
+++ /issm/trunk-jpl/src/m/enum/SurfaceforcingsRefreezeEnum.m	(revision 18000)
@@ -0,0 +1,11 @@
+function macro=SurfaceforcingsRefreezeEnum()
+%SURFACEFORCINGSREFREEZEENUM - Enum of SurfaceforcingsRefreeze
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SurfaceforcingsRefreezeEnum()
+
+macro=StringToEnum('SurfaceforcingsRefreeze');
Index: /issm/trunk-jpl/src/m/enum/SurfaceforcingsRunoffEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsRunoffEnum.m	(revision 18000)
+++ /issm/trunk-jpl/src/m/enum/SurfaceforcingsRunoffEnum.m	(revision 18000)
@@ -0,0 +1,11 @@
+function macro=SurfaceforcingsRunoffEnum()
+%SURFACEFORCINGSRUNOFFENUM - Enum of SurfaceforcingsRunoff
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SurfaceforcingsRunoffEnum()
+
+macro=StringToEnum('SurfaceforcingsRunoff');
