Index: /issm/trunk-jpl/src/m/classes/dslmme.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/dslmme.py	(revision 26177)
+++ /issm/trunk-jpl/src/m/classes/dslmme.py	(revision 26178)
@@ -1,4 +1,2 @@
-import numpy as np
-
 from checkfield import checkfield
 from fielddisplay import fielddisplay
@@ -14,9 +12,9 @@
     """
 
-    def __init__(self, *args): #{{{
-        self.modelid                               = 0 # Index into the multi-model ensemble
-        self.global_average_thermosteric_sea_level = [] # Corresponds to zostoga field in CMIP5 archives. Specified as a temporally variable quantity (in m) for each ensemble.
-        self.sea_surface_height_above_geoid        = [] # Corresponds to zos field in CMIP5 archives. Spatial average is 0. Specified as a spatio-temporally variable quantity (in m) for each ensemble.
-        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.
+    def __init__(self, *args):  #{{{
+        self.modelid = 0  # Index into the multi-model ensemble
+        self.global_average_thermosteric_sea_level = []  # Corresponds to zostoga field in CMIP5 archives. Specified as a temporally variable quantity (in m) for each ensemble.
+        self.sea_surface_height_above_geoid = []  # Corresponds to zos field in CMIP5 archives. Spatial average is 0. Specified as a spatio-temporally variable quantity (in m) for each ensemble.
+        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.
 
         nargs = len(args)
@@ -28,5 +26,5 @@
     #}}}
 
-    def __repr__(self): # {{{
+    def __repr__(self):  # {{{
         s = '   dsl mme parameters:\n'
         s += '{}\n'.format(fielddisplay(self, 'modelid', 'index into the multi-model ensemble, determines which field will be used.'))
@@ -37,9 +35,9 @@
     #}}}
 
-    def setdefaultparameters(self): #{{{
+    def setdefaultparameters(self):  #{{{
         return self
     #}}}
 
-    def checkconsistency(self, md, solution, analyses): # {{{
+    def checkconsistency(self, md, solution, analyses):  # {{{
         # Early return
         if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
@@ -50,5 +48,5 @@
             md = checkfield(md, 'field', self.sea_surface_height_above_geoid[i], 'NaN', 1, 'Inf', 1, 'timeseries', 1)
             md = checkfield(md, 'field', self.sea_water_pressure_at_sea_floor[i], 'NaN', 1, 'Inf', 1, 'timeseries', 1)
-        md = checkfield(md, 'field', self.modelid, 'NaN', 1, 'Inf', 1, '>=', 1, '<=',len(self.global_average_thermosteric_sea_level))
+        md = checkfield(md, 'field', self.modelid, 'NaN', 1, 'Inf', 1, '>=', 1, '<=', len(self.global_average_thermosteric_sea_level))
 
         if self.solidearth.settings.compute_bp_grd:
@@ -58,5 +56,5 @@
     #}}}
 
-    def marshall(self, prefix, md, fid): #{{{
+    def marshall(self, prefix, md, fid):  #{{{
         WriteData(fid, prefix, 'name', 'md.dsl.model', 'data', 2, 'format', 'Integer')
         WriteData(fid, prefix, 'object', self, 'fieldname', 'modelid', 'format', 'Double')
@@ -67,5 +65,5 @@
     #}}}
 
-    def extrude(self, md): #{{{
+    def extrude(self, md):  #{{{
         for i in range(len(self.global_average_thermosteric_sea_level)):
             self.sea_surface_height_above_geoid[i] = project3d(md, 'vector', self.self.sea_surface_height_above_geoid[i], 'type', 'node', 'layer', 1)
Index: /issm/trunk-jpl/src/m/classes/lovenumbers.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/lovenumbers.py	(revision 26177)
+++ /issm/trunk-jpl/src/m/classes/lovenumbers.py	(revision 26178)
@@ -1,4 +1,2 @@
-import numpy as np
-
 from checkfield import checkfield
 from fielddisplay import fielddisplay
@@ -8,17 +6,17 @@
 
 
-class lovenumbers(object): #{{{
+class lovenumbers(object):  #{{{
     """LOVENUMBERS class definition
 
     Usage:
-        lovenumbers = lovenumbers() #will setup love numbers deg 1001 by default
-        lovenumbers = lovenumbers('maxdeg', 10001);  #supply numbers of degrees required (here, 10001)
+        lovenumbers = lovenumbers()  #will setup love numbers deg 1001 by default
+        lovenumbers = lovenumbers('maxdeg', 10001);   #supply numbers of degrees required (here, 10001)
     """
 
-    def __init__(self, *args): #{{{
+    def __init__(self, *args):  #{{{
         # Regular love numbers
-        self.h = []  # Provided by PREM model
-        self.k = []  # idem
-        self.l = []  # idem
+        self.h = []   # Provided by PREM model
+        self.k = []   # idem
+        self.l = []   # idem
 
         # Tidal love numbers for computing rotational feedback
@@ -26,5 +24,5 @@
         self.tk = []
         self.tl = []
-        self.tk2secular = 0 # deg 2 secular number
+        self.tk2secular = 0  # deg 2 secular number
 
         options = pairoptions(*args)
@@ -34,5 +32,5 @@
     #}}}
 
-    def setdefaultparameters(self, maxdeg, referenceframe): #{{{
+    def setdefaultparameters(self, maxdeg, referenceframe):  #{{{
         # Initialize love numbers
         self.h = getlovenumbers('type', 'loadingverticaldisplacement', 'referenceframe', referenceframe, 'maxdeg', maxdeg)
@@ -48,6 +46,6 @@
     #}}}
 
-    def checkconsistency(self, md, solution, analyses): #{{{
-        if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslr):
+    def checkconsistency(self, md, solution, analyses):  #{{{
+        if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
             return
         md = checkfield(md, 'fieldname', 'solidearth.lovenumbers.h', 'NaN', 1, 'Inf', 1)
@@ -64,9 +62,9 @@
     #}}}
 
-    def defaultoutputs(self, md): #{{{
+    def defaultoutputs(self, md):  #{{{
         return[]
     #}}}
 
-    def __repr__(self): #{{{
+    def __repr__(self):  #{{{
         s = '   lovenumbers parameters:\n'
         s += '{}\n'.format(fielddisplay(self, 'h', 'load Love number for radial displacement'))
@@ -79,5 +77,5 @@
     #}}}
 
-    def marshall(self, prefix, md, fid): #{{{
+    def marshall(self, prefix, md, fid):  #{{{
         WriteData(fid, prefix, 'object', self, 'fieldname', 'h', 'name', 'md.solidearth.lovenumbers.h', 'format', 'DoubleMat', 'mattype', 1)
         WriteData(fid, prefix, 'object', self, 'fieldname', 'k', 'name', 'md.solidearth.lovenumbers.k', 'format', 'DoubleMat', 'mattype', 1)
@@ -90,5 +88,5 @@
     #}}}
 
-    def extrude(self, md): #{{{
+    def extrude(self, md):  #{{{
         return
 #}}}
Index: /issm/trunk-jpl/src/m/classes/nodalvalue.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/nodalvalue.py	(revision 26177)
+++ /issm/trunk-jpl/src/m/classes/nodalvalue.py	(revision 26178)
@@ -1,4 +1,3 @@
 import numpy as np
-
 from checkfield import checkfield
 from fielddisplay import fielddisplay
@@ -20,21 +19,21 @@
     """
 
-    def __init__(self, *args): #{{{
-        self.name               = ''
-        self.definitionstring   = '' # string that identifies this output definition uniquely, from 'Outputdefinition[1-10]'
-        self.model_string       = '' # string for field that is being retrieved
-        self.node               = np.nan #for which node are we retrieving the value?
-        
+    def __init__(self, *args):  #{{{
+        self.name = ''
+        self.definitionstring = ''  # string that identifies this output definition uniquely, from 'Outputdefinition[1-10]'
+        self.model_string = ''  # string for field that is being retrieved
+        self.node = np.nan  #for which node are we retrieving the value?
+
         #use provided options to change fields
         options = pairoptions(*args)
 
         # Get name
-        self.name               = options.getfieldvalue('name', '')
-        self.definitionstring   = options.getfieldvalue('definitionstring', '')
-        self.model_string       = options.getfieldvalue('model_string', '')
-        self.node               = options.getfieldvalue('node', '')
+        self.name = options.getfieldvalue('name', '')
+        self.definitionstring = options.getfieldvalue('definitionstring', '')
+        self.model_string = options.getfieldvalue('model_string', '')
+        self.node = options.getfieldvalue('node', '')
     #}}}
 
-    def __repr__(self): # {{{
+    def __repr__(self):  # {{{
         s = '   Nodalvalue:\n'
         s += '{}\n'.format(fielddisplay(self, 'name', 'identifier for this nodalvalue response'))
@@ -45,10 +44,10 @@
     #}}}
 
-    def setdefaultparameters(self): # {{{
+    def setdefaultparameters(self):  # {{{
         return self
     #}}}
 
-    def checkconsistency(self, md, solution, analyses): # {{{
-        if not isinstance(self.name, basestring):
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if not isinstance(self.name, str):
             raise Exception('nodalvalue error message: \'name\' field should be a string!')
         OutputdefinitionStringArray = []
@@ -60,5 +59,5 @@
     #}}}
 
-    def marshall(self, prefix, md, fid): #{{{
+    def marshall(self, prefix, md, fid):  #{{{
         WriteData(fid, prefix, 'data', self.name, 'name', 'md.nodalvalue.name', 'format', 'String')
         WriteData(fid, prefix, 'data', self.definitionstring, 'name', 'md.nodalvalue.definitionenum', 'format', 'String')
Index: /issm/trunk-jpl/src/m/classes/rotational.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/rotational.py	(revision 26177)
+++ /issm/trunk-jpl/src/m/classes/rotational.py	(revision 26178)
@@ -1,4 +1,2 @@
-import numpy as np
-
 from checkfield import checkfield
 from fielddisplay import fielddisplay
@@ -13,8 +11,8 @@
     """
 
-    def __init__(self, *args): #{{{
-        self.equatorialmoi      = 0
-        self.polarmoi           = 0
-        self.langularvelocity   = 0
+    def __init__(self, *args):  #{{{
+        self.equatorialmoi = 0
+        self.polarmoi = 0
+        self.langularvelocity = 0
 
         nargin = len(args)
@@ -25,5 +23,5 @@
     #}}}
 
-    def __repr__(self): # {{{
+    def __repr__(self):  # {{{
         s = '   rotational parameters:\n'
         s += '{}\n'.format(fielddisplay(self, 'equatorialmoi', 'mean equatorial moment of inertia [kg m^2]'))
@@ -33,16 +31,16 @@
     #}}}
 
-    def setdefaultparameters(self): # {{{
+    def setdefaultparameters(self):  # {{{
         # Moment of inertia
-        self.equatorialmoi  = 8.0077e37 # [kg m^2]
-        self.polarmoi       = 8.0345e37 # [kg m^2]
+        self.equatorialmoi = 8.0077e37  # [kg m^2]
+        self.polarmoi = 8.0345e37  # [kg m^2]
 
         # Mean rotational velocity of earth
-        self.angularvelocity = 7.2921e-5 # [s^-1]
+        self.angularvelocity = 7.2921e-5  # [s^-1]
         return self
     #}}}
 
-    def checkconsistency(self, md, solution, analyses): # {{{
-        if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslr):
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
             return md
         md = checkfield(md, 'fieldname', 'solidearth.rotational.equatorialmoi', 'NaN', 1, 'Inf', 1)
@@ -52,9 +50,9 @@
     #}}}
 
-    def defaultoutputs(self, md): #{{{
+    def defaultoutputs(self, md):  #{{{
         return []
     #}}}
 
-    def marshall(self, prefix, md, fid): #{{{
+    def marshall(self, prefix, md, fid):  #{{{
         WriteData(fid, prefix, 'object', self, 'fieldname', 'equatorialmoi', 'name', 'md.solidearth.rotational.equatorialmoi', 'format', 'Double')
         WriteData(fid, prefix, 'object', self, 'fieldname', 'polarmoi', 'name', 'md.solidearth.rotational.polarmoi', 'format', 'Double')
@@ -62,5 +60,5 @@
     #}}}
 
-    def extrude(self, md): #{{{
+    def extrude(self, md):  #{{{
         return self
     #}}}
Index: /issm/trunk-jpl/src/m/classes/solidearthsettings.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/solidearthsettings.py	(revision 26177)
+++ /issm/trunk-jpl/src/m/classes/solidearthsettings.py	(revision 26178)
@@ -39,5 +39,5 @@
     #}}}
 
-    def __repr__(self): # {{{
+    def __repr__(self):  # {{{
         s = '   solidearth settings:\n'
         s += '{}\n'.format(fielddisplay(self, 'reltol', 'sea level rise relative convergence criterion, (default, NaN: not applied)'))
@@ -58,8 +58,8 @@
     #}}}
 
-    def setdefaultparameters(self): # {{{
+    def setdefaultparameters(self):  # {{{
         # Convergence criterion: absolute, relative, and residual
-        self.reltol = 0.01 # 1 percent
-        self.abstol = np.nan # default
+        self.reltol = 0.01  # 1 percent
+        self.abstol = np.nan  # default
 
         # Maximum of non-linear iterations
@@ -94,6 +94,6 @@
     #}}}
 
-    def checkconsistency(self, md, solution, analyses): # {{{
-        if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslr):
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
             return md
         md = checkfield(md, 'fieldname', 'solidearth.settings.reltol', 'size', [1])
@@ -126,5 +126,5 @@
     #}}}
 
-    def marshall(self, prefix, md, fid): #{{{
+    def marshall(self, prefix, md, fid):  #{{{
         WriteData(fid, prefix, 'object', self, 'fieldname', 'reltol', 'name', 'md.solidearth.settings.reltol', 'format', 'Double')
         WriteData(fid, prefix, 'object', self, 'fieldname', 'abstol', 'name', 'md.solidearth.settings.abstol', 'format', 'Double')
@@ -145,5 +145,5 @@
     #}}}
 
-    def extrude(self, md): #{{{
+    def extrude(self, md):  #{{{
         return self
     #}}}
Index: /issm/trunk-jpl/src/m/classes/surfaceload.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/surfaceload.py	(revision 26177)
+++ /issm/trunk-jpl/src/m/classes/surfaceload.py	(revision 26178)
@@ -13,9 +13,9 @@
     """
 
-    def __init__(self, *args): #{{{
-        self.icethicknesschange = []
-        self.waterheightchange  = []
-        self.other              = []
-        
+    def __init__(self, *args):  #{{{
+        self.icethicknesschange = np.nan
+        self.waterheightchange = np.nan
+        self.other = np.nan
+
         nargin = len(args)
 
@@ -26,5 +26,5 @@
     #}}}
 
-    def __repr__(self): # {{{
+    def __repr__(self):  #{{{
         s = '   surfaceload:\n'
         s += '{}\n'.format(fielddisplay(self, 'icethicknesschange', 'thickness change: ice height equivalent [mIce/yr]'))
@@ -34,27 +34,27 @@
     #}}}
 
-    def setdefaultparameters(self): # {{{
+    def setdefaultparameters(self):  # {{{
         return self
     #}}}
 
-    def checkconsistency(self, md, solution, analyses): # {{{
-        if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslr):
+    def checkconsistency(self, md, solution, analyses):  # {{{
+        if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and not md.transient.isslc):
             return md
-        if len(self.icethicknesschange):
-            md  = checkfield(md,'fieldname', 'solidearth.surfaceload.icethicknesschange', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
-        if len(self.waterheightchange):
-            md  = checkfield(md,'fieldname', 'solidearth.surfaceload.waterheightchange', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
-        if len(self.other):
-            md  = checkfield(md,'fieldname', 'solidearth.surfaceload.other', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+        if type(self.icethicknesschange) == np.ndarray:
+            md = checkfield(md, 'fieldname', 'solidearth.surfaceload.icethicknesschange', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+        if type(self.waterheightchange) == np.ndarray:
+            md = checkfield(md, 'fieldname', 'solidearth.surfaceload.waterheightchange', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
+        if type(self.other) == np.ndarray:
+            md = checkfield(md, 'fieldname', 'solidearth.surfaceload.other', 'timeseries', 1, 'NaN', 1, 'Inf', 1)
         return md
     #}}}
 
-    def marshall(self, prefix, md, fid): #{{{
-        if len(self.icethicknesschange) == 0:
-            self.icethicknesschange = np.zeros((md.mesh.numberofelements + 1, ))
-        if len(self.waterheightchange) == 0:
-            self.waterheightchange = np.zeros((md.mesh.numberofelements + 1, ))
-        if len(self.other) == 0:
-            self.other = np.zeros((md.mesh.numberofelements + 1, ))
+    def marshall(self, prefix, md, fid):  #{{{
+        if np.isnan(self.icethicknesschange).all():
+            self.icethicknesschange = np.zeros((md.mesh.numberofelements + 1))
+        if np.isnan(self.waterheightchange).all():
+            self.waterheightchange = np.zeros((md.mesh.numberofelements + 1))
+        if np.isnan(self.other).all():
+            self.other = np.zeros((md.mesh.numberofelements + 1))
         WriteData(fid, prefix, 'object', self, 'fieldname', 'icethicknesschange', 'name', 'md.solidearth.surfaceload.icethicknesschange', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', md.constants.yts)
         WriteData(fid, prefix, 'object', self, 'fieldname', 'waterheightchange', 'name', 'md.solidearth.surfaceload.waterheightchange', 'format', 'DoubleMat', 'mattype', 2, 'timeserieslength', md.mesh.numberofelements + 1, 'yts', md.constants.yts)
@@ -62,5 +62,5 @@
     #}}}
 
-    def extrude(self, md): #{{{
+    def extrude(self, md):  #{{{
         return self
     #}}}
Index: /issm/trunk-jpl/src/m/consistency/checkfield.py
===================================================================
--- /issm/trunk-jpl/src/m/consistency/checkfield.py	(revision 26177)
+++ /issm/trunk-jpl/src/m/consistency/checkfield.py	(revision 26178)
@@ -11,14 +11,13 @@
 
     Used to check model consistency
-        
     Requires:
-        'field' or 'fieldname' option. If 'fieldname' is provided, it will 
+        'field' or 'fieldname' option. If 'fieldname' is provided, it will
         retrieve it from the model md. (md.(fieldname))
-        If 'field' is provided, it will assume the argument following 'field' 
+        If 'field' is provided, it will assume the argument following 'field'
         is a numeric array.
 
     Available options:
         - NaN: 1 if check that there is no NaN
-        - size: [lines cols], NaN for non checked dimensions, or 'universal' 
+        - size: [lines cols], NaN for non checked dimensions, or 'universal'
         for any input type (nodal, element, time series, etc)
         - > :  greater than provided value
@@ -72,6 +71,5 @@
         fieldsize = options.getfieldvalue('size')
         if type(fieldsize) == str:
-            if m.strcmp(fieldsize, 'universal'):
-
+            if fieldsize == 'universal':
                 #Check that vector size will not be confusing for ModelProcessorx
                 if (md.mesh.numberofvertices == md.mesh.numberofelements):
Index: /issm/trunk-jpl/src/m/consistency/ismodelselfconsistent.py
===================================================================
--- /issm/trunk-jpl/src/m/consistency/ismodelselfconsistent.py	(revision 26177)
+++ /issm/trunk-jpl/src/m/consistency/ismodelselfconsistent.py	(revision 26178)
@@ -81,5 +81,5 @@
         analyses = ['DamageEvolutionAnalysis']
     elif 'SamplingSolution':
-		analyses=['SamplingAnalysis']
+        analyses = ['SamplingAnalysis']
     else:
         raise TypeError('solution type: {} not supported yet!'.format(solutiontype))
Index: /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.py
===================================================================
--- /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.py	(revision 26177)
+++ /issm/trunk-jpl/src/m/contrib/defleurian/netCDF/export_netCDF.py	(revision 26178)
@@ -66,5 +66,5 @@
             DimDict[len(NewDim)] = dimnames[i]
 
-    typelist = [bool, str, str, int, float, complex,
+    typelist = [bool, str, int, float, complex,
                 collections.OrderedDict,
                 np.int64, np.ndarray, np.float64]
Index: /issm/trunk-jpl/src/m/solve/loadresultsfromcluster.py
===================================================================
--- /issm/trunk-jpl/src/m/solve/loadresultsfromcluster.py	(revision 26177)
+++ /issm/trunk-jpl/src/m/solve/loadresultsfromcluster.py	(revision 26178)
@@ -1,5 +1,4 @@
 import os
 import socket
-
 from helpers import *
 from loadresultsfromdisk import loadresultsfromdisk
@@ -8,12 +7,13 @@
 
 
-def remove(filename):
+def remove(filename):  #{{{
     try:
         os.remove(filename)
     except OSError:
         print(('WARNING: ' + filename + ' does not exist'))
+# }}}
 
 
-def loadresultsfromcluster(md, *args):
+def loadresultsfromcluster(md, *args):  #{{{
     """LOADRESULTSFROMCLUSTER - load results of solution sequence from cluster
 
@@ -75,2 +75,3 @@
 
     return md
+# }}}
