diff --git a/Post/PViewDataListIO.cpp b/Post/PViewDataListIO.cpp
index de37fd672eccfcd71db5e3c138a9acf50b450675..f14b40203526269263a4528b6e73418d100a0413 100644
--- a/Post/PViewDataListIO.cpp
+++ b/Post/PViewDataListIO.cpp
@@ -1,4 +1,4 @@
-// $Id: PViewDataListIO.cpp,v 1.13 2008-03-08 22:03:13 geuzaine Exp $
+// $Id: PViewDataListIO.cpp,v 1.14 2008-03-09 21:36:16 geuzaine Exp $
 //
 // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle
 //
@@ -419,9 +419,8 @@ class pVertexLessThan{
   }
 };
 
-static void getNodeMSH(int nbelm, List_T *list, int nbnod, int nbcomp, 
-		       std::set<pVertex, pVertexLessThan> *nodes,
-		       int *numelm)
+static void getNodeMSH(int nbelm, List_T *list, int nbnod, int nbcomp, int nbstep,
+		       std::set<pVertex, pVertexLessThan> *nodes, int *numelm)
 {
   if(!nbelm) return;
   int nb = List_Nbr(list) / nbelm;
@@ -435,7 +434,9 @@ static void getNodeMSH(int nbelm, List_T *list, int nbnod, int nbcomp,
       std::set<pVertex, pVertexLessThan>::iterator it = nodes->find(n);
       if(it == nodes->end()){
 	n.Num = nodes->size() + 1;
-	for(int k = 0; k < nbcomp; k++) n.Val.push_back(v[nbcomp * j + k]);
+	for(int ts = 0; ts < nbstep; ts++) 
+	  for(int k = 0; k < nbcomp; k++) 
+	    n.Val.push_back(v[nbcomp * nbnod * ts + nbcomp * j + k]);
 	nodes->insert(n);
       }
     }
@@ -446,58 +447,35 @@ static void getNodeMSH(int nbelm, List_T *list, int nbnod, int nbcomp,
 static void writeElementMSH(FILE *fp, int num, int nbnod, pVertex nod[8], 
 			    int nbcomp, double *vals, int dim)
 {
-  // compute average value in elm
-  double d = 0.;
-  for(int k = 0; k < nbnod; k++) {
-    double *v = &vals[nbcomp * k];
-    switch(nbcomp) {
-    case 1: // scalar
-      d += v[0];
-      break;
-    case 3 : // vector
-      d += sqrt(DSQR(v[0]) + DSQR(v[1]) + DSQR(v[2]));
-      break;
-    case 9 : // tensor
-      d += ComputeVonMises(v);
-      break;
-    }
-  }
-  d /= (double)nbnod;
-
-  // assign val as elementary region number
-  int ele = (int)fabs(d), phys = 1;
-  
   switch(dim){
   case 0:
-    fprintf(fp, "%d 15 2 %d %d %d\n", num, phys, ele, nod[0].Num);
+    fprintf(fp, "%d 15 0 %d\n", num, nod[0].Num);
     break;
   case 1:
-    fprintf(fp, "%d 1 2 %d %d %d %d\n", num, phys, ele, nod[0].Num, nod[1].Num);
+    fprintf(fp, "%d 1 0 %d %d\n", num, nod[0].Num, nod[1].Num);
     break;
   case 2:
     if(nbnod == 3)
-      fprintf(fp, "%d 2 2 %d %d %d %d %d\n", num, phys, ele, 
-	      nod[0].Num, nod[1].Num, nod[2].Num);
+      fprintf(fp, "%d 2 0 %d %d %d\n", num, nod[0].Num, nod[1].Num, nod[2].Num);
     else
-      fprintf(fp, "%d 3 2 %d %d %d %d %d %d\n", num, phys, ele, 
-	      nod[0].Num, nod[1].Num, nod[2].Num, nod[3].Num);
+      fprintf(fp, "%d 3 0 %d %d %d %d\n", num, nod[0].Num, nod[1].Num, 
+	      nod[2].Num, nod[3].Num);
     break;
   case 3:
   default:
     if(nbnod == 4)
-      fprintf(fp, "%d 4 2 %d %d %d %d %d %d\n", num, phys, ele, 
-	      nod[0].Num, nod[1].Num, nod[2].Num, nod[3].Num);
+      fprintf(fp, "%d 4 0 %d %d %d %d\n", num, nod[0].Num, nod[1].Num,
+	      nod[2].Num, nod[3].Num);
     else if(nbnod == 5)
-      fprintf(fp, "%d 7 2 %d %d %d %d %d %d %d\n", num, phys, ele, 
-	      nod[0].Num, nod[1].Num, nod[2].Num, nod[3].Num, nod[4].Num);
+      fprintf(fp, "%d 7 0 %d %d %d %d %d\n", num, nod[0].Num, nod[1].Num,
+	      nod[2].Num, nod[3].Num, nod[4].Num);
     else if(nbnod == 6)
-      fprintf(fp, "%d 6 2 %d %d %d %d %d %d %d %d\n", num, phys, ele, 
-	      nod[0].Num, nod[1].Num, nod[2].Num, nod[3].Num, nod[4].Num, 
-	      nod[5].Num);
+      fprintf(fp, "%d 6 0 %d %d %d %d %d %d\n", num, nod[0].Num, nod[1].Num,
+	      nod[2].Num, nod[3].Num, nod[4].Num, nod[5].Num);
     else
-      fprintf(fp, "%d 5 2 %d %d %d %d %d %d %d %d %d %d\n", num, phys, ele, 
-	      nod[0].Num, nod[1].Num, nod[2].Num, nod[3].Num, nod[4].Num, 
-	      nod[5].Num, nod[6].Num, nod[7].Num);
+      fprintf(fp, "%d 5 0 %d %d %d %d %d %d %d %d\n", num, nod[0].Num, 
+	      nod[1].Num, nod[2].Num, nod[3].Num, nod[4].Num, nod[5].Num,
+	      nod[6].Num, nod[7].Num);
     break;
   }
 }
@@ -541,30 +519,30 @@ bool PViewDataList::writeMSH(std::string name)
 
   std::set<pVertex, pVertexLessThan> nodes;
   int numelm = 0;
-  getNodeMSH(NbSP, SP, 1, 1, &nodes, &numelm);
-  getNodeMSH(NbVP, VP, 1, 3, &nodes, &numelm);
-  getNodeMSH(NbTP, TP, 1, 9, &nodes, &numelm);
-  getNodeMSH(NbSL, SL, 2, 1, &nodes, &numelm);
-  getNodeMSH(NbVL, VL, 2, 3, &nodes, &numelm);
-  getNodeMSH(NbTL, TL, 2, 9, &nodes, &numelm);
-  getNodeMSH(NbST, ST, 3, 1, &nodes, &numelm);
-  getNodeMSH(NbVT, VT, 3, 3, &nodes, &numelm);
-  getNodeMSH(NbTT, TT, 3, 9, &nodes, &numelm);
-  getNodeMSH(NbSQ, SQ, 4, 1, &nodes, &numelm);
-  getNodeMSH(NbVQ, VQ, 4, 3, &nodes, &numelm);
-  getNodeMSH(NbTQ, TQ, 4, 9, &nodes, &numelm);
-  getNodeMSH(NbSS, SS, 4, 1, &nodes, &numelm);
-  getNodeMSH(NbVS, VS, 4, 3, &nodes, &numelm);
-  getNodeMSH(NbTS, TS, 4, 9, &nodes, &numelm);
-  getNodeMSH(NbSH, SH, 8, 1, &nodes, &numelm);
-  getNodeMSH(NbVH, VH, 8, 3, &nodes, &numelm);
-  getNodeMSH(NbTH, TH, 8, 9, &nodes, &numelm);
-  getNodeMSH(NbSI, SI, 6, 1, &nodes, &numelm);
-  getNodeMSH(NbVI, VI, 6, 3, &nodes, &numelm);
-  getNodeMSH(NbTI, TI, 6, 9, &nodes, &numelm);
-  getNodeMSH(NbSY, SY, 5, 1, &nodes, &numelm);
-  getNodeMSH(NbVY, VY, 5, 3, &nodes, &numelm);
-  getNodeMSH(NbTY, TY, 5, 9, &nodes, &numelm);
+  getNodeMSH(NbSP, SP, 1, 1, NbTimeStep, &nodes, &numelm);
+  getNodeMSH(NbVP, VP, 1, 3, NbTimeStep, &nodes, &numelm);
+  getNodeMSH(NbTP, TP, 1, 9, NbTimeStep, &nodes, &numelm);
+  getNodeMSH(NbSL, SL, 2, 1, NbTimeStep, &nodes, &numelm);
+  getNodeMSH(NbVL, VL, 2, 3, NbTimeStep, &nodes, &numelm);
+  getNodeMSH(NbTL, TL, 2, 9, NbTimeStep, &nodes, &numelm);
+  getNodeMSH(NbST, ST, 3, 1, NbTimeStep, &nodes, &numelm);
+  getNodeMSH(NbVT, VT, 3, 3, NbTimeStep, &nodes, &numelm);
+  getNodeMSH(NbTT, TT, 3, 9, NbTimeStep, &nodes, &numelm);
+  getNodeMSH(NbSQ, SQ, 4, 1, NbTimeStep, &nodes, &numelm);
+  getNodeMSH(NbVQ, VQ, 4, 3, NbTimeStep, &nodes, &numelm);
+  getNodeMSH(NbTQ, TQ, 4, 9, NbTimeStep, &nodes, &numelm);
+  getNodeMSH(NbSS, SS, 4, 1, NbTimeStep, &nodes, &numelm);
+  getNodeMSH(NbVS, VS, 4, 3, NbTimeStep, &nodes, &numelm);
+  getNodeMSH(NbTS, TS, 4, 9, NbTimeStep, &nodes, &numelm);
+  getNodeMSH(NbSH, SH, 8, 1, NbTimeStep, &nodes, &numelm);
+  getNodeMSH(NbVH, VH, 8, 3, NbTimeStep, &nodes, &numelm);
+  getNodeMSH(NbTH, TH, 8, 9, NbTimeStep, &nodes, &numelm);
+  getNodeMSH(NbSI, SI, 6, 1, NbTimeStep, &nodes, &numelm);
+  getNodeMSH(NbVI, VI, 6, 3, NbTimeStep, &nodes, &numelm);
+  getNodeMSH(NbTI, TI, 6, 9, NbTimeStep, &nodes, &numelm);
+  getNodeMSH(NbSY, SY, 5, 1, NbTimeStep, &nodes, &numelm);
+  getNodeMSH(NbVY, VY, 5, 3, NbTimeStep, &nodes, &numelm);
+  getNodeMSH(NbTY, TY, 5, 9, NbTimeStep, &nodes, &numelm);
 
   fprintf(fp, "$MeshFormat\n2 0 8\n$EndMeshFormat\n");
   fprintf(fp, "$Nodes\n");
@@ -604,22 +582,24 @@ bool PViewDataList::writeMSH(std::string name)
   writeElementsMSH(fp, NbTY, TY, 5, 9, 3, &nodes, &numelm);
   fprintf(fp, "$EndElements\n");
 
-#if 1 // test new postpro node-based storage
+#if 1 // test new node-based storage
   int numNodes = nodes.size();
   if(numNodes){
-    fprintf(fp, "$NodeData\n");
-    fprintf(fp, "\"%s\"\n", getName().c_str());
-    int timeStep = 0, numComp = nodes.begin()->Val.size();
-    double time = 0.;
-    fprintf(fp, "%d %.16g %d %d\n", timeStep, time, numComp, numNodes);
-    for(std::set<pVertex, pVertexLessThan>::iterator it = nodes.begin();
-	it != nodes.end(); ++it){
-      fprintf(fp, "%d", it->Num);
-      for(int i = 0; i < it->Val.size(); i++)
-	fprintf(fp, " %.16g", it->Val[i]);
-      fprintf(fp, "\n");
+    int numComp = nodes.begin()->Val.size() / NbTimeStep;
+    for(int ts = 0; ts < NbTimeStep; ts++){
+      double time = getTime(ts);
+      fprintf(fp, "$NodeData\n");
+      fprintf(fp, "\"%s\"\n", getName().c_str());
+      fprintf(fp, "%d %.16g %d %d\n", ts, time, numComp, numNodes);
+      for(std::set<pVertex, pVertexLessThan>::iterator it = nodes.begin();
+	  it != nodes.end(); ++it){
+	fprintf(fp, "%d", it->Num);
+	for(int i = 0; i < numComp; i++)
+	  fprintf(fp, " %.16g", it->Val[ts * numComp + i]);
+        fprintf(fp, "\n");
+      }
+      fprintf(fp, "$EndNodeData\n");
     }
-    fprintf(fp, "$EndNodeData\n");
   }
 #endif