Index: /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 20718)
+++ /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 20719)
@@ -198,4 +198,5 @@
 		case DefaultCalvingEnum:
 		case CalvingDevEnum:
+		case CalvingMinthicknessEnum:
 			lsf_slopex_input  = basalelement->GetInput(LevelsetfunctionSlopeXEnum); _assert_(lsf_slopex_input);
 			if(dim==2) lsf_slopey_input  = basalelement->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input);
@@ -251,4 +252,6 @@
 		switch(calvinglaw){
 			case DefaultCalvingEnum:
+			case CalvingDevEnum:
+			case CalvingMinthicknessEnum:
 				lsf_slopex_input->GetInputValue(&dlsf[0],gauss);
 				if(dim==2) lsf_slopey_input->GetInputValue(&dlsf[1],gauss);
@@ -271,5 +274,4 @@
 
 			case CalvingLevermannEnum:
-			case CalvingDevEnum:
 				calvingratex_input->GetInputValue(&c[0],gauss);
 				if(dim==2) calvingratey_input->GetInputValue(&c[1],gauss);
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 20718)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 20719)
@@ -2077,4 +2077,7 @@
 					this->CalvingRateDev();
 					break;
+				case CalvingMinthicknessEnum:
+					this->CalvingRateMinthickness();
+					break;
 				default:
 					_error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 20718)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 20719)
@@ -176,4 +176,5 @@
 		virtual void	    CalvingRateLevermann(void)=0;
 		virtual void       CalvingRateDev(void){_error_("not implemented yet");};
+		virtual void       CalvingRateMinthickness(void){_error_("not implemented yet");};
 		virtual void       WriteLevelsetSegment(DataSet* segments){_error_("not implemented yet");};
 		virtual void       ResetLevelsetFromSegmentlist(IssmDouble* segments,int numsegments){_error_("not implemented yet");};
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 20718)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 20719)
@@ -327,4 +327,49 @@
 		calvingratey[iv]=vy*sigma_vm/sigma_max;
 		calvingrate[iv]=sqrt(calvingratex[iv]*calvingratex[iv] + calvingratey[iv]*calvingratey[iv]);
+	}
+
+	/*Add input*/
+	this->inputs->AddInput(new TriaInput(CalvingratexEnum,&calvingratex[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(CalvingrateyEnum,&calvingratey[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(CalvingCalvingrateEnum,&calvingrate[0],P1Enum));
+
+	/*Clean up and return*/
+	delete gauss;
+}
+/*}}}*/
+void       Tria::CalvingRateMinthickness(){/*{{{*/
+
+	IssmDouble  calvingratex[NUMVERTICES];
+	IssmDouble  calvingratey[NUMVERTICES];
+	IssmDouble  calvingrate[NUMVERTICES];
+	IssmDouble  vx,vy,H,minH;
+
+	/*Retrieve all inputs and parameters we will need*/
+	Input* vx_input = inputs->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input = inputs->GetInput(VyEnum); _assert_(vy_input);
+	Input* H_input  = inputs->GetInput(ThicknessEnum); _assert_(H_input);
+	parameters->FindParam(&minH,CalvingMinthicknessEnum);
+
+	/* Start looping on the number of vertices: */
+	GaussTria* gauss=new GaussTria();
+	for(int iv=0;iv<NUMVERTICES;iv++){
+		gauss->GaussVertex(iv);
+
+		/*Get velocity components and thickness*/
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		H_input->GetInputValue(&H,gauss);
+
+		/*Assign values*/
+		if(H>minH){
+			calvingratex[iv]=0.;
+			calvingratey[iv]=0.;
+			calvingrate[iv]=0.;
+		}
+		else{
+			calvingratex[iv]=vx+1e-2; //counter balance advance + add some retreat
+			calvingratey[iv]=vy+1e-2;
+			calvingrate[iv]=sqrt(calvingratex[iv]*calvingratex[iv] + calvingratey[iv]*calvingratey[iv]);
+		}
 	}
 
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 20718)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 20719)
@@ -54,4 +54,5 @@
 		void			CalvingRateLevermann();
 		void			CalvingRateDev();
+		void			CalvingRateMinthickness();
 		void			WriteLevelsetSegment(DataSet* segments);
 		void        ResetLevelsetFromSegmentlist(IssmDouble* segments,int numsegments);
Index: /issm/trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 20718)
+++ /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 20719)
@@ -2166,4 +2166,12 @@
 }
 /*}}}*/
+void FemModel::CalvingRateMinthicknessx(){/*{{{*/
+
+	for(int i=0;i<elements->Size();i++){
+		Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
+		element->CalvingRateMinthickness();
+	}
+}
+/*}}}*/
 void FemModel::StrainRateparallelx(){/*{{{*/
 
Index: /issm/trunk-jpl/src/c/classes/FemModel.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.h	(revision 20718)
+++ /issm/trunk-jpl/src/c/classes/FemModel.h	(revision 20719)
@@ -95,4 +95,5 @@
 		void CalvingRateLevermannx();
 		void CalvingRateDevx();
+		void CalvingRateMinthicknessx();
 		void ResetLevelset();
 		#ifdef  _HAVE_DAKOTA_
Index: /issm/trunk-jpl/src/c/modules/Calvingx/Calvingx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/Calvingx/Calvingx.cpp	(revision 20718)
+++ /issm/trunk-jpl/src/c/modules/Calvingx/Calvingx.cpp	(revision 20719)
@@ -27,4 +27,7 @@
 			femmodel->ElementOperationx(&Element::CalvingRateDev);
 			break;
+		case CalvingMinthicknessEnum:
+			femmodel->CalvingRateMinthicknessx();
+			break;
 		default:
 			_error_("Caving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
