Index: /issm/trunk-jpl/src/c/analyses/Balancethickness2Analysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/Balancethickness2Analysis.cpp	(revision 17838)
+++ /issm/trunk-jpl/src/c/analyses/Balancethickness2Analysis.cpp	(revision 17839)
@@ -258,6 +258,8 @@
 	/*Fetch dof list and allocate solution vector*/
 	element->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
-	IssmDouble* thickness = xNew<IssmDouble>(numvertices);
-	IssmDouble* values    = xNew<IssmDouble>(numnodes);
+	IssmDouble* values         = xNew<IssmDouble>(numnodes);
+	IssmDouble* thickness_list = xNew<IssmDouble>(numvertices);
+	IssmDouble* vx_list        = xNew<IssmDouble>(numvertices);
+	IssmDouble* vy_list        = xNew<IssmDouble>(numvertices);
 
 	/*Use the dof list to index into the solution vector: */
@@ -288,7 +290,11 @@
 		normdphi = sqrt(dphi[0]*dphi[0] + dphi[1]*dphi[1]);
 
-		thickness[iv] = normdphi/vel;
-	}
-	element->AddInput(ThicknessEnum,thickness,P1Enum);
+		thickness_list[iv] = normdphi/vel;
+		vx_list[iv]        = 1./thickness_list[iv] * dphi[0];
+		vy_list[iv]        = 1./thickness_list[iv] * dphi[1];
+	}
+	element->AddInput(ThicknessEnum,thickness_list,P1Enum);
+	element->AddInput(VxEnum,vx_list,P1Enum);
+	element->AddInput(VyEnum,vy_list,P1Enum);
 
 	/*Clean up and return*/
@@ -297,5 +303,7 @@
 	xDelete<IssmDouble>(xyz_list);
 	xDelete<IssmDouble>(values);
-	xDelete<IssmDouble>(thickness);
+	xDelete<IssmDouble>(thickness_list);
+	xDelete<IssmDouble>(vx_list);
+	xDelete<IssmDouble>(vy_list);
 }/*}}}*/
 void Balancethickness2Analysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
Index: /issm/trunk-jpl/src/c/cores/balancethickness2_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/balancethickness2_core.cpp	(revision 17838)
+++ /issm/trunk-jpl/src/c/cores/balancethickness2_core.cpp	(revision 17839)
@@ -26,6 +26,6 @@
 	if(save_results){
 		if(VerboseSolution()) _printf0_("   saving results\n");
-		int outputs[2] = {ThicknessEnum,EnthalpyEnum};
-		femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2);
+		int outputs[4] = {ThicknessEnum,EnthalpyEnum,VxEnum,VyEnum};
+		femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],4);
 	}
 
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 17838)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 17839)
@@ -101,5 +101,5 @@
 	EplHeadEnum,
 	EplHeadOldEnum,
-  EplHeadSlopeXEnum,
+	EplHeadSlopeXEnum,
 	EplHeadSlopeYEnum,
 	HydrologydcMaxIterEnum,
@@ -250,5 +250,4 @@
 	SettingsOutputFrequencyEnum,
 	SettingsWaitonlockEnum,
-
 	DebugProfilingEnum,
 	ProfilingCurrentMemEnum,
@@ -261,5 +260,4 @@
 	SteadystateRequestedOutputsEnum,
 	SurfaceEnum,
-
 	ThermalIsenthalpyEnum,
 	ThermalIsdynamicbasalspcEnum,
@@ -289,4 +287,8 @@
 	TransientNumRequestedOutputsEnum,
 	TransientRequestedOutputsEnum,
+	PotentialEnum,
+	Balancethickness2MisfitEnum,
+	NuXEnum,
+	NuYEnum,
 	/*}}}*/
 	/*Surfaceforcings{{{*/
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 17838)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 17839)
@@ -295,4 +295,8 @@
 		case TransientNumRequestedOutputsEnum : return "TransientNumRequestedOutputs";
 		case TransientRequestedOutputsEnum : return "TransientRequestedOutputs";
+		case PotentialEnum : return "Potential";
+		case Balancethickness2MisfitEnum : return "Balancethickness2Misfit";
+		case NuXEnum : return "NuX";
+		case NuYEnum : return "NuY";
 		case SurfaceforcingsEnum : return "Surfaceforcings";
 		case SMBEnum : return "SMB";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 17838)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 17839)
@@ -301,4 +301,8 @@
 	      else if (strcmp(name,"TransientNumRequestedOutputs")==0) return TransientNumRequestedOutputsEnum;
 	      else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum;
+	      else if (strcmp(name,"Potential")==0) return PotentialEnum;
+	      else if (strcmp(name,"Balancethickness2Misfit")==0) return Balancethickness2MisfitEnum;
+	      else if (strcmp(name,"NuX")==0) return NuXEnum;
+	      else if (strcmp(name,"NuY")==0) return NuYEnum;
 	      else if (strcmp(name,"Surfaceforcings")==0) return SurfaceforcingsEnum;
 	      else if (strcmp(name,"SMB")==0) return SMBEnum;
@@ -379,12 +383,12 @@
 	      else if (strcmp(name,"Approximation")==0) return ApproximationEnum;
 	      else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
-	      else if (strcmp(name,"SIAApproximation")==0) return SIAApproximationEnum;
+         else stage=4;
+   }
+   if(stage==4){
+	      if (strcmp(name,"SIAApproximation")==0) return SIAApproximationEnum;
 	      else if (strcmp(name,"SSAApproximation")==0) return SSAApproximationEnum;
 	      else if (strcmp(name,"SSAHOApproximation")==0) return SSAHOApproximationEnum;
 	      else if (strcmp(name,"SSAFSApproximation")==0) return SSAFSApproximationEnum;
-         else stage=4;
-   }
-   if(stage==4){
-	      if (strcmp(name,"L1L2Approximation")==0) return L1L2ApproximationEnum;
+	      else if (strcmp(name,"L1L2Approximation")==0) return L1L2ApproximationEnum;
 	      else if (strcmp(name,"HOApproximation")==0) return HOApproximationEnum;
 	      else if (strcmp(name,"HOFSApproximation")==0) return HOFSApproximationEnum;
@@ -502,12 +506,12 @@
 	      else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum;
 	      else if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum;
-	      else if (strcmp(name,"SurfaceRelVelMisfit")==0) return SurfaceRelVelMisfitEnum;
+         else stage=5;
+   }
+   if(stage==5){
+	      if (strcmp(name,"SurfaceRelVelMisfit")==0) return SurfaceRelVelMisfitEnum;
 	      else if (strcmp(name,"SurfaceSlopeX")==0) return SurfaceSlopeXEnum;
 	      else if (strcmp(name,"SurfaceSlopeY")==0) return SurfaceSlopeYEnum;
 	      else if (strcmp(name,"Temperature")==0) return TemperatureEnum;
-         else stage=5;
-   }
-   if(stage==5){
-	      if (strcmp(name,"TemperaturePicard")==0) return TemperaturePicardEnum;
+	      else if (strcmp(name,"TemperaturePicard")==0) return TemperaturePicardEnum;
 	      else if (strcmp(name,"ThicknessAbsMisfit")==0) return ThicknessAbsMisfitEnum;
 	      else if (strcmp(name,"Vel")==0) return VelEnum;
@@ -625,12 +629,12 @@
 	      else if (strcmp(name,"TotalSmb")==0) return TotalSmbEnum;
 	      else if (strcmp(name,"Absolute")==0) return AbsoluteEnum;
-	      else if (strcmp(name,"Incremental")==0) return IncrementalEnum;
+         else stage=6;
+   }
+   if(stage==6){
+	      if (strcmp(name,"Incremental")==0) return IncrementalEnum;
 	      else if (strcmp(name,"AugmentedLagrangianR")==0) return AugmentedLagrangianREnum;
 	      else if (strcmp(name,"AugmentedLagrangianTheta")==0) return AugmentedLagrangianThetaEnum;
 	      else if (strcmp(name,"None")==0) return NoneEnum;
-         else stage=6;
-   }
-   if(stage==6){
-	      if (strcmp(name,"AgressiveMigration")==0) return AgressiveMigrationEnum;
+	      else if (strcmp(name,"AgressiveMigration")==0) return AgressiveMigrationEnum;
 	      else if (strcmp(name,"SoftMigration")==0) return SoftMigrationEnum;
 	      else if (strcmp(name,"SubelementMigration")==0) return SubelementMigrationEnum;
Index: /issm/trunk-jpl/src/m/enum/Balancethickness2MisfitEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/Balancethickness2MisfitEnum.m	(revision 17839)
+++ /issm/trunk-jpl/src/m/enum/Balancethickness2MisfitEnum.m	(revision 17839)
@@ -0,0 +1,11 @@
+function macro=Balancethickness2MisfitEnum()
+%BALANCETHICKNESS2MISFITENUM - Enum of Balancethickness2Misfit
+%
+%   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=Balancethickness2MisfitEnum()
+
+macro=StringToEnum('Balancethickness2Misfit');
Index: /issm/trunk-jpl/src/m/enum/EnumDefinitions.py
===================================================================
--- /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 17838)
+++ /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 17839)
@@ -287,4 +287,8 @@
 def TransientNumRequestedOutputsEnum(): return StringToEnum("TransientNumRequestedOutputs")[0]
 def TransientRequestedOutputsEnum(): return StringToEnum("TransientRequestedOutputs")[0]
+def PotentialEnum(): return StringToEnum("Potential")[0]
+def Balancethickness2MisfitEnum(): return StringToEnum("Balancethickness2Misfit")[0]
+def NuXEnum(): return StringToEnum("NuX")[0]
+def NuYEnum(): return StringToEnum("NuY")[0]
 def SurfaceforcingsEnum(): return StringToEnum("Surfaceforcings")[0]
 def SMBEnum(): return StringToEnum("SMB")[0]
Index: /issm/trunk-jpl/src/m/enum/NuXEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/NuXEnum.m	(revision 17839)
+++ /issm/trunk-jpl/src/m/enum/NuXEnum.m	(revision 17839)
@@ -0,0 +1,11 @@
+function macro=NuXEnum()
+%NUXENUM - Enum of NuX
+%
+%   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=NuXEnum()
+
+macro=StringToEnum('NuX');
Index: /issm/trunk-jpl/src/m/enum/NuYEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/NuYEnum.m	(revision 17839)
+++ /issm/trunk-jpl/src/m/enum/NuYEnum.m	(revision 17839)
@@ -0,0 +1,11 @@
+function macro=NuYEnum()
+%NUYENUM - Enum of NuY
+%
+%   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=NuYEnum()
+
+macro=StringToEnum('NuY');
Index: /issm/trunk-jpl/src/m/enum/PotentialEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/PotentialEnum.m	(revision 17839)
+++ /issm/trunk-jpl/src/m/enum/PotentialEnum.m	(revision 17839)
@@ -0,0 +1,11 @@
+function macro=PotentialEnum()
+%POTENTIALENUM - Enum of Potential
+%
+%   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=PotentialEnum()
+
+macro=StringToEnum('Potential');
