Index: /issm/trunk-jpl/src/m/classes/frontalforcingsrignot.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/frontalforcingsrignot.m	(revision 26492)
+++ /issm/trunk-jpl/src/m/classes/frontalforcingsrignot.m	(revision 26493)
@@ -46,6 +46,6 @@
 			md = checkfield(md,'fieldname','frontalforcings.num_basins','numel',1,'NaN',1,'Inf',1,'>',0);
 			md = checkfield(md,'fieldname','frontalforcings.basin_id','Inf',1,'>=',0,'<=',md.frontalforcings.num_basins,'size',[md.mesh.numberofelements 1]);
-			md = checkfield(md,'fieldname','frontalforcings.subglacial_discharge','>=',0,'nan',1,'Inf',1,'timeseries',1);
-			md = checkfield(md,'fieldname','frontalforcings.thermalforcing','nan',1,'Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','frontalforcings.subglacial_discharge','>=',0,'NaN',1,'Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','frontalforcings.thermalforcing','NaN',1,'Inf',1,'timeseries',1);
 
 		end % }}}
Index: /issm/trunk-jpl/src/m/classes/frontalforcingsrignot.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/frontalforcingsrignot.py	(revision 26492)
+++ /issm/trunk-jpl/src/m/classes/frontalforcingsrignot.py	(revision 26493)
@@ -1,2 +1,4 @@
+import numpy as np
+
 from checkfield import checkfield
 from WriteData import WriteData
@@ -5,30 +7,39 @@
 
 class frontalforcingsrignot(object):
-    """
-    FRONTAL FORCINGS Rignot class definition
+    """FRONTAL FORCINGS Rignot class definition
 
-       Usage:
-          frontalforcingsrignot = frontalforcingsrignot()
+    Usage:
+        frontalforcingsrignot = frontalforcingsrignot()
     """
 
-    def __init__(self):  # {{{
-        self.basin = float('NaN')
-        self.numberofbasins = 0.
-        self.subglacial_discharge = float('NaN')
-        self.thermalforcing = float('NaN')
+    def __init__(self, *args):  # {{{
+        self.basin_id = np.nan
+        self.num_basins = 0
+        self.subglacial_discharge = np.nan
+        self.thermalforcing = np.nan
 
-    #set defaults
-        self.setdefaultparameters()
+        if len(args) == 0:
+            self.setdefaultparameters()
+        else:
+            error('constructor not supported')
 
     #}}}
 
     def __repr__(self):  # {{{
-        string = '   Frontalforcings parameters:'
-        string = "%s\n%s" % (string, fielddisplay(self, 'basin', 'basin ID for vertices'))
-        string = "%s\n%s" % (string, fielddisplay(self, 'numberofbasins', 'number of basins'))
-        string = "%s\n%s" % (string, fielddisplay(self, 'subglacial_discharge', 'sum of subglacial discharge for each basin [m / d]'))
-        string = "%s\n%s" % (string, fielddisplay(self, 'thermalforcing', 'thermal forcing [C]'))
+        s = '   Frontalforcings parameters:\n'
+        s += '{}\n'.format(fielddisplay(self, 'basin_id', 'basin ID for elements'))
+        s += '{}\n'.format(fielddisplay(self, 'num_basins', 'number of basins'))
+        s += '{}\n'.format(fielddisplay(self, 'subglacial_discharge', 'sum of subglacial discharge for each basin [m/d]'))
+        s += '{}\n'.format(fielddisplay(self, 'thermalforcing', 'thermal forcing [∘C]'))
+        return s
+    #}}}
 
-        return string
+    def setdefaultparameters(self): # {{{
+        self.basin_id = np.nan
+        self.num_basins = 0
+        self.subglacial_discharge = np.nan
+        self.thermalforcing = np.nan
+
+        return self
     #}}}
 
@@ -37,18 +48,13 @@
     #}}}
 
-    def setdefaultparameters(self):  # {{{
-
-        return self
-    #}}}
-
     def checkconsistency(self, md, solution, analyses):  # {{{
-        #Early return
+        # Early return
         if (solution != 'TransientSolution') or (not md.transient.ismovingfront):
             return md
 
-        md = checkfield(md, 'fieldname', 'frontalforcings.basin', '>', 0, 'nan', 1, 'Inf', 1)
-        md = checkfield(md, 'fieldname', 'frontalforcings.numberofbasins', 'numel', [1])
-        md = checkfield(md, 'fieldname', 'frontalforcings.subglacial_discharge', '>=', 0, 'nan', 1, 'Inf', 1, 'timeseries', 1)
-        md = checkfield(md, 'fieldname', 'frontalforcings.thermalforcing', 'nan', 1, 'Inf', 1, 'timeseries', 1)
+        md = checkfield(md, 'fieldname', 'frontalforcings.num_basins', 'numel', [1], 'NaN', 1, 'Inf', 1, '>', 0)
+        md = checkfield(md, 'fieldname', 'frontalforcings.basin_id', 'Inf', 1, '>=', 0, '<=', md.frontalforcings.num_basins, 'size', [md.mesh.numberofelements])
+        md = checkfield(md, 'fieldname', 'frontalforcings.subglacial_discharge', '>=', 0, 'NaN', 1, 'Inf', 1, 'timeseries', 1)
+        md = checkfield(md, 'fieldname', 'frontalforcings.thermalforcing', 'NaN', 1, 'Inf', 1, 'timeseries', 1)
         return md
     # }}}
@@ -56,8 +62,7 @@
     def marshall(self, prefix, md, fid):  # {{{
         WriteData(fid, prefix, 'name', 'md.frontalforcings.parameterization', 'data', 2, 'format', 'Integer')
-        WriteData(fid, prefix, 'object', self, 'fieldname', 'basin', 'format', 'DoubleMat', 'mattype', 1)
-        WriteData(fid, prefix, 'object', self, 'fieldname', 'numberofbasins', 'format', 'Integer')
-        WriteData(fid, prefix, 'object', self, 'fieldname', 'subglacial_discharge', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1)
-        WriteData(fid, prefix, 'object', self, 'fieldname', 'thermalforcing', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1)
-
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'basin_id', 'data', self.basin_id, 'name', 'md.frontalforcings.basin_id', 'format', 'IntMat', 'mattype', 2) # 0-indexed
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'num_basins', 'format', 'Integer')
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'subglacial_discharge', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
+        WriteData(fid, prefix, 'object', self, 'fieldname', 'thermalforcing', 'format', 'DoubleMat', 'mattype', 1, 'timeserieslength', md.mesh.numberofvertices + 1, 'yts', md.constants.yts)
     # }}}
