Index: /issm/trunk-jpl/src/m/classes/SMBhenning.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBhenning.m	(revision 17086)
+++ /issm/trunk-jpl/src/m/classes/SMBhenning.m	(revision 17086)
@@ -0,0 +1,52 @@
+%SMBhenning Class definition
+%
+%   Usage:
+%      SMBhenning=SMBhenning();
+
+classdef SMBhenning
+	properties (SetAccess=public) 
+		mass_balance = NaN;
+	end
+	methods
+		function obj = SMBhenning(varargin) % {{{
+			switch nargin
+				case 0
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+
+			self.mass_balance=project3d(md,'vector',self.mass_balance,'type','node');
+
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.mass_balance)
+				self.mass_balance=zeros(md.mesh.numberofvertices,1);
+				disp('      no surfaceforcings.mass_balance specified: values set as zero');
+			end
+
+		end % }}}
+		function md = checkconsistency(obj,md,solution,analyses) % {{{
+
+			if ismember(MasstransportAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','surfaceforcings.mass_balance','forcing',1,'NaN',1);
+			end
+			if ismember(BalancethicknessAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','surfaceforcings.mass_balance','size',[md.mesh.numberofvertices 1],'NaN',1);
+			end
+		end % }}}
+		function disp(obj) % {{{
+			disp(sprintf('   surface forcings parameters:'));
+			fielddisplay(obj,'mass_balance','surface mass balance [m/yr ice eq]');
+		end % }}}
+		function marshall(obj,md,fid) % {{{
+
+			yts=365.0*24.0*3600.0;
+
+			WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBhenningEnum(),'format','Integer');
+			WriteData(fid,'object',obj,'class','surfaceforcings','fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1);
+		end % }}}
+	end
+end
Index: /issm/trunk-jpl/src/m/enum/EnumDefinitions.py
===================================================================
--- /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 17085)
+++ /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 17086)
@@ -293,4 +293,5 @@
 def SurfaceforcingsBPosEnum(): return StringToEnum("SurfaceforcingsBPos")[0]
 def SurfaceforcingsBNegEnum(): return StringToEnum("SurfaceforcingsBNeg")[0]
+def SMBhenningEnum(): return StringToEnum("SMBhenning")[0]
 def SurfaceforcingsIspddEnum(): return StringToEnum("SurfaceforcingsIspdd")[0]
 def SurfaceforcingsIssmbgradientsEnum(): return StringToEnum("SurfaceforcingsIssmbgradients")[0]
Index: /issm/trunk-jpl/src/m/enum/SMBhenningEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SMBhenningEnum.m	(revision 17086)
+++ /issm/trunk-jpl/src/m/enum/SMBhenningEnum.m	(revision 17086)
@@ -0,0 +1,11 @@
+function macro=SMBhenningEnum()
+%SMBHENNINGENUM - Enum of SMBhenning
+%
+%   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=SMBhenningEnum()
+
+macro=StringToEnum('SMBhenning');
