Index: issm/trunk-jpl/src/m/boundaryconditions/getlovenumbers.py
===================================================================
--- issm/trunk-jpl/src/m/boundaryconditions/getlovenumbers.py	(revision 27455)
+++ issm/trunk-jpl/src/m/boundaryconditions/getlovenumbers.py	(revision 27458)
@@ -4,5 +4,5 @@
 
 
-def getlovenumbers(*args): #{{{
+def getlovenumbers(*args):  # {{{
     """GETLOVENUMBERS - provide love numbers retrieved from: 
     http://www.srosat.com/iag-jsg/loveNb.php in a chosen reference frame
@@ -10085,3 +10085,3 @@
 
     return series
-#}}}
+# }}}
Index: issm/trunk-jpl/src/m/classes/SMBarma.py
===================================================================
--- issm/trunk-jpl/src/m/classes/SMBarma.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/SMBarma.py	(revision 27458)
@@ -61,5 +61,5 @@
     # }}}
 
-    def setdefaultparameters(self): #{{{
+    def setdefaultparameters(self):  # {{{
         self.ar_order = 0.0 # Autoregression model of order 0
         self.ma_order = 0.0 # Moving-average model of order 0
Index: issm/trunk-jpl/src/m/classes/SMBcomponents.py
===================================================================
--- issm/trunk-jpl/src/m/classes/SMBcomponents.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/SMBcomponents.py	(revision 27458)
@@ -103,3 +103,3 @@
         self.requested_outputs = ['default']
         return self
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/SMBd18opdd.py
===================================================================
--- issm/trunk-jpl/src/m/classes/SMBd18opdd.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/SMBd18opdd.py	(revision 27458)
@@ -44,5 +44,5 @@
         else:
             raise Exception('constructor not supported')
-    #}}}
+    # }}}
     def __repr__(self):  # {{{
         s = '   surface forcings parameters:\n'
@@ -81,5 +81,5 @@
         s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
         return s
-    #}}}
+    # }}}
     def extrude(self, md):  # {{{
         if self.isd18opd:
@@ -94,8 +94,8 @@
         self.s0t = project3d(md, 'vector', self.s0t, 'type', 'node')
         return self
-    #}}}
+    # }}}
     def defaultoutputs(self, md):  # {{{
         return ['SmbMassBalance']
-    #}}}
+    # }}}
     def initialize(self, md):  # {{{
         if np.all(np.isnan(self.s0p)):
@@ -122,5 +122,5 @@
         self.requested_outputs = ['default']
         return self
-    #}}}
+    # }}}
     def checkconsistency(self, md, solution, analyses):  # {{{
         if 'MasstransportAnalysis' in analyses:
Index: issm/trunk-jpl/src/m/classes/SMBforcing.py
===================================================================
--- issm/trunk-jpl/src/m/classes/SMBforcing.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/SMBforcing.py	(revision 27458)
@@ -28,5 +28,5 @@
         else:
             raise Exception('constructor not supported')
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -40,14 +40,14 @@
         s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
         return s
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
         self.mass_balance = project3d(md, 'vector', self.mass_balance, 'type', 'node')
         return self
-    #}}}
+    # }}}
 
     def defaultoutputs(self, md):  # {{{
         return ['SmbMassBalance']
-    #}}}
+    # }}}
 
     def initialize(self, md):  # {{{
@@ -56,5 +56,5 @@
             print("      no smb.mass_balance specified: values set as zero")
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/SMBgemb.py
===================================================================
--- issm/trunk-jpl/src/m/classes/SMBgemb.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/SMBgemb.py	(revision 27458)
@@ -156,5 +156,5 @@
         else:
             raise Exception('constructor not supported: need mesh and geometry to set defaults')
-        #}}}
+        # }}}
 
     def __repr__(self):  # {{{
@@ -267,5 +267,5 @@
         s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
         return s
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
@@ -316,9 +316,9 @@
 
         return self
-    #}}}
+    # }}}
 
     def defaultoutputs(self, md):  # {{{
         return ['SmbMassBalance','SmbAccumulatedMassBalance']
-    #}}}
+    # }}}
 
     def setdefaultparameters(self, mesh, geometry):  # {{{
@@ -390,5 +390,5 @@
         #           Element.cpp
         self.Sizeini = 2 * np.ones((mesh.numberofelements,))
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):    # {{{
Index: issm/trunk-jpl/src/m/classes/SMBgradients.py
===================================================================
--- issm/trunk-jpl/src/m/classes/SMBgradients.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/SMBgradients.py	(revision 27458)
@@ -23,5 +23,5 @@
         # Set defaults
         self.setdefaultparameters()
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -41,14 +41,14 @@
 
         return string
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
         #Nothing for now
         return self
-    #}}}
+    # }}}
 
     def defaultoutputs(self, md):  # {{{
         return ['SmbMassBalance']
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -56,10 +56,10 @@
         self.requested_outputs = ['default']
         return self
-    #}}}
+    # }}}
 
     def initialize(self, md):  # {{{
         #Nothing for now
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):    # {{{
Index: issm/trunk-jpl/src/m/classes/SMBgradientscomponents.py
===================================================================
--- issm/trunk-jpl/src/m/classes/SMBgradientscomponents.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/SMBgradientscomponents.py	(revision 27458)
@@ -23,5 +23,5 @@
         self.averaging = 0
         self.requested_outputs = ['default']
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -41,10 +41,10 @@
 
         return string
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
         #Nothing for now
         return self
-    #}}}
+    # }}}
 
     def defaultoutputs(self, md):  # {{{
@@ -53,10 +53,10 @@
             list.extend(['SmbMassBalanceSubstep'])
         return list
-    #}}}
+    # }}}
 
     def initialize(self, md):  # {{{
         #Nothing for now
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/SMBgradientsela.py
===================================================================
--- issm/trunk-jpl/src/m/classes/SMBgradientsela.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/SMBgradientsela.py	(revision 27458)
@@ -25,5 +25,5 @@
         else:
             error('constructor not supported')
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -44,19 +44,19 @@
         string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
         return string
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
         #Nothing for now
         return self
-    #}}}
+    # }}}
 
     def defaultoutputs(self, md):  # {{{
         return ['SmbMassBalance']
-    #}}}
+    # }}}
 
     def initialize(self, md):  # {{{
         #Nothing for now
         return self
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -65,5 +65,5 @@
         self.requested_outputs = ['default']
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):    # {{{
Index: issm/trunk-jpl/src/m/classes/SMBhenning.py
===================================================================
--- issm/trunk-jpl/src/m/classes/SMBhenning.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/SMBhenning.py	(revision 27458)
@@ -28,5 +28,5 @@
         else:
             raise Exception('constructor not supported')
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -40,14 +40,14 @@
         s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
         return s
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
         self.smbref = project3d(md, 'vector', self.smbref, 'type', 'node')
         return self
-    #}}}
+    # }}}
 
     def defaultoutputs(self, md):  # {{{
         return ['SmbMassBalance']
-    #}}}
+    # }}}
 
     def initialize(self, md):  # {{{
@@ -56,5 +56,5 @@
             print("      no smb.smbref specified: values set as zero")
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/SMBmeltcomponents.py
===================================================================
--- issm/trunk-jpl/src/m/classes/SMBmeltcomponents.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/SMBmeltcomponents.py	(revision 27458)
@@ -27,5 +27,5 @@
         else:
             error('constructor not supported')
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -42,5 +42,5 @@
         s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
         return s
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
@@ -50,9 +50,9 @@
         self.refreeze = project3d(md, 'vector', self.refreeze, 'type', 'node')
         return self
-    #}}}
+    # }}}
 
     def defaultoutputs(self, md):  # {{{
         return ['SmbMassBalance']
-    #}}}
+    # }}}
 
     def initialize(self, md):  # {{{
@@ -74,5 +74,5 @@
 
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
@@ -118,3 +118,3 @@
         self.requested_outputs = ['default']
         return self
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/SMBpdd.py
===================================================================
--- issm/trunk-jpl/src/m/classes/SMBpdd.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/SMBpdd.py	(revision 27458)
@@ -42,5 +42,5 @@
         # Set defaults
         self.setdefaultparameters()
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -112,9 +112,9 @@
         self.s0t = project3d(md, 'vector', self.s0t, 'type', 'node')
         return self
-    #}}}
+    # }}}
 
     def defaultoutputs(self, md):  # {{{
         return ['SmbMassBalance']
-    #}}}
+    # }}}
 
     def initialize(self, md):  # {{{
@@ -128,5 +128,5 @@
 
         return self
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -141,5 +141,5 @@
 
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):    # {{{
@@ -181,5 +181,5 @@
         md = checkfield(md, 'fieldname', 'masstransport.requested_outputs', 'stringrow', 1)
         return md
-    #}}}
+    # }}}
 
     def marshall(self, prefix, md, fid):    # {{{
Index: issm/trunk-jpl/src/m/classes/SMBsemic.py
===================================================================
--- issm/trunk-jpl/src/m/classes/SMBsemic.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/SMBsemic.py	(revision 27458)
@@ -37,5 +37,5 @@
         else:
             raise Exception('constructor not supported')
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -64,5 +64,5 @@
         s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
         return s
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
@@ -78,9 +78,9 @@
         self.s0gcm = project3d(md, 'vector', self.s0gcm, 'type', 'node')
         return self
-    #}}}
+    # }}}
 
     def defaultoutputs(self, md):  # {{{
         return ['SmbMassBalance']
-    #}}}
+    # }}}
 
     def initialize(self, md):  # {{{
@@ -89,5 +89,5 @@
             print("      no SMBsemic.s0gcm specified: values set as zero")
         return self
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  #{{{
Index: issm/trunk-jpl/src/m/classes/amr.py
===================================================================
--- issm/trunk-jpl/src/m/classes/amr.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/amr.py	(revision 27458)
@@ -11,5 +11,5 @@
     """
 
-    def __init__(self): #{{{
+    def __init__(self):  # {{{
         self.hmin = 0
         self.hmax = 0
@@ -33,7 +33,7 @@
 
         self.setdefaultparameters()
-    #}}}
+    # }}}
 
-    def __repr__(self): #{{{
+    def __repr__(self):  # {{{
         s = '   amr parameters:\n'
         s += '{}\n'.format(fielddisplay(self, 'hmin', 'minimum element length'))
@@ -56,7 +56,7 @@
         s += '{}\n'.format(fielddisplay(self, 'restart', 'indicates if ReMesh() will call before first time step'))
         return s
-    #}}}
+    # }}}
 
-    def setdefaultparameters(self): #{{{
+    def setdefaultparameters(self):  # {{{
         self.hmin = 100
         self.hmax = 100e3
@@ -89,7 +89,7 @@
         self.restart = 0
         return self
-    #}}}
+    # }}}
 
-    def checkconsistency(self, md, solution, analyses): #{{{
+    def checkconsistency(self, md, solution, analyses):  # {{{
         md = checkfield(md, 'fieldname', 'amr.hmax', 'numel', [1], '>', 0, 'NaN', 1)
         md = checkfield(md, 'fieldname', 'amr.hmin', 'numel', [1], '>', 0, '<', self.hmax, 'NaN', 1)
@@ -112,5 +112,5 @@
    # }}}
 
-    def marshall(self, prefix, md, fid): #{{{
+    def marshall(self, prefix, md, fid):  # {{{
         WriteData(fid, prefix, 'name', 'md.amr.type', 'data', 1, 'format', 'Integer')
         WriteData(fid, prefix, 'object', self, 'fieldname', 'hmin', 'format', 'Double')
@@ -133,3 +133,3 @@
         WriteData(fid, prefix, 'object', self, 'fieldname', 'deviatoricerror_maximum', 'format', 'Double')
         WriteData(fid, prefix, 'object', self, 'class', 'amr', 'fieldname', 'restart', 'format', 'Integer')
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/autodiff.py
===================================================================
--- issm/trunk-jpl/src/m/classes/autodiff.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/autodiff.py	(revision 27458)
@@ -104,5 +104,5 @@
         WriteData(fid, prefix, 'object', self, 'fieldname', 'gcTriggerMaxSize', 'format', 'Double')
         WriteData(fid, prefix, 'object', self, 'fieldname', 'tapeAlloc', 'format', 'Integer')
-        #}}}
+        # }}}
         #process dependent variables {{{
         num_dependent_objects = len(self.dependents)
@@ -119,5 +119,5 @@
             WriteData(fid, prefix, 'data', names, 'name', 'md.autodiff.dependent_object_names', 'format', 'StringArray')
             WriteData(fid, prefix, 'data', indices, 'name', 'md.autodiff.dependent_object_indices', 'format', 'IntMat', 'mattype', 3)
-            #}}}
+            # }}}
         #process independent variables {{{
         num_independent_objects = len(self.independents)
@@ -134,5 +134,5 @@
             WriteData(fid, prefix, 'data', names, 'name', 'md.autodiff.independent_object_names', 'format', 'StringArray')
             WriteData(fid, prefix, 'data', types, 'name', 'md.autodiff.independent_object_types', 'format', 'IntMat', 'mattype', 3)
-            #}}}
+            # }}}
         #if driver is fos_forward, build index:  {{{
         if strcmpi(self.driver, 'fos_forward'):
@@ -151,5 +151,5 @@
             index -= 1  #get c - index numbering going
             WriteData(fid, prefix, 'data', index, 'name', 'md.autodiff.fos_forward_index', 'format', 'Integer')
-            #}}}
+            # }}}
         #if driver is fos_reverse, build index:  {{{
         if strcmpi(self.driver, 'fos_reverse'):
@@ -165,5 +165,5 @@
             index -= 1  #get c - index numbering going
             WriteData(fid, prefix, 'data', index, 'name', 'md.autodiff.fos_reverse_index', 'format', 'Integer')
-            #}}}
+            # }}}
         #if driver is fov_forward, build indices:  {{{
         if strcmpi(self.driver, 'fov_forward'):
@@ -182,5 +182,5 @@
             indices -= 1  #get c - indices numbering going
             WriteData(fid, prefix, 'data', indices, 'name', 'md.autodiff.fov_forward_indices', 'format', 'IntMat', 'mattype', 3)
-            #}}}
+            # }}}
         #deal with mass fluxes:  {{{
         mass_flux_segments = [dep.segments for dep in self.dependents if strcmpi(dep.name, 'MassFlux')]
@@ -192,5 +192,5 @@
             flag = False
         WriteData(fid, prefix, 'data', flag, 'name', 'md.autodiff.mass_flux_segments_present', 'format', 'Boolean')
-        #}}}
+        # }}}
         #deal with trace keep on: {{{
         keep = False
@@ -210,5 +210,5 @@
                 keep = False
         WriteData(fid, prefix, 'data', keep, 'name', 'md.autodiff.keep', 'format', 'Boolean')
-    #}}}
+    # }}}
 
         return
Index: issm/trunk-jpl/src/m/classes/balancethickness.py
===================================================================
--- issm/trunk-jpl/src/m/classes/balancethickness.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/balancethickness.py	(revision 27458)
@@ -23,5 +23,5 @@
         self.setdefaultparameters()
 
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -32,5 +32,5 @@
         string = "%s\n%s" % (string, fielddisplay(self, 'stabilization', "0: None, 1: SU, 2: SSA's artificial diffusivity, 3:DG"))
         return string
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -38,5 +38,5 @@
         self.stabilization = 1
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/basalforcings.py
===================================================================
--- issm/trunk-jpl/src/m/classes/basalforcings.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/basalforcings.py	(revision 27458)
@@ -20,5 +20,5 @@
 
         self.setdefaultparameters()
-    #}}}
+    # }}}
     def __repr__(self):  # {{{
         s = '   basal forcings parameters:\n'
@@ -27,5 +27,5 @@
         s += '{}\n'.format(fielddisplay(self, 'geothermalflux', 'geothermal heat flux [W/m^2]'))
         return s
-    #}}}
+    # }}}
     def extrude(self, md):  # {{{
         self.groundedice_melting_rate = project3d(md, 'vector', self.groundedice_melting_rate, 'type', 'node', 'layer', 1)
@@ -33,5 +33,5 @@
         self.geothermalflux = project3d(md, 'vector', self.geothermalflux, 'type', 'node', 'layer', 1) # Bedrock only gets geothermal flux
         return self
-    #}}}
+    # }}}
     def initialize(self, md):  # {{{
         if np.all(np.isnan(self.groundedice_melting_rate)):
@@ -42,8 +42,8 @@
             print('      no basalforcings.floatingice_melting_rate specified: values set as zero')
         return self
-    #}}}
+    # }}}
     def setdefaultparameters(self):  # {{{
         return self
-    #}}}
+    # }}}
     def checkconsistency(self, md, solution, analyses):  # {{{
         if 'MasstransportAnalysis' in analyses and not solution == 'TransientSolution' and not md.transient.ismasstransport:
Index: issm/trunk-jpl/src/m/classes/basin.py
===================================================================
--- issm/trunk-jpl/src/m/classes/basin.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/basin.py	(revision 27458)
@@ -18,5 +18,5 @@
 
 
-class basin(object): #{{{
+class basin(object):  # {{{
     """BASIN class definition
 
@@ -25,5 +25,5 @@
     """
 
-    def __init__(self, *args): #{{{
+    def __init__(self, *args):  # {{{
         self.boundaries = []
         self.name       = ''
@@ -55,7 +55,7 @@
 
             self.proj = proj
-    #}}}
-
-    def __repr__(self): # {{{
+    # }}}
+
+    def __repr__(self):  # {{{
         s = '   basin parameters:\n'
         s += '{}\n'.format(fielddisplay(self, 'continent', 'continent name'))
@@ -67,7 +67,7 @@
 
         return s
-    #}}}
-
-    def setdefaultparameters(self): # {{{
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
         self.name       = ''
         self.continent  = ''
@@ -76,7 +76,7 @@
 
         return self
-    #}}}
-
-    def isnameany(self, *args): #{{{
+    # }}}
+
+    def isnameany(self, *args):  # {{{
         boolean = 0
         for arg in args:
@@ -90,7 +90,7 @@
                 break
         return boolean
-    #}}}
-
-    def iscontinentany(self, *args): #{{{
+    # }}}
+
+    def iscontinentany(self, *args):  # {{{
         boolean = 0
         for arg in args:
@@ -104,7 +104,7 @@
                 break
         return boolean
-    #}}}
-
-    def outputname(self, *args): #{{{
+    # }}}
+
+    def outputname(self, *args):  # {{{
         #recover options
         options = pairoptions(*args)
@@ -118,19 +118,19 @@
 
         return output
-    #}}}
-
-    def plot(self, *args): #{{{
+    # }}}
+
+    def plot(self, *args):  # {{{
         #add option
         for i in range(len(self.boundaries)):
             self.boundaries[i].plot('proj', self.proj, *args)
-    #}}}
-
-    def plot3d(self, *args): #{{{
+    # }}}
+
+    def plot3d(self, *args):  # {{{
         #add option
         for i in range(len(self.boundaries)):
             self.boundaries[i].plot3d(*args)
-    #}}}
-
-    def contour(self, *args): #{{{
+    # }}}
+
+    def contour(self, *args):  # {{{
         #recover options
         options = pairoptions(*args)
@@ -162,7 +162,7 @@
 
         return out
-    #}}}
-
-    def checkconsistency(self, *args): #{{{
+    # }}}
+
+    def checkconsistency(self, *args):  # {{{
         #recover options
         options = pairoptions(*args)
@@ -180,12 +180,12 @@
             boundary == self.boundaries[i]
             boundary.checkconsistency()
-    #}}}
-
-    def contourplot(self, *args): #{{{
+    # }}}
+
+    def contourplot(self, *args):  # {{{
         contour = self.contour()
         plot(contour.x, contour.y, 'r*-')
-    #}}}
-
-    def shapefilecrop(self, *args): #{{{
+    # }}}
+
+    def shapefilecrop(self, *args):  # {{{
         #recover options
         options = pairoptions(*args)
@@ -252,4 +252,4 @@
 
         return output
-    #}}}
-#}}}
+    # }}}
+# }}}
Index: issm/trunk-jpl/src/m/classes/boundary.py
===================================================================
--- issm/trunk-jpl/src/m/classes/boundary.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/boundary.py	(revision 27458)
@@ -10,5 +10,5 @@
 
 
-class boundary(object): #{{{
+class boundary(object):  # {{{
     """BOUNDARY class definition
 
@@ -17,5 +17,5 @@
     """
 
-    def __init__(self, *args): #{{{
+    def __init__(self, *args):  # {{{
         self.boundaries = []
         self.name       = ''
@@ -51,7 +51,7 @@
 
             self.proj = proj
-    #}}}
+    # }}}
 
-    def __repr__(self): #{{{
+    def __repr__(self):  # {{{
         s = '   boundary parameters:\n'
         s += '{}\n'.format(fielddisplay(self, 'shppath', 'path to filename for this boundary'))
@@ -61,7 +61,7 @@
 
         return s
-    #}}}
+    # }}}
 
-    def setdefaultparameters(self): #{{{
+    def setdefaultparameters(self):  # {{{
         self.shppath = ''
         self.shpfilename = ''
@@ -70,13 +70,13 @@
 
         return self
-    #}}}
+    # }}}
 
-    def name(self): #{{{
+    def name(self):  # {{{
         output = self.shpfilename
 
         return output
-    #}}}
+    # }}}
 
-    def edges(self): #{{{
+    def edges(self):  # {{{
         #read domain
         path, name, ext = fileparts(self.shpfilename)
@@ -92,7 +92,7 @@
 
         return output
-    #}}}
+    # }}}
 
-    def plot(self, *args): #{{{
+    def plot(self, *args):  # {{{
         #recover options
         options = pairoptions(*args)
@@ -131,10 +131,10 @@
             # y = domain[i].y * unitmultiplier
             # if len(x) == 1:
-        #}}}
+        # }}}
 
         #TODO: Finish translating from MATLAB after test2004.py runs without plot
-    #}}}
+    # }}}
 
-    def checkconsistency(self, *args): #{{{
+    def checkconsistency(self, *args):  # {{{
         #recover options
         options = pairoptions(*args)
@@ -157,5 +157,5 @@
                     raise Exception('boundary {} has two vertices extermely close to one another'.format(shpfilename))
 
-    def plot3d(self, *args): #{{{
+    def plot3d(self, *args):  # {{{
         #recover options
         options = pairoptions(*args)
@@ -181,4 +181,4 @@
 
         #TODO: Finish translating from MATLAB after test2004.py runs without plot
-    #}}}
-#}}}
+    # }}}
+# }}}
Index: issm/trunk-jpl/src/m/classes/calving.py
===================================================================
--- issm/trunk-jpl/src/m/classes/calving.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/calving.py	(revision 27458)
@@ -17,5 +17,5 @@
         self.calvingrate = np.nan
         #self.setdefaultparameters() # Uncomment if/when setdefaultparameters is used
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -23,14 +23,14 @@
         s += '{}\n'.format(fielddisplay(self, 'calvingrate', 'calving rate at given location [m/a]'))
         return s
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
         return self
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
         self.calvingrate = project3d(md, 'vector', self.calvingrate, 'type', 'node')
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/calvingcrevassedepth.py
===================================================================
--- issm/trunk-jpl/src/m/classes/calvingcrevassedepth.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/calvingcrevassedepth.py	(revision 27458)
@@ -18,5 +18,5 @@
 
         #self.setdefaultparameters() # Uncomment if/when setdefaultparameters is used
-    #}}}
+    # }}}
     def __repr__(self):  # {{{
         s = '   Calving Pi parameters:'
@@ -25,11 +25,11 @@
         s += '{}\n'.format(fielddisplay(self, 'water_height', 'water height in the crevasse [m]'))
         return s
-    #}}}
+    # }}}
     def setdefaultparameters(self):  # {{{
         return self
-    #}}}
+    # }}}
     def extrude(self, md):  # {{{
         return self
-    #}}}
+    # }}}
     def checkconsistency(self, md, solution, analyses):  # {{{
         #Early return
Index: issm/trunk-jpl/src/m/classes/calvingdev.py
===================================================================
--- issm/trunk-jpl/src/m/classes/calvingdev.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/calvingdev.py	(revision 27458)
@@ -21,5 +21,5 @@
         self.setdefaultparameters()
 
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -29,9 +29,9 @@
 
         return string
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
         return self
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -40,5 +40,5 @@
         self.stress_threshold_floatingice = 150e3
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/calvinglevermann.py
===================================================================
--- issm/trunk-jpl/src/m/classes/calvinglevermann.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/calvinglevermann.py	(revision 27458)
@@ -20,5 +20,5 @@
         self.setdefaultparameters()
 
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -27,15 +27,15 @@
 
         return string
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
         self.coeff = project3d(md, 'vector', self.coeff, 'type', 'node')
         return self
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
         #Proportionality coefficient in Levermann model
         self.coeff = 2e13
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/calvingminthickness.py
===================================================================
--- issm/trunk-jpl/src/m/classes/calvingminthickness.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/calvingminthickness.py	(revision 27458)
@@ -19,5 +19,5 @@
         self.setdefaultparameters()
 
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -25,14 +25,14 @@
         string = "%s\n%s" % (string, fielddisplay(self, 'min_thickness', 'minimum thickness below which no ice is allowed'))
         return string
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
         return self
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
         #minimum thickness is 100 m by default
         self.min_thickness = 100.
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/calvingparameterization.m
===================================================================
--- issm/trunk-jpl/src/m/classes/calvingparameterization.m	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/calvingparameterization.m	(revision 27458)
@@ -1,4 +1,4 @@
 %CALVINGPARAMETERIZATION class definition
-%	For test calving laws and coefficients
+%   For test calving laws and coefficients
 %   Usage:
 %      calvingparameterization=calvingparameterization();
Index: issm/trunk-jpl/src/m/classes/calvingparameterization.py
===================================================================
--- issm/trunk-jpl/src/m/classes/calvingparameterization.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/calvingparameterization.py	(revision 27458)
@@ -5,5 +5,5 @@
 
 class calvingparameterization(object):
-    """CALVINGPARAMETERIZATION class definition
+    """calvingparameterization class definition
     For test calving laws and coefficients
 
@@ -22,8 +22,13 @@
         self.nonlinearlaw = 0
 
-    #set defaults
-        self.setdefaultparameters()
-
-    #}}}
+        nargs = len(args)
+        if nargs == 0:
+            self.setdefaultparameters()
+        elif nargs == 1:
+            # TODO: Replace the following with constructor
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+    # }}}
 
     def __repr__(self):  # {{{
@@ -33,9 +38,9 @@
         s += '{}\n'.format(fielddisplay(self, 'min_thickness', 'minimum thickness below which no ice is allowed [m]'))
         return s
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
         return self
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -47,5 +52,5 @@
         self.min_thickness = 0.
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/calvingvonmises.py
===================================================================
--- issm/trunk-jpl/src/m/classes/calvingvonmises.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/calvingvonmises.py	(revision 27458)
@@ -19,5 +19,5 @@
         self.setdefaultparameters()
 
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -27,9 +27,9 @@
         s += '{}\n'.format(fielddisplay(self, 'min_thickness', 'minimum thickness below which no ice is allowed [m]'))
         return s
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
         return self
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -41,5 +41,5 @@
         self.min_thickness = 0.
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/clusters/local.py
===================================================================
--- issm/trunk-jpl/src/m/classes/clusters/local.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/clusters/local.py	(revision 27458)
@@ -8,5 +8,5 @@
 
 
-class local(object): #{{{
+class local(object):  # {{{
     """LOCAL class definition
 
@@ -16,5 +16,5 @@
     """
 
-    def __init__(self, *args): #{{{
+    def __init__(self, *args):  # {{{
         self.name           = ''
         self.np             = 1
@@ -34,5 +34,5 @@
         self = options.AssignObjectFields(self)
 
-    def __repr__(cluster): #{{{
+    def __repr__(cluster):  # {{{
         # Display the object
         s = 'class {} = \n'.format(type(cluster).__name__)
@@ -46,7 +46,7 @@
 
         return s
-    #}}}
+    # }}}
 
-    def checkconsistency(self, md, solution, analyses): #{{{
+    def checkconsistency(self, md, solution, analyses):  # {{{
         if cluster.np < 1:
             md.checkmessage('number of processors should be at least 1')
@@ -56,7 +56,7 @@
 
         return md
-    #}}}
+    # }}}
 
-    def BuildQueueScript(cluster, dirname, modelname, solution, io_gather, isvalgrind, isgporf, isdakota, isoceancoupling): #{{{
+    def BuildQueueScript(cluster, dirname, modelname, solution, io_gather, isvalgrind, isgporf, isdakota, isoceancoupling):  # {{{
         # Which executable are we calling?
         executable = 'issm.exe' # Default
@@ -70,14 +70,14 @@
         fid.close()
 
-    def UploadQueueJob(cluster, modelname, dirname, filelist): #{{{
+    def UploadQueueJob(cluster, modelname, dirname, filelist):  # {{{
         # Do nothing really
         pass
-    #}}}
+    # }}}
 
-    def LaunchQueueJob(cluster, modelname, dirname, filelist, restart, batch): #{{{
+    def LaunchQueueJob(cluster, modelname, dirname, filelist, restart, batch):  # {{{
         subprocess.call('source ' + modelname + '.queue')
-    #}}}
+    # }}}
 
-    def Download(cluster, dirname, filelist): #{{{
+    def Download(cluster, dirname, filelist):  # {{{
         pass
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/constants.py
===================================================================
--- issm/trunk-jpl/src/m/classes/constants.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/constants.py	(revision 27458)
@@ -20,5 +20,5 @@
         #set defaults
         self.setdefaultparameters()
-    #}}}
+    # }}}
     def __repr__(self):  # {{{
         s = '   constants parameters:\n'
@@ -29,5 +29,5 @@
         s += '{}\n'.format(fielddisplay(self, 'gravitational_constant', 'Newtonian constant of gravitation [m^3/kg/s^2]'))
         return s
-    #}}}
+    # }}}
     def setdefaultparameters(self):  # {{{
         # Acceleration due to gravity (m / s^2)
@@ -47,5 +47,5 @@
 
         return self
-    #}}}
+    # }}}
     def checkconsistency(self, md, solution, analyses):  # {{{
         md = checkfield(md, 'fieldname', 'constants.g', '>=', 0, 'size', [1]) # We allow 0 for validation tests
Index: issm/trunk-jpl/src/m/classes/damage.py
===================================================================
--- issm/trunk-jpl/src/m/classes/damage.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/damage.py	(revision 27458)
@@ -74,5 +74,5 @@
             self.spcdamage = project3d(md, 'vector', self.spcdamage, 'type', 'node')
             return self
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -109,5 +109,5 @@
             list = ['DamageD']
         return list
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/debris.py
===================================================================
--- issm/trunk-jpl/src/m/classes/debris.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/debris.py	(revision 27458)
@@ -127,3 +127,3 @@
         self.spcthickness = project3d(md, 'vector', self.spcthickness, 'type', 'node')
         return
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/debug.py
===================================================================
--- issm/trunk-jpl/src/m/classes/debug.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/debug.py	(revision 27458)
@@ -19,5 +19,5 @@
         self.setdefaultparameters()
 
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -28,9 +28,9 @@
         string = "%s\n%s" % (string, fielddisplay(self, 'profiling', 'enables profiling (memory, flops, time)'))
         return string
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
         return self
-    #}}}
+    # }}}
 
     def marshall(self, prefix, md, fid):  # {{{
Index: issm/trunk-jpl/src/m/classes/dsl.py
===================================================================
--- issm/trunk-jpl/src/m/classes/dsl.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/dsl.py	(revision 27458)
@@ -23,5 +23,5 @@
         else:
             raise Exception('constructor not supported')
-    #}}}
+    # }}}
 
     def __repr__(self):  #{{{
@@ -31,5 +31,5 @@
         s += '{}\n'.format(fielddisplay(self, 'sea_water_pressure_at_sea_floor', 'Corresponds to bpo field in CMIP5 archives. Specified as a spatio-temporally variable quantity (in m equivalent, not in Pa!).'))
         return s
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  #{{{
@@ -37,5 +37,5 @@
         self.sea_surface_height_above_geoid = np.nan
         self.sea_water_pressure_at_sea_floor = np.nan
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  #{{{
@@ -65,5 +65,5 @@
         self.sea_water_pressure_at_sea_floor = project3d(md, 'vector', self.sea_water_pressure_at_sea_floor, 'type', 'node', 'layer', 1)
         return self
-    #}}}
+    # }}}
 
     def initialize(self, md):  #{{{
@@ -79,3 +79,3 @@
             self.sea_water_pressure_at_sea_floor = np.append(np.zeros((md.mesh.numberofvertices, 1)), 0).reshape(-1, 1)
             print('      no dsl.sea_water_pressure_at_sea_floor specified: transient values set at zero')
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/dslmme.py
===================================================================
--- issm/trunk-jpl/src/m/classes/dslmme.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/dslmme.py	(revision 27458)
@@ -22,5 +22,5 @@
         else:
             raise Exception('constructor not supported')
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -31,9 +31,9 @@
         s += '{}\n'.format(fielddisplay(self, 'sea_water_pressure_at_sea_floor', 'Corresponds to bpo field in CMIP5 archives. Specified as a spatio-temporally variable quantity (in m equivalent, not in Pa!) for each ensemble.'))
         return s
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  #{{{
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
@@ -52,5 +52,5 @@
 
         return md
-    #}}}
+    # }}}
 
     def marshall(self, prefix, md, fid):  #{{{
@@ -61,5 +61,5 @@
         WriteData(fid, prefix, 'object', self, 'fieldname', 'sea_water_pressure_at_sea_floor', 'format', 'MatArray', 'timeserieslength', md.mesh.numberofvertices + 1)
         WriteData(fid, prefix, 'object', self, 'fieldname', 'sea_surface_height_above_geoid', 'format', 'MatArray', 'timeserieslength', md.mesh.numberofvertices + 1)
-    #}}}
+    # }}}
 
     def extrude(self, md):  #{{{
@@ -69,3 +69,3 @@
 
         return self
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/esa.py
===================================================================
--- issm/trunk-jpl/src/m/classes/esa.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/esa.py	(revision 27458)
@@ -25,5 +25,5 @@
     #set defaults
         self.setdefaultparameters()
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -52,5 +52,5 @@
         self.requested_outputs = ['default']
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/flowequation.py
===================================================================
--- issm/trunk-jpl/src/m/classes/flowequation.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/flowequation.py	(revision 27458)
@@ -39,5 +39,5 @@
         
         self.setdefaultparameters()
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -60,5 +60,5 @@
         s += '{}\n'.format(fielddisplay(self, 'borderFS', "vertices on FS' border (for tiling)"))
         return s
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -72,5 +72,5 @@
         self.fe_FS = 'MINIcondensed'
         return self
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
@@ -81,5 +81,5 @@
         self.borderFS = project3d(md, 'vector', self.borderFS, 'type', 'node')
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/fourierlove.py
===================================================================
--- issm/trunk-jpl/src/m/classes/fourierlove.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/fourierlove.py	(revision 27458)
@@ -13,5 +13,5 @@
     """
 
-    def __init__(self): #{{{
+    def __init__(self):  # {{{
         self.nfreq = 0
         self.frequencies = 0
@@ -37,7 +37,7 @@
 
         self.setdefaultparameters()
-    #}}}
+    # }}}
 
-    def __repr__(self): #{{{
+    def __repr__(self):  # {{{
         # TODO:
         # - Correct display to match MATLAB
@@ -78,7 +78,7 @@
 
         return s
-    #}}}
+    # }}}
 
-    def setdefaultparameters(self): #{{{
+    def setdefaultparameters(self):  # {{{
         # We setup an elastic love number computation by default
         self.nfreq = 1
@@ -104,7 +104,7 @@
         self.core_mantle_boundary = 2
         self.complex_computation = 0
-    #}}}
+    # }}}
 
-    def checkconsistency(self, md, solution, analyses): #{{{
+    def checkconsistency(self, md, solution, analyses):  # {{{
         if 'LoveAnalysis' not in analyses:
             return md
@@ -149,7 +149,7 @@
 
         return md
-    #}}}
+    # }}}
 
-    def marshall(self, prefix, md, fid): #{{{
+    def marshall(self, prefix, md, fid):  # {{{
         WriteData(fid, prefix, 'object', self, 'fieldname', 'nfreq', 'format', 'Integer')
         WriteData(fid, prefix, 'object', self, 'fieldname', 'frequencies', 'format', 'DoubleMat', 'mattype',3)
@@ -173,11 +173,11 @@
         WriteData(fid, prefix, 'object', self, 'fieldname', 'inner_core_boundary', 'format', 'Integer')
         WriteData(fid, prefix, 'object', self, 'fieldname', 'core_mantle_boundary', 'format', 'Integer')
-    #}}}
+    # }}}
 
-    def extrude(self, md): #{{{
+    def extrude(self, md):  # {{{
         return self
-    #}}}
+    # }}}
 
-    def build_frequencies_from_time(self): #{{{
+    def build_frequencies_from_time(self):  # {{{
         if not self.istemporal:
             raise RuntimeError('cannot build frequencies for temporal love numbers if love.istemporal==0')
@@ -192,3 +192,3 @@
                     self.frequencies[(i - 1) * 2 * self.n_temporal_iterations + j] = j * np.log(2) / self.time[i] / 2 / np.pi
         return self
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/friction.py
===================================================================
--- issm/trunk-jpl/src/m/classes/friction.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/friction.py	(revision 27458)
@@ -22,5 +22,5 @@
         self.effective_pressure_limit = 0
         self.setdefaultparameters()
-    #}}}
+    # }}}
     def __repr__(self):  # {{{
         s = 'Basal shear stress parameters: Sigma_b = coefficient^2 * Neff ^r * |u_b|^(s - 1) * u_b,\n'
@@ -33,9 +33,9 @@
         s += '{}\n'.format(fielddisplay(self, 'effective_pressure_limit', 'Neff do not allow to fall below a certain limit: effective_pressure_limit * rho_ice * g * thickness (default 0)'))
         return s
-    #}}}
+    # }}}
     def setdefaultparameters(self):  # {{{
         self.effective_pressure_limit = 0
         return self
-    #}}}
+    # }}}
     def extrude(self, md):  # {{{
         self.coefficient = project3d(md, 'vector', self.coefficient, 'type', 'node', 'layer', 1)
@@ -45,9 +45,9 @@
             self.effective_pressure = project3d(md, 'vector', self.effective_pressure, 'type', 'node', 'layer', 1)
         return self
-    #}}}
+    # }}}
     def defaultoutputs(self, md):  # {{{
         list = []
         return list
-    #}}}
+    # }}}
     def checkconsistency(self, md, solution, analyses):  # {{{
         # Early return
Index: issm/trunk-jpl/src/m/classes/frictioncoulomb.py
===================================================================
--- issm/trunk-jpl/src/m/classes/frictioncoulomb.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/frictioncoulomb.py	(revision 27458)
@@ -24,5 +24,5 @@
 
         self.setdefaultparameters()
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -37,10 +37,10 @@
         s += '{}\n'.format(fielddisplay(self, 'effective_pressure_limit', 'Neff do not allow to fall below a certain limit: effective_pressure_limit * rho_ice * g * thickness (default 0)'))
         return s
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
         self.effective_pressure_limit = 0
         return self
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
@@ -56,5 +56,5 @@
             raise ValueError('not supported yet')
         return self
-    #}}}
+    # }}}
     def checkconsistency(self, md, solution, analyses):  # {{{
         # Early return
Index: issm/trunk-jpl/src/m/classes/frictionhydro.py
===================================================================
--- issm/trunk-jpl/src/m/classes/frictionhydro.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/frictionhydro.py	(revision 27458)
@@ -81,3 +81,3 @@
         elif self.coupling > 4:
             raise ValueError('md.friction.coupling larger than 4, not supported yet')
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/frictionjosh.py
===================================================================
--- issm/trunk-jpl/src/m/classes/frictionjosh.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/frictionjosh.py	(revision 27458)
@@ -22,5 +22,5 @@
         self.setdefaultparameters()
         #self.requested_outputs = []
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -33,5 +33,5 @@
         #s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
         return s
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
@@ -39,5 +39,5 @@
         self.pressure_adjusted_temperature = project3d(md, 'vector', self.pressure_adjusted_temperature, 'type', 'node', 'layer', 1)
         return self
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -46,10 +46,10 @@
         self.effective_pressure_limit = 0
         return self
-    #}}}
+    # }}}
 
     def defaultoutputs(self, md):  # {{{
         list = []
         return list
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/frictionpism.py
===================================================================
--- issm/trunk-jpl/src/m/classes/frictionpism.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/frictionpism.py	(revision 27458)
@@ -24,5 +24,5 @@
         self.setdefaultparameters()
         self.requested_outputs = []
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
Index: issm/trunk-jpl/src/m/classes/frictionschoof.py
===================================================================
--- issm/trunk-jpl/src/m/classes/frictionschoof.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/frictionschoof.py	(revision 27458)
@@ -29,5 +29,5 @@
         else:
             raise Exception('constructor not supported')
-    #}}}
+    # }}}
     def __repr__(self):  # {{{
         # See Brondex et al. 2019 https://www.the-cryosphere.net/13/177/2019/
@@ -45,9 +45,9 @@
         s += "{}\n".format(fielddisplay(self, 'effective_pressure_limit', 'fNeff do not allow to fall below a certain limit: effective_pressure_limit*rho_ice*g*thickness (default 0)'))
         return s
-    #}}}
+    # }}}
     def setdefaultparameters(self):  # {{{
         self.effective_pressure_limit = 0
         return self
-    #}}}
+    # }}}
     def extrude(self, md):  # {{{
         self.C = project3d(md, 'vector', self.C, 'type', 'node')
@@ -57,5 +57,5 @@
             self.effective_pressure = project3d(md, 'vector', self.effective_pressure, 'type', 'node', 'layer', 1)
         return self
-    #}}}
+    # }}}
     def checkconsistency(self, md, solution, analyses):  # {{{
         # Early return
Index: issm/trunk-jpl/src/m/classes/frictionshakti.py
===================================================================
--- issm/trunk-jpl/src/m/classes/frictionshakti.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/frictionshakti.py	(revision 27458)
@@ -23,5 +23,5 @@
         elif nargs == 1:
             self = structtoobj(self, args[0])
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -30,14 +30,14 @@
         s += '{}\n'.format(fielddisplay(self, 'coefficient', 'friction coefficient [SI]'))
         return s
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
         return self
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
         self.coefficient = project3d(md, 'vector', self.coefficient, 'type', 'node', 'layer', 1)
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/frictionwaterlayer.py
===================================================================
--- issm/trunk-jpl/src/m/classes/frictionwaterlayer.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/frictionwaterlayer.py	(revision 27458)
@@ -27,5 +27,5 @@
         elif nargs == 1:
             self = structtoobj(self, args[0])
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -37,9 +37,9 @@
         s = "{}\n".format(fielddisplay(self, 'water_layer', 'water thickness at the base of the ice (m)'))
         return s
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  #{{{
@@ -70,3 +70,3 @@
         WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'q', 'format', 'DoubleMat', 'mattype', 2)
         WriteData(fid, prefix, 'class', 'friction', 'object', self, 'fieldname', 'water_layer', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/frictionweertman.py
===================================================================
--- issm/trunk-jpl/src/m/classes/frictionweertman.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/frictionweertman.py	(revision 27458)
@@ -19,5 +19,5 @@
         self.setdefaultparameters()
 
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -27,9 +27,9 @@
         string = "%s\n%s" % (string, fielddisplay(self, "m", "m exponent"))
         return string
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/frontalforcings.py
===================================================================
--- issm/trunk-jpl/src/m/classes/frontalforcings.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/frontalforcings.py	(revision 27458)
@@ -26,5 +26,5 @@
         else:
             raise Exception('constructor not supported')
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -34,5 +34,5 @@
 
         return s
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
@@ -40,5 +40,5 @@
         self.ablationrate = project3d(md, 'vector', self.ablationrate, 'type', 'node')
         return self
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -46,5 +46,5 @@
         self.ablationrate = np.nan
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/frontalforcingsrignot.py
===================================================================
--- issm/trunk-jpl/src/m/classes/frontalforcingsrignot.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/frontalforcingsrignot.py	(revision 27458)
@@ -26,5 +26,5 @@
             error('constructor not supported')
 
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -35,7 +35,7 @@
         s += '{}\n'.format(fielddisplay(self, 'thermalforcing', 'thermal forcing [∘C]'))
         return s
-    #}}}
+    # }}}
 
-    def setdefaultparameters(self): # {{{
+    def setdefaultparameters(self):  # {{{
         self.basin_id = np.nan
         self.num_basins = 0
@@ -44,9 +44,9 @@
 
         return self
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/frontalforcingsrignotarma.py
===================================================================
--- issm/trunk-jpl/src/m/classes/frontalforcingsrignotarma.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/frontalforcingsrignotarma.py	(revision 27458)
@@ -74,5 +74,5 @@
         s += '{}\n'.format(fielddisplay(self, 'sd_polynomialparams','coefficients for the sd_polynomial (const,trend,quadratic,etc.),dim1 for basins,dim2 for periods,dim3 for orders'))
         return s
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -83,5 +83,5 @@
         self.ma_order = 0.0  # Moving-average model of order 0
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/giacaron.py
===================================================================
--- issm/trunk-jpl/src/m/classes/giacaron.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/giacaron.py	(revision 27458)
@@ -16,5 +16,5 @@
     """
 
-    def __init__(self, *args): #{{{
+    def __init__(self, *args):  # {{{
         #Physical constants
         self.gravitational_constant         = np.nan
@@ -51,3 +51,3 @@
         else:
             raise Exception('constructor not supported')
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/groundingline.py
===================================================================
--- issm/trunk-jpl/src/m/classes/groundingline.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/groundingline.py	(revision 27458)
@@ -37,5 +37,5 @@
         return ['Surface', 'Base','MaskOceanLevelset']
 
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
Index: issm/trunk-jpl/src/m/classes/hydrologyglads.py
===================================================================
--- issm/trunk-jpl/src/m/classes/hydrologyglads.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/hydrologyglads.py	(revision 27458)
@@ -7,5 +7,5 @@
 
 class hydrologyglads(object):
-    """HYDROLOGYGLADS class definition
+    """hydrologyglads class definition
 
     Usage:
@@ -13,6 +13,6 @@
     """
 
-    def __init__(self):  # {{{
-        #Sheet
+    def __init__(self, *args):  # {{{
+        # Sheet
         self.pressure_melt_coefficient = 0.
         self.sheet_conductivity = np.nan
@@ -20,10 +20,10 @@
         self.bump_height = np.nan
 
-        #Channels
+        # Channels
         self.ischannels = 0
         self.channel_conductivity = np.nan
         self.channel_sheet_width = 0.
 
-        #Other
+        # Other
         self.spcphi = np.nan
         self.moulin_input = np.nan
@@ -33,6 +33,12 @@
         self.melt_flag = 0
 
-        # set defaults
-        self.setdefaultparameters()
+        nargs = len(args)
+        if nargs == 0:
+            self.setdefaultparameters()
+        elif nargs == 1:
+            # TODO: Replace the following with constructor
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
         # }}}
 
Index: issm/trunk-jpl/src/m/classes/hydrologyshakti.py
===================================================================
--- issm/trunk-jpl/src/m/classes/hydrologyshakti.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/hydrologyshakti.py	(revision 27458)
@@ -29,5 +29,5 @@
         self.setdefaultparameters()
 
-    #}}}
+    # }}}
     def __repr__(self):  # {{{
         string = '   hydrologyshakti solution parameters:'
@@ -45,9 +45,9 @@
         string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
         return string
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
         return self
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -57,10 +57,10 @@
         self.requested_outputs = ['default']
         return self
-    #}}}
+    # }}}
 
     def defaultoutputs(self, md):  # {{{
         list = ['HydrologyHead', 'HydrologyGapHeight', 'EffectivePressure', 'HydrologyBasalFlux', 'DegreeOfChannelization']
         return list
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/hydrologyshreve.py
===================================================================
--- issm/trunk-jpl/src/m/classes/hydrologyshreve.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/hydrologyshreve.py	(revision 27458)
@@ -13,5 +13,5 @@
     """
 
-    def __init__(self, *args): #{{{
+    def __init__(self, *args):  # {{{
         self.spcwatercolumn = np.nan
         self.stabilization = 0
@@ -25,7 +25,7 @@
         else:
             raise RuntimeError('constructor not supported')
-    #}}}
+    # }}}
 
-    def __repr__(self): #{{{
+    def __repr__(self):  # {{{
         s = '   hydrologyshreve solution parameters:\n'
         s += '{}\n'.format(fielddisplay(self, 'spcwatercolumn', 'water thickness constraints (NaN means no constraint) [m]'))
@@ -33,13 +33,13 @@
         s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
         return s
-    #}}}
+    # }}}
 
-    def setdefaultparameters(self): #{{{
+    def setdefaultparameters(self):  # {{{
         # Type of stabilization to use 0:nothing 1:artificial_diffusivity
         self.stabilization = 1
         self.requested_outputs = ['default']
-    #}}}
+    # }}}
 
-    def checkconsistency(self, md, solution, analyses): #{{{
+    def checkconsistency(self, md, solution, analyses):  # {{{
         #Early return
         if 'HydrologyShreveAnalysis' not in analyses or (solution == 'TransientSolution' and not md.transient.ishydrology):
@@ -51,9 +51,9 @@
     # }}}
 
-    def defaultoutputs(self, md): #{{{
+    def defaultoutputs(self, md):  # {{{
         return ['Watercolumn', 'HydrologyWaterVx', 'HydrologyWaterVy']
-    #}}}
+    # }}}
 
-    def marshall(self, prefix, md, fid): #{{{
+    def marshall(self, prefix, md, fid):  # {{{
         WriteData(fid, prefix, 'name', 'md.hydrology.model', 'data', 2, 'format', 'Integer')
         WriteData(fid, prefix, 'object', self, 'fieldname', 'spcwatercolumn', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
@@ -67,5 +67,5 @@
     # }}}
 
-    def extrude(self, md): #{{{
+    def extrude(self, md):  # {{{
         return self
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/hydrologytws.py
===================================================================
--- issm/trunk-jpl/src/m/classes/hydrologytws.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/hydrologytws.py	(revision 27458)
@@ -21,5 +21,5 @@
         else:
             raise RuntimeError('constructor not supported')
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -28,18 +28,18 @@
         s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
         return s
-    #}}}
+    # }}}
 
-    def defaultoutputs(self, md): # {{{
+    def defaultoutputs(self, md):  # {{{
         return ['']
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
         self.requested_outputs = ['defualt']
         return self
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
@@ -48,5 +48,5 @@
             return
         md = checkfield(md, 'fieldname', 'hydrology.spcwatercolumn', 'Inf', 1, 'timeseries', 1)
-    #}}}
+    # }}}
 
     def marshall(self, prefix, md, fid):  # {{{
Index: issm/trunk-jpl/src/m/classes/initialization.py
===================================================================
--- issm/trunk-jpl/src/m/classes/initialization.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/initialization.py	(revision 27458)
@@ -37,5 +37,5 @@
 
         self.setdefaultparameters()
-    #}}}
+    # }}}
 
     def __repr__(self):  #{{{
@@ -58,9 +58,9 @@
         s += '{}\n'.format(fielddisplay(self, 'debris', 'Surface debris layer [m]'))
         return s
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  #{{{
         return
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  #{{{
@@ -128,7 +128,7 @@
                     md = checkfield(md, 'fieldname', 'initialization.debris', 'NaN', 1,'Inf', 1, 'size', [md.mesh.numberofvertices])
         return md
-    #}}}
+    # }}}
 
-    def marshall(self, prefix, md, fid): #{{{
+    def marshall(self, prefix, md, fid):  # {{{
         yts = md.constants.yts
 
@@ -161,7 +161,7 @@
 
             WriteData(fid, prefix, 'data', self.enthalpy, 'format', 'DoubleMat', 'mattype', 1, 'name', 'md.initialization.enthalpy')
-    #}}}
+    # }}}
 
-    def extrude(self, md): #{{{
+    def extrude(self, md):  # {{{
         self.vx = project3d(md, 'vector', self.vx, 'type', 'node')
         self.vy = project3d(md, 'vector', self.vy, 'type', 'node')
@@ -189,3 +189,3 @@
 
         return self
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/inversion.py
===================================================================
--- issm/trunk-jpl/src/m/classes/inversion.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/inversion.py	(revision 27458)
@@ -38,5 +38,5 @@
 
         self.setdefaultparameters()
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -70,5 +70,5 @@
         s += '{}\n'.format('   503: ThicknessAbsGradient')
         return s
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -100,5 +100,5 @@
         self.cost_function_threshold = np.nan  #not activated
         return self
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
@@ -114,5 +114,5 @@
             self.max_parameters = project3d(md, 'vector', self.max_parameters, 'type', 'node')
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/issmsettings.py
===================================================================
--- issm/trunk-jpl/src/m/classes/issmsettings.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/issmsettings.py	(revision 27458)
@@ -23,5 +23,5 @@
         # Set defaults
         self.setdefaultparameters()
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -36,5 +36,5 @@
         s += '{}\n'.format(fielddisplay(self, "solver_residue_threshold", "throw an error if solver residue exceeds this value (NaN to deactivate)"))
         return s
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -58,5 +58,5 @@
 
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/levelset.py
===================================================================
--- issm/trunk-jpl/src/m/classes/levelset.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/levelset.py	(revision 27458)
@@ -24,5 +24,5 @@
         # Set defaults
         self.setdefaultparameters()
-    #}}}
+    # }}}
     def __repr__(self):  # {{{
         s = '   Level-set parameters:\n'
@@ -35,5 +35,5 @@
 
         return s
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -48,5 +48,5 @@
 
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
@@ -67,5 +67,5 @@
         self.spclevelset = project3d(md, 'vector', self.spclevelset, 'type', 'node')
         return self
-    #}}}
+    # }}}
 
     def marshall(self, prefix, md, fid):  # {{{
Index: issm/trunk-jpl/src/m/classes/linearbasalforcings.py
===================================================================
--- issm/trunk-jpl/src/m/classes/linearbasalforcings.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/linearbasalforcings.py	(revision 27458)
@@ -14,5 +14,5 @@
     """
 
-    def __init__(self, *args): #{{{
+    def __init__(self, *args):  # {{{
         nargs = len(args)
         if nargs == 0:
@@ -43,7 +43,7 @@
         else:
             raise Exception('constructor not supported')
-    #}}}
+    # }}}
 
-    def __repr__(self): #{{{
+    def __repr__(self):  # {{{
         s = '   linear basal forcings parameters:\n'
         s += '{}\n'.format(fielddisplay(self, "deepwater_melting_rate", "basal melting rate (positive if melting applied for floating ice whith base < deepwater_elevation) [m/yr]"))
@@ -55,19 +55,19 @@
         s += '{}\n'.format(fielddisplay(self, "geothermalflux", "geothermal heat flux [W/m^2]"))
         return s
-    #}}}
+    # }}}
 
-    def extrude(self, md): #{{{
+    def extrude(self, md):  # {{{
         self.perturbation_melting_rate = project3d(md, 'vector', self.perturbation_melting_rate, 'type', 'node', 'layer', 1)
         self.groundedice_melting_rate = project3d(md, 'vector', self.groundedice_melting_rate, 'type', 'node', 'layer', 1)
         self.geothermalflux = project3d(md, 'vector', self.geothermalflux, 'type', 'node', 'layer', 1) # Bedrock only gets geothermal flux
         return self
-    #}}}
+    # }}}
 
-    def initialize(self, md): #{{{
+    def initialize(self, md):  # {{{
         if np.all(np.isnan(self.groundedice_melting_rate)):
             self.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices))
             print("      no basalforcings.groundedice_melting_rate specified: values set as zero")
         return self
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -77,7 +77,7 @@
         self.upperwater_elevation = -400.0
         return self
-    #}}}
+    # }}}
 
-    def checkconsistency(self, md, solution, analyses): #{{{
+    def checkconsistency(self, md, solution, analyses):  # {{{
         if not np.all(np.isnan(self.perturbation_melting_rate)):
             md = checkfield(md, 'fieldname', 'basalforcings.perturbation_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
@@ -103,7 +103,7 @@
 
         return md
-    #}}}
+    # }}}
 
-    def marshall(self, prefix, md, fid): #{{{
+    def marshall(self, prefix, md, fid):  # {{{
         yts = md.constants.yts
 
@@ -116,3 +116,3 @@
         WriteData(fid, prefix, 'object', self, 'fieldname', 'upperwater_melting_rate', 'format', 'DoubleMat', 'mattype', 3, 'timeserieslength', 2, 'name', 'md.basalforcings.upperwater_melting_rate', 'scale', 1. / yts, 'yts', yts)
         WriteData(fid, prefix, 'object', self, 'fieldname', 'upperwater_elevation', 'format', 'DoubleMat', 'mattype', 3, 'name', 'md.basalforcings.upperwater_elevation', 'yts', yts)
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/linearbasalforcingsarma.py
===================================================================
--- issm/trunk-jpl/src/m/classes/linearbasalforcingsarma.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/linearbasalforcingsarma.py	(revision 27458)
@@ -59,5 +59,5 @@
     # }}}
 
-    def setdefaultparameters(self): #{{{
+    def setdefaultparameters(self):  # {{{
         self.ar_order = 0.0 # Autoregression model of order 0
         self.ma_order = 0.0 # Moving-average model of order 0
Index: issm/trunk-jpl/src/m/classes/love.py
===================================================================
--- issm/trunk-jpl/src/m/classes/love.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/love.py	(revision 27458)
@@ -12,5 +12,5 @@
     """
 
-    def __init__(self): #{{{
+    def __init__(self):  # {{{
         self.nfreq = 0
         self.frequencies = 0
@@ -44,7 +44,7 @@
 
         self.setdefaultparameters()
-    #}}}
-
-    def __repr__(self): #{{{
+    # }}}
+
+    def __repr__(self):  # {{{
         s = '{}\n'.format(fielddisplay(self, 'nfreq', 'number of frequencies sampled (default: 1, elastic) [Hz]'))
         s += '{}\n'.format(fielddisplay(self, 'frequencies', 'frequencies sampled (convention defaults to 0 for the elastic case) [Hz]'))
@@ -90,7 +90,7 @@
 
         return s
-    #}}}
-
-    def setdefaultparameters(self): #{{{
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
         # We setup an elastic love number computation by default
         self.nfreq = 1
@@ -125,7 +125,7 @@
         self.hypergeom_nz = 1
         self.hypergeom_z = 0
-    #}}}
-
-    def checkconsistency(self, md, solution, analyses): #{{{
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
         if 'LoveAnalysis' not in analyses:
             return md
@@ -178,7 +178,7 @@
 
         return md
-    #}}}
-
-    def marshall(self, prefix, md, fid): #{{{
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
         WriteData(fid, prefix, 'object', self, 'fieldname', 'nfreq', 'format', 'Integer')
         WriteData(fid, prefix, 'object', self, 'fieldname', 'frequencies', 'format', 'DoubleMat', 'mattype',3)
@@ -211,11 +211,11 @@
         WriteData(fid, prefix, 'object', self, 'fieldname', 'hypergeom_nz', 'format', 'Integer')
         WriteData(fid, prefix, 'object', self, 'fieldname', 'hypergeom_z', 'format', 'DoubleMat', 'mattype', 3)
-    #}}}
-
-    def extrude(self, md): #{{{
+    # }}}
+
+    def extrude(self, md):  # {{{
         return self
-    #}}}
-
-    def build_frequencies_from_time(self): #{{{
+    # }}}
+
+    def build_frequencies_from_time(self):  # {{{
         if not self.istemporal:
             raise RuntimeError('cannot build frequencies for temporal love numbers if love.istemporal==0')
@@ -230,3 +230,3 @@
                     self.frequencies[(i - 1) * 2 * self.n_temporal_iterations + j] = j * np.log(2) / self.time[i] / 2 / np.pi
         return self
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/lovenumbers.py
===================================================================
--- issm/trunk-jpl/src/m/classes/lovenumbers.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/lovenumbers.py	(revision 27458)
@@ -40,5 +40,5 @@
         referenceframe = options.getfieldvalue('referenceframe', 'CM')
         self.setdefaultparameters(maxdeg, referenceframe)
-    #}}}
+    # }}}
 
     def __repr__(self):  #{{{
@@ -58,5 +58,5 @@
         s += '{}\n'.format(fielddisplay(self, 'pmtf_ortho', 'Orthogonal component of the Polar Motion Transfer Function (couples x and y components, only used for Chandler Wobble)'))
         return s
-    #}}}
+    # }}}
 
     def setdefaultparameters(self, maxdeg, referenceframe):  #{{{
@@ -81,5 +81,5 @@
         self.timefreq = np.zeros(1) # Elastic case by default
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  #{{{
@@ -110,9 +110,9 @@
             raise ValueError('temporal love numbers must start with elastic response, i.e. timefreq[0] = 0')
         return md
-    #}}}
+    # }}}
 
     def defaultoutputs(self, md):  #{{{
         return[]
-    #}}}
+    # }}}
 
     def marshall(self, prefix, md, fid):  #{{{
@@ -134,7 +134,7 @@
         WriteData(fid, prefix, 'object', self, 'fieldname', 'istime', 'name', 'md.solidearth.lovenumbers.istime', 'format', 'Boolean')
         WriteData(fid, prefix, 'object', self, 'fieldname', 'timefreq', 'name', 'md.solidearth.lovenumbers.timefreq', 'format', 'DoubleMat', 'mattype', 1, 'scale', scale);
-    #}}}
+    # }}}
 
     def extrude(self, md):  #{{{
         return
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/m1qn3inversion.py
===================================================================
--- issm/trunk-jpl/src/m/classes/m1qn3inversion.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/m1qn3inversion.py	(revision 27458)
@@ -60,5 +60,5 @@
         else:
             raise Exception('constructor not supported')
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -91,5 +91,5 @@
         s += '{}\n'.format('   503: ThicknessAbsGradient')
         return s
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -111,5 +111,5 @@
 
         return self
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
@@ -125,5 +125,5 @@
             self.max_parameters = project3d(md, 'vector', self.max_parameters, 'type', 'node')
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/massfluxatgate.py
===================================================================
--- issm/trunk-jpl/src/m/classes/massfluxatgate.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/massfluxatgate.py	(revision 27458)
@@ -32,5 +32,5 @@
         self = options.AssignObjectFields(self)
 
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -41,13 +41,13 @@
         string = "%s\n%s" % (string, fielddisplay(self, 'profilename', 'name of file (shapefile or argus file) defining a profile (or gate)'))
         return string
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
         return self
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/masstransport.py
===================================================================
--- issm/trunk-jpl/src/m/classes/masstransport.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/masstransport.py	(revision 27458)
@@ -27,5 +27,5 @@
         self.setdefaultparameters()
 
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -38,15 +38,15 @@
         s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
         return s
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
         self.spcthickness = project3d(md, 'vector', self.spcthickness, 'type', 'node')
         return self
-    #}}}
+    # }}}
 
     def defaultoutputs(self, md):  # {{{
         return ['Thickness', 'Surface', 'Base']
 
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -62,5 +62,5 @@
         self.requested_outputs = ['default']
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/matdamageice.py
===================================================================
--- issm/trunk-jpl/src/m/classes/matdamageice.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/matdamageice.py	(revision 27458)
@@ -36,5 +36,5 @@
 
         self.setdefaultparameters()
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -58,5 +58,5 @@
         s += '{}\n'.format(fielddisplay(self, 'earth_density', 'Mantle density [kg m^-3]'))
         return s
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
@@ -64,5 +64,5 @@
         self.rheology_n = project3d(md, 'vector', self.rheology_n, 'type', 'element')
         return self
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -100,5 +100,5 @@
         self.earth_density = 5512  # average density of the Earth (kg/m^3)
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/materials.py
===================================================================
--- issm/trunk-jpl/src/m/classes/materials.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/materials.py	(revision 27458)
@@ -13,5 +13,5 @@
     """
 
-    def __init__(self, *args): #{{{
+    def __init__(self, *args):  # {{{
         self.nature = []
         if len(args) == 0:
@@ -68,7 +68,7 @@
 
         self.setdefaultparameters()
-    #}}}
-
-    def __repr__(self): #{{{
+    # }}}
+
+    def __repr__(self):  # {{{
         s = '   Materials:\n'
         for i in range(len(self.nature)):
@@ -119,7 +119,7 @@
                 raise RuntimeError('materials constructor error message: nature of the material not supported yet! (\'ice\' or \'litho\' or \'hydro\')')
         return s
-    #}}}
-
-    def setdefaultparameters(self): #{{{
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
         for i in range(len(self.nature)):
             nat = self.nature[i]
@@ -208,7 +208,7 @@
             # Average density of the Earth (kg/m^3)
             self.earth_density = 5512
-    #}}}
-
-    def checkconsistency(self, md, solution, analyses): #{{{
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
         for i in range(len(self.nature)):
             nat = self.nature[i]
@@ -261,7 +261,7 @@
 
         return md
-    #}}}
-
-    def marshall(self, prefix, md, fid): #{{{
+    # }}}
+
+    def marshall(self, prefix, md, fid):  # {{{
         #1: MatdamageiceEnum 2: MatestarEnum 3: MaticeEnum 4: MatenhancediceEnum 5: MaterialsEnum
         WriteData(fid, prefix, 'name', 'md.materials.nature', 'data', naturetointeger(self.nature), 'format', 'IntMat', 'mattype', 3)
@@ -314,7 +314,7 @@
                 raise RuntimeError('materials constructor error message: nature of the material not supported yet! (\'ice\' or \'litho\' or \'hydro\')')
         WriteData(fid, prefix, 'data', self.earth_density, 'name', 'md.materials.earth_density', 'format', 'Double')
-    #}}}
-
-    def extrude(self, md): #{{{
+    # }}}
+
+    def extrude(self, md):  # {{{
         for i in range(len(self.nature)):
             nat = self.nature[i]
@@ -323,8 +323,8 @@
                 self.rheology_n = project3d(md, 'vector', self.rheology_n, 'type', 'element')
             return self
-    #}}}
-#}}}
-
-def naturetointeger(strnat): #{{{
+    # }}}
+# }}}
+
+def naturetointeger(strnat):  # {{{
     intnat = np.zeros(len(strnat))
 
@@ -349,3 +349,3 @@
 
     return intnat
-#}}}
+# }}}
Index: issm/trunk-jpl/src/m/classes/mesh2d.py
===================================================================
--- issm/trunk-jpl/src/m/classes/mesh2d.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/mesh2d.py	(revision 27458)
@@ -41,5 +41,5 @@
         self.setdefaultparameters()
 
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -73,5 +73,5 @@
         string = "%s\n%s" % (string, fielddisplay(self, "scale_factor", "Projection correction for volume, area, etc. computation"))
         return string
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -84,5 +84,5 @@
 
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
@@ -111,13 +111,13 @@
     def domaintype(self):  # {{{
         return "2Dhorizontal"
-    #}}}
+    # }}}
 
     def dimension(self):  # {{{
         return 2
-    #}}}
+    # }}}
 
     def elementtype(self):  # {{{
         return "Tria"
-    #}}}
+    # }}}
 
     def marshall(self, prefix, md, fid):  # {{{
Index: issm/trunk-jpl/src/m/classes/mesh2dvertical.py
===================================================================
--- issm/trunk-jpl/src/m/classes/mesh2dvertical.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/mesh2dvertical.py	(revision 27458)
@@ -41,5 +41,5 @@
         self.setdefaultparameters()
 
-    #}}}
+    # }}}
     def __repr__(self):  # {{{
         string = "   2D tria Mesh (vertical):"
@@ -70,5 +70,5 @@
         string = "%s\n%s" % (string, fielddisplay(self, "scale_factor", "Projection correction for volume, area, etc. computation"))
         return string
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -81,5 +81,5 @@
 
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
@@ -109,13 +109,13 @@
     def domaintype(self):  # {{{
         return "2Dvertical"
-    #}}}
+    # }}}
 
     def dimension(self):  # {{{
         return 2
-    #}}}
+    # }}}
 
     def elementtype(self):  # {{{
         return "Tria"
-    #}}}
+    # }}}
 
     def vertexflags(self, value):  # {{{
@@ -124,5 +124,5 @@
         flags[pos] = 1
         return flags
-    #}}}
+    # }}}
 
     def marshall(self, prefix, md, fid):  # {{{
Index: issm/trunk-jpl/src/m/classes/mesh3dprisms.py
===================================================================
--- issm/trunk-jpl/src/m/classes/mesh3dprisms.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/mesh3dprisms.py	(revision 27458)
@@ -51,5 +51,5 @@
     #set defaults
         self.setdefaultparameters()
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -95,5 +95,5 @@
         string = "%s\n%s" % (string, fielddisplay(self, "scale_factor", "Projection correction for volume, area, etc. computation"))
         return string
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -106,5 +106,5 @@
 
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
@@ -130,13 +130,13 @@
     def domaintype(self):  # {{{
         return "3D"
-    #}}}
+    # }}}
 
     def dimension(self):  # {{{
         return 3
-    #}}}
+    # }}}
 
     def elementtype(self):  # {{{
         return "Penta"
-    #}}}
+    # }}}
 
     def marshall(self, prefix, md, fid):  # {{{
Index: issm/trunk-jpl/src/m/classes/mesh3dsurface.py
===================================================================
--- issm/trunk-jpl/src/m/classes/mesh3dsurface.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/mesh3dsurface.py	(revision 27458)
@@ -15,5 +15,5 @@
     """
 
-    def __init__(self, *args): #{{{
+    def __init__(self, *args):  # {{{
         self.x = np.nan
         self.y = np.nan
@@ -52,7 +52,7 @@
         else:
             raise RuntimeError('constructor not supported')
-    #}}}
-
-    def __repr__(self): #{{{
+    # }}}
+
+    def __repr__(self):  # {{{
         s = '   2D tria Mesh (surface):'
 
@@ -84,7 +84,7 @@
 
         return s
-    #}}}
-
-    def setdefaultparameters(self): #{{{
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
         #The connectivity is the average number of nodes linked to a given node 
         #through an edge. This connectivity is used to initially allocate 
@@ -93,7 +93,7 @@
         #test/NightlyRun/runme.py.
         self.average_vertex_connectivity = 25
-    #}}}
-
-    def checkconsistency(self, md, solution, analyses): #{{{
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
         md = checkfield(md, 'fieldname', 'mesh.x', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
         md = checkfield(md, 'fieldname', 'mesh.y', 'NaN', 1, 'Inf', 1, 'size', [md.mesh.numberofvertices])
@@ -115,7 +115,7 @@
 
         return md
-    #}}}
-
-    def marshall(self, prefix, md, fid): #{{{
+    # }}}
+
+    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_dimension', 'data', self.dimension(), 'format', 'Integer')
@@ -133,19 +133,19 @@
         WriteData(fid, prefix, 'object', self, 'fieldname', 'average_vertex_connectivity', 'format', 'Integer')
         WriteData(fid, prefix, 'object', self, 'fieldname', 'vertexonboundary', 'format', 'DoubleMat', 'mattype', 1)
-    #}}}
-
-    def domaintype(self): #{{{
+    # }}}
+
+    def domaintype(self):  # {{{
         return '3Dsurface'
-    #}}}
-
-    def dimension(self): #{{{
+    # }}}
+
+    def dimension(self):  # {{{
         return 2
-    #}}}
-
-    def elementtype(self): #{{{
+    # }}}
+
+    def elementtype(self):  # {{{
         return 'Tria'
-    #}}}
-
-    def processmesh(self, options): #{{{
+    # }}}
+
+    def processmesh(self, options):  # {{{
         isplanet = 1
         is2d = 0
@@ -157,7 +157,7 @@
 
         return x, y, z, elements, is2d, isplanet
-    #}}}
-
-    def savemodeljs(self, fid, modelname): #{{{
+    # }}}
+
+    def savemodeljs(self, fid, modelname):  # {{{
         fid.write('  #s.mesh = new mesh3dsurface()\n' % modelname)
         writejs1Darray(fid, [modelname, '.mesh.x'], self.x)
@@ -180,7 +180,7 @@
         writejs1Darray(fid, [modelname, '.mesh.extractedvertices'], self.extractedvertices)
         writejs1Darray(fid, [modelname, '.mesh.extractedelements'], self.extractedelements)
-    #}}}
-
-    def export(self, *args): #{{{
+    # }}}
+
+    def export(self, *args):  # {{{
         options = pairoptions(*args)
 
@@ -269,3 +269,3 @@
         #write style file:
         applyqgisstyle(filename, 'mesh')
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/miscellaneous.py
===================================================================
--- issm/trunk-jpl/src/m/classes/miscellaneous.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/miscellaneous.py	(revision 27458)
@@ -21,5 +21,5 @@
         self.setdefaultparameters()
 
-    #}}}
+    # }}}
     def __repr__(self):  # {{{
         string = '   miscellaneous parameters:'
@@ -29,9 +29,9 @@
         string = "%s\n%s" % (string, fielddisplay(self, 'dummy', 'empty field to store some data'))
         return string
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/misfit.py
===================================================================
--- issm/trunk-jpl/src/m/classes/misfit.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/misfit.py	(revision 27458)
@@ -41,5 +41,5 @@
         #do we cumulate misfit through time?
         self.cumulated = cumulated if cumulated is not None else float('NaN')
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -56,5 +56,5 @@
         string = "%s\n%s" % (string, fielddisplay(self, 'weights_string', 'string for weights for identification purposes'))
         return string
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
@@ -64,5 +64,5 @@
             self.observation = project3d(md, 'vector', self.observation, 'type', 'node')
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/mismipbasalforcings.py
===================================================================
--- issm/trunk-jpl/src/m/classes/mismipbasalforcings.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/mismipbasalforcings.py	(revision 27458)
@@ -21,5 +21,5 @@
         self.geothermalflux           = np.nan
         self.setdefaultparameters()
-    #}}}
+    # }}}
     def __repr__(self):  # {{{
         s = '   MISMIP + basal melt parameterization\n'
@@ -30,10 +30,10 @@
         s += '{}\n'.format(fielddisplay(self, "geothermalflux", "Geothermal heat flux [W / m^2]"))
         return s
-    #}}}
+    # }}}
     def extrude(self, md):  # {{{
         self.groundedice_melting_rate = project3d(md, 'vector', self.groundedice_melting_rate, 'type', 'node', 'layer', 1)
         self.geothermalflux = project3d(md, 'vector', self.geothermalflux, 'type', 'node', 'layer', 1)  #bedrock only gets geothermal flux
         return self
-    #}}}
+    # }}}
     def initialize(self, md):  # {{{
         if np.all(np.isnan(self.groundedice_melting_rate)):
@@ -44,5 +44,5 @@
             print("      no basalforcings.geothermalflux specified: values set as zero")
         return self
-    #}}}
+    # }}}
     def setdefaultparameters(self):  # {{{
         # default values for melting parameterization
@@ -51,5 +51,5 @@
         self.upperdepth_melt = -100.
         return self
-    #}}}
+    # }}}
     def checkconsistency(self, md, solution, analyses):  # {{{
         # Early return
Index: issm/trunk-jpl/src/m/classes/model.py
===================================================================
--- issm/trunk-jpl/src/m/classes/model.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/model.py	(revision 27458)
@@ -71,5 +71,5 @@
 from sampling import sampling
 from stochasticforcing import stochasticforcing
-#}}}
+# }}}
 
 
@@ -135,5 +135,5 @@
             planet = options.getfieldvalue('planet', 'earth')
             self.setdefaultparameters(planet)
-    #}}}
+    # }}}
 
     def __repr__(obj):  #{{{
@@ -186,5 +186,5 @@
         s = '%s\n%s' % (s, '%19s: %-23s -- %s' % ('stochasticforcing', '[%s %s]' % ('1x1', obj.stochasticforcing.__class__.__name__), 'stochasticity applied to model forcings'))
         return s
-    #}}}
+    # }}}
 
     def properties(self):  #{{{
@@ -237,5 +237,5 @@
             'stochasticforcing'
         ]
-    #}}}
+    # }}}
 
     def setdefaultparameters(self, planet):  #{{{
@@ -285,5 +285,5 @@
         self.private = private()
         self.stochasticforcing = stochasticforcing()
-    #}}}
+    # }}}
 
     def checkmessage(self, string):  #{{{
@@ -291,5 +291,5 @@
         self.private.isconsistent = False
         return self
-    #}}}
+    # }}}
     #@staticmethod
 
@@ -571,5 +571,5 @@
 
         return md2
-    #}}}
+    # }}}
 
     def extrude(md, *args):  #{{{
@@ -760,5 +760,5 @@
 
         return md
-    #}}}
+    # }}}
 
     def collapse(md):  #{{{
@@ -990,3 +990,3 @@
 
         return md
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/nodalvalue.py
===================================================================
--- issm/trunk-jpl/src/m/classes/nodalvalue.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/nodalvalue.py	(revision 27458)
@@ -33,5 +33,5 @@
         self.model_string = options.getfieldvalue('model_string', '')
         self.node = options.getfieldvalue('node', '')
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -42,9 +42,9 @@
         s += '{}\n'.format(fielddisplay(self, 'node', 'vertex index at which we retrieve the value'))
         return s
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
@@ -57,5 +57,5 @@
         md = checkfield(md, 'fieldname', 'self.node', 'field', self.node, 'values', range(md.mesh.numberofvertices))
         return md
-    #}}}
+    # }}}
 
     def marshall(self, prefix, md, fid):  #{{{
@@ -64,3 +64,3 @@
         WriteData(fid, prefix, 'data', self.model_string, 'name', 'md.nodalvalue.model_enum', 'format', 'String')
         WriteData(fid, prefix, 'data', self.node, 'name', 'md.nodalvalue.node', 'format', 'Integer')
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/offlinesolidearthsolution.py
===================================================================
--- issm/trunk-jpl/src/m/classes/offlinesolidearthsolution.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/offlinesolidearthsolution.py	(revision 27458)
@@ -13,5 +13,5 @@
     """
 
-    def __init__(self, *args): #{{{
+    def __init__(self, *args):  # {{{
         self.displacementeast = None
         self.displacementnorth = None
@@ -23,7 +23,7 @@
         else:
             raise RuntimeError('constructor not supported')
-    #}}}
+    # }}}
 
-    def __repr__(self): #{{{
+    def __repr__(self):  # {{{
         s = '         units for time series is (yr)\n       external: offlinesolidearth solution\n'
         s += '{}\n'.format(fielddisplay(self, 'displacementeast', 'solid-Earth Eastwards bedrock displacement series (m)'))
@@ -33,14 +33,14 @@
 
         return s
-    #}}}
+    # }}}
 
-    def setdefaultparameters(self): #{{{
+    def setdefaultparameters(self):  # {{{
         self.displacementeast = []
         self.displacementnorth = []
         self.displacementup = []
         self.geoid = []
-    #}}}
+    # }}}
 
-    def checkconsistency(self, md, solution, analyses): #{{{
+    def checkconsistency(self, md, solution, analyses):  # {{{
         if ('SealevelchangeAnalysis' not in analyses) or ((solution=='TransientSolution') and (md.solidearth.settings.isgrd==1)): 
             print('offlinesolidearthsolution checkconsistency error message: trying to run GRD patterns while supplying an offline solution for those patterns!')
@@ -50,7 +50,7 @@
         md = checkfield(md, 'fieldname', 'solidearth.external.displacementup', 'Inf', 1, 'timeseries', 1)
         md = checkfield(md, 'fieldname', 'solidearth.external.geoid', 'Inf', 1, 'timeseries', 1)
-    #}}}
+    # }}}
 
-    def marshall(self, prefix, md, fid): #{{{
+    def marshall(self, prefix, md, fid):  # {{{
         yts = md.constants.yts
 
@@ -79,7 +79,7 @@
         WriteData(fid, prefix, 'object', self, 'fieldname', 'displacementnorth', 'data', displacementnorth_rate,'format', 'DoubleMat', 'name', 'md.solidearth.external.displacementnorth', 'mattype', 1, 'scale', 1 / yts,'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts);
         WriteData(fid, prefix, 'object', self, 'fieldname', 'geoid', 'data', geoid_rate,'format', 'DoubleMat', 'name', 'md.solidearth.external.geoid', 'mattype', 1, 'scale', 1 / yts,'timeserieslength', md.mesh.numberofvertices + 1, 'yts', yts);
-    #}}}
+    # }}}
 
-    def extrude(self, md): #{{{
+    def extrude(self, md):  # {{{
         return self
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/organizer.py
===================================================================
--- issm/trunk-jpl/src/m/classes/organizer.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/organizer.py	(revision 27458)
@@ -72,5 +72,5 @@
                 raise TypeError("trunkprefix should not have any white space")
             self.trunkprefix = trunkprefix
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -83,5 +83,5 @@
             for step in self.steps:
                 s += "%s\n" % "   step  #%2i: '%s'", step['id'], step['string']
-    #}}}
+    # }}}
 
     def load(self, string):  # {{{
@@ -100,5 +100,5 @@
 
         return md
-    #}}}
+    # }}}
 
     def loadmodel(self, string):  # {{{
@@ -128,5 +128,5 @@
         else:
             raise IOError("Could not find '%s'" % path1)
-    #}}}
+    # }}}
 
     def perform(self, string):  # {{{
@@ -165,5 +165,5 @@
 
         return bool
-    #}}}
+    # }}}
 
     def savemodel(self, md, name='default'):  # {{{
@@ -188,3 +188,3 @@
     #save model
         savevars(name, 'md', md)
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/outputdefinition.py
===================================================================
--- issm/trunk-jpl/src/m/classes/outputdefinition.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/outputdefinition.py	(revision 27458)
@@ -15,5 +15,5 @@
     def __init__(self):  # {{{
         self.definitions = []
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -23,5 +23,5 @@
 
         return string
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
@@ -30,9 +30,9 @@
 
         return self
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/pairoptions.py
===================================================================
--- issm/trunk-jpl/src/m/classes/pairoptions.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/pairoptions.py	(revision 27458)
@@ -99,5 +99,5 @@
     # }}}
 
-    def displayunused(self): #{{{
+    def displayunused(self):  # {{{
         """DISPLAYUNUSED - display unused options
         """
Index: issm/trunk-jpl/src/m/classes/plotoptions.py
===================================================================
--- issm/trunk-jpl/src/m/classes/plotoptions.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/plotoptions.py	(revision 27458)
@@ -18,5 +18,5 @@
 
         self.buildlist(*arg)
-    #}}}
+    # }}}
 
     def __repr__(self):  #{{{
@@ -32,5 +32,5 @@
             s += "    list: empty\n"
         return s
-    #}}}
+    # }}}
 
     def buildlist(self, *arg):  #{{{
@@ -125,3 +125,3 @@
                 if j + 1 > numberofplots:
                     print(("WARNING: too many instances of '%s' in options" % rawlist[i][0]))
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/private.py
===================================================================
--- issm/trunk-jpl/src/m/classes/private.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/private.py	(revision 27458)
@@ -20,5 +20,5 @@
         self.setdefaultparameters()
 
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -30,9 +30,9 @@
         string = "%s\n%s" % (string, fielddisplay(self, 'solution', 'type of solution launched'))
         return string
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/qmu.py
===================================================================
--- issm/trunk-jpl/src/m/classes/qmu.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/qmu.py	(revision 27458)
@@ -44,5 +44,5 @@
 
         self.setdefaultparameters()
-    #}}}
+    # }}}
     def __repr__(self):  # {{{
         s = '   qmu parameters:\n'
@@ -128,9 +128,9 @@
     def extrude(self, md):  # {{{
         return self
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/qmu/histogram_bin_uncertain.py
===================================================================
--- issm/trunk-jpl/src/m/classes/qmu/histogram_bin_uncertain.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/qmu/histogram_bin_uncertain.py	(revision 27458)
@@ -27,13 +27,13 @@
     '''
 
-    def __init__(self): #{{{
+    def __init__(self):  # {{{
         self.descriptor = ''
         self.pairs_per_variable = []
         self.abscissas = []
         self.counts = []
-    #}}}
-
-    @staticmethod
-    def histogram_bin_uncertain(*args): #{{{
+    # }}}
+
+    @staticmethod
+    def histogram_bin_uncertain(*args):  # {{{
         nargin = len(args)
 
@@ -69,5 +69,5 @@
 
     @staticmethod
-    def __repr__(hbu): #{{{
+    def __repr__(hbu):  # {{{
         s = ""
         for i in range(len(hbu)):
@@ -79,9 +79,9 @@
 
         return s
-    #}}}
-
-    def checkconsistency(self, md, solution, analyses): #{{{
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
         return
-    #}}}
+    # }}}
 
     #virtual functions needed by qmu processing algorithms
@@ -89,5 +89,5 @@
 
     @staticmethod
-    def prop_desc(hbu, dstr): #{{{
+    def prop_desc(hbu, dstr):  # {{{
         desc = ['' for i in range(np.size(hbu))]
         for i in range(np.size(hbu)):
@@ -102,37 +102,37 @@
 
         return desc
-    #}}}
-
-    @staticmethod
-    def prop_mean(hbu): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_mean(hbu):  # {{{
         mean = np.zeros(np.size(hbu))
         for i in range(np.size(hbu)):
             mean[i] = hbu[i].mean
         return mean
-    #}}}
-
-    @staticmethod
-    def prop_stddev(hbu): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_stddev(hbu):  # {{{
         stddev = np.zeros(np.size(hbu))
         for i in range(np.size(hbu)):
             stddev[i] = hbu[i].stddev
         return stddev
-    #}}}
-
-    @staticmethod
-    def prop_lower(hbu): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_lower(hbu):  # {{{
         lower = []
         return
-    #}}}
-
-    @staticmethod
-    def prop_upper(hbu): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_upper(hbu):  # {{{
         upper = []
         return upper
-    #}}}
+    # }}}
 
     #default
     @staticmethod
-    def prop_abscissas(hbu): #{{{
+    def prop_abscissas(hbu):  # {{{
         abscissas = []
         for i in range(len(hbu)):
@@ -140,8 +140,8 @@
         abscissas = allequal(abscissas, -np.inf)
         return abscissas
-    #}}}
-
-    @staticmethod
-    def prop_pairs_per_variable(hbu): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_pairs_per_variable(hbu):  # {{{
         pairs_per_variable = np.zeros((1, len(hbu)))
         for i in range(len(hbu)):
@@ -149,8 +149,8 @@
         abscissas = allequal(pairs_per_variable, -np.inf)
         return pairs_per_variable
-    #}}}
-
-    @staticmethod
-    def prop_counts(hbu): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_counts(hbu):  # {{{
         counts = []
         for i in range(len(hbu)):
@@ -158,37 +158,37 @@
         counts = allequal(counts, -np.inf)
         return counts
-    #}}}
-
-    @staticmethod
-    def prop_initpt(hbu): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_initpt(hbu):  # {{{
         initpt = []
         return initpt
-    #}}}
-
-    @staticmethod
-    def prop_initst(hbu): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_initst(hbu):  # {{{
         inist = []
         return inist
-    #}}}
-
-    @staticmethod
-    def prop_stype(hbu): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_stype(hbu):  # {{{
         stype = []
         return stype
-    #}}}
-
-    @staticmethod
-    def prop_scale(hbu): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_scale(hbu):  # {{{
         scale = []
         return scale
-    #}}}
+    # }}}
 
     #new methods:
-    def isscaled(self): #{{{
+    def isscaled(self):  # {{{
         if strncmp(self.descriptor, 'scaled_', 7):
             return True
         else:
             return False
-    #}}}
+    # }}}
 
     @staticmethod
@@ -204,3 +204,3 @@
         if len(hbu) > 0:
             vlist_write(fidi, 'histogram_bin_uncertain', 'hbu', hbu)
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/qmu/normal_uncertain.py
===================================================================
--- issm/trunk-jpl/src/m/classes/qmu/normal_uncertain.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/qmu/normal_uncertain.py	(revision 27458)
@@ -39,5 +39,5 @@
     """
 
-    def __init__(self): #{{{
+    def __init__(self):  # {{{
         self.descriptor = ''
         self.mean       = np.nan
@@ -45,8 +45,8 @@
         self.partition  = []
         self.nsteps     = 0
-    #}}}
-
-    @staticmethod
-    def normal_uncertain(*args): #{{{
+    # }}}
+
+    @staticmethod
+    def normal_uncertain(*args):  # {{{
         nargin = len(args)
 
@@ -91,7 +91,7 @@
 
         return [nuv] # Always return a list, so we have something akin to a MATLAB single row matrix
-    #}}}
-
-    def __repr__(self): #{{{
+    # }}}
+
+    def __repr__(self):  # {{{
         string = '   normal uncertain variable: '
         string = "%s\n%s" % (string, fielddisplay(self, 'descriptor', 'name tag'))
@@ -103,14 +103,14 @@
 
         return string
-    #}}}
-
-    def __len__(self): #{{{
+    # }}}
+
+    def __len__(self):  # {{{
         if type(self.mean) in [list, np.ndarray]:
             return len(self.mean)
         else:
             return 1
-    #}}}
-
-    def checkconsistency(self, md, solution, analyses): #{{{
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  # {{{
         md = checkfield(md, 'field', self.mean, 'fieldname', 'normal_uncertain.mean', 'NaN', 1, 'Inf', 1, '>=', 0)
         md = checkfield(md, 'field', self.stddev, 'fieldname', 'normal_uncertain.stddev', 'NaN', 1, 'Inf', 1, '>=', 0)
@@ -139,5 +139,5 @@
             if partmax > nmax:
                 raise Exception("normal_uncertain error message: partition vector's values cannot go over the number of vertices or elements")
-    #}}}
+    # }}}
 
     #virtual functions needed by qmu processing algorithms
@@ -145,5 +145,5 @@
 
     @staticmethod
-    def prop_desc(nuv, dstr): #{{{
+    def prop_desc(nuv, dstr):  # {{{
         desc = ['' for i in range(np.size(nuv))]
         for i in range(np.size(nuv)):
@@ -158,90 +158,90 @@
 
         return desc
-    #}}}
-
-    @staticmethod
-    def prop_mean(nuv): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_mean(nuv):  # {{{
         mean = np.zeros(np.size(nuv))
         for i in range(np.size(nuv)):
             mean[i] = nuv[i].mean
         return mean
-    #}}}
-
-    @staticmethod
-    def prop_stddev(nuv): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_stddev(nuv):  # {{{
         stddev = np.zeros(np.size(nuv))
         for i in range(np.size(nuv)):
             stddev[i] = nuv[i].stddev
         return stddev
-    #}}}
-
-    @staticmethod
-    def prop_lower(nuv): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_lower(nuv):  # {{{
         lower = []
         return lower
-    #}}}
-
-    @staticmethod
-    def prop_upper(nuv): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_upper(nuv):  # {{{
         upper = []
         return upper
-    #}}}
+    # }}}
 
     #default
     @staticmethod
-    def prop_abscissas(hbu): #{{{
+    def prop_abscissas(hbu):  # {{{
         abscissas = []
         return abscissas
-    #}}}
-
-    @staticmethod
-    def prop_pairs_per_variable(hbu): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_pairs_per_variable(hbu):  # {{{
         pairs_per_variable = []
         return pairs_per_variable
-    #}}}
-
-    @staticmethod
-    def prop_counts(hbu): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_counts(hbu):  # {{{
         counts = []
         return counts
-    #}}}
-    @staticmethod
-    def prop_initpt(nuv): #{{{
+    # }}}
+    @staticmethod
+    def prop_initpt(nuv):  # {{{
         initpt = []
         return initpt
-    #}}}
-
-    @staticmethod
-    def prop_initst(nuv): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_initst(nuv):  # {{{
         inist = []
         return inist
-    #}}}
-
-    @staticmethod
-    def prop_stype(nuv): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_stype(nuv):  # {{{
         stype = []
         return stype
-    #}}}
-
-    @staticmethod
-    def prop_scale(nuv): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_scale(nuv):  # {{{
         scale = []
         return scale
-    #}}}
+    # }}}
 
     #new methods:
-    def isdistributed(self): #{{{
+    def isdistributed(self):  # {{{
         if strncmp(self.descriptor, 'distributed_', 12):
             return True
         else:
             return False
-    #}}}
+    # }}}
     
-    def isscaled(self): #{{{
+    def isscaled(self):  # {{{
         if strncmp(self.descriptor, 'scaled_', 7):
             return True
         else:
             return False
-    #}}}
+    # }}}
 
     @staticmethod
@@ -257,4 +257,4 @@
         if len(nuv) > 0:
             vlist_write(fidi, 'normal_uncertain', 'nuv', nuv)
-    #}}}
-
+    # }}}
+
Index: issm/trunk-jpl/src/m/classes/qmu/response_function.py
===================================================================
--- issm/trunk-jpl/src/m/classes/qmu/response_function.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/qmu/response_function.py	(revision 27458)
@@ -103,5 +103,5 @@
         return [rf] # Always return a list, so we have something akin to a MATLAB single row matrix
 
-    def __repr__(rf): #{{{
+    def __repr__(rf):  # {{{
         # display the object
         string = 'class "response_function" object = \n'
@@ -116,12 +116,12 @@
 
         return string
-    #}}}
-
-    def __len__(self): #{{{
+    # }}}
+
+    def __len__(self):  # {{{
         return max(len(self.respl), len(self.probl), len(self.rell), len(self.grell))
-    #}}}
-
-    @staticmethod
-    def prop_desc(rf, dstr): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_desc(rf, dstr):  # {{{
         desc = ['' for i in range(np.size(rf))]
         for i in range(np.size(rf)):
@@ -135,41 +135,41 @@
         desc = allempty(desc)
         return desc
-    #}}}
-
-    @staticmethod
-    def prop_stype(rf): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_stype(rf):  # {{{
         stype = []
         return stype
-    #}}}
-
-    @staticmethod
-    def prop_scale(rf): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_scale(rf):  # {{{
         scale = []
         return scale
-    #}}}
-
-    @staticmethod
-    def prop_weight(rf): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_weight(rf):  # {{{
         weight = []
         return weight
-    #}}}
-
-    @staticmethod
-    def prop_lower(rf): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_lower(rf):  # {{{
         lower = []
         return lower
-    #}}}
-
-    @staticmethod
-    def prop_upper(rf): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_upper(rf):  # {{{
         upper = []
         return upper
-    #}}}
-
-    @staticmethod
-    def prop_target(rf): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_target(rf):  # {{{
         target = []
         return target
-    #}}}
+    # }}}
 
     @staticmethod
@@ -191,10 +191,10 @@
 
     #new methods:
-    def isscaled(self): #{{{
+    def isscaled(self):  # {{{
         if strncmpi(self.descriptor, 'scaled_', 7):
             return True
         else:
             return False
-    #}}}
+    # }}}
 
     @staticmethod
Index: issm/trunk-jpl/src/m/classes/qmu/uniform_uncertain.py
===================================================================
--- issm/trunk-jpl/src/m/classes/qmu/uniform_uncertain.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/qmu/uniform_uncertain.py	(revision 27458)
@@ -39,5 +39,5 @@
             )
     '''
-    def __init__(self): #{{{
+    def __init__(self):  # {{{
         self.descriptor = ''
         self.lower      = -np.inf
@@ -45,8 +45,8 @@
         self.partition  = []
         self.nsteps     = 0
-    #}}}
-
-    @staticmethod
-    def uniform_uncertain(*args): #{{{
+    # }}}
+
+    @staticmethod
+    def uniform_uncertain(*args):  # {{{
         nargin = len(args)
 
@@ -91,7 +91,7 @@
 
         return [uuv] # Always return a list, so we have something akin to a MATLAB single row matrix
-    #}}}
-
-    def __repr__(self): #{{{
+    # }}}
+
+    def __repr__(self):  # {{{
         string = '   uniform uncertain variable: '
         string = "%s\n%s" % (string, fielddisplay(self, 'descriptor', 'name tag'))
@@ -103,14 +103,14 @@
 
         return string
-    #}}}
-
-    def __len__(self): #{{{
+    # }}}
+
+    def __len__(self):  # {{{
         if type(self.lower) in [list, np.ndarray]:
             return len(self.lower)
         else:
             return 1
-    #}}}
+    # }}}
     
-    def checkconsistency(self, md, solution, analyses): #{{{
+    def checkconsistency(self, md, solution, analyses):  # {{{
         md = checkfield(md, 'field', self.upper, 'fieldname', 'uniform_uncertain.upper', 'NaN', 1, 'Inf', 1, '>', self.lower, 'numel', len(self.lower))
         md = checkfield(md, 'field', self.lower, 'fieldname', 'uniform_uncertain.upper', 'NaN', 1, 'Inf', 1, '<', self.upper, 'numel', len(self.upper))
@@ -140,5 +140,5 @@
             if partmax > nmax:
                 raise Exception("uniform_uncertain error message: partition vector's values cannot go over the number of vertices or elements")
-    #}}}
+    # }}}
 
     #virtual functions needed by qmu processing algorithms:
@@ -146,5 +146,5 @@
 
     @staticmethod
-    def prop_desc(uuv, dstr): #{{{
+    def prop_desc(uuv, dstr):  # {{{
         desc = ['' for i in range(np.size(uuv))]
         for i in range(np.size(uuv)):
@@ -159,20 +159,20 @@
 
         return desc
-    #}}}
-
-    @staticmethod
-    def prop_stddev(uuv): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_stddev(uuv):  # {{{
         stddev = []
         return stddev
-    #}}}
-
-    @staticmethod
-    def prop_mean(uuv): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_mean(uuv):  # {{{
         mean = []
         return mean
-    #}}}
-
-    @staticmethod
-    def prop_lower(uuv): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_lower(uuv):  # {{{
         lower = np.zeros(np.size(uuv))
         for i in range(np.size(uuv)):
@@ -182,8 +182,8 @@
 
         return lower
-    #}}}
-
-    @staticmethod
-    def prop_upper(uuv): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_upper(uuv):  # {{{
         upper = np.zeros(np.size(uuv))
         for i in range(np.size(uuv)):
@@ -193,58 +193,58 @@
 
         return upper
-    #}}}
-
-    @staticmethod
-    def prop_abscissas(hbu): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_abscissas(hbu):  # {{{
         abscissas = []
         return abscissas
-    #}}}
-
-    @staticmethod
-    def prop_pairs_per_variable(hbu): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_pairs_per_variable(hbu):  # {{{
         pairs_per_variable = []
         return pairs_per_variable
-    #}}}
-
-    @staticmethod
-    def prop_counts(hbu): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_counts(hbu):  # {{{
         counts = []
         return counts
-    #}}}
-
-    @staticmethod
-    def prop_initpt(uuv): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_initpt(uuv):  # {{{
         initpt = []
         return initpt
-    #}}}
-
-    @staticmethod
-    def prop_initst(uuv): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_initst(uuv):  # {{{
         initst = []
         return initst
-    #}}}
-
-    @staticmethod
-    def prop_stype(uuv): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_stype(uuv):  # {{{
         stype = []
         return stype
-    #}}}
-
-    @staticmethod
-    def prop_scale(uuv): #{{{
+    # }}}
+
+    @staticmethod
+    def prop_scale(uuv):  # {{{
         scale = []
         return scale
-    #}}}
+    # }}}
 
     #new methods:
-    def isscaled(self): #{{{
+    def isscaled(self):  # {{{
         if strncmp(self.descriptor, 'scaled_', 7):
             return True
         else:
             return False
-    #}}}
-
-    @staticmethod
-    def dakota_write(fidi, dvar): #{{{
+    # }}}
+
+    @staticmethod
+    def dakota_write(fidi, dvar):  # {{{
         # possible namespace pollution, the above import seems not to work
         from vlist_write import vlist_write
@@ -257,3 +257,3 @@
         if len(uuv) > 0:
             vlist_write(fidi, 'uniform_uncertain', 'uuv', uuv)
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/qmustatistics.py
===================================================================
--- issm/trunk-jpl/src/m/classes/qmustatistics.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/qmustatistics.py	(revision 27458)
@@ -44,5 +44,5 @@
         else:
             raise Exception('constructor not supported')
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -56,5 +56,5 @@
             s += '{}\n'.format(self.method[i])
         return s
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -63,5 +63,5 @@
         self.ndirectories = 50  # Number of output directories; should be < numcpus
         return self
-    #}}}
+    # }}}
 
     @staticmethod
@@ -91,12 +91,12 @@
                 if m['steps'][s] > md.mesh.numberofvertices:
                     raise Exception('qmustatistics consistency check error: qmu.statistics.method[{}][\'steps\'][{}] should be < md.mesh.numberofvertices!'.format(i, s))
-    #}}}
+    # }}}
 
-    def defaultoutputs(self, md): #{{{
+    def defaultoutputs(self, md):  # {{{
         outputs = []
         return outputs
-    #}}}
+    # }}}
 
-    def marshall(self, prefix, md, fid): #{{{
+    def marshall(self, prefix, md, fid):  # {{{
         if self.method[0]['name'] == 'None':
             WriteData(fid, prefix, 'name', 'md.qmu.statistics', 'data', 0, 'format', 'Boolean')
@@ -124,11 +124,11 @@
                 else:
                     raise Exception('qmustatistics marshall error message: unknown type ''{}'' for qmu.statistics.method[{}]'.format(m['name'], i))
-    #}}}
+    # }}}
 
-    def extrude(self, md): #{{{
+    def extrude(self, md):  # {{{
         return self
-    #}}}
+    # }}}
 
-    def addmethod(self, *args): #{{{
+    def addmethod(self, *args):  # {{{
         """ADDMETHOD - Add new, empty method or passed dict to self.method
         """
@@ -140,3 +140,3 @@
         else:
             raise Exception('Number of args should be 0 (appends empty dict to methods member) or 1 (appends passed dict to methods member)')
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/radaroverlay.py
===================================================================
--- issm/trunk-jpl/src/m/classes/radaroverlay.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/radaroverlay.py	(revision 27458)
@@ -18,5 +18,5 @@
         self.setdefaultparameters()
 
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -26,7 +26,7 @@
         string = "%s\n%s" % (string, fielddisplay(self, 'y', 'corresponding y coordinates [m]'))
         return string
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
         return self
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/regionaloutput.py
===================================================================
--- issm/trunk-jpl/src/m/classes/regionaloutput.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/regionaloutput.py	(revision 27458)
@@ -50,5 +50,5 @@
         #     raise IOError('regionaloutput error message: ''mask'' field or ''maskexpstring'' and ''model'' fields should be defined!')
 
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -60,14 +60,14 @@
         string = "%s\n%s" % (string, fielddisplay(self, 'maskexpstring', 'name of Argus file that can be passed in to define the regional mask'))
         return string
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
         self.mask = project3d(md, 'vector', self.mask, 'type', 'node')
         return self
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
         return self
-    #}}}
+    # }}}
 
     def setmaskfromexp(self, md):  # {{{
Index: issm/trunk-jpl/src/m/classes/results.py
===================================================================
--- issm/trunk-jpl/src/m/classes/results.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/results.py	(revision 27458)
@@ -15,5 +15,5 @@
     def __init__(self):  #{{{
         pass
-    #}}}
+    # }}}
 
     def __repr__(self):  #{{{
@@ -30,19 +30,19 @@
 
         return s
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  #{{{
         #do nothing
         return self
-    #}}}
-
-    def checkconsistency(self, md, solution, analyses):  #{{{
-        return md
-    #}}}
-
-    def marshall(self, prefix, md, fid):  #{{{
-        pass
-    #}}}
-#}}}
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  #{{{
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  #{{{
+        pass
+    # }}}
+# }}}
 
 
@@ -59,5 +59,5 @@
     def __init__(self):  #{{{
         pass
-    #}}}
+    # }}}
 
     def __repr__(self):  #{{{
@@ -71,23 +71,23 @@
             s += '\n'
         return s
-    #}}}
+    # }}}
 
     def __len__(self):  #{{{
         return len(self.__dict__.keys())
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  #{{{
         #do nothing
         return self
-    #}}}
-
-    def checkconsistency(self, md, solution, analyses):  #{{{
-        return md
-    #}}}
-
-    def marshall(self, prefix, md, fid):  #{{{
-        pass
-    #}}}
-#}}}
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  #{{{
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  #{{{
+        pass
+    # }}}
+# }}}
 
 
@@ -117,9 +117,9 @@
         else:
             self.steps = [solutionstep()]
-    #}}}
+    # }}}
 
     def __deepcopy__(self, memo):  #{{{
         return solution(deepcopy(self.steps, memo))
-    #}}}
+    # }}}
 
     def __repr__(self):  #{{{
@@ -136,9 +136,9 @@
 
         return s
-    #}}}
+    # }}}
 
     def __len__(self):  #{{{
         return len(self.steps)
-    #}}}
+    # }}}
 
     def __getattr__(self, key):  #{{{
@@ -151,5 +151,5 @@
         # else:
         #     raise Exception('<results>.<solution> error: Currently, can only get a field if we are not working with a transient solution.')
-    #}}}
+    # }}}
 
     def __getitem__(self, index):  #{{{
@@ -161,18 +161,18 @@
         else:
             raise Exception('<results>.<solution>: either request a specific result by index or make sure that there is only a single result for this solution (cannot be a transient solution)')
-    #}}}
-
-    def setdefaultparameters(self):  #{{{
-        return self
-    #}}}
-
-    def checkconsistency(self, md, solution, analyses):  #{{{
-        return md
-    #}}}
-
-    def marshall(self, prefix, md, fid):  #{{{
-        pass
-    #}}}
-#}}}
+    # }}}
+
+    def setdefaultparameters(self):  #{{{
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  #{{{
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  #{{{
+        pass
+    # }}}
+# }}}
 
 
@@ -186,5 +186,5 @@
     def __init__(self, *args):  #{{{
         pass
-    #}}}
+    # }}}
 
     def __repr__(self):  #{{{
@@ -195,9 +195,9 @@
 
         return s
-    #}}}
+    # }}}
 
     def getfieldnames(self):  #{{{
         return self.__dict__.keys()
-    #}}}
+    # }}}
 
     def getlongestfieldname(self):  #{{{
@@ -209,16 +209,16 @@
 
         return maxlength
-    #}}}
-
-    def setdefaultparameters(self):  #{{{
-        return self
-    #}}}
-
-    def checkconsistency(self, md, solution, analyses):  #{{{
-        return md
-    #}}}
-
-    def marshall(self, prefix, md, fid):  #{{{
-        pass
-    #}}}
-#}}}
+    # }}}
+
+    def setdefaultparameters(self):  #{{{
+        return self
+    # }}}
+
+    def checkconsistency(self, md, solution, analyses):  #{{{
+        return md
+    # }}}
+
+    def marshall(self, prefix, md, fid):  #{{{
+        pass
+    # }}}
+# }}}
Index: issm/trunk-jpl/src/m/classes/rifts.py
===================================================================
--- issm/trunk-jpl/src/m/classes/rifts.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/rifts.py	(revision 27458)
@@ -22,5 +22,5 @@
         self.setdefaultparameters()
 
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -30,9 +30,9 @@
         string = "%s\n%s" % (string, fielddisplay(self, 'riftproperties', ''))
         return string
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/rotational.py
===================================================================
--- issm/trunk-jpl/src/m/classes/rotational.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/rotational.py	(revision 27458)
@@ -21,5 +21,5 @@
         else:
             raise Exception('constructor not supported')
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -29,5 +29,5 @@
         s += '{}\n'.format(fielddisplay(self, 'angularvelocity', 'mean rotational velocity of earth [per second]'))
         return s
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -39,5 +39,5 @@
         self.angularvelocity = 7.2921 * pow(10, -5) # [s^-1]
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
@@ -48,9 +48,9 @@
         md = checkfield(md, 'fieldname', 'solidearth.rotational.angularvelocity', 'NaN', 1, 'Inf', 1)
         return md
-    #}}}
+    # }}}
 
     def defaultoutputs(self, md):  #{{{
         return []
-    #}}}
+    # }}}
 
     def marshall(self, prefix, md, fid):  #{{{
@@ -58,7 +58,7 @@
         WriteData(fid, prefix, 'object', self, 'fieldname', 'polarmoi', 'name', 'md.solidearth.rotational.polarmoi', 'format', 'Double')
         WriteData(fid, prefix, 'object', self, 'fieldname', 'angularvelocity', 'name', 'md.solidearth.rotational.angularvelocity', 'format', 'Double')
-    #}}}
+    # }}}
 
     def extrude(self, md):  #{{{
         return self
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/sampling.py
===================================================================
--- issm/trunk-jpl/src/m/classes/sampling.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/sampling.py	(revision 27458)
@@ -16,5 +16,5 @@
     """
 
-    def __init__(self, *args): #{{{
+    def __init__(self, *args):  # {{{
         self.kappa = np.nan
         self.tau = 0
@@ -30,7 +30,7 @@
         else:
             raise RuntimeError('constructor not supported')
-    #}}}
+    # }}}
 
-    def __repr__(self): #{{{
+    def __repr__(self):  # {{{
         s = '   Sampling parameters::\n'
         s += '      Parameters of PDE operator (kappa^2 I-Laplacian)^(alpha/2)(tau):\n'
@@ -51,7 +51,7 @@
 
         return s
-    #}}}
+    # }}}
 
-    def setdefaultparameters(self): #{{{
+    def setdefaultparameters(self):  # {{{
 
         # Apply Robin boundary conditions
@@ -68,11 +68,11 @@
 
         return self
-    #}}}
+    # }}}
 
-    def defaultoutputs(self, md): #{{{
+    def defaultoutputs(self, md):  # {{{
         return []
-    #}}}
+    # }}}
 
-    def checkconsistency(self, md, solution, analyses): #{{{
+    def checkconsistency(self, md, solution, analyses):  # {{{
         if ('SamplingAnalysis' not in analyses):
             return md
@@ -89,7 +89,7 @@
 
         return md
-    #}}}
+    # }}}
 
-    def marshall(self, prefix, md, fid): #{{{
+    def marshall(self, prefix, md, fid):  # {{{
         WriteData(fid, prefix, 'object', self, 'fieldname', 'kappa', 'format', 'DoubleMat', 'mattype', 1)
         WriteData(fid, prefix, 'object', self, 'fieldname', 'tau', 'format', 'DoubleMat', 'mattype', 1)
@@ -107,7 +107,7 @@
             outputs = outputscopy
         WriteData(fid, prefix, 'data', outputs, 'name', 'md.sampling.requested_outputs', 'format', 'StringArray')
-    #}}}
+    # }}}
 
-    def setparameters(self, md, lc, sigma): #{{{
+    def setparameters(self, md, lc, sigma):  # {{{
         nu = self.alpha - 1
         KAPPA = pow((8 * nu), 0.5) / lc
@@ -117,3 +117,3 @@
 
         return md
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/sealevelmodel.py
===================================================================
--- issm/trunk-jpl/src/m/classes/sealevelmodel.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/sealevelmodel.py	(revision 27458)
@@ -163,5 +163,5 @@
     # }}}
 
-    def ncaps(self): #{{{
+    def ncaps(self):  # {{{
         return len(self.icecaps)
     # }}}
@@ -188,5 +188,5 @@
     # }}}
 
-    def intersections2d(self, *args): #{{{
+    def intersections2d(self, *args):  # {{{
         options = pairoptions(*args)
         force = options.getfieldvalue('force', 0)
Index: issm/trunk-jpl/src/m/classes/slr.py
===================================================================
--- issm/trunk-jpl/src/m/classes/slr.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/slr.py	(revision 27458)
@@ -47,5 +47,5 @@
         #set defaults
         self.setdefaultparameters()
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -116,5 +116,5 @@
         self.planetradius = planetradius('earth')
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/spatiallinearbasalforcings.py
===================================================================
--- issm/trunk-jpl/src/m/classes/spatiallinearbasalforcings.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/spatiallinearbasalforcings.py	(revision 27458)
@@ -15,5 +15,5 @@
     """
 
-    def __init__(self, *args): #{{{
+    def __init__(self, *args):  # {{{
         nargs = len(args)
         if nargs == 0:
@@ -43,7 +43,7 @@
         else:
             raise Exception('constructor not supported')
-    #}}}
+    # }}}
 
-    def __repr__(self): #{{{
+    def __repr__(self):  # {{{
         s = '   spatial linear basal forcings parameters:\n'
         s += '{}\n'.format(fielddisplay(self, 'groundedice_melting_rate', 'basal melting rate (positive if melting) [m/yr]'))
@@ -55,7 +55,7 @@
         s += '{}\n'.format(fielddisplay(self, 'geothermalflux', 'geothermal heat flux [W/m^2]'))
         return s
-    #}}}
+    # }}}
 
-    def extrude(self, md): #{{{
+    def extrude(self, md):  # {{{
         self.groundedice_melting_rate = project3d(md, 'vector', self.groundedice_melting_rate, 'type', 'node', 'layer', 1) 
         self.deepwater_melting_rate = project3d(md, 'vector', self.deepwater_melting_rate, 'type', 'node', 'layer', 1) 
@@ -66,18 +66,18 @@
         self.perturbation_melting_rate = project3d(md, 'vector', self.upperwater_melting_rate, 'type', 'node', 'layer', 1) 
         return self
-    #}}}
+    # }}}
 
-    def initialize(self, md): #{{{
+    def initialize(self, md):  # {{{
         if np.all(np.isnan(self.groundedice_melting_rate)):
             self.groundedice_melting_rate = np.zeros((md.mesh.numberofvertices))
             print('      no basalforcings.groundedice_melting_rate specified: values set as zero')
         return self
-    #}}}
+    # }}}
 
-    def setdefaultparameters(self): #{{{
+    def setdefaultparameters(self):  # {{{
         return self
-    #}}}
+    # }}}
 
-    def checkconsistency(self, md, solution, analyses): #{{{
+    def checkconsistency(self, md, solution, analyses):  # {{{
         if not np.all(np.isnan(self.perturbation_melting_rate)):
             md = checkfield(md, 'fieldname', 'basalforcings.perturbation_melting_rate', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
@@ -106,5 +106,5 @@
     # }}}
 
-    def marshall(self, prefix, md, fid): #{{{
+    def marshall(self, prefix, md, fid):  # {{{
         yts = md.constants.yts
 
@@ -117,3 +117,3 @@
         WriteData(fid, prefix, 'object', self, 'fieldname', 'upperwater_elevation', 'format', 'DoubleMat', 'name', 'md.basalforcings.upperwater_elevation', 'mattype', 1)
         WriteData(fid, prefix, 'object', self, 'fieldname', 'perturbation_melting_rate', 'format', 'DoubleMat', 'name', 'md.basalforcings.perturbation_melting_rate', 'scale', 1. / yts, 'mattype', 1)
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/steadystate.py
===================================================================
--- issm/trunk-jpl/src/m/classes/steadystate.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/steadystate.py	(revision 27458)
@@ -21,5 +21,5 @@
         self.setdefaultparameters()
 
-    #}}}
+    # }}}
     def __repr__(self):  # {{{
         string = '   steadystate solution parameters:'
@@ -28,10 +28,10 @@
         string = "%s\n%s" % (string, fielddisplay(self, 'requested_outputs', 'additional requested outputs'))
         return string
-    #}}}
+    # }}}
 
     def defaultoutputs(self, md):  # {{{
         return md.stressbalance.defaultoutputs(md) + md.thermal.defaultoutputs(md)
 
-    #}}}
+    # }}}
     def setdefaultparameters(self):  # {{{
         #maximum of steady state iterations
@@ -42,5 +42,5 @@
         self.requested_outputs = ['default']
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/stochasticforcing.py
===================================================================
--- issm/trunk-jpl/src/m/classes/stochasticforcing.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/stochasticforcing.py	(revision 27458)
@@ -49,5 +49,5 @@
         s += '   SMBforcing\n'
         return s
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -57,5 +57,5 @@
         self.randomflag = 1  # true randomness is implemented by default
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
@@ -256,5 +256,5 @@
         list1 = list1.keys()
         return list(list1)
-    #}}}
+    # }}}
 
     def structstochforcing(self):  # {{{
Index: issm/trunk-jpl/src/m/classes/surfaceload.py
===================================================================
--- issm/trunk-jpl/src/m/classes/surfaceload.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/surfaceload.py	(revision 27458)
@@ -24,5 +24,5 @@
         else:
             raise Exception('constructor not supported')
-    #}}}
+    # }}}
 
     def __repr__(self):  #{{{
@@ -32,9 +32,9 @@
         s += '{}\n'.format(fielddisplay(self, 'other', 'other loads (sediments) [kg/m^2/yr]'))
         return s
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
@@ -48,5 +48,5 @@
             md = checkfield(md, 'fieldname', 'solidearth.surfaceload.other', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
         return md
-    #}}}
+    # }}}
 
     def marshall(self, prefix, md, fid):  #{{{
@@ -75,7 +75,7 @@
 
         WriteData(fid, prefix, 'object', self, 'fieldname', 'otherchange', 'name', 'md.solidearth.surfaceload.otherchange', 'format', 'MatArray', 'timeserieslength', md.mesh.numberofelements + 1, 'yts', yts, 'scale', 1 / yts)
-    #}}}
+    # }}}
 
     def extrude(self, md):  #{{{
         return self
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/taoinversion.py
===================================================================
--- issm/trunk-jpl/src/m/classes/taoinversion.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/taoinversion.py	(revision 27458)
@@ -10,5 +10,5 @@
 
 
-class taoinversion(object): #{{{
+class taoinversion(object):  # {{{
     """TAOINVERSION class definition
 
@@ -41,5 +41,5 @@
 
         self.setdefaultparameters()
-    #}}}
+    # }}}
 
     def __repr__(self):
Index: issm/trunk-jpl/src/m/classes/thermal.py
===================================================================
--- issm/trunk-jpl/src/m/classes/thermal.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/thermal.py	(revision 27458)
@@ -29,5 +29,5 @@
         self.requested_outputs = []
         self.setdefaultparameters()
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -45,5 +45,5 @@
         s += '{}\n'.format(fielddisplay(self, 'requested_outputs', 'additional outputs requested'))
         return s
-    #}}}
+    # }}}
 
     def extrude(self, md):  # {{{
@@ -54,5 +54,5 @@
             self.spctemperature[pos] = md.initialization.temperature[pos]  #impose observed temperature on surface
         return self
-    #}}}
+    # }}}
 
     def defaultoutputs(self, md):  # {{{
@@ -61,5 +61,5 @@
         else:
             return ['Temperature', 'BasalforcingsGroundediceMeltingRate']
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  # {{{
@@ -87,5 +87,5 @@
         self.requested_outputs = ['default']
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/timestepping.py
===================================================================
--- issm/trunk-jpl/src/m/classes/timestepping.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/timestepping.py	(revision 27458)
@@ -24,5 +24,5 @@
         else:
             raise RuntimeError('constructor not supported')
-    #}}}
+    # }}}
 
     def __repr__(self):  #{{{
@@ -37,5 +37,5 @@
         s += '{}\n'.format(fielddisplay(self, 'coupling_time', 'length of coupling time steps with ocean model [' + unit + ']'))
         return s
-    #}}}
+    # }}}
 
     def setdefaultparameters(self):  #{{{
@@ -52,5 +52,5 @@
 
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  #{{{
@@ -67,5 +67,5 @@
 
         return md
-    #}}}
+    # }}}
 
     def marshall(self, prefix, md, fid):  #{{{
@@ -79,3 +79,3 @@
         WriteData(fid, prefix, 'object', self, 'fieldname', 'cycle_forcing', 'format', 'Boolean')
         WriteData(fid, prefix, 'object', self, 'fieldname', 'coupling_time', 'format', 'Double', 'scale', scale)
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/classes/timesteppingadaptive.py
===================================================================
--- issm/trunk-jpl/src/m/classes/timesteppingadaptive.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/timesteppingadaptive.py	(revision 27458)
@@ -40,5 +40,5 @@
         else:
             raise Exception('constructor not supported')
-    #}}}
+    # }}}
 
     def __repr__(self):  # {{{
@@ -69,5 +69,5 @@
         self.cycle_forcing   = 0
         return self
-    #}}}
+    # }}}
 
     def checkconsistency(self, md, solution, analyses):  # {{{
Index: issm/trunk-jpl/src/m/classes/toolkits.m
===================================================================
--- issm/trunk-jpl/src/m/classes/toolkits.m	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/toolkits.m	(revision 27458)
@@ -68,5 +68,5 @@
 					self.DefaultAnalysis           = issmgslsolver(); 
 				else 
-					disp('WARNING: Need at least Mumps or Gsl to define an issm solver type, no default solver assigned');
+					disp('WARNING: Need at least MUMPS or GSL to define an ISSM solver type, no default solver assigned');
 				end
 			end
@@ -124,6 +124,6 @@
 			%TOOLKITSFILE - build toolkits file
 			%
-			%   Build a Petsc compatible options file, from the toolkits model field  + return options string. 
-			%   This file will also be used when the toolkit used is 'issm' instead of 'petsc'
+			%   Build a Petsc compatible options file, from the toolkits model field and return options string.
+			%   This file will also be used when the toolkit used is 'issm' instead of 'petsc'.
 			%
 			%   Usage:     ToolkitsFile(toolkits,filename);
Index: issm/trunk-jpl/src/m/classes/toolkits.py
===================================================================
--- issm/trunk-jpl/src/m/classes/toolkits.py	(revision 27455)
+++ issm/trunk-jpl/src/m/classes/toolkits.py	(revision 27458)
@@ -1,12 +1,12 @@
+from fielddisplay import fielddisplay
+from iluasmoptions import iluasmoptions
 from IssmConfig import IssmConfig
-from mumpsoptions import mumpsoptions
-from iluasmoptions import iluasmoptions
-from fielddisplay import fielddisplay
 from issmgslsolver import issmgslsolver
 from issmmumpssolver import issmmumpssolver
+from mumpsoptions import mumpsoptions
 
 
 class toolkits(object):
-    """TOOLKITS class definition
+    """toolkits class definition
 
     Usage:
@@ -14,5 +14,48 @@
     """
 
-    def __init__(self): #{{{
+    def __init__(self, *args):  # {{{
+        self.DefaultAnalysis = None
+        self.RecoveryAnalysis = None
+
+        nargs = len(args)
+        if nargs == 0:
+            self.setdefaultparameters()
+        elif nargs == 1:
+            # TODO: Replace the following with constructor
+            self.setdefaultparameters()
+        else:
+            raise Exception('constructor not supported')
+    # }}}
+
+    def __repr__(self):  # {{{
+        s = "List of toolkits options per analysis:\n\n"
+        for analysis in list(vars(self).keys()):
+            s += "{}\n".format(fielddisplay(self, analysis, ''))
+
+        return s
+    # }}}
+
+    def addoptions(self, analysis, *args):  # {{{
+        """addoptions - add analysis to md.toolkits.analysis
+
+        Optional third parameter adds toolkits options to analysis.
+        
+        Usage:
+            md.toolkits = addoptions(md.toolkits, 'StressbalanceAnalysis', FSoptions())
+            md.toolkits = addoptions(md.toolkits, 'StressbalanceAnalysis')
+        """
+
+        # Create dynamic property if property does not exist yet
+        if not hasattr(self, analysis):
+            setattr(self, analysis, None)
+
+        # Add toolkits options to analysis
+        if len(args) == 1:
+            setattr(self, analysis, args[0])
+
+        return self
+    # }}}
+
+    def setdefaultparameters(self):  # {{{
         # Default toolkits
         if IssmConfig('_HAVE_PETSC_')[0]:
@@ -28,52 +71,53 @@
                 self.DefaultAnalysis = issmgslsolver()
             else:
-                raise IOError("ToolkitsFile error: need at least Mumps or Gsl to define issm solver type")
+                raise IOError('ToolkitsFile error: need at least MUMPS or GSL to define ISSM solver type, no default solver assigned')
 
         # Use same solver for Recovery mode
         self.RecoveryAnalysis = self.DefaultAnalysis
 
-        # The other properties are dynamic
-    #}}}
+        return self
+    # }}}
 
-    def __repr__(self): #{{{
-        s = "List of toolkits options per analysis:\n\n"
-        for analysis in list(vars(self).keys()):
-            s += "{}\n".format(fielddisplay(self, analysis, ''))
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        supported_analyses = [
+            'DefaultAnalysis',
+            'RecoveryAnalysis',
+            'StressbalanceAnalysis',
+            'GLheightadvectionAnalysis',
+            'MasstransportAnalysis',
+            'ThermalAnalysis',
+            'EnthalpyAnalysis',
+            'AdjointBalancethicknessAnalysis',
+            'BalancethicknessAnalysis',
+            'Balancethickness2Analysis',
+            'BalancethicknessSoftAnalysis',
+            'BalancevelocityAnalysis',
+            'DamageEvolutionAnalysis',
+            'LoveAnalysis',
+            'EsaAnalysis',
+            'SealevelchangeAnalysis',
+            'FreeSurfaceBaseAnalysis',
+            'FreeSurfaceTopAnalysis',
+            'LevelsetAnalysis',
+            'DebrisAnalysis',
+            'L2ProjectionBaseAnalysis',
+            'ExtrudeFromBaseAnalysis',
+            'ExtrudeFromTopAnalysis'
+        ]
+        analyses = list(vars(self).keys())
+        for analysis in analyses:
+            if analysis not in supported_analyses:
+                md.checkmessage('md.toolkits.{} not supported yet'.format(analysis))
 
-        return s
-    #}}}
-
-    def addoptions(self, analysis, *args): #{{{
-        # Usage example:
-        #    md.toolkits = addoptions(md.toolkits, 'StressbalanceAnalysis', FSoptions())
-        #    md.toolkits = addoptions(md.toolkits, 'StressbalanceAnalysis')
-
-        # Create dynamic property if property does not exist yet
-        if not hasattr(self, analysis):
-            setattr(self, analysis, None)
-
-        # Add toolkits options to analysis
-        if len(args) == 1:
-            setattr(self, analysis, args[0])
-
-        return self
-    #}}}
-
-    def checkconsistency(self, md, solution, analyses): #{{{
-        # TODO:
-        # - Implement something closer to a switch as in 
-        # src/m/classes/toolkits.m?
-        #
-        for analysis in list(vars(self).keys()):
             if not getattr(self, analysis):
-                md.checkmessage("md.toolkits.{} is empty".format(analysis))
+                md.checkmessage('md.toolkits.{} is empty'.format(analysis))
 
         return md
-    #}}}
+    # }}}
 
-    def ToolkitsFile(self, filename): #{{{
-        """TOOLKITSFILE - build toolkits file
+    def ToolkitsFile(self, filename):  # {{{
+        """ToolkitsFile - build toolkits file
 
-        Build a PETSc compatible options file, from the toolkits model field + return options string.
+        Build a PETSc compatible options file, from the toolkits model field and return options string.
         This file will also be used when the toolkit used is 'issm' instead of 'petsc'.
 
@@ -86,8 +130,8 @@
             fid = open(filename, 'w')
         except IOError as e:
-            raise IOError("ToolkitsFile error: could not open {}' for writing due to".format(filename), e)
+            raise IOError('ToolkitsFile error: could not open {} for writing due to {}'.format(filename), e)
 
         # Write header
-        fid.write("%s%s%s\n" % ('%Toolkits options file: ', filename, ' written from Python toolkits array'))
+        fid.write('{}{}{}\n'.format('%Toolkits options file: ', filename, ' written from Python toolkits array'))
 
         # Start writing options
@@ -96,5 +140,6 @@
 
             # First write analysis
-            fid.write("\n+{}\n".format(analysis))  # Append a + to recognize it's an analysis enum
+            fid.write('\n+{}\n'.format(analysis))  # Append a + to recognize it's an analysis enum
+
             # Now, write options
             for optionname, optionvalue in list(options.items()):
@@ -102,14 +147,14 @@
                 if not optionvalue:
                     # This option has only one argument
-                    fid.write("-{}\n".format(optionname))
+                    fid.write('-{}\n'.format(optionname))
                 else:
                     # Option with value. Value can be string or scalar.
                     if isinstance(optionvalue, (bool, int, float)):
-                        fid.write("-{} {}\n".format(optionname, optionvalue))
+                        fid.write('-{} {}\n'.format(optionname, optionvalue))
                     elif isinstance(optionvalue, str):
-                        fid.write("-{} {}\n".format(optionname, optionvalue))
+                        fid.write('-{} {}\n'.format(optionname, optionvalue))
                     else:
-                        raise TypeError("ToolkitsFile error: option '{}' is not well formatted.".format(optionname))
+                        raise TypeError('ToolkitsFile error: option {} is not well formatted'.format(optionname))
 
         fid.close()
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/coordsystems/epsg2proj.py
===================================================================
--- issm/trunk-jpl/src/m/coordsystems/epsg2proj.py	(revision 27455)
+++ issm/trunk-jpl/src/m/coordsystems/epsg2proj.py	(revision 27458)
@@ -38,3 +38,3 @@
 
     return outs
-#}}}
+# }}}
Index: issm/trunk-jpl/src/m/coordsystems/flaglatlongradius.py
===================================================================
--- issm/trunk-jpl/src/m/coordsystems/flaglatlongradius.py	(revision 27455)
+++ issm/trunk-jpl/src/m/coordsystems/flaglatlongradius.py	(revision 27458)
@@ -4,5 +4,5 @@
 
 
-def flaglatlogradius(lat, long, lat0, long0, radius): # {{{
+def flaglatlogradius(lat, long, lat0, long0, radius):  # {{{
     '''
     FLAGLATLONGRADIUS - given a vector of lat, long, and a circle of radius 
Index: issm/trunk-jpl/src/m/coordsystems/flagradiuselements.py
===================================================================
--- issm/trunk-jpl/src/m/coordsystems/flagradiuselements.py	(revision 27455)
+++ issm/trunk-jpl/src/m/coordsystems/flagradiuselements.py	(revision 27458)
@@ -6,5 +6,5 @@
 
 
-def flagradiuselements(elements, x, y, z, lat0, long0, radius): # {{{
+def flagradiuselements(elements, x, y, z, lat0, long0, radius):  # {{{
     # get x0,y0,z0:
     R   = planetradius('earth')
Index: issm/trunk-jpl/src/m/coordsystems/gdaltransform.py
===================================================================
--- issm/trunk-jpl/src/m/coordsystems/gdaltransform.py	(revision 27455)
+++ issm/trunk-jpl/src/m/coordsystems/gdaltransform.py	(revision 27458)
@@ -9,5 +9,5 @@
 
 
-def gdaltransform(x, y, proj_in, proj_out): #{{{
+def gdaltransform(x, y, proj_in, proj_out):  # {{{
     """GDALTRANSFORM - switch from one projection system to another
 
@@ -70,3 +70,3 @@
 
     return [xout, yout]
-#}}}
+# }}}
Index: issm/trunk-jpl/src/m/coordsystems/laea.py
===================================================================
--- issm/trunk-jpl/src/m/coordsystems/laea.py	(revision 27455)
+++ issm/trunk-jpl/src/m/coordsystems/laea.py	(revision 27458)
@@ -1,3 +1,3 @@
-def laea(lat, long): #{{{
+def laea(lat, long):  # {{{
     """LAEA - Lambert Azimuthal Equal Area projection at lat, long projection 
     center.
@@ -12,3 +12,3 @@
 
     return '+proj=laea +lat_0={} +lon_0={} +x_0=0 +y_0=0 +ellps=WGS84 +units=m +no_defs'.format(lat, long)
-#}}}
+# }}}
Index: issm/trunk-jpl/src/m/geometry/AboveGround.py
===================================================================
--- issm/trunk-jpl/src/m/geometry/AboveGround.py	(revision 27455)
+++ issm/trunk-jpl/src/m/geometry/AboveGround.py	(revision 27458)
@@ -1,8 +1,8 @@
 import numpy as np
 
-def AboveGround(lat, long, r, height): #{{{
+def AboveGround(lat, long, r, height):  # {{{
     r = r + height
     x = r * np.cos(np.deg2rad(lat)) * np.cos(np.deg2rad(long))
     y = r * np.cos(np.deg2rad(lat)) * np.sin(np.deg2rad(long))
     z = r * np.sin(np.deg2rad(lat))
-#}}}
+# }}}
Index: issm/trunk-jpl/src/m/geometry/inpolygon.py
===================================================================
--- issm/trunk-jpl/src/m/geometry/inpolygon.py	(revision 27455)
+++ issm/trunk-jpl/src/m/geometry/inpolygon.py	(revision 27458)
@@ -2,5 +2,5 @@
 import numpy as np
 
-def inpolygon(xq, yq, xv, yv): #{{{
+def inpolygon(xq, yq, xv, yv):  # {{{
     """
     INPOLYGON - Returns points located inside polygonal region.
@@ -25,3 +25,3 @@
 
     return in_polygon
-#}}}
+# }}}
Index: issm/trunk-jpl/src/m/geometry/planetradius.py
===================================================================
--- issm/trunk-jpl/src/m/geometry/planetradius.py	(revision 27455)
+++ issm/trunk-jpl/src/m/geometry/planetradius.py	(revision 27458)
@@ -1,3 +1,3 @@
-def planetradius(planet): # {{{
+def planetradius(planet):  # {{{
     '''
     PLANETRADIUS - return planet radius according to planetary body name
Index: issm/trunk-jpl/src/m/geometry/polyarea.py
===================================================================
--- issm/trunk-jpl/src/m/geometry/polyarea.py	(revision 27455)
+++ issm/trunk-jpl/src/m/geometry/polyarea.py	(revision 27458)
@@ -4,5 +4,5 @@
 
 
-def polyarea(x, y): #{{{
+def polyarea(x, y):  # {{{
     """POLYAREA - returns the area of the 2-D polygon defined by the vertices in 
     lists x and y
@@ -26,3 +26,3 @@
 
     return 0.5 * np.abs(np.dot(x, np.roll(y, 1)) - np.dot(y, np.roll(x, 1)))
-#}}}
+# }}}
Index: issm/trunk-jpl/src/m/interp/interp.py
===================================================================
--- issm/trunk-jpl/src/m/interp/interp.py	(revision 27455)
+++ issm/trunk-jpl/src/m/interp/interp.py	(revision 27458)
@@ -86,5 +86,5 @@
 
     return interpdata
-    #}}}
+    # }}}
 
 
@@ -182,5 +182,5 @@
 
     return interpdata
-    #}}}
+    # }}}
 
 
@@ -247,3 +247,3 @@
 
     return interpdata
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/io/loadvars.py
===================================================================
--- issm/trunk-jpl/src/m/io/loadvars.py	(revision 27455)
+++ issm/trunk-jpl/src/m/io/loadvars.py	(revision 27458)
@@ -144,5 +144,5 @@
                                 nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]].steps.append(getattr(classtype[mod][1], 'solutionstep')())
                             Tree = nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]][:]
-                    #}}}
+                    # }}}
                 #elif classtype[mod][0] == 'massfluxatgate.massfluxatgate':  #this is for output definitions {{{
                 elif mod.startswith('outputdefinition'):  #this is for output definitions {{{
@@ -152,5 +152,5 @@
                     nvdict['md'].__dict__[classtree[mod][0]].__dict__[defname].append(getattr(classtype[mod][1], outdeftype)())
                     Tree = nvdict['md'].__dict__[classtree[mod][0]].__dict__[defname][defindex - 1]
-                #}}}
+                # }}}
                 elif classtype[mod][0] == 'collections.OrderedDict':  #Treating multiple toolkits {{{
                     nvdict['md'].__dict__[classtree[mod][0]].__dict__[classtree[mod][1]] = getattr(classtype[mod][1], 'OrderedDict')
Index: issm/trunk-jpl/src/m/mesh/bamg.py
===================================================================
--- issm/trunk-jpl/src/m/mesh/bamg.py	(revision 27455)
+++ issm/trunk-jpl/src/m/mesh/bamg.py	(revision 27458)
@@ -534,5 +534,5 @@
         #do nothing...
         pass
-    #}}}
+    # }}}
     # Bamg mesh parameters {{{
     if not options.exist('domain') and md.mesh.numberofvertices and md.mesh.elementtype() == 'Tria':
@@ -549,5 +549,5 @@
         if isinstance(md.rifts.riftstruct, dict):
             raise TypeError("bamg error message: rifts not supported yet. Do meshprocessrift AFTER bamg")
-    #}}}
+    # }}}
     # Bamg options {{{
     bamg_options['Crack'] = options.getfieldvalue('Crack', 0)
@@ -576,5 +576,5 @@
     bamg_options['splitcorners'] = options.getfieldvalue('splitcorners', 1)
     bamg_options['verbose'] = options.getfieldvalue('verbose', 1)
-    #}}}
+    # }}}
 
     # Call Bamg
@@ -781,3 +781,3 @@
     """
     return geom
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/mesh/findsegments.py
===================================================================
--- issm/trunk-jpl/src/m/mesh/findsegments.py	(revision 27455)
+++ issm/trunk-jpl/src/m/mesh/findsegments.py	(revision 27458)
@@ -6,5 +6,5 @@
 from pairoptions import pairoptions
 
-def findsegments(md, *args): #{{{
+def findsegments(md, *args):  # {{{
     """FINDSEGMENTS - build segments model field
 
@@ -96,3 +96,3 @@
 
     return segments
-#}}}
+# }}}
Index: issm/trunk-jpl/src/m/mesh/meshintersect3d.py
===================================================================
--- issm/trunk-jpl/src/m/mesh/meshintersect3d.py	(revision 27455)
+++ issm/trunk-jpl/src/m/mesh/meshintersect3d.py	(revision 27458)
@@ -6,5 +6,5 @@
 
 
-def meshintersect3d(x, y, z, xs, ys, zs, *args): #{{{
+def meshintersect3d(x, y, z, xs, ys, zs, *args):  # {{{
     """MESHINTERSECT - returns indices (into x, y, and z) of common values 
     between (x, y, z) and (xs, ys, zs) (i.e. x(index) = xs; y(index) = ys).
@@ -68,3 +68,3 @@
 
     return indices
-#}}}
+# }}}
Index: issm/trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.py
===================================================================
--- issm/trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.py	(revision 27455)
+++ issm/trunk-jpl/src/m/mesh/planet/gmsh/gmshplanet.py	(revision 27458)
@@ -115,5 +115,5 @@
     fid.write('Physical Volume(2) = 30;\n')
     fid.close()
-    #}}}
+    # }}}
 
     if options.exist('refine'):
@@ -133,5 +133,5 @@
         fid.write('};\n')
         fid.close()
-        #}}}
+        # }}}
 
     # Call gmsh
@@ -192,5 +192,5 @@
         raise RuntimeError(['Expecting $EndElements (', A, ')'])
     fid.close()
-    #}}}
+    # }}}
 
     # A little technicality here. The mesh is not exactly on the sphere. We
Index: issm/trunk-jpl/src/m/mesh/rifts/meshprocessoutsiderifts.py
===================================================================
--- issm/trunk-jpl/src/m/mesh/rifts/meshprocessoutsiderifts.py	(revision 27455)
+++ issm/trunk-jpl/src/m/mesh/rifts/meshprocessoutsiderifts.py	(revision 27458)
@@ -101,3 +101,3 @@
 
     return flag
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/miscellaneous/MatlabFuncs.py
===================================================================
--- issm/trunk-jpl/src/m/miscellaneous/MatlabFuncs.py	(revision 27455)
+++ issm/trunk-jpl/src/m/miscellaneous/MatlabFuncs.py	(revision 27458)
@@ -169,5 +169,5 @@
 
     return np.intersect1d(A, B)
-#}}}
+# }}}
 
 def isa(A, dataType):  # {{{
Index: issm/trunk-jpl/src/m/miscellaneous/PythonFuncs.py
===================================================================
--- issm/trunk-jpl/src/m/miscellaneous/PythonFuncs.py	(revision 27455)
+++ issm/trunk-jpl/src/m/miscellaneous/PythonFuncs.py	(revision 27458)
@@ -2,5 +2,5 @@
 
 
-def logical_and_n(*arg): #{{{
+def logical_and_n(*arg):  # {{{
     if len(arg):
         result = arg[0]
@@ -10,7 +10,7 @@
     else:
         return None
-#}}}
+# }}}
 
-def logical_or_n(*arg): #{{{
+def logical_or_n(*arg):  # {{{
     if len(arg):
         result = arg[0]
@@ -20,3 +20,3 @@
     else:
         return None
-#}}}
+# }}}
Index: issm/trunk-jpl/src/m/miscellaneous/fielddisplay.py
===================================================================
--- issm/trunk-jpl/src/m/miscellaneous/fielddisplay.py	(revision 27455)
+++ issm/trunk-jpl/src/m/miscellaneous/fielddisplay.py	(revision 27458)
@@ -19,5 +19,5 @@
 
 
-def parsedisplay(offset, name, field, comment): #{{{
+def parsedisplay(offset, name, field, comment):  # {{{
     #string
     if isinstance(field, str):
@@ -58,8 +58,8 @@
 
     return string
-    #}}}
+    # }}}
 
 
-def dict_display(offset, name, field, comment): #{{{
+def dict_display(offset, name, field, comment):  # {{{
     if field:
         string = displayunit(offset, name, '{dictionary}', comment) + '\n'
@@ -76,8 +76,8 @@
 
     return string
-    #}}}
+    # }}}
 
 
-def list_display(offset, name, field, comment): #{{{
+def list_display(offset, name, field, comment):  # {{{
     #initialization
     if isinstance(field, list):
@@ -107,5 +107,5 @@
     #call displayunit
     return displayunit(offset, name, string, comment)
-    #}}}
+    # }}}
 
 
@@ -136,3 +136,3 @@
 
     return string
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/miscellaneous/intersect.py
===================================================================
--- issm/trunk-jpl/src/m/miscellaneous/intersect.py	(revision 27455)
+++ issm/trunk-jpl/src/m/miscellaneous/intersect.py	(revision 27458)
@@ -2,5 +2,5 @@
 
 
-def intersect(a, b): #{{{
+def intersect(a, b):  # {{{
     """INTERSECT - Python implementation of MATLAB's 'intersect' function
 
@@ -23,3 +23,3 @@
 
     return c, ia[np.isin(a_unique, c)], ib[np.isin(b_unique, c)]
-#}}}
+# }}}
Index: issm/trunk-jpl/src/m/modules/ExpToLevelSet.py
===================================================================
--- issm/trunk-jpl/src/m/modules/ExpToLevelSet.py	(revision 27455)
+++ issm/trunk-jpl/src/m/modules/ExpToLevelSet.py	(revision 27458)
@@ -4,5 +4,5 @@
 
 
-def ExpToLevelSet(x, y, contourname): #{{{
+def ExpToLevelSet(x, y, contourname):  # {{{
     """EXPTOLEVELSET - Determine levelset distance between a contour and a 
     cloud of points
@@ -35,3 +35,3 @@
 
     return distance
-#}}}
+# }}}
Index: issm/trunk-jpl/src/m/modules/InterpFromMesh2d.py
===================================================================
--- issm/trunk-jpl/src/m/modules/InterpFromMesh2d.py	(revision 27455)
+++ issm/trunk-jpl/src/m/modules/InterpFromMesh2d.py	(revision 27458)
@@ -2,5 +2,5 @@
 
 
-def InterpFromMesh2d(*args): #{{{
+def InterpFromMesh2d(*args):  # {{{
     """INTERPFROMMESH2D
 
@@ -39,3 +39,3 @@
 
     return data_prime[0] # NOTE: Value returned from wrapper function is a tuple, the first element of which being the result we actually want
-#}}}
+# }}}
Index: issm/trunk-jpl/src/m/parameterization/setmask.py
===================================================================
--- issm/trunk-jpl/src/m/parameterization/setmask.py	(revision 27455)
+++ issm/trunk-jpl/src/m/parameterization/setmask.py	(revision 27458)
@@ -53,5 +53,5 @@
     vertexongroundedice[md.mesh.elements[np.nonzero(elementongroundedice), :] - 1] = True
     vertexonfloatingice[np.nonzero(np.logical_not(vertexongroundedice))] = True
-    #}}}
+    # }}}
 
     #level sets
Index: issm/trunk-jpl/src/m/plot/export_gl.py
===================================================================
--- issm/trunk-jpl/src/m/plot/export_gl.py	(revision 27455)
+++ issm/trunk-jpl/src/m/plot/export_gl.py	(revision 27458)
@@ -65,5 +65,5 @@
     model.contourz2 = list(map(lambda r, lat: r * math.sin(math.radians(lat)), R2, contour_lat2))
 
-    #}}}
+    # }}}
     #Deal with mesh and results {{{
     print('getting mesh')
@@ -123,3 +123,3 @@
     print('writing to file')
     writejsfile(directory + databasename + '.js', model, databasename)
-    #}}}
+    # }}}
Index: issm/trunk-jpl/src/m/plot/plot_coastlines.py
===================================================================
--- issm/trunk-jpl/src/m/plot/plot_coastlines.py	(revision 27455)
+++ issm/trunk-jpl/src/m/plot/plot_coastlines.py	(revision 27458)
@@ -6,5 +6,5 @@
 
 
-def plot_coastlines(mesh, *args): #{{{
+def plot_coastlines(mesh, *args):  # {{{
     # Define coastline #{{{
     coast = np.array([
@@ -9889,5 +9889,5 @@
         coast[:, 1] - 360
     ])
-    #}}}
+    # }}}
 
     if len(args) == 1:
@@ -9920,3 +9920,3 @@
             else:
                 xlim(options.getfieldvalue('xlim', [-180, 180]))
-#}}}
+# }}}
Index: issm/trunk-jpl/src/m/qmu/helpers.py
===================================================================
--- issm/trunk-jpl/src/m/qmu/helpers.py	(revision 27455)
+++ issm/trunk-jpl/src/m/qmu/helpers.py	(revision 27458)
@@ -9,9 +9,9 @@
     attributes
     """
-    def __init__(self): #{{{
+    def __init__(self):  # {{{
         pass
-    #}}}
-
-    def __repr__(self): #{{{
+    # }}}
+
+    def __repr__(self):  # {{{
         s = ''
         for key, value in self.__dict__.items():
@@ -28,9 +28,9 @@
             s += '\n'
         return s
-    #}}}
-
-    def __len__(self): #{{{
+    # }}}
+
+    def __len__(self):  # {{{
         return len(self.__dict__.keys())
-    #}}}
+    # }}}
 
 
Index: issm/trunk-jpl/src/m/qmu/preqmu.py
===================================================================
--- issm/trunk-jpl/src/m/qmu/preqmu.py	(revision 27455)
+++ issm/trunk-jpl/src/m/qmu/preqmu.py	(revision 27458)
@@ -81,5 +81,5 @@
                     raise RuntimeError('preqmu error message: one of the expanded responses has more values than the number of partitions')
         numresponses = numresponses + np.size(vars(responses)[field_name])
-    #}}}
+    # }}}
 
     # Create in file for Dakota
@@ -114,5 +114,5 @@
         else:
             responsedescriptors.append(fieldresponses.descriptor)
-    #}}}
+    # }}}
 
     # Build a list of variable partitions
Index: issm/trunk-jpl/src/m/shp/shpread.py
===================================================================
--- issm/trunk-jpl/src/m/shp/shpread.py	(revision 27455)
+++ issm/trunk-jpl/src/m/shp/shpread.py	(revision 27458)
@@ -10,5 +10,5 @@
 
 
-def shpread(filename, *args): #{{{
+def shpread(filename, *args):  # {{{
     """SHPREAD - read a shapefile and build a list of shapes
 
@@ -140,3 +140,3 @@
 
     return Structs
-#}}}
+# }}}
Index: issm/trunk-jpl/src/m/shp/shpwrite.py
===================================================================
--- issm/trunk-jpl/src/m/shp/shpwrite.py	(revision 27455)
+++ issm/trunk-jpl/src/m/shp/shpwrite.py	(revision 27458)
@@ -5,5 +5,5 @@
 
 
-def shpwrite(shp, filename): #{{{
+def shpwrite(shp, filename):  # {{{
     '''
     SHPREAD - write a shape file from a contour structure
@@ -59,3 +59,3 @@
         sf.record(str(i))
     sf.close()
-#}}}
+# }}}
Index: issm/trunk-jpl/src/m/solve/parseresultsfromdisk.py
===================================================================
--- issm/trunk-jpl/src/m/solve/parseresultsfromdisk.py	(revision 27455)
+++ issm/trunk-jpl/src/m/solve/parseresultsfromdisk.py	(revision 27458)
@@ -12,5 +12,5 @@
         #saveres = parseresultsfromdiskioserialsequential(md, filename)
     return saveres
-#}}}
+# }}}
 
 
@@ -345,5 +345,5 @@
 # }}}
 
-def addfieldtorecord(a, descr): #{{{
+def addfieldtorecord(a, descr):  # {{{
     if a.dtype.fields is None:
         raise ValueError('\'a\' must be a structured numpy array')
@@ -353,3 +353,3 @@
 
     return b
-#}}}
+# }}}
