Index: /issm/trunk/src/c/shared/Elements/CoordinateSystemTransform.cpp
===================================================================
--- /issm/trunk/src/c/shared/Elements/CoordinateSystemTransform.cpp	(revision 10392)
+++ /issm/trunk/src/c/shared/Elements/CoordinateSystemTransform.cpp	(revision 10393)
@@ -15,5 +15,5 @@
 	/*Some checks*/
 	_assert_(numnodes && nodes);
-	if(dimension!=2 && dimension!=3) _error_("only 2d and 3d coordinate systems are supported");
+	if(dimension!=2 && dimension!=3 && dimension!=4) _error_("only 2d and 3d coordinate systems are supported");
 
 	/*Allocate and initialize transform matrix*/
@@ -52,4 +52,17 @@
 			transform[(dimension*numnodes)*(i*dimension+2) + i*dimension+2] = coord_system[2][2];
 		}
+		else if(dimension==4){
+			/*Only the first 3 coordinates are changed (x,y,z), leave the others (P) unchanged*/
+			transform[(dimension*numnodes)*(i*dimension+0) + i*dimension+0] = coord_system[0][0];
+			transform[(dimension*numnodes)*(i*dimension+0) + i*dimension+1] = coord_system[0][1];
+			transform[(dimension*numnodes)*(i*dimension+0) + i*dimension+2] = coord_system[0][2];
+			transform[(dimension*numnodes)*(i*dimension+1) + i*dimension+0] = coord_system[1][0];
+			transform[(dimension*numnodes)*(i*dimension+1) + i*dimension+1] = coord_system[1][1];
+			transform[(dimension*numnodes)*(i*dimension+1) + i*dimension+2] = coord_system[1][2];
+			transform[(dimension*numnodes)*(i*dimension+2) + i*dimension+0] = coord_system[2][0];
+			transform[(dimension*numnodes)*(i*dimension+2) + i*dimension+1] = coord_system[2][1];
+			transform[(dimension*numnodes)*(i*dimension+2) + i*dimension+2] = coord_system[2][2];
+			transform[(dimension*numnodes)*(i*dimension+3) + i*dimension+3] = 1.0;
+		}
 	}
 
