Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 19018)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 19019)
@@ -183,4 +183,5 @@
 	IssmDouble* eps_xz = xNew<IssmDouble>(numvertices);
 	IssmDouble* eps_yz = xNew<IssmDouble>(numvertices);
+	IssmDouble* eps_ef = xNew<IssmDouble>(numvertices);
 
 	/* Start looping on the number of vertices: */
@@ -200,4 +201,6 @@
 			eps_yy[iv]=epsilon[1];
 			eps_xy[iv]=epsilon[2];
+			/* eps_eff^2 = 1/2 ( exx^2 + eyy^2 + 2*exy^2 )*/
+			eps_ef[iv] = 1./sqrt(2.)*sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + 2.*epsilon[2]*epsilon[2]);
 		}
 		else{
@@ -209,4 +212,6 @@
 			eps_xz[iv]=epsilon[4];
 			eps_yz[iv]=epsilon[5];
+			/* eps_eff^2 = exx^2 + eyy^2 + exy^2 + exz^2 + eyz^2 + exx*eyy */
+			eps_ef[iv] = sqrt(epsilon[0]*epsilon[0] + epsilon[1]*epsilon[1] + epsilon[3]*epsilon[3] +  epsilon[4]*epsilon[4] + epsilon[5]*epsilon[5] + epsilon[0]*epsilon[1]);
 		}
 	}
@@ -219,4 +224,5 @@
 	this->AddInput(StrainRateyzEnum,eps_yz,P1Enum);
 	this->AddInput(StrainRatezzEnum,eps_zz,P1Enum);
+	this->AddInput(StrainRateeffectiveEnum,eps_ef,P1Enum);
 
 	/*Clean up and return*/
@@ -1341,4 +1347,5 @@
 			case StrainRateyzEnum:
 			case StrainRatezzEnum:
+			case StrainRateeffectiveEnum:
 				this->ComputeStrainRate();
 				input=this->inputs->GetInput(output_enum);
Index: /issm/trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 19018)
+++ /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 19019)
@@ -1729,32 +1729,40 @@
 void FemModel::CalvingRateLevermannx(){/*{{{*/
 
-	   for(int i=0;i<elements->Size();i++){
-			      Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
-					      element->CalvingRateLevermann();
-							   }
+	for(int i=0;i<elements->Size();i++){
+		Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
+		element->CalvingRateLevermann();
+	}
 }
 /*}}}*/
 void FemModel::CalvingRatePix(){/*{{{*/
 
-	   for(int i=0;i<elements->Size();i++){
-			      Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
-					      element->CalvingRatePi();
-							   }
+	for(int i=0;i<elements->Size();i++){
+		Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
+		element->CalvingRatePi();
+	}
 }
 /*}}}*/
 void FemModel::StrainRateparallelx(){/*{{{*/
 
-	   for(int i=0;i<elements->Size();i++){
-			      Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
-					      element->StrainRateparallel();
-							   }
+	for(int i=0;i<elements->Size();i++){
+		Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
+		element->StrainRateparallel();
+	}
 }
 /*}}}*/
 void FemModel::StrainRateperpendicularx(){/*{{{*/
 
-	   for(int i=0;i<elements->Size();i++){
-			      Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
-					      element->StrainRateperpendicular();
-							   }
+	for(int i=0;i<elements->Size();i++){
+		Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
+		element->StrainRateperpendicular();
+	}
+}
+/*}}}*/
+void FemModel::DeviatoricStressx(){/*{{{*/
+
+	for(int i=0;i<elements->Size();i++){
+		Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
+		element->ComputeDeviatoricStressTensor();
+	}
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/FemModel.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.h	(revision 19018)
+++ /issm/trunk-jpl/src/c/classes/FemModel.h	(revision 19019)
@@ -85,4 +85,5 @@
 		void StrainRateparallelx();
 		void StrainRateperpendicularx();
+		void DeviatoricStressx();
 		void CalvingRateLevermannx();
 		void CalvingRatePix();
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 19018)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 19019)
@@ -217,4 +217,5 @@
 	CalvingLevermannEnum,
 	CalvingPiEnum,
+	CalvingDevEnum,
 	DefaultCalvingEnum,
 	CalvingRequestedOutputsEnum,
@@ -229,4 +230,5 @@
 	StrainRateparallelEnum,
 	StrainRateperpendicularEnum,
+	StrainRateeffectiveEnum,
 	MaterialsRhoIceEnum,
 	MaterialsRhoSeawaterEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 19018)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 19019)
@@ -225,4 +225,5 @@
 		case CalvingLevermannEnum : return "CalvingLevermann";
 		case CalvingPiEnum : return "CalvingPi";
+		case CalvingDevEnum : return "CalvingDev";
 		case DefaultCalvingEnum : return "DefaultCalving";
 		case CalvingRequestedOutputsEnum : return "CalvingRequestedOutputs";
@@ -237,4 +238,5 @@
 		case StrainRateparallelEnum : return "StrainRateparallel";
 		case StrainRateperpendicularEnum : return "StrainRateperpendicular";
+		case StrainRateeffectiveEnum : return "StrainRateeffective";
 		case MaterialsRhoIceEnum : return "MaterialsRhoIce";
 		case MaterialsRhoSeawaterEnum : return "MaterialsRhoSeawater";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 19018)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 19019)
@@ -228,4 +228,5 @@
 	      else if (strcmp(name,"CalvingLevermann")==0) return CalvingLevermannEnum;
 	      else if (strcmp(name,"CalvingPi")==0) return CalvingPiEnum;
+	      else if (strcmp(name,"CalvingDev")==0) return CalvingDevEnum;
 	      else if (strcmp(name,"DefaultCalving")==0) return DefaultCalvingEnum;
 	      else if (strcmp(name,"CalvingRequestedOutputs")==0) return CalvingRequestedOutputsEnum;
@@ -240,4 +241,5 @@
 	      else if (strcmp(name,"StrainRateparallel")==0) return StrainRateparallelEnum;
 	      else if (strcmp(name,"StrainRateperpendicular")==0) return StrainRateperpendicularEnum;
+	      else if (strcmp(name,"StrainRateeffective")==0) return StrainRateeffectiveEnum;
 	      else if (strcmp(name,"MaterialsRhoIce")==0) return MaterialsRhoIceEnum;
 	      else if (strcmp(name,"MaterialsRhoSeawater")==0) return MaterialsRhoSeawaterEnum;
@@ -258,10 +260,10 @@
 	      else if (strcmp(name,"MeshNumberofelements")==0) return MeshNumberofelementsEnum;
 	      else if (strcmp(name,"MeshNumberoflayers")==0) return MeshNumberoflayersEnum;
-	      else if (strcmp(name,"MeshNumberofvertices2d")==0) return MeshNumberofvertices2dEnum;
-	      else if (strcmp(name,"MeshNumberofvertices")==0) return MeshNumberofverticesEnum;
          else stage=3;
    }
    if(stage==3){
-	      if (strcmp(name,"MeshUpperelements")==0) return MeshUpperelementsEnum;
+	      if (strcmp(name,"MeshNumberofvertices2d")==0) return MeshNumberofvertices2dEnum;
+	      else if (strcmp(name,"MeshNumberofvertices")==0) return MeshNumberofverticesEnum;
+	      else if (strcmp(name,"MeshUpperelements")==0) return MeshUpperelementsEnum;
 	      else if (strcmp(name,"MeshVertexonbase")==0) return MeshVertexonbaseEnum;
 	      else if (strcmp(name,"MeshVertexonsurface")==0) return MeshVertexonsurfaceEnum;
@@ -381,10 +383,10 @@
 	      else if (strcmp(name,"SurfaceforcingsAccumulation")==0) return SurfaceforcingsAccumulationEnum;
 	      else if (strcmp(name,"SurfaceforcingsEvaporation")==0) return SurfaceforcingsEvaporationEnum;
-	      else if (strcmp(name,"SurfaceforcingsRunoff")==0) return SurfaceforcingsRunoffEnum;
-	      else if (strcmp(name,"SMBmeltcomponents")==0) return SMBmeltcomponentsEnum;
          else stage=4;
    }
    if(stage==4){
-	      if (strcmp(name,"SurfaceforcingsMelt")==0) return SurfaceforcingsMeltEnum;
+	      if (strcmp(name,"SurfaceforcingsRunoff")==0) return SurfaceforcingsRunoffEnum;
+	      else if (strcmp(name,"SMBmeltcomponents")==0) return SMBmeltcomponentsEnum;
+	      else if (strcmp(name,"SurfaceforcingsMelt")==0) return SurfaceforcingsMeltEnum;
 	      else if (strcmp(name,"SurfaceforcingsRefreeze")==0) return SurfaceforcingsRefreezeEnum;
 	      else if (strcmp(name,"SurfaceforcingsIspdd")==0) return SurfaceforcingsIspddEnum;
@@ -504,10 +506,10 @@
 	      else if (strcmp(name,"Penpair")==0) return PenpairEnum;
 	      else if (strcmp(name,"Profiler")==0) return ProfilerEnum;
-	      else if (strcmp(name,"MatrixParam")==0) return MatrixParamEnum;
-	      else if (strcmp(name,"Masscon")==0) return MassconEnum;
          else stage=5;
    }
    if(stage==5){
-	      if (strcmp(name,"MassconName")==0) return MassconNameEnum;
+	      if (strcmp(name,"MatrixParam")==0) return MatrixParamEnum;
+	      else if (strcmp(name,"Masscon")==0) return MassconEnum;
+	      else if (strcmp(name,"MassconName")==0) return MassconNameEnum;
 	      else if (strcmp(name,"MassconDefinitionenum")==0) return MassconDefinitionenumEnum;
 	      else if (strcmp(name,"MassconLevelset")==0) return MassconLevelsetEnum;
@@ -627,10 +629,10 @@
 	      else if (strcmp(name,"DeviatoricStressxx")==0) return DeviatoricStressxxEnum;
 	      else if (strcmp(name,"DeviatoricStressxy")==0) return DeviatoricStressxyEnum;
-	      else if (strcmp(name,"DeviatoricStressxz")==0) return DeviatoricStressxzEnum;
-	      else if (strcmp(name,"DeviatoricStressyy")==0) return DeviatoricStressyyEnum;
          else stage=6;
    }
    if(stage==6){
-	      if (strcmp(name,"DeviatoricStressyz")==0) return DeviatoricStressyzEnum;
+	      if (strcmp(name,"DeviatoricStressxz")==0) return DeviatoricStressxzEnum;
+	      else if (strcmp(name,"DeviatoricStressyy")==0) return DeviatoricStressyyEnum;
+	      else if (strcmp(name,"DeviatoricStressyz")==0) return DeviatoricStressyzEnum;
 	      else if (strcmp(name,"DeviatoricStresszz")==0) return DeviatoricStresszzEnum;
 	      else if (strcmp(name,"StrainRate")==0) return StrainRateEnum;
@@ -750,10 +752,10 @@
 	      else if (strcmp(name,"Outputdefinition70")==0) return Outputdefinition70Enum;
 	      else if (strcmp(name,"Outputdefinition71")==0) return Outputdefinition71Enum;
-	      else if (strcmp(name,"Outputdefinition72")==0) return Outputdefinition72Enum;
-	      else if (strcmp(name,"Outputdefinition73")==0) return Outputdefinition73Enum;
          else stage=7;
    }
    if(stage==7){
-	      if (strcmp(name,"Outputdefinition74")==0) return Outputdefinition74Enum;
+	      if (strcmp(name,"Outputdefinition72")==0) return Outputdefinition72Enum;
+	      else if (strcmp(name,"Outputdefinition73")==0) return Outputdefinition73Enum;
+	      else if (strcmp(name,"Outputdefinition74")==0) return Outputdefinition74Enum;
 	      else if (strcmp(name,"Outputdefinition75")==0) return Outputdefinition75Enum;
 	      else if (strcmp(name,"Outputdefinition76")==0) return Outputdefinition76Enum;
@@ -873,10 +875,10 @@
 	      else if (strcmp(name,"Dense")==0) return DenseEnum;
 	      else if (strcmp(name,"MpiDense")==0) return MpiDenseEnum;
-	      else if (strcmp(name,"MpiSparse")==0) return MpiSparseEnum;
-	      else if (strcmp(name,"Seq")==0) return SeqEnum;
          else stage=8;
    }
    if(stage==8){
-	      if (strcmp(name,"Mpi")==0) return MpiEnum;
+	      if (strcmp(name,"MpiSparse")==0) return MpiSparseEnum;
+	      else if (strcmp(name,"Seq")==0) return SeqEnum;
+	      else if (strcmp(name,"Mpi")==0) return MpiEnum;
 	      else if (strcmp(name,"Mumps")==0) return MumpsEnum;
 	      else if (strcmp(name,"Gsl")==0) return GslEnum;
Index: /issm/trunk-jpl/src/m/enum/CalvingDevEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/CalvingDevEnum.m	(revision 19019)
+++ /issm/trunk-jpl/src/m/enum/CalvingDevEnum.m	(revision 19019)
@@ -0,0 +1,11 @@
+function macro=CalvingDevEnum()
+%CALVINGDEVENUM - Enum of CalvingDev
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=CalvingDevEnum()
+
+macro=StringToEnum('CalvingDev');
Index: /issm/trunk-jpl/src/m/enum/EnumDefinitions.py
===================================================================
--- /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 19018)
+++ /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 19019)
@@ -217,4 +217,5 @@
 def CalvingLevermannEnum(): return StringToEnum("CalvingLevermann")[0]
 def CalvingPiEnum(): return StringToEnum("CalvingPi")[0]
+def CalvingDevEnum(): return StringToEnum("CalvingDev")[0]
 def DefaultCalvingEnum(): return StringToEnum("DefaultCalving")[0]
 def CalvingRequestedOutputsEnum(): return StringToEnum("CalvingRequestedOutputs")[0]
@@ -229,4 +230,5 @@
 def StrainRateparallelEnum(): return StringToEnum("StrainRateparallel")[0]
 def StrainRateperpendicularEnum(): return StringToEnum("StrainRateperpendicular")[0]
+def StrainRateeffectiveEnum(): return StringToEnum("StrainRateeffective")[0]
 def MaterialsRhoIceEnum(): return StringToEnum("MaterialsRhoIce")[0]
 def MaterialsRhoSeawaterEnum(): return StringToEnum("MaterialsRhoSeawater")[0]
Index: /issm/trunk-jpl/src/m/enum/StrainRateeffectiveEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/StrainRateeffectiveEnum.m	(revision 19019)
+++ /issm/trunk-jpl/src/m/enum/StrainRateeffectiveEnum.m	(revision 19019)
@@ -0,0 +1,11 @@
+function macro=StrainRateeffectiveEnum()
+%STRAINRATEEFFECTIVEENUM - Enum of StrainRateeffective
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=StrainRateeffectiveEnum()
+
+macro=StringToEnum('StrainRateeffective');
