Index: /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 20306)
+++ /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 20307)
@@ -197,4 +197,5 @@
 		switch(calvinglaw){
 			case DefaultCalvingEnum:
+			case CalvingDevEnum:
 				lsf_slopex_input  = basalelement->GetInput(LevelsetfunctionSlopeXEnum); _assert_(lsf_slopex_input);
 				if(dim==2) lsf_slopey_input  = basalelement->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input);
@@ -236,21 +237,4 @@
 				meltingrate_input = basalelement->GetInput(CalvingpiMeltingrateEnum);     _assert_(meltingrate_input);
 				break;
-			case CalvingDevEnum:
-				switch(domaintype){
-					case Domain2DverticalEnum:
-						calvingratex_input=basalelement->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
-						break;
-					case Domain2DhorizontalEnum:
-						calvingratex_input=basalelement->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
-						calvingratey_input=basalelement->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
-						break;
-					case Domain3DEnum:
-						calvingratex_input=basalelement->GetInput(CalvingratexAverageEnum); _assert_(calvingratex_input);
-						calvingratey_input=basalelement->GetInput(CalvingrateyAverageEnum); _assert_(calvingratey_input);
-						break;
-					default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-				}
-				meltingrate_input = basalelement->GetInput(CalvingMeltingrateEnum);     _assert_(meltingrate_input);
-				break;
 			default:
 				_error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
Index: /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 20306)
+++ /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 20307)
@@ -508,5 +508,5 @@
 	Input* fmb_input           = element->GetInput(BasalforcingsFloatingiceMeltingRateEnum);  _assert_(fmb_input);
 	Input* groundedice_input   = element->GetInput(MaskGroundediceLevelsetEnum);              _assert_(groundedice_input);
-	Input* ms_input            = element->GetInput(SmbMassBalanceEnum);           _assert_(ms_input);
+	Input* ms_input            = element->GetInput(SmbMassBalanceEnum);                       _assert_(ms_input);
 	Input* thickness_input     = element->GetInput(ThicknessEnum);                            _assert_(thickness_input);
 
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 20306)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 20307)
@@ -1997,4 +1997,7 @@
 					this->CalvingRatePi();
 					break;
+				case CalvingDevEnum:
+					this->CalvingRateDev();
+					break;
 				default:
 					_error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 20306)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 20307)
@@ -350,5 +350,5 @@
 	IssmDouble  calvingrate[NUMVERTICES];
 	IssmDouble  lambda1,lambda2,ex,ey,vx,vy,vel;
-	IssmDouble  sigma_vm,sigma_max,epse_2;
+	IssmDouble  sigma_vm,sigma_max,epse_2,groundedice;
 
 	/* Get node coordinates and dof list: */
@@ -358,4 +358,5 @@
 	Input* vx_input = inputs->GetInput(VxEnum); _assert_(vx_input);
 	Input* vy_input = inputs->GetInput(VyEnum); _assert_(vy_input);
+	Input* gr_input = inputs->GetInput(MaskGroundediceLevelsetEnum); _assert_(gr_input);
 	IssmDouble  B   = this->GetMaterialParameter(MaterialsRheologyBbarEnum);
 	IssmDouble  n   = this->GetMaterialParameter(MaterialsRheologyNEnum);
@@ -369,4 +370,5 @@
 		vx_input->GetInputValue(&vx,gauss);
 		vy_input->GetInputValue(&vy,gauss);
+		gr_input->GetInputValue(&groundedice,gauss);
 		vel=sqrt(vx*vx+vy*vy)+1.e-14;
 
@@ -390,7 +392,13 @@
 		sigma_max = 450.e+3;
 		sigma_max = 800.e+3; //too much
-		sigma_max = 700.e+3;
-		sigma_max = 670.e+3;
+		//sigma_max = 700.e+3;
+		//sigma_max = 670.e+3;
 		//sigma_max = 550.e+3;
+		sigma_max = 750.e+3; //too high
+		sigma_max = 850.e+3; //too low
+		sigma_max = 800.e+3; //IUGG previous test
+		sigma_max = 1000.e+3; //850 seems small
+
+		if(groundedice<0) sigma_max=200.e+3;
 
 		/*Assign values*/
