Index: /issm/trunk-jpl/src/c/classes/IoModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/IoModel.cpp	(revision 20888)
+++ /issm/trunk-jpl/src/c/classes/IoModel.cpp	(revision 20889)
@@ -596,4 +596,9 @@
 					/*Read the integer and broadcast it to other cpus:*/
 					if(fread(&integer,sizeof(int),1,this->fid)!=1) _error_("could not read integer ");
+
+					/*Convert codes to Enums if needed*/
+					if(strcmp(record_name,"md.smb.model")==0) integer = IoCodeToEnumSMB(integer);
+
+					/*Broadcast to other cpus*/
 					ISSM_MPI_Bcast(&integer,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
 
@@ -811,6 +816,5 @@
 		}
 	} //}}}
-}
-/*}}}*/
+}/*}}}*/
 void  IoModel::FetchData(bool* pboolean,const char* data_name){/*{{{*/
 
Index: /issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp	(revision 20888)
+++ /issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp	(revision 20889)
@@ -7,5 +7,5 @@
 #include "../../Exceptions/exceptions.h"
 
-void FieldAndEnumFromCode(int* out_enum,char** pfield,const char* string_in){
+void FieldAndEnumFromCode(int* out_enum,char** pfield,const char* string_in){/*{{{*/
 
 	/*output*/
@@ -41,3 +41,16 @@
 	*pfield   = fieldname;
 	return;
-}
+}/*}}}*/
+int IoCodeToEnumSMB(int enum_in){/*{{{*/
+	switch(enum_in){
+		case 1: return SMBforcingEnum;
+		case 2: return SMBcomponentsEnum;
+		case 3: return SMBmeltcomponentsEnum;
+		case 4: return SMBpddEnum;
+		case 5: return SMBd18opddEnum;
+		case 6: return SMBgradientsEnum;
+		case 7: return SMBhenningEnum;
+		case 8: return SMBgembEnum;
+		default: _error_("Marshalled SMB code \""<<enum_in<<"\" not supported yet");
+	}
+}/*}}}*/
Index: /issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.h	(revision 20888)
+++ /issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.h	(revision 20889)
@@ -4,3 +4,4 @@
 void FieldAndEnumFromCode(int* out_enum,char** pfield,const char* string_in);
 
+int IoCodeToEnumSMB(int enum_in);
 #endif	
Index: /issm/trunk-jpl/src/m/classes/SMBcomponents.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBcomponents.m	(revision 20888)
+++ /issm/trunk-jpl/src/m/classes/SMBcomponents.m	(revision 20889)
@@ -80,5 +80,5 @@
 			yts=365.0*24.0*3600.0;
 
-			WriteData(fid,prefix,'name','md.smb.model','data',SMBcomponentsEnum(),'format','Integer');
+			WriteData(fid,prefix,'name','md.smb.model','data',2,'format','Integer');
 			WriteData(fid,prefix,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
 			WriteData(fid,prefix,'object',self,'class','smb','fieldname','runoff','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
Index: /issm/trunk-jpl/src/m/classes/SMBcomponents.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBcomponents.py	(revision 20888)
+++ /issm/trunk-jpl/src/m/classes/SMBcomponents.py	(revision 20889)
@@ -81,5 +81,5 @@
 		yts=365.0*24.0*3600.0
 
-		WriteData(fid,prefix,'name','md.smb.model','data',SMBcomponentsEnum(),'format','Integer');
+		WriteData(fid,prefix,'name','md.smb.model','data',2,'format','Integer');
 		WriteData(fid,prefix,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
 		WriteData(fid,prefix,'object',self,'class','smb','fieldname','runoff','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
Index: /issm/trunk-jpl/src/m/classes/SMBd18opdd.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBd18opdd.m	(revision 20888)
+++ /issm/trunk-jpl/src/m/classes/SMBd18opdd.m	(revision 20889)
@@ -106,5 +106,5 @@
 			yts=365.0*24.0*3600.0;
 
-			WriteData(fid,prefix,'name','md.smb.model','data',SMBd18opddEnum(),'format','Integer');
+			WriteData(fid,prefix,'name','md.smb.model','data',5,'format','Integer');
 
 			WriteData(fid,prefix,'object',self,'class','smb','fieldname','ismungsm','format','Boolean');
Index: /issm/trunk-jpl/src/m/classes/SMBd18opdd.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBd18opdd.py	(revision 20888)
+++ /issm/trunk-jpl/src/m/classes/SMBd18opdd.py	(revision 20889)
@@ -110,5 +110,5 @@
 		yts=365.0*24.0*3600.0
 
-		WriteData(fid,prefix,'name','md.smb.model','data',SMBd18opddEnum(),'format','Integer')
+		WriteData(fid,prefix,'name','md.smb.model','data',5,'format','Integer')
 
 		WriteData(fid,prefix,'object',self,'class','smb','fieldname','ismungsm','format','Boolean')
Index: /issm/trunk-jpl/src/m/classes/SMBforcing.js
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBforcing.js	(revision 20888)
+++ /issm/trunk-jpl/src/m/classes/SMBforcing.js	(revision 20889)
@@ -47,5 +47,5 @@
         var yts=365.0*24.0*3600.0;
 
-        WriteData(fid,prefix,'name','md.smb.model','data',SMBforcingEnum(),'format','Integer');
+        WriteData(fid,prefix,'name','md.smb.model','data',1,'format','Integer');
         WriteData(fid,prefix,'object',this,'class','smb','fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
 
Index: /issm/trunk-jpl/src/m/classes/SMBforcing.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBforcing.m	(revision 20888)
+++ /issm/trunk-jpl/src/m/classes/SMBforcing.m	(revision 20889)
@@ -67,5 +67,5 @@
 			yts=365.0*24.0*3600.0;
 
-			WriteData(fid,prefix,'name','md.smb.model','data',SMBforcingEnum(),'format','Integer');
+			WriteData(fid,prefix,'name','md.smb.model','data',1,'format','Integer');
 			WriteData(fid,prefix,'object',self,'class','smb','fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
 			
Index: /issm/trunk-jpl/src/m/classes/SMBforcing.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBforcing.py	(revision 20888)
+++ /issm/trunk-jpl/src/m/classes/SMBforcing.py	(revision 20889)
@@ -55,5 +55,5 @@
 		yts=365.0*24.0*3600.0
 
-		WriteData(fid,prefix,'name','md.smb.model','data',SMBforcingEnum(),'format','Integer');
+		WriteData(fid,prefix,'name','md.smb.model','data',1,'format','Integer');
 		WriteData(fid,prefix,'object',self,'class','smb','fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
 		
Index: /issm/trunk-jpl/src/m/classes/SMBgemb.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBgemb.m	(revision 20888)
+++ /issm/trunk-jpl/src/m/classes/SMBgemb.m	(revision 20889)
@@ -260,5 +260,5 @@
 			yts=365.25*24.0*3600.0;
 
-			WriteData(fid,prefix,'name','md.smb.model','data',SMBgembEnum(),'format','Integer');
+			WriteData(fid,prefix,'name','md.smb.model','data',8,'format','Integer');
 			
 			WriteData(fid,prefix,'object',self,'class','smb','fieldname','isgraingrowth','format','Boolean');
Index: /issm/trunk-jpl/src/m/classes/SMBgradients.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBgradients.m	(revision 20888)
+++ /issm/trunk-jpl/src/m/classes/SMBgradients.m	(revision 20889)
@@ -64,5 +64,5 @@
 			yts=365.0*24.0*3600.0;
 
-			WriteData(fid,prefix,'name','md.smb.model','data',SMBgradientsEnum(),'format','Integer');
+			WriteData(fid,prefix,'name','md.smb.model','data',6,'format','Integer');
 			WriteData(fid,prefix,'object',self,'class','smb','fieldname','href','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
 			WriteData(fid,prefix,'object',self,'class','smb','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
Index: /issm/trunk-jpl/src/m/classes/SMBgradients.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBgradients.py	(revision 20888)
+++ /issm/trunk-jpl/src/m/classes/SMBgradients.py	(revision 20889)
@@ -61,5 +61,5 @@
 		yts=365.0*24.0*3600.0
 
-		WriteData(fid,prefix,'name','md.smb.model','data',SMBgradientsEnum(),'format','Integer');
+		WriteData(fid,prefix,'name','md.smb.model','data',6,'format','Integer');
 		WriteData(fid,prefix,'object',self,'class','smb','fieldname','href','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
 		WriteData(fid,prefix,'object',self,'class','smb','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
Index: /issm/trunk-jpl/src/m/classes/SMBhenning.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBhenning.m	(revision 20888)
+++ /issm/trunk-jpl/src/m/classes/SMBhenning.m	(revision 20889)
@@ -52,5 +52,5 @@
 			yts=365.0*24.0*3600.0;
 
-			WriteData(fid,prefix,'name','md.smb.model','data',SMBhenningEnum(),'format','Integer');
+			WriteData(fid,prefix,'name','md.smb.model','data',7,'format','Integer');
 			WriteData(fid,prefix,'object',self,'class','smb','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
 			
Index: /issm/trunk-jpl/src/m/classes/SMBmeltcomponents.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBmeltcomponents.m	(revision 20888)
+++ /issm/trunk-jpl/src/m/classes/SMBmeltcomponents.m	(revision 20889)
@@ -91,5 +91,5 @@
 			yts=365.0*24.0*3600.0;
 
-			WriteData(fid,prefix,'name','md.smb.model','data',SMBmeltcomponentsEnum(),'format','Integer');
+			WriteData(fid,prefix,'name','md.smb.model','data',3,'format','Integer');
 			WriteData(fid,prefix,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
 			WriteData(fid,prefix,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
Index: /issm/trunk-jpl/src/m/classes/SMBmeltcomponents.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBmeltcomponents.py	(revision 20888)
+++ /issm/trunk-jpl/src/m/classes/SMBmeltcomponents.py	(revision 20889)
@@ -92,5 +92,5 @@
 		yts=365.0*24.0*3600.0
 
-		WriteData(fid,prefix,'name','md.smb.model','data',SMBmeltcomponentsEnum(),'format','Integer');
+		WriteData(fid,prefix,'name','md.smb.model','data',3,'format','Integer');
 		WriteData(fid,prefix,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
 		WriteData(fid,prefix,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
Index: /issm/trunk-jpl/src/m/classes/SMBpdd.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBpdd.m	(revision 20888)
+++ /issm/trunk-jpl/src/m/classes/SMBpdd.m	(revision 20889)
@@ -145,5 +145,5 @@
 			yts=365.0*24.0*3600.0;
 
-			WriteData(fid,prefix,'name','md.smb.model','data',SMBpddEnum(),'format','Integer');
+			WriteData(fid,prefix,'name','md.smb.model','data',4,'format','Integer');
 
 			WriteData(fid,prefix,'object',self,'class','smb','fieldname','isdelta18o','format','Boolean');
Index: /issm/trunk-jpl/src/m/classes/SMBpdd.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBpdd.py	(revision 20888)
+++ /issm/trunk-jpl/src/m/classes/SMBpdd.py	(revision 20889)
@@ -153,5 +153,5 @@
 		yts=365.0*24.0*3600.0
 
-		WriteData(fid,prefix,'name','md.smb.model','data',SMBpddEnum(),'format','Integer')
+		WriteData(fid,prefix,'name','md.smb.model','data',4,'format','Integer')
 
 		WriteData(fid,prefix,'object',self,'class','smb','fieldname','isdelta18o','format','Boolean')
