Index: /issm/trunk-jpl/jenkins/javascript/karma/lib/bin/calving.js
===================================================================
--- /issm/trunk-jpl/jenkins/javascript/karma/lib/bin/calving.js	(revision 20814)
+++ /issm/trunk-jpl/jenkins/javascript/karma/lib/bin/calving.js	(revision 20814)
@@ -0,0 +1,51 @@
+//CALVING class definition
+//
+//   Usage:
+//      calving=new calving();
+
+function calving (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   Calving parameters:'));
+		fielddisplay(this,'calvingrate','calving rate at given location [m/a]');
+		fielddisplay(this,'meltingrate','melting rate at given location [m/a]');
+
+	}// }}}
+    this.extrude = function(md) {//{{{
+        this.calvingrate=project3d(md,'vector',this.calvingrate,'type','node');
+        this.meltingrate=project3d(md,'vector',this.meltingrate,'type','node');
+        return this;
+    }//}}}
+	this.classname= function(){// {{{
+		return "calving";
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses) { // {{{
+		//Early return
+		if (solution!=TransientSolutionEnum() | md.trans.ismovingfront==0) return;
+
+		checkfield(md,'fieldname','calving.calvingrate(1:md.mesh.numberofvertices,:)','>=',0,'timeseries',1,'NaN',1,'Inf',1);
+		checkfield(md,'fieldname','calving.meltingrate(1:md.mesh.numberofvertices,:)','>=',0,'timeseries',1,'NaN',1,'Inf',1);
+	} //}}}
+		this.marshall=function(md,prefix,fid) { //{{{
+			var yts=365.0*24.0*3600.0;
+			WriteData(fid,prefix,'name','md.calving.law','data',DefaultCalvingEnum(),'format','Integer');
+			WriteData(fid,prefix,'object',this,'fieldname','calvingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts);
+			WriteData(fid,prefix,'object',this,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts);
+		}//}}}
+		this.fix=function() { //{{{
+			this.calvingrate=NullFix(this.calvingrate,NaN);
+			this.meltingrate=NullFix(this.meltingrate,NaN);
+		}//}}}
+	//properties 
+	// {{{
+
+	this.calvingrate   = NaN;
+	this.meltingrate   = NaN;
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk-jpl/jenkins/javascript/karma/lib/bin/model.js
===================================================================
--- /issm/trunk-jpl/jenkins/javascript/karma/lib/bin/model.js	(revision 20813)
+++ /issm/trunk-jpl/jenkins/javascript/karma/lib/bin/model.js	(revision 20814)
@@ -339,5 +339,5 @@
                 md.masstransport=md.masstransport.extrude(md);
                 md.levelset=md.levelset.extrude(md);
-                md.calving=extrude(md.calving,md);
+                md.calving=md.calving.extrude(md);
                 md.hydrology = extrude(md.hydrology,md);
 
Index: /issm/trunk-jpl/src/m/classes/calving.js
===================================================================
--- /issm/trunk-jpl/src/m/classes/calving.js	(revision 20813)
+++ /issm/trunk-jpl/src/m/classes/calving.js	(revision 20814)
@@ -16,4 +16,9 @@
 
 	}// }}}
+    this.extrude = function(md) {//{{{
+        this.calvingrate=project3d(md,'vector',this.calvingrate,'type','node');
+        this.meltingrate=project3d(md,'vector',this.meltingrate,'type','node');
+        return this;
+    }//}}}
 	this.classname= function(){// {{{
 		return "calving";
