Index: ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 19018)
+++ ../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 19019)
@@ -216,6 +216,7 @@
 	CalvingMeltingrateEnum,
 	CalvingLevermannEnum,
 	CalvingPiEnum,
+	CalvingDevEnum,
 	DefaultCalvingEnum,
 	CalvingRequestedOutputsEnum,
 	CalvinglevermannCoeffEnum,
@@ -228,6 +229,7 @@
 	CalvingrateyAverageEnum,
 	StrainRateparallelEnum,
 	StrainRateperpendicularEnum,
+	StrainRateeffectiveEnum,
 	MaterialsRhoIceEnum,
 	MaterialsRhoSeawaterEnum,
 	MaterialsRhoFreshwaterEnum,
Index: ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 19018)
+++ ../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 19019)
@@ -224,6 +224,7 @@
 		case CalvingMeltingrateEnum : return "CalvingMeltingrate";
 		case CalvingLevermannEnum : return "CalvingLevermann";
 		case CalvingPiEnum : return "CalvingPi";
+		case CalvingDevEnum : return "CalvingDev";
 		case DefaultCalvingEnum : return "DefaultCalving";
 		case CalvingRequestedOutputsEnum : return "CalvingRequestedOutputs";
 		case CalvinglevermannCoeffEnum : return "CalvinglevermannCoeff";
@@ -236,6 +237,7 @@
 		case CalvingrateyAverageEnum : return "CalvingrateyAverage";
 		case StrainRateparallelEnum : return "StrainRateparallel";
 		case StrainRateperpendicularEnum : return "StrainRateperpendicular";
+		case StrainRateeffectiveEnum : return "StrainRateeffective";
 		case MaterialsRhoIceEnum : return "MaterialsRhoIce";
 		case MaterialsRhoSeawaterEnum : return "MaterialsRhoSeawater";
 		case MaterialsRhoFreshwaterEnum : return "MaterialsRhoFreshwater";
Index: ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 19018)
+++ ../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 19019)
@@ -227,6 +227,7 @@
 	      else if (strcmp(name,"CalvingMeltingrate")==0) return CalvingMeltingrateEnum;
 	      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;
 	      else if (strcmp(name,"CalvinglevermannCoeff")==0) return CalvinglevermannCoeffEnum;
@@ -239,6 +240,7 @@
 	      else if (strcmp(name,"CalvingrateyAverage")==0) return CalvingrateyAverageEnum;
 	      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;
 	      else if (strcmp(name,"MaterialsRhoFreshwater")==0) return MaterialsRhoFreshwaterEnum;
@@ -257,12 +259,12 @@
 	      else if (strcmp(name,"MeshNumberofelements2d")==0) return MeshNumberofelements2dEnum;
 	      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;
 	      else if (strcmp(name,"MeshVertexonboundary")==0) return MeshVertexonboundaryEnum;
@@ -380,12 +382,12 @@
 	      else if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum;
 	      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;
 	      else if (strcmp(name,"SurfaceforcingsIssmbgradients")==0) return SurfaceforcingsIssmbgradientsEnum;
@@ -503,12 +505,12 @@
 	      else if (strcmp(name,"Pengrid")==0) return PengridEnum;
 	      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;
 	      else if (strcmp(name,"Massconaxpby")==0) return MassconaxpbyEnum;
@@ -626,12 +628,12 @@
 	      else if (strcmp(name,"DeviatoricStress")==0) return DeviatoricStressEnum;
 	      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;
 	      else if (strcmp(name,"StrainRatexx")==0) return StrainRatexxEnum;
@@ -749,12 +751,12 @@
 	      else if (strcmp(name,"Outputdefinition69")==0) return Outputdefinition69Enum;
 	      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;
 	      else if (strcmp(name,"Outputdefinition77")==0) return Outputdefinition77Enum;
@@ -872,12 +874,12 @@
 	      else if (strcmp(name,"XYZ")==0) return XYZEnum;
 	      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;
 	      else if (strcmp(name,"Option")==0) return OptionEnum;
Index: ../trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- ../trunk-jpl/src/c/classes/FemModel.cpp	(revision 19018)
+++ ../trunk-jpl/src/c/classes/FemModel.cpp	(revision 19019)
@@ -1728,36 +1728,44 @@
 	/*}}}*/
 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();
+	}
+}
+/*}}}*/
 #ifdef  _HAVE_DAKOTA_
 void FemModel::DakotaResponsesx(double* d_responses,char** responses_descriptors,int numresponsedescriptors,int d_numresponses){/*{{{*/
 
Index: ../trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- ../trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 19018)
+++ ../trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 19019)
@@ -182,6 +182,7 @@
 	IssmDouble* eps_xy = xNew<IssmDouble>(numvertices);
 	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: */
 	Gauss* gauss=this->NewGauss();
@@ -199,6 +200,8 @@
 			eps_xx[iv]=epsilon[0]; 
 			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{
 			/*epsilon=[exx eyy ezz exy exz eyz]*/
@@ -208,6 +211,8 @@
 			eps_xy[iv]=epsilon[3]; 
 			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]);
 		}
 	}
 
@@ -218,6 +223,7 @@
 	this->AddInput(StrainRateyyEnum,eps_yy,P1Enum);
 	this->AddInput(StrainRateyzEnum,eps_yz,P1Enum);
 	this->AddInput(StrainRatezzEnum,eps_zz,P1Enum);
+	this->AddInput(StrainRateeffectiveEnum,eps_ef,P1Enum);
 
 	/*Clean up and return*/
 	delete gauss;
@@ -1340,6 +1346,7 @@
 			case StrainRateyyEnum:
 			case StrainRateyzEnum:
 			case StrainRatezzEnum:
+			case StrainRateeffectiveEnum:
 				this->ComputeStrainRate();
 				input=this->inputs->GetInput(output_enum);
 				break;
Index: ../trunk-jpl/src/c/classes/FemModel.h
===================================================================
--- ../trunk-jpl/src/c/classes/FemModel.h	(revision 19018)
+++ ../trunk-jpl/src/c/classes/FemModel.h	(revision 19019)
@@ -84,6 +84,7 @@
 		void StressIntensityFactorx();
 		void StrainRateparallelx();
 		void StrainRateperpendicularx();
+		void DeviatoricStressx();
 		void CalvingRateLevermannx();
 		void CalvingRatePix();
 		#ifdef  _HAVE_DAKOTA_
Index: ../trunk-jpl/src/m/enum/EnumDefinitions.py
===================================================================
--- ../trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 19018)
+++ ../trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 19019)
@@ -216,6 +216,7 @@
 def CalvingMeltingrateEnum(): return StringToEnum("CalvingMeltingrate")[0]
 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]
 def CalvinglevermannCoeffEnum(): return StringToEnum("CalvinglevermannCoeff")[0]
@@ -228,6 +229,7 @@
 def CalvingrateyAverageEnum(): return StringToEnum("CalvingrateyAverage")[0]
 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]
 def MaterialsRhoFreshwaterEnum(): return StringToEnum("MaterialsRhoFreshwater")[0]
Index: ../trunk-jpl/src/m/enum/CalvingDevEnum.m
===================================================================
--- ../trunk-jpl/src/m/enum/CalvingDevEnum.m	(revision 0)
+++ ../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: ../trunk-jpl/src/m/enum/StrainRateeffectiveEnum.m
===================================================================
--- ../trunk-jpl/src/m/enum/StrainRateeffectiveEnum.m	(revision 0)
+++ ../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');
