Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 10370)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 10371)
@@ -3177,4 +3177,5 @@
 	int*      doflist=NULL;
 	double    rho_ice,g;
+	double    values0[numdof];
 	double    values[numdof];
 	double    vx[NUMVERTICES];
@@ -3189,14 +3190,13 @@
 
 	/*Use the dof list to index into the solution vector: */
-	for(i=0;i<numdof;i++) values[i]=solution[doflist[i]];
+	for(i=0;i<numdof;i++) values0[i]=solution[doflist[i]];
+
+	/*Transform solution in Cartesian Space*/
+	TransformSolutionCoord(&values[0],&values0[0],2);
 
 	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
 	for(i=0;i<NUMVERTICES;i++){
-		/*TEMP*/
-		vel[0]=values[i*NDOF2+0];
-		vel[1]=values[i*NDOF2+1];
-		TransformSolutionCoord(&vel[0],2,i);
-		vx[i]=vel[0];
-		vy[i]=vel[1];
+		vx[i]=values[i*NDOF2+0];
+		vy[i]=values[i*NDOF2+1];
 
 		/*Check solution*/
@@ -3333,5 +3333,5 @@
 	CoordinateSystemTransform(&transform,nodes,numnodes,dim);
 
-	/*Transform matrix: T*pe */
+	/*Transform matrix: T^t*pe */
 	MatrixMultiply(transform,numnodes*dim,numnodes*dim,1,
 				  values,pe->nrows,1,0,
@@ -3344,25 +3344,20 @@
 /*}}}*/
 /*FUNCTION Tria::TransformSolutionCoord{{{1*/
-void Tria::TransformSolutionCoord(double* vel,int dim,int node_index){
+void Tria::TransformSolutionCoord(double* solution,double* solution0,int dim){
 
 	int     i,j;
+	int     numnodes          = NUMVERTICES;
 	double *transform         = NULL;
-	double *values            = NULL;
-
-	/*Copy current solution vector*/
-	values=(double*)xmalloc(dim*sizeof(double));
-	for(i=0;i<dim;i++) values[i]=vel[i];
 
 	/*Get Coordinate Systems transform matrix*/
-	CoordinateSystemTransform(&transform,&nodes[node_index],1,dim);
-
-	/*Transform matrix: T*pe */
-	MatrixMultiply(transform,dim,dim,0,
-				values,dim,1,0,
-				vel,0);
+	CoordinateSystemTransform(&transform,nodes,numnodes,dim);
+
+	/*Transform matrix: T*U */
+	MatrixMultiply(transform,numnodes*dim,numnodes*dim,0,
+				solution0,numnodes*dim,1,0,
+				&solution[0],0);
 
 	/*Free Matrix*/
 	xfree((void**)&transform);
-	xfree((void**)&values);
 }
 /*}}}*/
Index: /issm/trunk/src/c/objects/Elements/Tria.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.h	(revision 10370)
+++ /issm/trunk/src/c/objects/Elements/Tria.h	(revision 10371)
@@ -210,5 +210,5 @@
 		void    TransformStiffnessMatrixCoord(ElementMatrix* Ke,int dim);
 		void    TransformLoadVectorCoord(ElementVector* pe,int dim);
-		void    TransformSolutionCoord(double* vel,int dim,int node_index);
+		void    TransformSolutionCoord(double* solution,double* solution0,int dim);
 		#endif
 
