Index: /issm/trunk-jpl/src/m/classes/SMBsemic.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBsemic.m	(revision 27582)
+++ /issm/trunk-jpl/src/m/classes/SMBsemic.m	(revision 27583)
@@ -94,13 +94,34 @@
 		end % }}}
 		function self = initialize(self,md) % {{{
+			% Explain
+			%  initialize SEMIC smb values, such as s0gcm(surface elevation), albedo,
+			% albedo_snow, hice, hsnow, Tamp... values.
+			% 
+			%
+			% Usage
+			%  md.smb = initialize(md.smb,md);
 
 			if isnan(self.s0gcm),
-				self.s0gcm=zeros(md.mesh.numberofvertices,1);
-				disp('      no SMBsemic.s0gcm specified: values set as zero');
-			end
-			self.Tamp       = 3*ones(md.mesh.numberofvertices,1);
-			%self.albedo     = 0.8*ones(md.mesh.numberofvertices,1);
-			%self.albedo_snow= 0.5*ones(md.mesh.numberofvertices,1);
-			self.hice       = zeros(md.mesh.numberofvertices,1);
+				if ~isnan(md.geometry.surface) & (numel(md.geometry.surface) == md.mesh.numberofvertices)
+					self.s0gcm=md.geometry.surface;
+					disp('      no SMBsemic.s0gcm specified: values from md.geometry.surface');
+				else
+					self.s0gcm=zeros(md.mesh.numberofvertices,1);
+					disp('      no SMBsemic.s0gcm specified: values set as zero');
+				end
+			end
+			if isnan(self.mask),
+				self.mask = 2*ones(md.mesh.numberofvertices,1);
+				disp('      no SMBsemic.mask specified: values set as 2 for ice');
+			end
+
+			% update each values.
+			if isnan(self.Tamp) 
+				self.Tamp= 3*ones(md.mesh.numberofvertices,1);
+				disp('      no SMBsemic.Tamp specified: values set as 3.0');
+			end
+			self.albedo     = 0.8*ones(md.mesh.numberofvertices,1);
+			self.albedo_snow= 0.5*ones(md.mesh.numberofvertices,1);
+			self.hice       = 10*ones(md.mesh.numberofvertices,1);
 			self.hsnow      = 5*ones(md.mesh.numberofvertices,1);
 		end % }}}
