Index: /issm/trunk-jpl/src/m/classes/linearbasalforcings.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/linearbasalforcings.py	(revision 18114)
+++ /issm/trunk-jpl/src/m/classes/linearbasalforcings.py	(revision 18115)
@@ -13,13 +13,29 @@
 	"""
 
-	def __init__(self): # {{{
-		self.floatingice_melting_rate  = float('NaN')
-		self.deepwater_melting_rate    = float('NaN')
-		self.deepwater_elevation       = float('NaN')
-		self.upperwater_elevation      = float('NaN')
-		self.geothermalflux            = float('NaN')
+	def __init__(self,*args): # {{{
 
-		#set defaults
-		self.setdefaultparameters()
+		if not len(args):
+			print 'empty init'
+			self.groundedice_melting_rate  = float('NaN')
+			self.deepwater_melting_rate    = 0.
+			self.deepwater_elevation       = 0.
+			self.upperwater_elevation      = 0.
+			self.geothermalflux            = float('NaN')
+
+			#set defaults
+			self.setdefaultparameters()
+		elif len(args)==1 and args[0].__module__=='basalforcings':
+			print 'converting basalforings to linearbasalforcings'
+			inv=args[0]
+			self.groundedice_melting_rate  = inv.groundedice_melting_rate
+			self.geothermalflux            = inv.geothermalflux
+			self.deepwater_melting_rate    = 0.
+			self.deepwater_elevation       = 0.
+			self.upperwater_elevation      = 0.
+
+			#set defaults
+			self.setdefaultparameters()
+		else:
+			raise Exception('constructor not supported')
 
 		#}}}
@@ -44,7 +60,7 @@
 	def setdefaultparameters(self): # {{{
 
-		self.deepwater_melting_rate   = 50
-		self.deepwater_elevation      = -800
-		self.upperwater_elevation     = -800
+		self.deepwater_melting_rate   = 50.0
+		self.deepwater_elevation      = -800.0
+		self.upperwater_elevation     = -200.0
 
 		return self
@@ -54,19 +70,19 @@
 		if MasstransportAnalysisEnum() in analyses and not (solution==TransientSolutionEnum() and not md.transient.ismasstransport):
 			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'forcing',1)
-			md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0,'numel',1);
-			md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<','basalforcings.upperwater_elevation','numel',1);
-			md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0,'numel',1);
+			md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0);
+			md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);
+			md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0);
 
 		if BalancethicknessAnalysisEnum() in analyses:
 			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'size',[md.mesh.numberofvertices])
-			md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0,'numel',1);
-			md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<','basalforcings.upperwater_elevation','numel',1);
-			md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0,'numel',1);
+			md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0);
+			md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);
+			md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0);
 
 		if ThermalAnalysisEnum() in analyses and not (solution==TransientSolutionEnum() and not md.transient.isthermal):
 			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'forcing',1)
-			md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0,'numel',1);
-			md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<','basalforcings.upperwater_elevation','numel',1);
-			md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0,'numel',1);
+			md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0);
+			md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);
+			md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0);
 			md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'forcing',1,'>=',0)
 
@@ -76,8 +92,9 @@
 
 		yts=365.0*24.0*3600.0
-		floatingice_melting_rate=numpy.zeros((md.mesh.numberofvertices,1))
 
-		floatingice_melting_rate[numpy.nonzero(md.geometry.base<=md.basalforcings.deepwater_elevation))]=md.basalforcings.deepwater_melting_rate
-		pos=numpy.nonzero(md.geometry.base>md.basalforcings.deepwater_elevation and  md.geometry.base<md.basalforcings.upperwater_elevation)
+		floatingice_melting_rate = numpy.zeros((md.mesh.numberofvertices,1))
+		pos=numpy.nonzero(md.geometry.base<=md.basalforcings.deepwater_elevation)
+		floatingice_melting_rate[pos]=md.basalforcings.deepwater_melting_rate
+		pos=numpy.nonzero(numpy.logical_and(md.geometry.base>md.basalforcings.deepwater_elevation,md.geometry.base<md.basalforcings.upperwater_elevation))
 		floatingice_melting_rate[pos]=md.basalforcings.deepwater_melting_rate*(md.geometry.base[pos]-md.basalforcings.upperwater_elevation)/(md.basalforcings.deepwater_elevation-md.basalforcings.upperwater_elevation)
 
@@ -86,5 +103,5 @@
 		WriteData(fid,'data',floatingice_melting_rate,'enum',BasalforcingsFloatingiceMeltingRateEnum(),'format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1)
 		WriteData(fid,'object',self,'fieldname','geothermalflux','enum',BasalforcingsGeothermalfluxEnum(),'format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1)
-		WriteData(fid,'object',self,'fieldname','deepwater_melting_rate','enum',BasalforcingsDeelwaterMeltingRateEnum(),'format','Double','scale',1./yts)
+		WriteData(fid,'object',self,'fieldname','deepwater_melting_rate','enum',BasalforcingsDeepwaterMeltingRateEnum(),'format','Double','scale',1./yts)
 		WriteData(fid,'object',self,'fieldname','deepwater_elevation','enum',BasalforcingsDeepwaterElevationEnum(),'format','Double')
 		WriteData(fid,'object',self,'fieldname','upperwater_elevation','enum',BasalforcingsUpperwaterElevationEnum(),'format','Double')
Index: /issm/trunk-jpl/test/NightlyRun/test292.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test292.py	(revision 18114)
+++ /issm/trunk-jpl/test/NightlyRun/test292.py	(revision 18115)
@@ -9,4 +9,5 @@
 from solve import *
 from generic import generic
+from linearbasalforcings import linearbasalforcings
 
 md=triangle(model(),'../Exp/Square.exp',150000)
