From cde24cd07588a79f6b40ccef86214733100ce997 Mon Sep 17 00:00:00 2001 From: Koen Hillewaert <koen.hillewaert@cenaero.be> Date: Wed, 10 Aug 2016 11:54:24 +0000 Subject: [PATCH] solved incompatibility issue with old periodicity conventions for Argo --- Geo/GModelIO_MSH2.cpp | 2 +- Parser/Gmsh.y | 17 ++++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/Geo/GModelIO_MSH2.cpp b/Geo/GModelIO_MSH2.cpp index ece2fd82cc..63b7332ac1 100644 --- a/Geo/GModelIO_MSH2.cpp +++ b/Geo/GModelIO_MSH2.cpp @@ -707,7 +707,7 @@ int GModel::_readMSH2(const std::string &name) if(feof(fp)) break; - if(!strncmp(&str[1], "Periodic",8)) { + if(!strncmp(&str[1], "Periodic",8) && strlen(&str[1]) == 8) { readMSHPeriodicNodes(fp,this); break; } diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index 4bc2a3f48e..4bad1489f2 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -6610,9 +6610,11 @@ void addPeriodicFace(int iTarget, int iSource, else{ GFace *target = GModel::current()->getFaceByTag(abs(iTarget)); GFace *source = GModel::current()->getFaceByTag(abs(iSource)); - if (!target) Msg::Error("Could not find edge %d for periodic copy from %d", - iTarget,iSource); - target->setMeshMaster(source, affineTransform); + if (!target || !master) { + Msg::Error("Could not find edge slave %d or master %d for periodic copy", + iTarget,iSource); + } + else target->setMeshMaster(source, affineTransform); } } @@ -6626,7 +6628,7 @@ void addPeriodicFace(int iTarget, int iSource, for (; sIter != edgeCounterparts.end(); ++sIter) { Msg::Info("%d - %d", sIter->first, sIter->second); } - + if (target) { GEO_Internals::MasterFace& mf = GModel::current()->getGEOInternals()->periodicFaces[iTarget]; @@ -6637,10 +6639,11 @@ void addPeriodicFace(int iTarget, int iSource, else{ GFace *target = GModel::current()->getFaceByTag(abs(iTarget)); GFace *source = GModel::current()->getFaceByTag(abs(iSource)); - if (!target || !source) - Msg::Error("Could not find surface %d or %d for periodic copy", + if (!target || !source) { + Msg::Error("Could not find surface slave %d or master %d for periodic copy", iTarget,iSource); - target->setMeshMaster(source, edgeCounterparts); + } + else target->setMeshMaster(source, edgeCounterparts); } } -- GitLab