Index: /issm/trunk-jpl/src/m/classes/calvinglevermann.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/calvinglevermann.m	(revision 19166)
+++ /issm/trunk-jpl/src/m/classes/calvinglevermann.m	(revision 19167)
@@ -7,4 +7,5 @@
 	properties (SetAccess=public) 
 		stabilization = 0;
+		spclevelset   = NaN;
 		coeff         = NaN;
 		meltingrate   = NaN;
@@ -30,4 +31,5 @@
 		end % }}}
 		function self = extrude(self,md) % {{{
+			self.spclevelset=project3d(md,'vector',self.spclevelset,'type','node');
 			self.coeff=project3d(md,'vector',self.coeff,'type','node');
 			self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node');
@@ -45,4 +47,5 @@
 			if (solution~=TransientSolutionEnum() | md.transient.iscalving==0), return; end
 
+			md = checkfield(md,'fieldname','calving.spclevelset','timeseries',1);
 			md = checkfield(md,'fieldname','calving.stabilization','values',[0 1 2]);
 			md = checkfield(md,'fieldname','calving.coeff','>',0,'size',[md.mesh.numberofvertices 1]);
@@ -52,4 +55,5 @@
 			disp(sprintf('   Calving Levermann parameters:'));
 			fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding');
+			fielddisplay(self,'spclevelset','Levelset constraints (NaN means no constraint)');
 			fielddisplay(self,'coeff','proportionality coefficient in Levermann model');
 			fielddisplay(self,'meltingrate','melting rate at given location [m/a]');
@@ -60,4 +64,5 @@
 			WriteData(fid,'enum',CalvingLawEnum(),'data',CalvingLevermannEnum(),'format','Integer');
 			WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',self.stabilization,'format','Integer');
+			WriteData(fid,'enum',SpcLevelsetEnum(),'data',self.spclevelset,'format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
 			WriteData(fid,'enum',CalvinglevermannCoeffEnum(),'data',self.coeff,'format','DoubleMat','mattype',1);
 			WriteData(fid,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts);
Index: /issm/trunk-jpl/src/m/classes/calvinglevermann.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/calvinglevermann.py	(revision 19166)
+++ /issm/trunk-jpl/src/m/classes/calvinglevermann.py	(revision 19167)
@@ -14,5 +14,7 @@
 
 	def __init__(self): # {{{
+
 		self.stabilization = 0
+		self.spclevelset   = float('NaN')
 		self.coeff         = float('NaN')
 		self.meltingrate   = float('NaN')
@@ -24,4 +26,5 @@
 	def __repr__(self): # {{{
 		string='   Calving Levermann parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'spclevelset','levelset constraints (NaN means no constraint)'))
 		string="%s\n%s"%(string,fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding'))
 		string="%s\n%s"%(string,fielddisplay(self,'coeff','proportionality coefficient in Levermann model'))
@@ -31,4 +34,5 @@
 		#}}}
 	def extrude(self,md): # {{{
+		self.spclevelset=project3d(md,'vector',self.spclevelset,'type','node')
 		self.coeff=project3d(md,'vector',self.coeff,'type','node')
 		self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node')
@@ -49,4 +53,5 @@
 			return md
 
+		md = checkfield(md,'fieldname','calving.spclevelset','timeseries',1)
 		md = checkfield(md,'fieldname','calving.stabilization','values',[0,1,2]);
 		md = checkfield(md,'fieldname','calving.coeff','size',[md.mesh.numberofvertices],'>',0)
@@ -58,4 +63,5 @@
 		WriteData(fid,'enum',CalvingLawEnum(),'data',CalvingLevermannEnum(),'format','Integer');
 		WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',self.stabilization,'format','Integer');
+		WriteData(fid,'enum',SpcLevelsetEnum(),'data',self.spclevelset,'format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
 		WriteData(fid,'enum',CalvinglevermannCoeffEnum(),'data',self.coeff,'format','DoubleMat','mattype',1)
 		WriteData(fid,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts)
Index: /issm/trunk-jpl/test/NightlyRun/test806.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test806.m	(revision 19166)
+++ /issm/trunk-jpl/test/NightlyRun/test806.m	(revision 19167)
@@ -28,4 +28,5 @@
 md.calving.coeff=4.89e13*ones(md.mesh.numberofvertices,1);
 md.calving.meltingrate=zeros(md.mesh.numberofvertices,1);
+md.calving.spclevelset=NaN(md.mesh.numberofvertices,1);
 
 md.transient.requested_outputs={'default','StrainRateparallel','StrainRateperpendicular','Calvingratex','Calvingratey','CalvingCalvingrate'};
Index: /issm/trunk-jpl/test/NightlyRun/test806.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test806.py	(revision 19166)
+++ /issm/trunk-jpl/test/NightlyRun/test806.py	(revision 19167)
@@ -27,6 +27,4 @@
 md.timestepping.final_time=30
 
-
-
 #Transient
 md.transient.isstressbalance=True
@@ -41,4 +39,5 @@
 md.calving.coeff=4.89e13*numpy.ones((md.mesh.numberofvertices,1))
 md.calving.meltingrate=numpy.zeros((md.mesh.numberofvertices,1))
+md.calving.spclevelset=numpy.float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
 
 md.transient.requested_outputs=['default','StrainRateparallel','StrainRateperpendicular','Calvingratex','Calvingratey','CalvingCalvingrate']
Index: /issm/trunk-jpl/test/NightlyRun/test807.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test807.py	(revision 19166)
+++ /issm/trunk-jpl/test/NightlyRun/test807.py	(revision 19167)
@@ -26,6 +26,4 @@
 md.timestepping.time_step=10
 md.timestepping.final_time=30
-
-
 
 #Transient
