diff --git a/Common/CreateFile.cpp b/Common/CreateFile.cpp index 8dffc516349643bf4b1e845a8cf98ac1eaca4630..6e2eebe069554057d604221cca47f3153a943ec3 100644 --- a/Common/CreateFile.cpp +++ b/Common/CreateFile.cpp @@ -257,8 +257,9 @@ void CreateOutputFile(const std::string &fileName, int format, if(GModel::current()->getMeshPartitions().size() && CTX::instance()->mesh.mshFilePartitioned == 1) GModel::current()->writePartitionedMSH - (name, CTX::instance()->mesh.binary, CTX::instance()->mesh.saveAll, - CTX::instance()->mesh.saveParametric, CTX::instance()->mesh.scalingFactor); + (name, CTX::instance()->mesh.mshFileVersion, CTX::instance()->mesh.binary, + CTX::instance()->mesh.saveAll, CTX::instance()->mesh.saveParametric, + CTX::instance()->mesh.scalingFactor); else if(GModel::current()->getMeshPartitions().size() && CTX::instance()->mesh.mshFilePartitioned == 2) GModel::current()->writeMSH diff --git a/Geo/GModel.h b/Geo/GModel.h index ac63db49817ae890e9696873db7c793fd0067385..dab2d811dc39d3c2265f88f82aa18eb95e08e33c 100644 --- a/Geo/GModel.h +++ b/Geo/GModel.h @@ -53,6 +53,9 @@ class GModel double scalingFactor=1.0, int elementStartNum=0, int saveSinglePartition=0, bool multipleView=false); + int _writePartitionedMSH2(const std::string &baseName, bool binary=false, + bool saveAll=false, bool saveParametric=false, + double scalingFactor=1.0); // the maximum vertex and element id number in the mesh int _maxVertexNum, _maxElementNum; @@ -617,9 +620,9 @@ class GModel bool saveAll=false, bool saveParametric=false, double scalingFactor=1.0, int elementStartNum=0, int saveSinglePartition=0, bool multipleView=false); - int writePartitionedMSH(const std::string &baseName, bool binary=false, - bool saveAll=false, bool saveParametric=false, - double scalingFactor=1.0); + int writePartitionedMSH(const std::string &baseName, double version=2.2, + bool binary=false, bool saveAll=false, + bool saveParametric=false, double scalingFactor=1.0); // Iridium file format int writeIR3(const std::string &name, int elementTagType, diff --git a/Geo/GModelIO_MSH.cpp b/Geo/GModelIO_MSH.cpp index 34bf1fe3e278b330611e5a936375d2f8df6ecc7e..f8e4f8f922ee509f263d4e95a472ac8ca230a01f 100644 --- a/Geo/GModelIO_MSH.cpp +++ b/Geo/GModelIO_MSH.cpp @@ -3,6 +3,8 @@ // See the LICENSE.txt file for license information. Please report all // bugs and problems to the public mailing list <gmsh@geuz.org>. +#include <sstream> +#include <iomanip> #include "GModel.h" #include "OS.h" #include "GmshMessage.h" @@ -607,3 +609,23 @@ int GModel::writeMSH(const std::string &name, double version, bool binary, return 1; } + +int GModel::writePartitionedMSH(const std::string &baseName, double version, + bool binary, bool saveAll, bool saveParametric, + double scalingFactor) +{ + if(version < 3) + return _writePartitionedMSH2(baseName, binary, saveAll, saveParametric, + scalingFactor); + + for(std::set<int>::iterator it = meshPartitions.begin(); + it != meshPartitions.end(); it++){ + int partition = *it; + std::ostringstream sstream; + sstream << baseName << "_" << std::setw(6) << std::setfill('0') << partition; + Msg::Info("Writing partition %d in file '%s'", partition, sstream.str().c_str()); + writeMSH(sstream.str(), version, binary, saveAll, saveParametric, + scalingFactor, 0, partition); + } + return 1; +} diff --git a/Geo/GModelIO_MSH2.cpp b/Geo/GModelIO_MSH2.cpp index efb40fe9f3354547726324b135ce1bc303a603f3..a99fd2f459fa305b03a2c39abba6fdb867cf5c91 100644 --- a/Geo/GModelIO_MSH2.cpp +++ b/Geo/GModelIO_MSH2.cpp @@ -1066,9 +1066,9 @@ int GModel::_writeMSH2(const std::string &name, double version, bool binary, return 1; } -int GModel::writePartitionedMSH(const std::string &baseName, bool binary, - bool saveAll, bool saveParametric, - double scalingFactor) +int GModel::_writePartitionedMSH2(const std::string &baseName, bool binary, + bool saveAll, bool saveParametric, + double scalingFactor) { int numElements; int startNum = 0;