Index: /issm/trunk-jpl/src/m/classes/calvingcrevassedepth.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/calvingcrevassedepth.m	(revision 22292)
+++ /issm/trunk-jpl/src/m/classes/calvingcrevassedepth.m	(revision 22292)
@@ -0,0 +1,63 @@
+%CALVINCREVASSEDEPTH class definition
+%
+%   Usage:
+%      calvingcrevassedepth=calvingcrevassedepth();
+
+classdef calvingcrevassedepth
+	properties (SetAccess=public) 
+		critical_fraction = 0.;
+		water_height = 0.;
+		meltingrate   = NaN;
+	end
+	methods
+		function self = calvingcrevassedepth(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('calvingcrevassedepth');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node');
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			% crticial fraction of thickness that surface and basal crevasses penetrate for calving onset
+			self.critical_fraction = 1.;
+			self.water_height = 0.;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+
+			md = checkfield(md,'fieldname','calving.critical_fraction','>',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','calving.water_height','NaN',1,'Inf',1,'timeseries',1,'>=',0);
+			md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'Inf',1,'timeseries',1,'>=',0);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Calving Pi parameters:'));
+			fielddisplay(self,'critical_fraction','critical fraction of thickness that surface and basal crevasses penetrate for calving onset');
+			fielddisplay(self,'water_height','water height in the crevasse [m]');
+			fielddisplay(self,'meltingrate','melting rate at given location [m/a]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+			WriteData(fid,prefix,'name','md.calving.law','data',6,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','critical_fraction','format','Double');
+			WriteData(fid,prefix,'object',self,'fieldname','water_height','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+			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
+end
Index: /issm/trunk-jpl/src/m/classes/calvinghab.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/calvinghab.m	(revision 22292)
+++ /issm/trunk-jpl/src/m/classes/calvinghab.m	(revision 22292)
@@ -0,0 +1,58 @@
+%CALVINGHAB class definition
+%
+%   Usage:
+%      calvinghab=calvinghab();
+
+classdef calvinghab
+	properties (SetAccess=public) 
+		flotation_fraction = 0.;
+		meltingrate   = NaN;
+	end
+	methods
+		function self = calvinghab(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('calvinghab');
+					list2 = fieldnames(inputstruct);
+					for i=1:length(list1)
+						fieldname = list1{i};
+						if ismember(fieldname,list2),
+							self.(fieldname) = inputstruct.(fieldname);
+						end
+					end
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node');
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%fraction q = .15 of the flotation thickness at the terminus by default
+			self.flotation_fraction = 0.15;
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
+
+			md = checkfield(md,'fieldname','calving.flotation_fraction','>=',0,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'Inf',1,'timeseries',1,'>=',0);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Calving Pi parameters:'));
+			fielddisplay(self,'flotation_fraction','fraction of flotation thickness at the terminus');
+			fielddisplay(self,'meltingrate','melting rate at given location [m/a]');
+
+		end % }}}
+		function marshall(self,prefix,md,fid) % {{{
+			yts=md.constants.yts;
+			WriteData(fid,prefix,'name','md.calving.law','data',5,'format','Integer');
+			WriteData(fid,prefix,'object',self,'fieldname','flotation_fraction','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
+end
Index: /issm/trunk-jpl/src/m/classes/calvinglevermann.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/calvinglevermann.m	(revision 22291)
+++ /issm/trunk-jpl/src/m/classes/calvinglevermann.m	(revision 22292)
@@ -54,5 +54,5 @@
 			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,'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);
 		end % }}}
 	end
