From e74118b298745381d094b6826c382c4e48d27d5c Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@uliege.be>
Date: Thu, 11 Jun 2020 17:12:33 +0200
Subject: [PATCH] add createGeometry to discreteRegion, so that we can
 selectively choose which discrete volumes we want to remesh

---
 Geo/discreteRegion.cpp | 19 +++++++++++++++++--
 Geo/discreteRegion.h   |  4 ++++
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/Geo/discreteRegion.cpp b/Geo/discreteRegion.cpp
index cf07a936d3..b87be48c51 100644
--- a/Geo/discreteRegion.cpp
+++ b/Geo/discreteRegion.cpp
@@ -7,12 +7,27 @@
 #include "GModelIO_GEO.h"
 #include "Geo.h"
 
-discreteRegion::discreteRegion(GModel *model, int num) : GRegion(model, num)
+discreteRegion::discreteRegion(GModel *model, int num)
+  : GRegion(model, num), _geometry(false)
 {
   ::Volume *v = CreateVolume(num, MSH_VOLUME_DISCRETE);
   Tree_Add(model->getGEOInternals()->Volumes, &v);
 }
 
-discreteRegion::discreteRegion(GModel *model) : GRegion(model, 0)
+discreteRegion::discreteRegion(GModel *model)
+  : GRegion(model, 0), _geometry(false)
 {
 }
+
+int discreteRegion::createGeometry()
+{
+  if(l_faces.empty()) {
+    Msg::Error("Discrete volume %d has no surfaces on its boundary", tag());
+    return 1;
+  }
+
+  // we should check that the surfaces form one or more (closed) shell(s)
+  _geometry = true;
+
+  return 0;
+}
diff --git a/Geo/discreteRegion.h b/Geo/discreteRegion.h
index d700564792..c98c85e67a 100644
--- a/Geo/discreteRegion.h
+++ b/Geo/discreteRegion.h
@@ -11,11 +11,15 @@
 #include "MFace.h"
 
 class discreteRegion : public GRegion {
+private:
+  bool _geometry;
 public:
   discreteRegion(GModel *model, int num);
   discreteRegion(GModel *model);
   virtual ~discreteRegion() {}
   virtual GeomType geomType() const { return DiscreteVolume; }
+  virtual bool haveParametrization() { return _geometry; }
+  int createGeometry();
 };
 
 #endif
-- 
GitLab