Index: /issm/trunk-jpl/src/m/classes/flaim.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/flaim.py	(revision 13115)
+++ /issm/trunk-jpl/src/m/classes/flaim.py	(revision 13116)
@@ -1,4 +1,5 @@
 #module imports
 import numpy
+from collections import OrderedDict
 from fielddisplay import fielddisplay
 from EnumDefinitions import *
@@ -19,5 +20,5 @@
 		self.targets            = ''
 		self.tracks             = ''
-		self.flightreqs         = {}
+		self.flightreqs         = OrderedDict()
 		self.criterion          = float('NaN')
 		self.gridsatequator     = 200000
Index: /issm/trunk-jpl/src/m/classes/miscellaneous.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/miscellaneous.py	(revision 13115)
+++ /issm/trunk-jpl/src/m/classes/miscellaneous.py	(revision 13116)
@@ -1,3 +1,4 @@
 #module imports
+from collections import OrderedDict
 from fielddisplay import fielddisplay
 from EnumDefinitions import *
@@ -18,5 +19,5 @@
 		self.notes = ''
 		self.name  = ''
-		self.dummy = {}
+		self.dummy = OrderedDict()
 
 		#set defaults
Index: /issm/trunk-jpl/src/m/classes/model/model.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/model/model.py	(revision 13115)
+++ /issm/trunk-jpl/src/m/classes/model/model.py	(revision 13116)
@@ -86,4 +86,41 @@
 		#}}}
 
+	def properties(self):    # {{{
+		# ordered list of properties since vars(self) is random
+		return ['mesh',\
+		        'mask',\
+		        'geometry',\
+		        'constants',\
+		        'surfaceforcings',\
+		        'basalforcings',\
+		        'materials',\
+		        'friction',\
+		        'flowequation',\
+		        'timestepping',\
+		        'initialization',\
+		        'rifts',\
+		        'debug',\
+		        'verbose',\
+		        'settings',\
+		        'solver',\
+		        'cluster',\
+		        'balancethickness',\
+		        'diagnostic',\
+		        'groundingline',\
+		        'hydrology',\
+		        'prognostic',\
+		        'thermal',\
+		        'steadystate',\
+		        'transient',\
+		        'autodiff',\
+		        'flaim',\
+		        'inversion',\
+		        'qmu',\
+		        'results',\
+		        'radaroverlay',\
+		        'miscellaneous',\
+		        'private']
+	# }}}
+
 	def __repr__(obj):
 		# {{{ Display
@@ -101,9 +138,9 @@
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("timestepping","[%s,%s]" % ("1x1",obj.timestepping.__class__.__name__),"time stepping for transient models"))
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("initialization","[%s,%s]" % ("1x1",obj.initialization.__class__.__name__),"initial guess/state"))
-		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("rifts","[%s,%s]" % ("1x1",obj.rifts.__class__.__name__),"rifts properties'"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("rifts","[%s,%s]" % ("1x1",obj.rifts.__class__.__name__),"rifts properties"))
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("debug","[%s,%s]" % ("1x1",obj.debug.__class__.__name__),"debugging tools (valgrind, gprof"))
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("verbose","[%s,%s]" % ("1x1",obj.verbose.__class__.__name__),"verbosity level in solve"))
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("settings","[%s,%s]" % ("1x1",obj.settings.__class__.__name__),"settings properties"))
-		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("solver","[%s,%s]" % ("1x1",obj.solver.__class__.__name__),"PETSc options for each solution'"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("solver","[%s,%s]" % ("1x1",obj.solver.__class__.__name__),"PETSc options for each solution"))
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("cluster","[%s,%s]" % ("1x1",obj.cluster.__class__.__name__),"cluster parameters (number of cpus...)"))
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("balancethickness","[%s,%s]" % ("1x1",obj.balancethickness.__class__.__name__),"parameters for balancethickness solution"))
Index: /issm/trunk-jpl/src/m/classes/pairoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/pairoptions.py	(revision 13115)
+++ /issm/trunk-jpl/src/m/classes/pairoptions.py	(revision 13116)
@@ -1,2 +1,3 @@
+from collections import OrderedDict
 from WriteData import *
 
@@ -12,5 +13,5 @@
 	def __init__(self,*arg):
 		self.functionname = ''
-		self.list         = {}
+		self.list         = OrderedDict()
 
 		#get calling function name
Index: /issm/trunk-jpl/src/m/classes/private.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/private.py	(revision 13115)
+++ /issm/trunk-jpl/src/m/classes/private.py	(revision 13116)
@@ -1,3 +1,4 @@
 #module imports
+from collections import OrderedDict
 from fielddisplay import fielddisplay
 from EnumDefinitions import *
@@ -17,5 +18,5 @@
 		self.isconsistent = True
 		self.runtimename  = ''
-		self.bamg         = {}
+		self.bamg         = OrderedDict()
 		self.solution     = ''
 
Index: /issm/trunk-jpl/src/m/classes/qmu.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/qmu.py	(revision 13115)
+++ /issm/trunk-jpl/src/m/classes/qmu.py	(revision 13116)
@@ -1,4 +1,5 @@
 #module imports
 import numpy
+from collections import OrderedDict
 from fielddisplay import fielddisplay
 from EnumDefinitions import *
@@ -19,9 +20,9 @@
 		# {{{ Properties
 		self.isdakota                    = 0
-		self.variables                   = {}
-		self.responses                   = {}
-		self.method                      = {}
-		self.params                      = {}
-		self.results                     = {}
+		self.variables                   = OrderedDict()
+		self.responses                   = OrderedDict()
+		self.method                      = OrderedDict()
+		self.params                      = OrderedDict()
+		self.results                     = OrderedDict()
 		self.partition                   = float('NaN')
 		self.numberofpartitions          = 0
@@ -72,5 +73,5 @@
 
 		s+="%s\n" % fielddisplay(self,'isdakota','is qmu analysis activated?')
-		for i,variable in enumerate(self.variables):
+		for i,variable in enumerate(self.variables.iteritems()):
 			s+="         variables%s:  (arrays of each variable class)\n" % \
 				string_dim(self.variables,i)
@@ -84,5 +85,5 @@
 					(maxlen+1,fname,size(getattr(variable,fname)),type(getattr(variable,fname)))
 
-		for i,response in enumerate(self.responses):
+		for i,response in enumerate(self.responses.iteritems()):
 			s+="         responses%s:  (arrays of each response class)\n" % \
 				string_dim(self.responses,i)
@@ -98,10 +99,10 @@
 		s+="%s\n" % fielddisplay(self,'numberofresponses','number of responses') 
 
-		for i,method in enumerate(self.method):
+		for i,method in enumerate(self.method.iteritems()):
 			if isinstance(method,'dakota_method'):
 				s+="            method%s :    '%s'\n" % \
 					(string_dim(method,i),method.method)
 
-		for i,param in enumerate(self.params):
+		for i,param in enumerate(self.params.iteritems()):
 			s+="         params%s:  (array of method-independent parameters)\n" % \
 				string_dim(self.params,i)
@@ -115,5 +116,5 @@
 					(maxlen+1,fname,any2str(getattr(param,fname)))
 
-		for i,result in enumerate(self.results):
+		for i,result in enumerate(self.results.iteritems()):
 			s+="         results%s:  (information from dakota files)\n" % \
 				string_dim(self.results,i)
Index: /issm/trunk-jpl/src/m/consistency/ismodelselfconsistent.py
===================================================================
--- /issm/trunk-jpl/src/m/consistency/ismodelselfconsistent.py	(revision 13115)
+++ /issm/trunk-jpl/src/m/consistency/ismodelselfconsistent.py	(revision 13116)
@@ -77,5 +77,6 @@
 	#Go through a model fields, check that it is a class, and call checkconsistency
 	fields=vars(md)
-	for field in fields.iterkeys():
+#	for field in fields.iterkeys():
+	for field in md.properties():
 
 		#Some properties do not need to be checked
Index: /issm/trunk-jpl/src/m/solve/loadresultsfromdisk.py
===================================================================
--- /issm/trunk-jpl/src/m/solve/loadresultsfromdisk.py	(revision 13115)
+++ /issm/trunk-jpl/src/m/solve/loadresultsfromdisk.py	(revision 13116)
@@ -1,3 +1,4 @@
 import os
+from collections import OrderedDict
 from parseresultsfromdisk import *
 from EnumToString import EnumToString
@@ -23,5 +24,5 @@
 		#initialize md.results if not a structure yet
 		if not isinstance(md.results,dict):
-			md.results={}
+			md.results=OrderedDict()
 
 		#load results onto model
Index: /issm/trunk-jpl/src/m/solve/marshall.py
===================================================================
--- /issm/trunk-jpl/src/m/solve/marshall.py	(revision 13115)
+++ /issm/trunk-jpl/src/m/solve/marshall.py	(revision 13116)
@@ -28,5 +28,5 @@
 
 #	for field in fields.iterkeys():
-	for field in ['mesh','mask','geometry','constants','surfaceforcings','basalforcings','materials','friction','flowequation','timestepping','initialization','rifts','debug','verbose','settings','solver','cluster','balancethickness','diagnostic','groundingline','hydrology','prognostic','thermal','steadystate','transient','autodiff','flaim','inversion','qmu','results','radaroverlay','miscellaneous','private']:
+	for field in md.properties():
 
 		#Some properties do not need to be marshalled
Index: /issm/trunk-jpl/src/m/solve/parseresultsfromdisk.py
===================================================================
--- /issm/trunk-jpl/src/m/solve/parseresultsfromdisk.py	(revision 13115)
+++ /issm/trunk-jpl/src/m/solve/parseresultsfromdisk.py	(revision 13116)
@@ -1,4 +1,5 @@
 import struct
 import numpy
+from collections import OrderedDict
 from MatlabFuncs import *
 from MatlabProcessPatch import *
@@ -36,5 +37,5 @@
 		raise IOError("loadresultsfromdisk error message: could not open '%s' for binary reading." % filename)
 
-	results={}
+	results=OrderedDict()
 
 	#Read fields until the end of the file.
@@ -43,5 +44,5 @@
 		#Get time and step
 		if result['step'] not in results:
-			results[result['step']]={}
+			results[result['step']]=OrderedDict()
 			results[result['step']]['step']=result['step']
 			results[result['step']]['time']=result['time'] 
@@ -77,5 +78,5 @@
 		raise IOError("loadresultsfromdisk error message: could not open '%s' for binary reading." % filename)
 
-	results={}
+	results=OrderedDict()
 
 	#if we have done split I/O, ie, we have results that are fragmented across patches, 
@@ -86,5 +87,5 @@
 		#Get time and step
 		if result['step'] not in results:
-			results[result['step']]={}
+			results[result['step']]=OrderedDict()
 			results[result['step']]['step']=result['step']
 			results[result['step']]['time']=result['time'] 
@@ -125,5 +126,5 @@
 		#Get time and step
 		if result['step'] not in results:
-			results[result['step']]={}
+			results[result['step']]=OrderedDict()
 			results[result['step']]['step']=result['step']
 			results[result['step']]['time']=result['time'] 
@@ -180,5 +181,5 @@
 			raise TypeError("cannot read data of type %d" % type)
 
-		result={}
+		result=OrderedDict()
 		result['fieldname']=fieldname
 		result['time']=time
@@ -187,5 +188,5 @@
 
 	except struct.error as e:
-		result={}
+		result=OrderedDict()
 
 	return result
@@ -221,5 +222,5 @@
 			raise TypeError("cannot read data of type %d" % type)
 
-		result={}
+		result=OrderedDict()
 		result['fieldname']=fieldname
 		result['time']=time
@@ -229,5 +230,5 @@
 
 	except struct.error as e:
-		result={}
+		result=OrderedDict()
 
 	return result
Index: /issm/trunk-jpl/src/m/solve/process_solve_options.py
===================================================================
--- /issm/trunk-jpl/src/m/solve/process_solve_options.py	(revision 13115)
+++ /issm/trunk-jpl/src/m/solve/process_solve_options.py	(revision 13116)
@@ -1,3 +1,4 @@
 import os
+from collections import OrderedDict
 from EnumDefinitions import *
 from EnumToString import EnumToString
@@ -13,5 +14,5 @@
 	"""
 
-	outoptions={}
+	outoptions=OrderedDict()
 
 	#solution_type: check on this option, error out otherwise
