Index: /issm/trunk-jpl/src/m/classes/calving.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/calving.py	(revision 23657)
+++ /issm/trunk-jpl/src/m/classes/calving.py	(revision 23658)
@@ -24,5 +24,4 @@
 		string='   Calving parameters:'
 		string="%s\n%s"%(string,fielddisplay(self,'calvingrate','calving rate at given location [m/a]'))
-		string="%s\n%s"%(string,fielddisplay(self,'meltingrate','melting rate at given location [m/a]'))
 
 		return string
@@ -30,5 +29,4 @@
 	def extrude(self,md): # {{{
 		self.calvingrate=project3d(md,'vector',self.calvingrate,'type','node')
-		self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node')
 		return self
 	#}}}
@@ -44,5 +42,4 @@
 
 		md = checkfield(md,'fieldname','calving.calvingrate','>=',0,'timeseries',1,'NaN',1,'Inf',1);
-		md = checkfield(md,'fieldname','calving.meltingrate','>=',0,'timeseries',1,'NaN',1,'Inf',1);
 
 		return md
@@ -54,4 +51,3 @@
 		WriteData(fid,prefix,'name','md.calving.law','data',1,'format','Integer');
 		WriteData(fid,prefix,'object',self,'fieldname','calvingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts)
-		WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts)
 	# }}}
Index: /issm/trunk-jpl/src/m/classes/calvinglevermann.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/calvinglevermann.py	(revision 23657)
+++ /issm/trunk-jpl/src/m/classes/calvinglevermann.py	(revision 23658)
@@ -23,5 +23,4 @@
 		string='   Calving Levermann parameters:'
 		string="%s\n%s"%(string,fielddisplay(self,'coeff','proportionality coefficient in Levermann model'))
-		string="%s\n%s"%(string,fielddisplay(self,'meltingrate','melting rate at given location [m/a]'))
 
 		return string
@@ -29,5 +28,4 @@
 	def extrude(self,md): # {{{
 		self.coeff=project3d(md,'vector',self.coeff,'type','node')
-		self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node')
 		return self
 	#}}}
@@ -44,5 +42,4 @@
 
 		md = checkfield(md,'fieldname','calving.coeff','size',[md.mesh.numberofvertices],'>',0)
-		md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices],'>=',0)
 		return md
 	# }}}
@@ -51,4 +48,3 @@
 		WriteData(fid,prefix,'name','md.calving.law','data',3,'format','Integer');
 		WriteData(fid,prefix,'object',self,'fieldname','coeff','format','DoubleMat','mattype',1)
-		WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts)
 	# }}}
Index: /issm/trunk-jpl/src/m/classes/calvingminthickness.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/calvingminthickness.py	(revision 23657)
+++ /issm/trunk-jpl/src/m/classes/calvingminthickness.py	(revision 23658)
@@ -23,9 +23,7 @@
 		string='   Calving Minimum thickness:'
 		string="%s\n%s"%(string,fielddisplay(self,'min_thickness','minimum thickness below which no ice is allowed'))
-		string="%s\n%s"%(string,fielddisplay(self,'meltingrate','melting rate at given location [m/a]'))
 		return string
 	#}}}
 	def extrude(self,md): # {{{
-		self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node')
 		return self
 	#}}}
@@ -42,5 +40,4 @@
 
 		md = checkfield(md,'fieldname','calving.min_thickness','>',0,'NaN',1,'Inf',1)
-		md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices],'>=',0)
 		return md
 	# }}}
@@ -49,4 +46,3 @@
 		WriteData(fid,prefix,'name','md.calving.law','data',4,'format','Integer')
 		WriteData(fid,prefix,'object',self,'fieldname','min_thickness','format','Double')
-		WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts)
 	# }}}
Index: /issm/trunk-jpl/src/m/classes/calvingvonmises.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/calvingvonmises.py	(revision 23657)
+++ /issm/trunk-jpl/src/m/classes/calvingvonmises.py	(revision 23658)
@@ -27,9 +27,7 @@
 		string="%s\n%s"%(string,fielddisplay(self,'stress_threshold_floatingice','sigma_max applied to floating ice only [Pa]'))
 
-		string="%s\n%s"%(string,fielddisplay(self,'meltingrate','melting rate at given location [m/a]'))
 		return string
 	#}}}
 	def extrude(self,md): # {{{
-		self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node')
 		return self
 	#}}}
@@ -47,5 +45,4 @@
 		md = checkfield(md,'fieldname','calving.stress_threshold_groundedice','>',0,'nan',1,'Inf',1)
 		md = checkfield(md,'fieldname','calving.stress_threshold_floatingice','>',0,'nan',1,'Inf',1)
-		md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'Inf',1,'timeseries',1,'>=',0)
 
 		return md
@@ -57,4 +54,3 @@
 		WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_groundedice','format','DoubleMat','mattype',1)
 		WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_floatingice','format','DoubleMat','mattype',1)
-		WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts)
 	# }}}
Index: /issm/trunk-jpl/src/m/classes/frontalforcings.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/frontalforcings.py	(revision 23657)
+++ /issm/trunk-jpl/src/m/classes/frontalforcings.py	(revision 23658)
@@ -15,9 +15,4 @@
 
 		self.meltingrate   = float('NaN')
-		self.melt_parameterization   = 0.
-                self.basin = float('NaN')
-                self.numberofbasins = float('NaN')
-                self.subglacial_discharge = float('NaN')
-                self.thermalforcings = float('NaN')
 
 		#set defaults
@@ -27,12 +22,5 @@
 	def __repr__(self): # {{{
 		string='   Frontalforcings parameters:'
-		string="%s\n%s"%(string,fielddisplay(self,'melt_parameterization','0: no, 1: Rignot melt parameterization (Rignot et al.,2016)'))
-                if self.melt_parameterization==0:
-                    string="%s\n%s"%(string,fielddisplay(self,'meltingrate','melting rate at given location [m/a]'))
-                elif self.melt_parameterization==1: 
-                    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]'))
+		string="%s\n%s"%(string,fielddisplay(self,'meltingrate','melting rate at given location [m/a]'))
 
 		return string
@@ -49,15 +37,8 @@
 
 		#Early return
-		if (solution!='TransientSolution') or (not md.transient.ismovingfront):
-			return md
-			
-                md = checkfield(md,'fieldname','frontalforcings.melt_parameterization','numel',[1],'values',[0,1]);
-                if self.melt_parameterization==0:
-                    md = checkfield(md,'fieldname','frontalforcings.meltingrate','NaN',1,'Inf',1,'timeseries',1,'>=',0);
-                elif self.melt_parameterization==1:
-                    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);
+                if (solution!='TransientSolution') or (not md.transient.ismovingfront):
+                    return md
+
+                md = checkfield(md,'fieldname','frontalforcings.meltingrate','NaN',1,'Inf',1,'timeseries',1,'>=',0);
 
 		return md
@@ -65,14 +46,8 @@
 	def marshall(self,prefix,md,fid):    # {{{
 
-		yts=md.constants.yts
+            yts=md.constants.yts
 
-                WriteData(fid,prefix,'object',self,'fieldname','melt_parameterization','format','Integer');
-                if self.melt_parameterization==0:
-                    WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts);
-                elif self.melt_parameterization==1:
-                    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,'name','md.frontalforcings.parameterization','data',1,'format','Integer')
+            WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts);
 
         # }}}
Index: /issm/trunk-jpl/src/m/classes/frontalforcingsrignot.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/frontalforcingsrignot.py	(revision 23658)
+++ /issm/trunk-jpl/src/m/classes/frontalforcingsrignot.py	(revision 23658)
@@ -0,0 +1,64 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from checkfield import checkfield
+from WriteData import WriteData
+
+class frontalforcingsrignot(object):
+	"""
+	FRONTAL FORCINGS Rignot class definition
+
+	   Usage:
+	      frontalforcingsrignot=frontalforcingsrignot();
+	"""
+
+	def __init__(self): # {{{
+
+		self.basin= float('NaN');
+		self.numberofbasins = 0.;
+		self.subglacial_discharge = float('NaN');
+		self.thermalforcing = float('NaN');
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	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]'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#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);
+
+		return md
+	# }}}
+	def marshall(self,prefix,md,fid):    # {{{
+
+            yts=md.constants.yts
+
+	    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);
+
+        # }}}
