diff --git a/Geo/discreteRegion.cpp b/Geo/discreteRegion.cpp index cf07a936d3cff124b5a77e52bcedfede528d02e9..b87be48c515503adaba1ee9470819bdb9b0af269 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 d700564792299fbcc34025379cfa59b68221f891..c98c85e67a07fbee3e9a3ff08c02405463ace36b 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