Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 23998)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 23999)
@@ -2895,4 +2895,6 @@
 		case DeviatoricStressyzEnum:
 		case DeviatoricStresszzEnum:
+		case DeviatoricStress1Enum:
+		case DeviatoricStress2Enum:
 		case DeviatoricStresseffectiveEnum: this->ComputeDeviatoricStressTensor(); break;
 		case EsaStrainratexxEnum:
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 23998)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 23999)
@@ -496,5 +496,5 @@
 
 	IssmDouble  xyz_list[NUMVERTICES][3];
-	IssmDouble  viscosity;
+	IssmDouble  viscosity,lambda1,lambda2;
 	IssmDouble  epsilon[3]; /* epsilon=[exx,eyy,exy];*/
 	IssmDouble  tau_xx[NUMVERTICES];
@@ -505,4 +505,6 @@
 	IssmDouble	tau_yz[NUMVERTICES]={0,0,0};
 	IssmDouble  tau_e[NUMVERTICES];
+	IssmDouble  tau_1[NUMVERTICES];
+	IssmDouble  tau_2[NUMVERTICES];
 	GaussTria*  gauss=NULL;
 	int domaintype,dim=2;
@@ -546,4 +548,7 @@
 		tau_xy[iv]=2*viscosity*epsilon[2];
 		tau_e[iv]=1/sqrt(2)*sqrt(pow(tau_xx[iv],2)+pow(tau_yy[iv],2)+2*pow(tau_xy[iv],2));
+
+		/*Get Eigen values*/
+		Matrix2x2Eigen(&tau_1[iv],&tau_2[iv],NULL,NULL,epsilon[0],epsilon[2],epsilon[1]);
 	}
 
@@ -556,4 +561,6 @@
 	this->inputs->AddInput(new TriaInput(DeviatoricStresszzEnum,&tau_zz[0],P1Enum));
 	this->inputs->AddInput(new TriaInput(DeviatoricStresseffectiveEnum,&tau_e[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(DeviatoricStress1Enum,&tau_1[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(DeviatoricStress2Enum,&tau_2[0],P1Enum));
 
 	/*Clean up and return*/
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 23998)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 23999)
@@ -486,4 +486,6 @@
 	DeviatoricStressyzEnum,
 	DeviatoricStresszzEnum,
+	DeviatoricStress1Enum,
+	DeviatoricStress2Enum,
 	DistanceToCalvingfrontEnum,
 	DistanceToGroundinglineEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 23998)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 23999)
@@ -492,4 +492,6 @@
 		case DeviatoricStressyzEnum : return "DeviatoricStressyz";
 		case DeviatoricStresszzEnum : return "DeviatoricStresszz";
+		case DeviatoricStress1Enum : return "DeviatoricStress1";
+		case DeviatoricStress2Enum : return "DeviatoricStress2";
 		case DistanceToCalvingfrontEnum : return "DistanceToCalvingfront";
 		case DistanceToGroundinglineEnum : return "DistanceToGroundingline";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 23998)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 23999)
@@ -501,13 +501,15 @@
 	      else if (strcmp(name,"DeviatoricStressyz")==0) return DeviatoricStressyzEnum;
 	      else if (strcmp(name,"DeviatoricStresszz")==0) return DeviatoricStresszzEnum;
+	      else if (strcmp(name,"DeviatoricStress1")==0) return DeviatoricStress1Enum;
+	      else if (strcmp(name,"DeviatoricStress2")==0) return DeviatoricStress2Enum;
 	      else if (strcmp(name,"DistanceToCalvingfront")==0) return DistanceToCalvingfrontEnum;
 	      else if (strcmp(name,"DistanceToGroundingline")==0) return DistanceToGroundinglineEnum;
 	      else if (strcmp(name,"Domain2Dhorizontal")==0) return Domain2DhorizontalEnum;
-	      else if (strcmp(name,"Domain2Dvertical")==0) return Domain2DverticalEnum;
-	      else if (strcmp(name,"Domain3D")==0) return Domain3DEnum;
          else stage=5;
    }
    if(stage==5){
-	      if (strcmp(name,"DragCoefficientAbsGradient")==0) return DragCoefficientAbsGradientEnum;
+	      if (strcmp(name,"Domain2Dvertical")==0) return Domain2DverticalEnum;
+	      else if (strcmp(name,"Domain3D")==0) return Domain3DEnum;
+	      else if (strcmp(name,"DragCoefficientAbsGradient")==0) return DragCoefficientAbsGradientEnum;
 	      else if (strcmp(name,"DrivingStressX")==0) return DrivingStressXEnum;
 	      else if (strcmp(name,"DrivingStressY")==0) return DrivingStressYEnum;
@@ -627,10 +629,10 @@
 	      else if (strcmp(name,"P1")==0) return P1Enum;
 	      else if (strcmp(name,"Pressure")==0) return PressureEnum;
-	      else if (strcmp(name,"RheologyBAbsGradient")==0) return RheologyBAbsGradientEnum;
-	      else if (strcmp(name,"RheologyBInitialguess")==0) return RheologyBInitialguessEnum;
          else stage=6;
    }
    if(stage==6){
-	      if (strcmp(name,"RheologyBInitialguessMisfit")==0) return RheologyBInitialguessMisfitEnum;
+	      if (strcmp(name,"RheologyBAbsGradient")==0) return RheologyBAbsGradientEnum;
+	      else if (strcmp(name,"RheologyBInitialguess")==0) return RheologyBInitialguessEnum;
+	      else if (strcmp(name,"RheologyBInitialguessMisfit")==0) return RheologyBInitialguessMisfitEnum;
 	      else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum;
 	      else if (strcmp(name,"Sealevel")==0) return SealevelEnum;
@@ -750,10 +752,10 @@
 	      else if (strcmp(name,"SmbZY")==0) return SmbZYEnum;
 	      else if (strcmp(name,"StrainRateeffective")==0) return StrainRateeffectiveEnum;
-	      else if (strcmp(name,"StrainRateparallel")==0) return StrainRateparallelEnum;
-	      else if (strcmp(name,"StrainRateperpendicular")==0) return StrainRateperpendicularEnum;
          else stage=7;
    }
    if(stage==7){
-	      if (strcmp(name,"StrainRatexx")==0) return StrainRatexxEnum;
+	      if (strcmp(name,"StrainRateparallel")==0) return StrainRateparallelEnum;
+	      else if (strcmp(name,"StrainRateperpendicular")==0) return StrainRateperpendicularEnum;
+	      else if (strcmp(name,"StrainRatexx")==0) return StrainRatexxEnum;
 	      else if (strcmp(name,"StrainRatexy")==0) return StrainRatexyEnum;
 	      else if (strcmp(name,"StrainRatexz")==0) return StrainRatexzEnum;
@@ -873,10 +875,10 @@
 	      else if (strcmp(name,"Outputdefinition64")==0) return Outputdefinition64Enum;
 	      else if (strcmp(name,"Outputdefinition65")==0) return Outputdefinition65Enum;
-	      else if (strcmp(name,"Outputdefinition66")==0) return Outputdefinition66Enum;
-	      else if (strcmp(name,"Outputdefinition67")==0) return Outputdefinition67Enum;
          else stage=8;
    }
    if(stage==8){
-	      if (strcmp(name,"Outputdefinition68")==0) return Outputdefinition68Enum;
+	      if (strcmp(name,"Outputdefinition66")==0) return Outputdefinition66Enum;
+	      else if (strcmp(name,"Outputdefinition67")==0) return Outputdefinition67Enum;
+	      else if (strcmp(name,"Outputdefinition68")==0) return Outputdefinition68Enum;
 	      else if (strcmp(name,"Outputdefinition69")==0) return Outputdefinition69Enum;
 	      else if (strcmp(name,"Outputdefinition6")==0) return Outputdefinition6Enum;
@@ -996,10 +998,10 @@
 	      else if (strcmp(name,"EsaSolution")==0) return EsaSolutionEnum;
 	      else if (strcmp(name,"EsaTransitions")==0) return EsaTransitionsEnum;
-	      else if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum;
-	      else if (strcmp(name,"ExtrapolationAnalysis")==0) return ExtrapolationAnalysisEnum;
          else stage=9;
    }
    if(stage==9){
-	      if (strcmp(name,"ExtrudeFromBaseAnalysis")==0) return ExtrudeFromBaseAnalysisEnum;
+	      if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum;
+	      else if (strcmp(name,"ExtrapolationAnalysis")==0) return ExtrapolationAnalysisEnum;
+	      else if (strcmp(name,"ExtrudeFromBaseAnalysis")==0) return ExtrudeFromBaseAnalysisEnum;
 	      else if (strcmp(name,"ExtrudeFromTopAnalysis")==0) return ExtrudeFromTopAnalysisEnum;
 	      else if (strcmp(name,"FSApproximation")==0) return FSApproximationEnum;
@@ -1119,10 +1121,10 @@
 	      else if (strcmp(name,"MaxVz")==0) return MaxVzEnum;
 	      else if (strcmp(name,"Melange")==0) return MelangeEnum;
-	      else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum;
-	      else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum;
          else stage=10;
    }
    if(stage==10){
-	      if (strcmp(name,"MeshX")==0) return MeshXEnum;
+	      if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum;
+	      else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum;
+	      else if (strcmp(name,"MeshX")==0) return MeshXEnum;
 	      else if (strcmp(name,"MeshY")==0) return MeshYEnum;
 	      else if (strcmp(name,"MinVel")==0) return MinVelEnum;
@@ -1242,10 +1244,10 @@
 	      else if (strcmp(name,"TotalFloatingBmb")==0) return TotalFloatingBmbEnum;
 	      else if (strcmp(name,"TotalFloatingBmbScaled")==0) return TotalFloatingBmbScaledEnum;
-	      else if (strcmp(name,"TotalGroundedBmb")==0) return TotalGroundedBmbEnum;
-	      else if (strcmp(name,"TotalGroundedBmbScaled")==0) return TotalGroundedBmbScaledEnum;
          else stage=11;
    }
    if(stage==11){
-	      if (strcmp(name,"TotalSmb")==0) return TotalSmbEnum;
+	      if (strcmp(name,"TotalGroundedBmb")==0) return TotalGroundedBmbEnum;
+	      else if (strcmp(name,"TotalGroundedBmbScaled")==0) return TotalGroundedBmbScaledEnum;
+	      else if (strcmp(name,"TotalSmb")==0) return TotalSmbEnum;
 	      else if (strcmp(name,"TotalSmbScaled")==0) return TotalSmbScaledEnum;
 	      else if (strcmp(name,"TransientArrayParam")==0) return TransientArrayParamEnum;
Index: /issm/trunk-jpl/src/c/shared/Matrix/MatrixUtils.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Matrix/MatrixUtils.cpp	(revision 23998)
+++ /issm/trunk-jpl/src/c/shared/Matrix/MatrixUtils.cpp	(revision 23999)
@@ -424,6 +424,6 @@
 	*plambda1 = lambda1;
 	*plambda2 = lambda2;
-	*pvx      = vx;
-	*pvy      = vy;
+	if(pvx) *pvx = vx;
+	if(pvy) *pvy = vy;
 
 }/*}}}*/
