Index: /issm/trunk-jpl/src/m/classes/mesh2d.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/mesh2d.m	(revision 17561)
+++ /issm/trunk-jpl/src/m/classes/mesh2d.m	(revision 17562)
@@ -76,5 +76,5 @@
 		end % }}}
 		function disp(obj) % {{{
-			disp(sprintf('   2d Mesh:')); 
+			disp(sprintf('   2D tria Mesh (horizontal):')); 
 
 			disp(sprintf('\n      Elements and vertices:'));
Index: /issm/trunk-jpl/src/m/classes/mesh2d.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/mesh2d.py	(revision 17561)
+++ /issm/trunk-jpl/src/m/classes/mesh2d.py	(revision 17562)
@@ -42,5 +42,5 @@
 		#}}}
 	def __repr__(self): # {{{
-		string="   2d Mesh:" 
+		string="   2D tria Mesh (horizontal):" 
 
 		string="%s\n%s"%(string,"\n      Elements and vertices:")
Index: /issm/trunk-jpl/src/m/classes/mesh2dvertical.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/mesh2dvertical.m	(revision 17561)
+++ /issm/trunk-jpl/src/m/classes/mesh2dvertical.m	(revision 17562)
@@ -77,5 +77,5 @@
 		end % }}}
 		function disp(obj) % {{{
-			disp(sprintf('   2d vertical Mesh:')); 
+			disp(sprintf('   2D tria Mesh (vertical):')); 
 
 			disp(sprintf('\n      Elements and vertices:'));
Index: /issm/trunk-jpl/src/m/classes/mesh3dprisms.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/mesh3dprisms.m	(revision 17561)
+++ /issm/trunk-jpl/src/m/classes/mesh3dprisms.m	(revision 17562)
@@ -92,5 +92,5 @@
 		end % }}}
 		function disp(obj) % {{{
-			disp(sprintf('   Mesh:')); 
+			disp(sprintf('   3D prism Mesh:')); 
 
 			disp(sprintf('\n      Elements and vertices of the original 2d mesh:'));
Index: /issm/trunk-jpl/src/m/classes/mesh3dprisms.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/mesh3dprisms.py	(revision 17561)
+++ /issm/trunk-jpl/src/m/classes/mesh3dprisms.py	(revision 17562)
@@ -55,5 +55,5 @@
 		#}}}
 	def __repr__(self): # {{{
-		string="   Mesh 3D prisms:" 
+		string="   3D prism Mesh:" 
 
 		string="%s\n%s"%(string,"\n      Elements and vertices of the original 2d mesh3dprisms:")
Index: /issm/trunk-jpl/src/m/classes/mesh3dtetras.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/mesh3dtetras.m	(revision 17561)
+++ /issm/trunk-jpl/src/m/classes/mesh3dtetras.m	(revision 17562)
@@ -88,5 +88,5 @@
 		end % }}}
 		function disp(obj) % {{{
-			disp(sprintf('   Mesh:')); 
+			disp(sprintf('   3D tetra Mesh:')); 
 
 			disp(sprintf('\n      Elements and vertices of the original 2d mesh:'));
Index: /issm/trunk-jpl/src/m/classes/model.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/model.m	(revision 17561)
+++ /issm/trunk-jpl/src/m/classes/model.m	(revision 17562)
@@ -741,4 +741,11 @@
 			md.stressbalance.spcvz=project3d(md,'vector',md.stressbalance.spcvz,'type','node');
 			md.thermal.spctemperature=project3d(md,'vector',md.thermal.spctemperature,'type','node','layer',md.mesh.numberoflayers,'padding',NaN);
+			if (length(md.initialization.temperature)==md.mesh.numberofvertices),
+				md.thermal.spctemperature=NaN*ones(md.mesh.numberofvertices,1);
+				if isprop(md.mesh,'vertexonsurface'),
+					pos=find(md.mesh.vertexonsurface);
+					md.thermal.spctemperature(pos)=md.initialization.temperature(pos); %impose observed temperature on surface
+				end
+			end
 			md.masstransport.spcthickness=project3d(md,'vector',md.masstransport.spcthickness,'type','node');
 			md.masstransport.calvingrate=project3d(md,'vector',md.masstransport.calvingrate,'type','node');
Index: /issm/trunk-jpl/src/m/classes/model.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/model.py	(revision 17561)
+++ /issm/trunk-jpl/src/m/classes/model.py	(revision 17562)
@@ -640,4 +640,9 @@
 		md.stressbalance.spcvz=project3d(md,'vector',md.stressbalance.spcvz,'type','node')
 		md.thermal.spctemperature=project3d(md,'vector',md.thermal.spctemperature,'type','node','layer',md.mesh.numberoflayers,'padding',float('NaN'))
+		if isinstance(md.initialization.temperature,numpy.ndarray) and numpy.size(md.initialization.temperature,axis=0)==md.mesh.numberofvertices:
+			md.thermal.spctemperature=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+			if hasattr(md.mesh,'vertexonsurface'):
+				pos=numpy.nonzero(md.mesh.vertexonsurface)[0]
+				md.thermal.spctemperature[pos]=md.initialization.temperature[pos]    #impose observed temperature on surface
 		md.masstransport.spcthickness=project3d(md,'vector',md.masstransport.spcthickness,'type','node')
 		md.balancethickness.spcthickness=project3d(md,'vector',md.balancethickness.spcthickness,'type','node')
