Index: /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 22289)
+++ /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 22290)
@@ -78,4 +78,5 @@
 			iomodel->FetchDataToInput(elements,"md.calving.stress_threshold_groundedice",CalvingStressThresholdGroundediceEnum);
 			iomodel->FetchDataToInput(elements,"md.calving.stress_threshold_floatingice",CalvingStressThresholdFloatingiceEnum);
+			iomodel->FetchDataToInput(elements,"md.calving.meltingrate",CalvingMeltingrateEnum);
 			break;
 		default:
@@ -271,5 +272,5 @@
 			if(dim==2) lsf_slopey_input  = basalelement->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input);
 			calvingrate_input = basalelement->GetInput(CalvingCalvingrateEnum);     _assert_(calvingrate_input);
-			gr_input=basalelement->GetInput(MaskGroundediceLevelsetEnum); _assert_(gr_input);
+			meltingrate_input = basalelement->GetInput(CalvingMeltingrateEnum);     _assert_(meltingrate_input);
 			break;
 		default:
@@ -414,4 +415,5 @@
 				if(dim==2) lsf_slopey_input->GetInputValue(&dlsf[1],gauss);
 				calvingrate_input->GetInputValue(&calvingrate,gauss);
+				meltingrate_input->GetInputValue(&meltingrate,gauss);
 				gr_input->GetInputValue(&groundedice,gauss);
 
@@ -438,5 +440,5 @@
 				 for(i=0;i<dim;i++){ 
 					 c[i]=calvingrate*dlsf[i]/norm_dlsf; 
-					 m[i]=0.;
+					 m[i]=meltingrate*dlsf[i]/norm_dlsf;
 				 }
 				else
Index: /issm/trunk-jpl/src/m/classes/calvingdev2.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/calvingdev2.m	(revision 22289)
+++ /issm/trunk-jpl/src/m/classes/calvingdev2.m	(revision 22290)
@@ -9,4 +9,5 @@
 		stress_threshold_floatingice = 0.;
 		height_above_floatation = 0.;
+		meltingrate   = NaN;
 	end
 	methods
@@ -30,12 +31,13 @@
 		end % }}}
 		function self = extrude(self,md) % {{{
-			%extrude here
+			self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node');
 		end % }}}
 		function self = setdefaultparameters(self) % {{{
 
 			%Default sigma max
-			self.stress_threshold_groundedice = 1e6;
-			self.stress_threshold_floatingice = 150e3;
-			self.height_above_floatation= 0;
+			self.stress_threshold_groundedice = 1.e6;
+			self.stress_threshold_floatingice = 150.e3;
+			self.height_above_floatation= 0.;
+			self.meltingrate= 0.;
 		end % }}}
 		function md = checkconsistency(self,md,solution,analyses) % {{{
@@ -46,5 +48,5 @@
 			md = checkfield(md,'fieldname','calving.stress_threshold_floatingice','>',0,'nan',1,'Inf',1);
 			md = checkfield(md,'fieldname','calving.height_above_floatation','<=',0);
-
+			md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'Inf',1,'timeseries',1,'>=',0);
 		end % }}}
 		function disp(self) % {{{
@@ -53,5 +55,5 @@
 			fielddisplay(self,'stress_threshold_floatingice','sigma_max applied to floating ice only [Pa]');
 			fielddisplay(self,'height_above_floatation','height above floatation that the ice tongue must reach before it can calve [m]');
-
+			fielddisplay(self,'meltingrate','frontal undercutting melting rate at given location [m/a]');
 		end % }}}
 		function marshall(self,prefix,md,fid) % {{{
@@ -61,4 +63,5 @@
 			WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_floatingice','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1, 'yts', md.constants.yts);
 			WriteData(fid,prefix,'object',self,'fieldname','height_above_floatation', 'format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts);
 		end % }}}
 	end
