From 58760b19a5af4f06cf0eaa5e073f546782211c12 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Mon, 14 Sep 2009 09:50:10 +0000
Subject: [PATCH] move iso compututation routines to Numeric module

---
 Geo/MElement.cpp              |  1 -
 Graphics/CMakeLists.txt       |  1 -
 Numeric/CMakeLists.txt        |  1 +
 {Graphics => Numeric}/Iso.cpp |  0
 {Graphics => Numeric}/Iso.h   |  0
 Post/PViewDataGModelIO.cpp    | 42 ++++++++++++++++++++++-------------
 6 files changed, 27 insertions(+), 18 deletions(-)
 rename {Graphics => Numeric}/Iso.cpp (100%)
 rename {Graphics => Numeric}/Iso.h (100%)

diff --git a/Geo/MElement.cpp b/Geo/MElement.cpp
index 0f1cc6d3a2..80e8823a6c 100644
--- a/Geo/MElement.cpp
+++ b/Geo/MElement.cpp
@@ -411,7 +411,6 @@ void MElement::writeMSH(FILE *fp, double version, bool binary, int num,
   for(int i = 0; i < n; i++)
     verts[i] = getVertex(i)->getIndex();
 
-
   if(!binary){
     for(int i = 0; i < n; i++)
       fprintf(fp, " %d", verts[i]);
diff --git a/Graphics/CMakeLists.txt b/Graphics/CMakeLists.txt
index 4b79bcecda..154a7c8a1c 100644
--- a/Graphics/CMakeLists.txt
+++ b/Graphics/CMakeLists.txt
@@ -5,7 +5,6 @@
 
 set(SRC
   Trackball.cpp 
-  Iso.cpp 
   ReadImg.cpp 
   drawContext.cpp 
   drawMesh.cpp 
diff --git a/Numeric/CMakeLists.txt b/Numeric/CMakeLists.txt
index 98786f31df..223584d409 100644
--- a/Numeric/CMakeLists.txt
+++ b/Numeric/CMakeLists.txt
@@ -23,6 +23,7 @@ set(SRC
       GaussLegendreSimplex.cpp
     GmshPredicates.cpp
   mathEvaluator.cpp
+  Iso.cpp
 )
 
 append_gmsh_src(Numeric "${SRC}")
diff --git a/Graphics/Iso.cpp b/Numeric/Iso.cpp
similarity index 100%
rename from Graphics/Iso.cpp
rename to Numeric/Iso.cpp
diff --git a/Graphics/Iso.h b/Numeric/Iso.h
similarity index 100%
rename from Graphics/Iso.h
rename to Numeric/Iso.h
diff --git a/Post/PViewDataGModelIO.cpp b/Post/PViewDataGModelIO.cpp
index 334fd7bdbb..9e951e587a 100644
--- a/Post/PViewDataGModelIO.cpp
+++ b/Post/PViewDataGModelIO.cpp
@@ -112,14 +112,8 @@ bool PViewDataGModel::writeMSH(std::string fileName, bool binary)
     return false;
   }
 
-  //  if(_type != NodeData){
-  //    Msg::Error("Can only export node-based datasets for now");
-  //    return false;
-  //  }
-
   GModel *model = _steps[0]->getModel();
 
-  //binary = true;
   if(!model->writeMSH(fileName, 2.0, binary, true)) return false;
 
   // append data
@@ -130,15 +124,15 @@ bool PViewDataGModel::writeMSH(std::string fileName, bool binary)
   }
 
   for(unsigned int step = 0; step < _steps.size(); step++){
-    int numNodes = 0, numComp = _steps[step]->getNumComponents();
+    int numEnt = 0, numComp = _steps[step]->getNumComponents();
     for(int i = 0; i < _steps[step]->getNumData(); i++)
-      if(_steps[step]->getData(i)) numNodes++;
-    if(numNodes){
-      if (_type == NodeData){
+      if(_steps[step]->getData(i)) numEnt++;
+    if(numEnt){
+      if(_type == NodeData){
         fprintf(fp, "$NodeData\n");
         fprintf(fp, "1\n\"%s\"\n", getName().c_str());
         fprintf(fp, "1\n%.16g\n", _steps[step]->getTime());
-        fprintf(fp, "3\n%d\n%d\n%d\n", step, numComp, numNodes);
+        fprintf(fp, "3\n%d\n%d\n%d\n", step, numComp, numEnt);
         for(int i = 0; i < _steps[step]->getNumData(); i++){
           if(_steps[step]->getData(i)){
             MVertex *v = _steps[step]->getModel()->getMeshVertexByTag(i);
@@ -163,18 +157,31 @@ bool PViewDataGModel::writeMSH(std::string fileName, bool binary)
         fprintf(fp, "$EndNodeData\n");
       }
       else{
-        fprintf(fp, "$ElementData\n");
+        int mult = 1;
+        if(_type == ElementNodeData){
+          fprintf(fp, "$ElementNodeData\n");
+          mult = 1; // FIXME
+        }
+        else
+          fprintf(fp, "$ElementData\n");
         fprintf(fp, "1\n\"%s\"\n", getName().c_str());
         fprintf(fp, "1\n%.16g\n", _steps[step]->getTime());
-        fprintf(fp, "3\n%d\n%d\n%d\n", step, numComp, numNodes);
+        fprintf(fp, "3\n%d\n%d\n%d\n", step, numComp, numEnt);
         for(int i = 0; i < _steps[step]->getNumData(); i++){
           if(_steps[step]->getData(i)){
+            // FIXME 
+            // MElement *e = model->getMeshElementByTag(i);
+            // if(!e){
+            //   
+            // }
+            // int num = e->getNum();
+            int num = i;
             if(binary){
-              fwrite(&i, sizeof(int), 1, fp);
+              fwrite(&num, sizeof(int), 1, fp);
               fwrite(_steps[step]->getData(i), sizeof(double), numComp, fp);
             }
             else{
-              fprintf(fp, "%d", i);
+              fprintf(fp, "%d", num);
               for(int k = 0; k < numComp; k++)
                 fprintf(fp, " %.16g", _steps[step]->getData(i)[k]);
               fprintf(fp, "\n");
@@ -182,7 +189,10 @@ bool PViewDataGModel::writeMSH(std::string fileName, bool binary)
           }
         }
         if(binary) fprintf(fp, "\n");
-        fprintf(fp, "$EndElementData\n");
+        if(_type == ElementNodeData)
+          fprintf(fp, "$EndElementNodeData\n");
+        else
+          fprintf(fp, "$EndElementData\n");
       }
     }
   }
-- 
GitLab