Index: /issm/trunk/src/c/EnumDefinitions/EnumAsString.cpp
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumAsString.cpp	(revision 4252)
+++ /issm/trunk/src/c/EnumDefinitions/EnumAsString.cpp	(revision 4253)
@@ -199,4 +199,6 @@
 		case ThicknessEnum : return "Thickness";
 		case TypeEnum : return "Type";
+		case VelEnum : return "Vel";
+		case VelObsEnum : return "VelObs";
 		case ViscosityOvershootEnum : return "ViscosityOvershoot";
 		case VxAverageEnum : return "VxAverage";
@@ -232,4 +234,5 @@
 		case JEnum : return "J";
 		case PatchEnum : return "Patch";
+		case TimeEnum : return "Time";
 		case RelativeEnum : return "Relative";
 		case ResidualEnum : return "Residual";
Index: /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 4252)
+++ /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 4253)
@@ -227,4 +227,6 @@
 	ThicknessEnum,
 	TypeEnum,
+	VelEnum,
+	VelObsEnum,
 	ViscosityOvershootEnum,
 	VxAverageEnum,
Index: /issm/trunk/src/c/EnumDefinitions/StringAsEnum.cpp
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/StringAsEnum.cpp	(revision 4252)
+++ /issm/trunk/src/c/EnumDefinitions/StringAsEnum.cpp	(revision 4253)
@@ -197,4 +197,6 @@
 	else if (strcmp(name,"Thickness")==0) return ThicknessEnum;
 	else if (strcmp(name,"Type")==0) return TypeEnum;
+	else if (strcmp(name,"Vel")==0) return VelEnum;
+	else if (strcmp(name,"VelObs")==0) return VelObsEnum;
 	else if (strcmp(name,"ViscosityOvershoot")==0) return ViscosityOvershootEnum;
 	else if (strcmp(name,"VxAverage")==0) return VxAverageEnum;
@@ -230,4 +232,5 @@
 	else if (strcmp(name,"J")==0) return JEnum;
 	else if (strcmp(name,"Patch")==0) return PatchEnum;
+	else if (strcmp(name,"Time")==0) return TimeEnum;
 	else if (strcmp(name,"Relative")==0) return RelativeEnum;
 	else if (strcmp(name,"Residual")==0) return ResidualEnum;
Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 4252)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 4253)
@@ -1891,5 +1891,4 @@
 void  Penta::InputUpdateFromSolutionDiagnosticHoriz(double* solution){
 	
-	
 	int i;
 
@@ -1902,4 +1901,6 @@
 	double       vx[numvertices];
 	double       vy[numvertices];
+	double       vz[numvertices];
+	double       vel[numvertices];
 	int          dummy;
 	double       pressure[numvertices];
@@ -1908,6 +1909,8 @@
 	double       xyz_list[numvertices][3];
 	double       gauss[numvertices][numvertices]={{1,0,0,0},{0,1,0,0},{0,0,1,0},{1,0,0,1},{0,1,0,1},{0,0,1,1}};
-
 	
+	Input*       VzInput=NULL;
+	double*      VzPtr=NULL;
+
 	/*Get dof list: */
 	GetDofList(&doflist[0],&dummy);
@@ -1926,4 +1929,20 @@
 		vy[i]=values[i*numdofpervertex+1];
 	}
+
+	/*Get Vz*/
+	VzInput=inputs->GetInput(VzEnum);
+	if (VzInput){
+		if (VzInput->Enum()!=TriaVertexInputEnum){
+			ISSMERROR("Cannot compute Vel as Vz is of type %s",EnumAsString(VzInput->Enum()));
+		}
+		VzInput->GetValuesPtr(&VzPtr,&dummy);
+		for(i=0;i<numvertices;i++) vz[i]=VzPtr[i];
+	}
+	else{
+		for(i=0;i<numvertices;i++) vz[i]=0.0;
+	}
+
+	/*Now Compute vel*/
+	for(i=0;i<numvertices;i++) vel[i]=pow( pow(vx[i],2.0) + pow(vy[i],2.0) + pow(vz[i],2.0) , 0.5);
 
 	/*For pressure: we have not computed pressure in this analysis, for this element. We are in 3D, 
@@ -1945,4 +1964,5 @@
 	this->inputs->AddInput(new PentaVertexInput(VxEnum,vx));
 	this->inputs->AddInput(new PentaVertexInput(VyEnum,vy));
+	this->inputs->AddInput(new TriaVertexInput(VelEnum,vel));
 	this->inputs->AddInput(new PentaVertexInput(PressureEnum,pressure));
 }
Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 4252)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 4253)
@@ -674,4 +674,6 @@
 	double       vx[numvertices];
 	double       vy[numvertices];
+	double       vz[numvertices];
+	double       vel[numvertices];
 	double       pressure[numvertices];
 	double       thickness[numvertices];
@@ -679,6 +681,7 @@
 	double       gauss[numvertices][numvertices]={{1,0,0},{0,1,0},{0,0,1}};
 
-
 	int          dummy;
+	Input*       VzInput=NULL;
+	double*      VzPtr=NULL;
 	
 	/*Get dof list: */
@@ -695,4 +698,20 @@
 		vy[i]=values[i*numdofpervertex+1];
 	}
+
+	/*Get Vz*/
+	VzInput=inputs->GetInput(VzEnum);
+	if (VzInput){
+		if (VzInput->Enum()!=TriaVertexInputEnum){
+			ISSMERROR("Cannot compute Vel as Vz is of type %s",EnumAsString(VzInput->Enum()));
+		}
+		VzInput->GetValuesPtr(&VzPtr,&dummy);
+		for(i=0;i<numvertices;i++) vz[i]=VzPtr[i];
+	}
+	else{
+		for(i=0;i<numvertices;i++) vz[i]=0.0;
+	}
+
+	/*Now Compute vel*/
+	for(i=0;i<numvertices;i++) vel[i]=pow( pow(vx[i],2.0) + pow(vy[i],2.0) + pow(vz[i],2.0) , 0.5);
 
 	/*For pressure: we have not computed pressure in this analysis, for this element. We are in 2D, 
@@ -715,6 +734,6 @@
 	this->inputs->AddInput(new TriaVertexInput(VxEnum,vx));
 	this->inputs->AddInput(new TriaVertexInput(VyEnum,vy));
+	this->inputs->AddInput(new TriaVertexInput(VelEnum,vel));
 	this->inputs->AddInput(new TriaVertexInput(PressureEnum,pressure));
-
 
 }
@@ -4929,5 +4948,5 @@
 }
 /*}}}*/
-/*FUNCTION Tria::Tria::SetClone {{{1*/
+/*FUNCTION Tria::SetClone {{{1*/
 void  Tria::SetClone(int* minranks){
 
Index: /issm/trunk/src/c/solutions/diagnostic_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/diagnostic_core.cpp	(revision 4252)
+++ /issm/trunk/src/c/solutions/diagnostic_core.cpp	(revision 4253)
@@ -87,7 +87,7 @@
 	InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VxEnum);
 	InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VyEnum);
+	InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VelEnum);
 	InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,PressureEnum);
-	if(dim==3) InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VxEnum);
+	if(dim==3) InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VzEnum);
 
-	
 }
