Index: /issm/trunk-jpl/jenkins/mac-silicon-solid_earth
===================================================================
--- /issm/trunk-jpl/jenkins/mac-silicon-solid_earth	(revision 27844)
+++ /issm/trunk-jpl/jenkins/mac-silicon-solid_earth	(revision 27845)
@@ -100,5 +100,6 @@
 # - Excluding 2012 until it can be looked at by Eric ("FindParam error message: Parameter HydrologyModel not set")
 # - Excluding 2091 until it can be debugged (resource starvation)
+# - Excluding 2110:2113 until we can compile MEX modules natively for Silicon and then can debug differences in mesh generation between different platforms
 #
 MATLAB_NROPTIONS="'benchmark','slc','exclude',[2004 2006 2012 2051 2052 2053 2085 2424 2425]"
-PYTHON_NROPTIONS="--benchmark slc --exclude 2004 2006 2012 2051 2052 2053 2085 2424 2425"
+PYTHON_NROPTIONS="--benchmark slc --exclude 2004 2006 2012 2051 2052 2053 2085 2110:2113 2424 2425"
Index: /issm/trunk-jpl/src/c/shared/Exp/exp.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Exp/exp.h	(revision 27844)
+++ /issm/trunk-jpl/src/c/shared/Exp/exp.h	(revision 27845)
@@ -115,5 +115,5 @@
 	closed=xNew<bool>(nprof);
 
-	/*Reaset file pointer to beginning of file: */
+	/*Reset file pointer to beginning of file: */
 	fseek(fid,0,SEEK_SET);
 
Index: /issm/trunk-jpl/src/m/classes/mesh2d.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/mesh2d.m	(revision 27844)
+++ /issm/trunk-jpl/src/m/classes/mesh2d.m	(revision 27845)
@@ -76,9 +76,9 @@
 		function self = setdefaultparameters(self) % {{{
 
-			%the connectivity is the averaged number of nodes linked to a
-			%given node through an edge. This connectivity is used to initially
-			%allocate memory to the stiffness matrix. A value of 16 seems to
-			%give a good memory/time ration. This value can be checked in
-			%trunk/test/Miscellaneous/runme.m
+			%The connectivity is the average number of nodes linked to a given 
+			%node through an edge. This connectivity is used to initially allocate 
+			%memory to the stiffness matrix. A value of 16 seems to give a good 
+			%memory/time ratio. This value can be checked in
+			%test/Miscellaneous/runme.m
 			self.average_vertex_connectivity=25;
 		end % }}}
Index: /issm/trunk-jpl/src/m/classes/mesh2d.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/mesh2d.py	(revision 27844)
+++ /issm/trunk-jpl/src/m/classes/mesh2d.py	(revision 27845)
@@ -1,5 +1,5 @@
 import numpy as np
+from checkfield import checkfield
 from fielddisplay import fielddisplay
-from checkfield import checkfield
 import MatlabFuncs as m
 from WriteData import WriteData
@@ -7,36 +7,35 @@
 
 class mesh2d(object):
-    """
-    MESH2D class definition
+    """mesh2d class definition
 
-       Usage:
-          mesh2d = mesh2d()
+    Usage:
+        mesh2d = mesh2d()
     """
 
     def __init__(self):  # {{{
-        self.x = float('NaN')
-        self.y = float('NaN')
-        self.elements = float('NaN')
+        self.x = np.nan
+        self.y = np.nan
+        self.elements = np.nan
         self.numberofelements = 0
         self.numberofvertices = 0
         self.numberofedges = 0
 
-        self.lat = float('NaN')
-        self.long = float('NaN')
+        self.lat = np.nan
+        self.long = np.nan
         self.epsg = 0
-        self.scale_factor = float('NaN')
+        self.scale_factor = np.nan
 
-        self.vertexonboundary = float('NaN')
-        self.edges = float('NaN')
-        self.segments = float('NaN')
-        self.segmentmarkers = float('NaN')
-        self.vertexconnectivity = float('NaN')
-        self.elementconnectivity = float('NaN')
+        self.vertexonboundary = np.nan
+        self.edges = np.nan
+        self.segments = np.nan
+        self.segmentmarkers = np.nan
+        self.vertexconnectivity = np.nan
+        self.elementconnectivity = np.nan
         self.average_vertex_connectivity = 0
 
-        self.extractedvertices = float('NaN')
-        self.extractedelements = float('NaN')
+        self.extractedvertices = np.nan
+        self.extractedelements = np.nan
 
-    #set defaults
+        # Set defaults
         self.setdefaultparameters()
 
@@ -44,41 +43,42 @@
 
     def __repr__(self):  # {{{
-        string = "   2D tria Mesh (horizontal):"
+        s = '   2D tria Mesh (horizontal):\n'
 
-        string = "%s\n%s" % (string, "\n      Elements and vertices:")
-        string = "%s\n%s" % (string, fielddisplay(self, "numberofelements", "number of elements"))
-        string = "%s\n%s" % (string, fielddisplay(self, "numberofvertices", "number of vertices"))
-        string = "%s\n%s" % (string, fielddisplay(self, "elements", "vertex indices of the mesh elements"))
-        string = "%s\n%s" % (string, fielddisplay(self, "x", "vertices x coordinate [m]"))
-        string = "%s\n%s" % (string, fielddisplay(self, "y", "vertices y coordinate [m]"))
-        string = "%s\n%s" % (string, fielddisplay(self, "edges", "edges of the 2d mesh (vertex1 vertex2 element1 element2)"))
-        string = "%s\n%s" % (string, fielddisplay(self, "numberofedges", "number of edges of the 2d mesh"))
+        s += '{}\n'.format('      Elements and vertices:')
+        s += '{}\n'.format(fielddisplay(self, 'numberofelements', 'number of elements'))
+        s += '{}\n'.format(fielddisplay(self, 'numberofvertices', 'number of vertices'))
+        s += '{}\n'.format(fielddisplay(self, 'elements', 'vertex indices of the mesh elements'))
+        s += '{}\n'.format(fielddisplay(self, 'x', 'vertices x coordinate [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'y', 'vertices y coordinate [m]'))
+        s += '{}\n'.format(fielddisplay(self, 'edges', 'edges of the 2d mesh (vertex1 vertex2 element1 element2)'))
+        s += '{}\n'.format(fielddisplay(self, 'numberofedges', 'number of edges of the 2d mesh'))
+        s += '\n'
+        s += '{}\n'.format('      Properties:')
+        s += '{}\n'.format(fielddisplay(self, 'vertexonboundary', 'vertices on the boundary of the domain flag list'))
+        s += '{}\n'.format(fielddisplay(self, 'segments', 'edges on domain boundary (vertex1 vertex2 element)'))
+        s += '{}\n'.format(fielddisplay(self, 'segmentmarkers', 'number associated to each segment'))
+        s += '{}\n'.format(fielddisplay(self, 'vertexconnectivity', 'list of elements connected to vertex_i'))
+        s += '{}\n'.format(fielddisplay(self, 'elementconnectivity', 'list of elements adjacent to element_i'))
+        s += '{}\n'.format(fielddisplay(self, 'average_vertex_connectivity', 'average number of vertices connected to one vertex'))
+        s += '\n'
+        s += '{}\n'.format('      Extracted model:')
+        s += '{}\n'.format(fielddisplay(self, 'extractedvertices', 'vertices extracted from the model'))
+        s += '{}\n'.format(fielddisplay(self, 'extractedelements', 'elements extracted from the model'))
+        s += '\n'
+        s += '{}\n'.format('      Projection:')
+        s += '{}\n'.format(fielddisplay(self, 'lat', 'vertices latitude [degrees]'))
+        s += '{}\n'.format(fielddisplay(self, 'long', 'vertices longitude [degrees]'))
+        s += '{}\n'.format(fielddisplay(self, 'epsg', 'EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)'))
+        s += '{}\n'.format(fielddisplay(self, 'scale_factor', 'Projection correction for volume, area, etc. computation'))
 
-        string = "%s%s" % (string, "\n\n      Properties:")
-        string = "%s\n%s" % (string, fielddisplay(self, "vertexonboundary", "vertices on the boundary of the domain flag list"))
-        string = "%s\n%s" % (string, fielddisplay(self, "segments", "edges on domain boundary (vertex1 vertex2 element)"))
-        string = "%s\n%s" % (string, fielddisplay(self, "segmentmarkers", "number associated to each segment"))
-        string = "%s\n%s" % (string, fielddisplay(self, "vertexconnectivity", "list of elements connected to vertex_i"))
-        string = "%s\n%s" % (string, fielddisplay(self, "elementconnectivity", "list of elements adjacent to element_i"))
-        string = "%s\n%s" % (string, fielddisplay(self, "average_vertex_connectivity", "average number of vertices connected to one vertex"))
-
-        string = "%s%s" % (string, "\n\n      Extracted model:")
-        string = "%s\n%s" % (string, fielddisplay(self, "extractedvertices", "vertices extracted from the model"))
-        string = "%s\n%s" % (string, fielddisplay(self, "extractedelements", "elements extracted from the model"))
-
-        string = "%s%s" % (string, "\n\n      Projection:")
-        string = "%s\n%s" % (string, fielddisplay(self, "lat", "vertices latitude [degrees]"))
-        string = "%s\n%s" % (string, fielddisplay(self, "long", "vertices longitude [degrees]"))
-        string = "%s\n%s" % (string, fielddisplay(self, "epsg", "EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)"))
-        string = "%s\n%s" % (string, fielddisplay(self, "scale_factor", "Projection correction for volume, area, etc. computation"))
-        return string
+        return s
     # }}}
 
     def setdefaultparameters(self):  # {{{
-        #the connectivity is the averaged number of nodes linked to a
-        #given node through an edge. This connectivity is used to initially
-        #allocate memory to the stiffness matrix. A value of 16 seems to
-        #give a good memory / time ration. This value can be checked in
-        #trunk / test / Miscellaneous / runme.m
+        # The connectivity is the average number of nodes linked to a given 
+        # node through an edge. This connectivity is used to initially allocate 
+        # memory to the stiffness matrix. A value of 16 seems to give a good 
+        # memory/time ratio. This value can be checked in 
+        # test/Miscellaneous/runme.m
         self.average_vertex_connectivity = 25
 
@@ -95,8 +95,8 @@
         md = checkfield(md, 'fieldname', 'mesh.elements', 'size', [md.mesh.numberofelements, 3])
         if np.any(np.logical_not(m.ismember(np.arange(1, md.mesh.numberofvertices + 1), md.mesh.elements))):
-            md.checkmessage("orphan nodes have been found. Check the mesh outline")
+            md.checkmessage('orphan nodes have been found. Check the mesh outline')
         md = checkfield(md, 'fieldname', 'mesh.numberofelements', '>', 0)
         md = checkfield(md, 'fieldname', 'mesh.numberofvertices', '>', 0)
-        md = checkfield(md, 'fieldname', 'mesh.average_vertex_connectivity', '>=', 9, 'message', "'mesh.average_vertex_connectivity' should be at least 9 in 2d")
+        md = checkfield(md, 'fieldname', 'mesh.average_vertex_connectivity', '>=', 9, 'message', '\'mesh.average_vertex_connectivity\' should be at least 9 in 2d')
         md = checkfield(md, 'fieldname', 'mesh.segments', 'NaN', 1, 'Inf', 1, '>', 0, 'size', [np.nan, 3])
         if(np.size(self.scale_factor) > 1):
@@ -104,5 +104,5 @@
 
         if solution == 'ThermalSolution':
-            md.checkmessage("thermal not supported for 2d mesh")
+            md.checkmessage('thermal not supported for 2d mesh')
 
         return md
@@ -110,5 +110,5 @@
 
     def domaintype(self):  # {{{
-        return "2Dhorizontal"
+        return '2Dhorizontal'
     # }}}
 
@@ -118,9 +118,9 @@
 
     def elementtype(self):  # {{{
-        return "Tria"
+        return 'Tria'
     # }}}
 
     def marshall(self, prefix, md, fid):  # {{{
-        WriteData(fid, prefix, 'name', 'md.mesh.domain_type', 'data', "Domain" + self.domaintype(), 'format', 'String')
+        WriteData(fid, prefix, 'name', 'md.mesh.domain_type', 'data', 'Domain' + self.domaintype(), 'format', 'String')
         WriteData(fid, prefix, 'name', 'md.mesh.domain_dimension', 'data', self.dimension(), 'format', 'Integer')
         WriteData(fid, prefix, 'name', 'md.mesh.elementtype', 'data', self.elementtype(), 'format', 'String')
Index: /issm/trunk-jpl/src/m/mesh/roundmesh.m
===================================================================
--- /issm/trunk-jpl/src/m/mesh/roundmesh.m	(revision 27844)
+++ /issm/trunk-jpl/src/m/mesh/roundmesh.m	(revision 27845)
@@ -2,5 +2,5 @@
 %ROUNDMESH - create an unstructured round mesh 
 %
-%   This script will generate a structured round mesh
+%   This script will generate an unstructured round mesh
 %   - radius     : specifies the radius of the circle in meters
 %   - resolution : specifies the resolution in meters
Index: /issm/trunk-jpl/src/m/mesh/roundmesh.py
===================================================================
--- /issm/trunk-jpl/src/m/mesh/roundmesh.py	(revision 27844)
+++ /issm/trunk-jpl/src/m/mesh/roundmesh.py	(revision 27845)
@@ -10,5 +10,5 @@
     """roundmesh - create an unstructured round mesh
 
-    This script will generate a structured round mesh
+    This script will generate an unstructured round mesh
     - radius     : specifies the radius of the circle in meters
     - resolution : specifies the resolution in meters
Index: /issm/trunk-jpl/src/m/mesh/triangle.py
===================================================================
--- /issm/trunk-jpl/src/m/mesh/triangle.py	(revision 27844)
+++ /issm/trunk-jpl/src/m/mesh/triangle.py	(revision 27845)
@@ -12,8 +12,8 @@
     """triangle - create model mesh using the triangle package
 
-    This routine creates a model mesh using Triangle and a domain outline, to within a certain resolution
-    where md is a @model object, domainname is the name of an Argus domain outline file,
-    and resolution is a characteristic length for the mesh (same unit as the domain outline
-    unit). Riftname is an optional argument (Argus domain outline) describing rifts.
+    This routine creates a model mesh using Triangle and a domain outline, to 
+    within a certain resolution where md is a @model object, domainname is the 
+    name of an Argus domain outline file, and resolution is a characteristic 
+    length for the mesh (same unit as the domain outline unit). Riftname is an optional argument (Argus domain outline) describing rifts.
 
     Usage:
@@ -27,6 +27,6 @@
     """
 
-    # Figure out a characteristic area. Resolution is a node oriented concept (ex a 1000m  resolution node would
-    # be made of 1000 * 1000 area squares).
+    # Figure out a characteristic area. Resolution is a node oriented concept 
+    # (ex a 1000m resolution node would be made of 1000 * 1000 area squares).
 
     if len(args) == 1:
@@ -37,5 +37,5 @@
         resolution = args[1]
 
-    # Check that mesh was not already run, and warn user:
+    # Check that mesh was not already run, and warn user
     if md.mesh.numberofelements:
         choice = input('This model already has a mesh. Are you sure you want to go ahead? (y / n)')
@@ -49,5 +49,5 @@
     area = resolution ** 2
 
-    # Check that file exist (this is a very very common mistake)
+    # Check that file exists (this is a very common mistake)
     if not os.path.exists(domainname):
         raise IOError('file {} not found'.format(domainname))
@@ -86,5 +86,5 @@
     md.mesh.segmentmarkers = segmentmarkers.astype(int)
 
-    # Fill in rest of fields:
+    # Fill in rest of fields
     md.mesh.numberofelements = np.size(md.mesh.elements, axis=0)
     md.mesh.numberofvertices = np.size(md.mesh.x)
@@ -92,5 +92,5 @@
     md.mesh.vertexonboundary[md.mesh.segments[:, 0:2] - 1] = 1
 
-    # Now, build the connectivity tables for this mesh.
+    # Now, build the connectivity tables for this mesh
     md.mesh.vertexconnectivity = NodeConnectivity(md.mesh.elements, md.mesh.numberofvertices)
     md.mesh.elementconnectivity = ElementConnectivity(md.mesh.elements, md.mesh.vertexconnectivity)
