X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FBLSURFPlugin%2FBLSURFPlugin_Hypothesis.hxx;h=693def64b2be4f74426741f8a1b1abedfe715bc1;hb=0a057ad10d10cbec461c916216f468dbe94390c7;hp=177255989e486cfd9fb726ae8486871d60a71e3e;hpb=57bb5543a911a5d8be27748a86c5b9f4da7a6259;p=plugins%2Fblsurfplugin.git diff --git a/src/BLSURFPlugin/BLSURFPlugin_Hypothesis.hxx b/src/BLSURFPlugin/BLSURFPlugin_Hypothesis.hxx index 1772559..693def6 100644 --- a/src/BLSURFPlugin/BLSURFPlugin_Hypothesis.hxx +++ b/src/BLSURFPlugin/BLSURFPlugin_Hypothesis.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 CEA/DEN, EDF R&D +// Copyright (C) 2007-2021 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -27,23 +27,27 @@ #ifndef _BLSURFPlugin_Hypothesis_HXX_ #define _BLSURFPlugin_Hypothesis_HXX_ -#include "SMESH_Hypothesis.hxx" +#include "BLSURFPlugin_Attractor.hxx" + +#include +#include +#include + #include #include #include -#include #include -#include -#include -#include -#include "BLSURFPlugin_Attractor.hxx" + +class SMESH_Mesh; // Parameters for work of MG-CADSurf +enum EnforcedMeshType { ENFORCED_MESH, ENFORCED_GROUP, ENFORCED_SUBMESH }; + class BLSURFPlugin_Hypothesis: public SMESH_Hypothesis { public: - BLSURFPlugin_Hypothesis(int hypId, int studyId, SMESH_Gen * gen); + BLSURFPlugin_Hypothesis(int hypId, SMESH_Gen * gen, bool hasgeom); enum Topology { FromCAD, @@ -64,10 +68,19 @@ public: GeometricalLocalSize }; - static const char* GetHypType() { return "MG-CADSurf Parameters"; } - + enum ElementType { + Triangles, + QuadrangleDominant, + Quadrangles + }; + + static const char* GetHypType(bool hasgeom) + { return hasgeom ? "MG-CADSurf Parameters" : "MG-CADSurf Parameters_NOGEOM"; } + TopoDS_Shape entryToShape(std::string entry); + static std::string GetMeshGemsVersion(); + void SetPhysicalMesh(PhysicalMesh thePhysicalMesh); PhysicalMesh GetPhysicalMesh() const { return _physicalMesh; } @@ -86,11 +99,18 @@ public: double GetMaxSize() const { return _maxSize; } bool IsMaxSizeRel() const { return _maxSizeRel; } + void SetUseGradation(bool toUse); + bool GetUseGradation() const { return _useGradation; } void SetGradation(double theGradation); double GetGradation() const { return _gradation; } - void SetQuadAllowed(bool theVal); - bool GetQuadAllowed() const { return _quadAllowed; } + void SetUseVolumeGradation(bool toUse); + bool GetUseVolumeGradation() const { return _useVolumeGradation; } + void SetVolumeGradation(double theGradation); + double GetVolumeGradation() const { return _volumeGradation; } + + void SetElementType(ElementType theElementType); + ElementType GetElementType() const { return _elementType; } void SetAngleMesh(double theAngle); double GetAngleMesh() const { return _angleMesh; } @@ -110,6 +130,18 @@ public: void SetTinyEdgeLength(double theVal); double GetTinyEdgeLength() const { return _tinyEdgeLength; } + void SetOptimiseTinyEdges(bool theVal); + bool GetOptimiseTinyEdges() const { return _optimiseTinyEdges; } + + void SetTinyEdgeOptimisationLength(double theVal); + double GetTinyEdgeOptimisationLength() const { return _tinyEdgeOptimisationLength; } + + void SetCorrectSurfaceIntersection(bool theVal); + bool GetCorrectSurfaceIntersection() const { return _correctSurfaceIntersec; } + + void SetCorrectSurfaceIntersectionMaxCost(double theVal); + double GetCorrectSurfaceIntersectionMaxCost() const { return _corrSurfaceIntersCost; } + void SetBadElementRemoval(bool theVal); bool GetBadElementRemoval() const { return _badElementRemoval; } @@ -125,20 +157,123 @@ public: void SetTopology(Topology theTopology); Topology GetTopology() const { return _topology; } + bool GetUseSurfaceProximity() const { return _useSurfaceProximity; } + void SetUseSurfaceProximity( bool toUse ); + + int GetNbSurfaceProximityLayers() const { return _nbSurfaceProximityLayers; } + void SetNbSurfaceProximityLayers( int nbLayers ); + + double GetSurfaceProximityRatio() const { return _surfaceProximityRatio; } + void SetSurfaceProximityRatio( double ratio ); + + bool GetUseVolumeProximity() const { return _useVolumeProximity; } + void SetUseVolumeProximity( bool toUse ); + + int GetNbVolumeProximityLayers() const { return _nbVolumeProximityLayers; } + void SetNbVolumeProximityLayers( int nbLayers ); + + double GetVolumeProximityRatio() const { return _volumeProximityRatio; } + void SetVolumeProximityRatio( double ratio ); + void SetVerbosity(int theVal); int GetVerbosity() const { return _verb; } - + void ClearEntry(const std::string& entry, const char * attEntry = 0); void ClearSizeMaps(); + void SetEnforceCadEdgesSize( bool toEnforce ); + bool GetEnforceCadEdgesSize(); + + void SetJacobianRectificationRespectGeometry( bool allowRectification ); + bool GetJacobianRectificationRespectGeometry(); + + void SetUseDeprecatedPatchMesher( bool useDeprecatedPatchMesher ); + bool GetUseDeprecatedPatchMesher(); + + void SetJacobianRectification( bool allowRectification ); + bool GetJacobianRectification(); + + void SetMaxNumberOfPointsPerPatch( int nb ); + int GetMaxNumberOfPointsPerPatch(); + + void SetMaxNumberOfThreads( int nb ); + int GetMaxNumberOfThreads(); + + void SetRespectGeometry( bool toRespect ); + bool GetRespectGeometry(); + + void SetTinyEdgesAvoidSurfaceIntersections( bool toAvoidIntersection ); + bool GetTinyEdgesAvoidSurfaceIntersections(); + + void SetClosedGeometry( bool isClosed ); + bool GetClosedGeometry(); + + void SetDebug( bool isDebug ); + bool GetDebug(); + + void SetPeriodicTolerance( double tol ); + double GetPeriodicTolerance(); + + void SetRequiredEntities( const std::string& howToTreat ); + std::string GetRequiredEntities(); + + void SetSewingTolerance( double tol ); + double GetSewingTolerance(); + + void SetTags( const std::string& howToTreat ); + std::string GetTags(); + + // Hyper-patches + typedef std::set< int > THyperPatchTags; + typedef std::vector< THyperPatchTags > THyperPatchList; + typedef std::set< std::string > THyperPatchEntries; + typedef std::vector< THyperPatchEntries > THyperPatchEntriesList; + + void SetHyperPatches(const THyperPatchList& hpl, bool notifyMesh=true); + void SetHyperPatches(const THyperPatchEntriesList& hpl); + void SetHyperPatchIDsByEntry( const TopoDS_Shape& mainShape, + const std::map< std::string, TopoDS_Shape >& entryToShape); + const THyperPatchList& GetHyperPatches() const { return _hyperPatchList; } + const THyperPatchEntriesList& GetHyperPatchEntries() const { return _hyperPatchEntriesList; } + static int GetHyperPatchTag( int faceTag, const BLSURFPlugin_Hypothesis* hyp, int* iPatch=0 ); + + // Enforced mesh + struct EnforcedMesh + { + int _meshID; // persistent mesh ID + int _subID; // either persistent group ID or sub-shape ID for sub-mesh + EnforcedMeshType _type; /* specify what _subID means: + - nothing for ENFORCED_MESH + - group ID for ENFORCED_GROUP + - sub-shape ID for ENFORCED_SUBMESH */ + std::string _groupName; // name of a group to add mesh edges to + + bool operator==(const EnforcedMesh& em ) const + { + return ( _meshID == em._meshID && _subID == em._subID && + _type == em._type && _groupName == em._groupName ); + } + }; + + void SetEnforcedMeshes( std::vector< EnforcedMesh > & enforcedMeshes ); + const std::vector< EnforcedMesh > & GetEnforcedMeshes() const { return _enforcedMeshes; } + SMDS_ElemIteratorPtr GetEnforcedSegments( const EnforcedMesh& enfMesh, + SMESH_Mesh* & mesh ) const; + + void SetPreCADMergeEdges(bool theVal); bool GetPreCADMergeEdges() const { return _preCADMergeEdges; } + void SetPreCADRemoveDuplicateCADFaces(bool theVal); + bool GetPreCADRemoveDuplicateCADFaces() const { return _preCADRemoveDuplicateCADFaces; } + void SetPreCADProcess3DTopology(bool theVal); bool GetPreCADProcess3DTopology() const { return _preCADProcess3DTopology; } void SetPreCADDiscardInput(bool theVal); bool GetPreCADDiscardInput() const { return _preCADDiscardInput; } + + static bool HasPreCADOptions(const BLSURFPlugin_Hypothesis* hyp); typedef std::map TSizeMap; @@ -168,7 +303,7 @@ public: */ typedef std::multimap< std::string, BLSURFPlugin_Attractor* > TAttractorMap; - typedef std::map< std::string, std::vector > TParamsMap; //TODO à finir + typedef std::map< std::string, std::vector > TParamsMap; //TODO ?? finir void SetClassAttractorEntry(const std::string& entry, const std::string& att_entry, double StartSize, double EndSize, double ActionRadius, double ConstantRadius); std::string GetClassAttractorEntry(const std::string& entry); @@ -264,7 +399,7 @@ public: // Map Vertex entry / Enforced vertex typedef std::map< TEntry, TEnfVertex* > TEnfVertexEntryEnfVertexMap; - typedef std::map< TEnfGroupName, std::set > TGroupNameNodeIDMap; + typedef std::map< TEnfGroupName, std::set > TGroupNameNodeIDMap; /* TODO GROUPS // Map Group Name / List of enforced vertices typedef std::map< TEnfGroupName , TEnfVertexList > TGroupNameEnfVertexListMap; @@ -279,28 +414,29 @@ public: bool SetEnforcedVertex(TEntry theFaceEntry, TEnfName theVertexName, TEntry theVertexEntry, TEnfGroupName theGroupName, double x = 0.0, double y = 0.0, double z = 0.0); - TEnfVertexList GetEnfVertexList(const TEntry& theFaceEntry) throw (std::invalid_argument); - TEnfVertexCoordsList GetEnfVertexCoordsList(const TEntry& theFaceEntry) throw (std::invalid_argument); - TEntryList GetEnfVertexEntryList (const TEntry& theFaceEntry) throw (std::invalid_argument); - TEnfVertex* GetEnfVertex(TEnfVertexCoords coords) throw (std::invalid_argument); - TEnfVertex* GetEnfVertex(const TEntry& theEnfVertexEntry) throw (std::invalid_argument); - void AddEnfVertexNodeID(TEnfGroupName theGroupName,int theNodeID); - std::set GetEnfVertexNodeIDs(TEnfGroupName theGroupName) throw (std::invalid_argument); - void RemoveEnfVertexNodeID(TEnfGroupName theGroupName,int theNodeID) throw (std::invalid_argument); + TEnfVertexList GetEnfVertexList(const TEntry& theFaceEntry); + TEnfVertexCoordsList GetEnfVertexCoordsList(const TEntry& theFaceEntry); + TEntryList GetEnfVertexEntryList (const TEntry& theFaceEntry); + TEnfVertex* GetEnfVertex(TEnfVertexCoords coords); + TEnfVertex* GetEnfVertex(const TEntry& theEnfVertexEntry); + void AddEnfVertexNodeID(TEnfGroupName theGroupName,smIdType theNodeID); + std::set GetEnfVertexNodeIDs(TEnfGroupName theGroupName); + void RemoveEnfVertexNodeID(TEnfGroupName theGroupName,smIdType theNodeID); - bool ClearEnforcedVertex(const TEntry& theFaceEntry, double x = 0.0, double y = 0.0, double z = 0.0, const TEntry& theVertexEntry="") throw (std::invalid_argument); - bool ClearEnforcedVertices(const TEntry& theFaceEntry) throw (std::invalid_argument); + bool ClearEnforcedVertex(const TEntry& theFaceEntry, double x = 0.0, double y = 0.0, double z = 0.0, const TEntry& theVertexEntry=""); + bool ClearEnforcedVertices(const TEntry& theFaceEntry); void ClearAllEnforcedVertices(); + void AddEnforcedVertex( const TEntry& theFaceEntry, TEnfVertex * theEnfVertex ); - const TFaceEntryEnfVertexListMap _GetAllEnforcedVerticesByFace() const { return _faceEntryEnfVertexListMap; } - const TEnfVertexList _GetAllEnforcedVertices() const { return _enfVertexList; } + const TFaceEntryEnfVertexListMap& _GetAllEnforcedVerticesByFace() const { return _faceEntryEnfVertexListMap; } + const TEnfVertexList& _GetAllEnforcedVertices() const { return _enfVertexList; } - const TFaceEntryCoordsListMap _GetAllCoordsByFace() const { return _faceEntryCoordsListMap; } - const TCoordsEnfVertexMap _GetAllEnforcedVerticesByCoords() const { return _coordsEnfVertexMap; } + const TFaceEntryCoordsListMap& _GetAllCoordsByFace() const { return _faceEntryCoordsListMap; } + const TCoordsEnfVertexMap& _GetAllEnforcedVerticesByCoords() const { return _coordsEnfVertexMap; } - const TFaceEntryEnfVertexEntryListMap _GetAllEnfVertexEntriesByFace() const { return _faceEntryEnfVertexEntryListMap; } - const TEnfVertexEntryEnfVertexMap _GetAllEnforcedVerticesByEnfVertexEntry() const { return _enfVertexEntryEnfVertexMap; } + const TFaceEntryEnfVertexEntryListMap& _GetAllEnfVertexEntriesByFace() const { return _faceEntryEnfVertexEntryListMap; } + const TEnfVertexEntryEnfVertexMap& _GetAllEnforcedVerticesByEnfVertexEntry() const { return _enfVertexEntryEnfVertexMap; } // TODO GROUPS // const TEnfVertexGroupNameMap _GetEnforcedVertexGroupNameMap() const { return _enfVertexGroupNameMap; } @@ -322,7 +458,7 @@ public: * \brief Internal enforced vertices */ void SetInternalEnforcedVertexAllFaces(bool toEnforceInternalVertices); - const bool _GetInternalEnforcedVertexAllFaces() const { return _enforcedInternalVerticesAllFaces; } + bool _GetInternalEnforcedVertexAllFaces() const { return _enforcedInternalVerticesAllFaces; } static bool GetInternalEnforcedVertexAllFaces( const BLSURFPlugin_Hypothesis* hyp ); void SetInternalEnforcedVertexAllFacesGroup(TEnfGroupName theGroupName); const TEnfGroupName _GetInternalEnforcedVertexAllFacesGroup() const { return _enforcedInternalVerticesAllFacesGroup; } @@ -336,7 +472,7 @@ public: // bool GetInternalEnforcedVertex(const TEntry& theFaceEntry); static PhysicalMesh GetDefaultPhysicalMesh() { return PhysicalGlobalSize; } - static GeometricMesh GetDefaultGeometricMesh() { return DefaultGeom; } + static GeometricMesh GetDefaultGeometricMesh() { return GeometricalGlobalSize; } static double GetDefaultPhySize(double diagonal, double bbSegmentation); static double GetDefaultPhySize() { return undefinedDouble(); } static bool GetDefaultPhySizeRel() { return false; } @@ -346,10 +482,19 @@ public: static double GetDefaultMaxSize(double diagonal); static double GetDefaultMaxSize() { return undefinedDouble(); } static bool GetDefaultMaxSizeRel() { return false; } + static bool GetDefaultUseGradation() { return true; } static double GetDefaultGradation() { return 1.3; } - static bool GetDefaultQuadAllowed() { return false; } - static double GetDefaultAngleMesh() { return 22.0; } - + static bool GetDefaultUseVolumeGradation() { return false; } + static double GetDefaultVolumeGradation() { return 2; } + static ElementType GetDefaultElementType() { return Triangles; } + static double GetDefaultAngleMesh() { return 8.0; } + static bool GetDefaultUseSurfaceProximity() { return false; } + static int GetDefaultNbSurfaceProximityLayers() { return 1; } + static double GetDefaultSurfaceProximityRatio() { return 1.; } + static bool GetDefaultUseVolumeProximity() { return false; } + static int GetDefaultNbVolumeProximityLayers() { return 1; } + static double GetDefaultVolumeProximityRatio() { return 1.; } + static double GetDefaultChordalError(double diagonal); static double GetDefaultChordalError() { return undefinedDouble(); } static bool GetDefaultAnisotropic() { return false; } @@ -357,18 +502,24 @@ public: static bool GetDefaultRemoveTinyEdges() { return false; } static double GetDefaultTinyEdgeLength(double diagonal); static double GetDefaultTinyEdgeLength() { return undefinedDouble(); } + static bool GetDefaultOptimiseTinyEdges() { return false; } + static double GetDefaultTinyEdgeOptimisationLength(double diagonal); + static double GetDefaultTinyEdgeOptimisationLength() { return undefinedDouble(); } + static bool GetDefaultCorrectSurfaceIntersection() { return true; } + static double GetDefaultCorrectSurfaceIntersectionMaxCost() { return 15.; } static bool GetDefaultBadElementRemoval() { return false; } - static double GetDefaultBadElementAspectRatio() {return 1000.0; } + static double GetDefaultBadElementAspectRatio() {return 1000.0; } static bool GetDefaultOptimizeMesh() { return true; } static bool GetDefaultQuadraticMesh() { return false; } - + static int GetDefaultVerbosity() { return 3; } static Topology GetDefaultTopology() { return FromCAD; } // PreCAD - static bool GetDefaultPreCADMergeEdges() { return true; } - static bool GetDefaultPreCADProcess3DTopology() { return true; } + static bool GetDefaultPreCADMergeEdges() { return false; } + static bool GetDefaultPreCADRemoveDuplicateCADFaces() { return false; } + static bool GetDefaultPreCADProcess3DTopology() { return false; } static bool GetDefaultPreCADDiscardInput() { return false; } - + static TSizeMap GetDefaultSizeMap() { return TSizeMap();} static TAttractorMap GetDefaultAttractorMap() { return TAttractorMap(); } @@ -390,23 +541,23 @@ public: // const TPreCadPeriodicityEntriesVector _GetPreCadFacesPeriodicityEntries() const { return _preCadFacesPeriodicityEntriesVector; } static TPreCadPeriodicityVector GetDefaultPreCadFacesPeriodicityVector() { return TPreCadPeriodicityVector(); } - const TPreCadPeriodicityVector _GetPreCadFacesPeriodicityVector() const { return _preCadFacesPeriodicityVector; } + const TPreCadPeriodicityVector& _GetPreCadFacesPeriodicityVector() const { return _preCadFacesPeriodicityVector; } static TPreCadPeriodicityVector GetPreCadFacesPeriodicityVector(const BLSURFPlugin_Hypothesis* hyp); static TPreCadPeriodicityVector GetDefaultPreCadEdgesPeriodicityVector() { return TPreCadPeriodicityVector(); } - const TPreCadPeriodicityVector _GetPreCadEdgesPeriodicityVector() const { return _preCadEdgesPeriodicityVector; } + const TPreCadPeriodicityVector& _GetPreCadEdgesPeriodicityVector() const { return _preCadEdgesPeriodicityVector; } static TPreCadPeriodicityVector GetPreCadEdgesPeriodicityVector(const BLSURFPlugin_Hypothesis* hyp); static TFacesPeriodicityVector GetDefaultFacesPeriodicityVector() { return TFacesPeriodicityVector(); } - const TFacesPeriodicityVector _GetFacesPeriodicityVector() const { return _facesPeriodicityVector; } + const TFacesPeriodicityVector& _GetFacesPeriodicityVector() const { return _facesPeriodicityVector; } static TFacesPeriodicityVector GetFacesPeriodicityVector(const BLSURFPlugin_Hypothesis* hyp); static TEdgesPeriodicityVector GetDefaultEdgesPeriodicityVector() { return TEdgesPeriodicityVector(); } - const TEdgesPeriodicityVector _GetEdgesPeriodicityVector() const { return _edgesPeriodicityVector; } + const TEdgesPeriodicityVector& _GetEdgesPeriodicityVector() const { return _edgesPeriodicityVector; } static TEdgesPeriodicityVector GetEdgesPeriodicityVector(const BLSURFPlugin_Hypothesis* hyp); static TVerticesPeriodicityVector GetDefaultVerticesPeriodicityVector() { return TVerticesPeriodicityVector(); } - const TVerticesPeriodicityVector _GetVerticesPeriodicityVector() const { return _verticesPeriodicityVector; } + const TVerticesPeriodicityVector& _GetVerticesPeriodicityVector() const { return _verticesPeriodicityVector; } static TVerticesPeriodicityVector GetVerticesPeriodicityVector(const BLSURFPlugin_Hypothesis* hyp); void ClearPreCadPeriodicityVectors(); @@ -416,25 +567,31 @@ public: void AddPreCadEdgesPeriodicity(TEntry theEdge1Entry, TEntry theEdge2Entry, std::vector &theSourceVerticesEntries, std::vector &theTargetVerticesEntries); - void AddFacePeriodicity(TEntry theFace1Entry, TEntry theFace2Entry); - void AddEdgePeriodicity(TEntry theFace1Entry, TEntry theEdge1Entry, TEntry theFace2Entry, TEntry theEdge2Entry, int edge_orientation = 0); - void AddVertexPeriodicity(TEntry theEdge1Entry, TEntry theVertex1Entry, TEntry theEdge2Entry, TEntry theVertex2Entry); - static double undefinedDouble() { return -1.0; } typedef std::map< std::string, std::string > TOptionValues; typedef std::set< std::string > TOptionNames; void SetOptionValue(const std::string& optionName, - const std::string& optionValue) throw (std::invalid_argument); + const std::string& optionValue); void SetPreCADOptionValue(const std::string& optionName, - const std::string& optionValue) throw (std::invalid_argument); - std::string GetOptionValue(const std::string& optionName) throw (std::invalid_argument); - std::string GetPreCADOptionValue(const std::string& optionName) throw (std::invalid_argument); + const std::string& optionValue); + std::string GetOptionValue(const std::string& optionName, bool* isDefault=0) const; + std::string GetPreCADOptionValue(const std::string& optionName, bool* isDefault=0) const; void ClearOption(const std::string& optionName); void ClearPreCADOption(const std::string& optionName); - const TOptionValues& GetOptionValues() const { return _option2value; } - const TOptionValues& GetPreCADOptionValues() const { return _preCADoption2value; } + TOptionValues GetOptionValues() const; + TOptionValues GetPreCADOptionValues() const; + const TOptionValues& GetCustomOptionValues() const { return _customOption2value; } + + void AddOption(const std::string& optionName, const std::string& optionValue); + void AddPreCADOption(const std::string& optionName, const std::string& optionValue); + std::string GetOption(const std::string& optionName) const; + std::string GetPreCADOption(const std::string& optionName) const; + + static bool ToBool(const std::string& str, bool* isOk=0); + static double ToDbl(const std::string& str, bool* isOk=0); + static int ToInt(const std::string& str, bool* isOk=0); /*! * Sets the file for export resulting mesh in GMF format @@ -473,56 +630,75 @@ private: bool _phySizeRel; double _minSize, _maxSize; bool _minSizeRel, _maxSizeRel; + bool _useGradation; double _gradation; - bool _quadAllowed; + bool _useVolumeGradation; + double _volumeGradation; + ElementType _elementType; double _angleMesh; double _chordalError; bool _anisotropic; double _anisotropicRatio; bool _removeTinyEdges; double _tinyEdgeLength; + bool _optimiseTinyEdges; + double _tinyEdgeOptimisationLength; + bool _correctSurfaceIntersec; + double _corrSurfaceIntersCost; bool _badElementRemoval; double _badElementAspectRatio; bool _optimizeMesh; bool _quadraticMesh; int _verb; Topology _topology; - + bool _useSurfaceProximity; + int _nbSurfaceProximityLayers; + double _surfaceProximityRatio; + bool _useVolumeProximity; + int _nbVolumeProximityLayers; + double _volumeProximityRatio; + bool _preCADMergeEdges; + bool _preCADRemoveDuplicateCADFaces; bool _preCADProcess3DTopology; bool _preCADDiscardInput; double _preCADEpsNano; - - TOptionValues _option2value, _preCADoption2value; - TOptionNames _doubleOptions, _charOptions; + + TOptionValues _option2value, _preCADoption2value, _customOption2value; // user defined values + TOptionValues _defaultOptionValues; // default values + TOptionNames _doubleOptions, _charOptions, _boolOptions; // to find a type of option TOptionNames _preCADdoubleOptions, _preCADcharOptions; + TSizeMap _sizeMap; TSizeMap _attractors; TAttractorMap _classAttractors; - TSizeMap _attEntry; - TParamsMap _attParams; - TFaceEntryEnfVertexListMap _faceEntryEnfVertexListMap; - TEnfVertexList _enfVertexList; + TFaceEntryEnfVertexListMap _faceEntryEnfVertexListMap; + TEnfVertexList _enfVertexList; // maps to get "manual" enf vertex (through their coordinates) - TFaceEntryCoordsListMap _faceEntryCoordsListMap; - TCoordsEnfVertexMap _coordsEnfVertexMap; + TFaceEntryCoordsListMap _faceEntryCoordsListMap; + TCoordsEnfVertexMap _coordsEnfVertexMap; // maps to get "geom" enf vertex (through their geom entries) - TFaceEntryEnfVertexEntryListMap _faceEntryEnfVertexEntryListMap; - TEnfVertexEntryEnfVertexMap _enfVertexEntryEnfVertexMap; - TGroupNameNodeIDMap _groupNameNodeIDMap; + TFaceEntryEnfVertexEntryListMap _faceEntryEnfVertexEntryListMap; + TEnfVertexEntryEnfVertexMap _enfVertexEntryEnfVertexMap; + TGroupNameNodeIDMap _groupNameNodeIDMap; // Enable internal enforced vertices on specific face if requested by user // TFaceEntryInternalVerticesList _faceEntryInternalVerticesList; - bool _enforcedInternalVerticesAllFaces; - TEnfGroupName _enforcedInternalVerticesAllFacesGroup; + bool _enforcedInternalVerticesAllFaces; + TEnfGroupName _enforcedInternalVerticesAllFacesGroup; - TPreCadPeriodicityVector _preCadFacesPeriodicityVector; - TPreCadPeriodicityVector _preCadEdgesPeriodicityVector; + TPreCadPeriodicityVector _preCadFacesPeriodicityVector; + TPreCadPeriodicityVector _preCadEdgesPeriodicityVector; + + TFacesPeriodicityVector _facesPeriodicityVector; + TEdgesPeriodicityVector _edgesPeriodicityVector; + TVerticesPeriodicityVector _verticesPeriodicityVector; + + THyperPatchList _hyperPatchList; + THyperPatchEntriesList _hyperPatchEntriesList; - TFacesPeriodicityVector _facesPeriodicityVector; - TEdgesPeriodicityVector _edgesPeriodicityVector; - TVerticesPeriodicityVector _verticesPeriodicityVector; + std::vector< EnforcedMesh > _enforcedMeshes; // enforced 1D meshes // Called by SaveTo to store content of _preCadFacesPeriodicityVector and _preCadEdgesPeriodicityVector void SavePreCADPeriodicity(std::ostream & save, const char* shapeType);