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