-// Copyright (C) 2007-2016 CEA/DEN, EDF R&D
+// Copyright (C) 2007-2024 CEA, EDF
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
#ifndef _SMESH_BLSURFALGORITHM_IDL_
#define _SMESH_BLSURFALGORITHM_IDL_
-#include "SMESH_Hypothesis.idl"
#include "GEOM_Gen.idl"
#include "SALOME_Exception.idl"
+#include "SMESH_Hypothesis.idl"
+#include "SMESH_Mesh.idl"
/*!
* BLSURFPlugin: interfaces to BLSURF related hypotheses and algorithms
{
typedef sequence<string> string_array;
+ // Enforced 1D Mesh
+ struct MG_EnforcedMesh1D
+ {
+ SMESH::SMESH_IDSource mesh; // mesh, group or sub-mesh
+ string groupName; // optional name of a group to add mesh edges to
+ };
+ typedef sequence< MG_EnforcedMesh1D > EnforcedMeshesList;
+
// Enforced vertex name
typedef string TEnfName;
// Entry
typedef sequence<TEntry> TEntryList;
// Group name
typedef string TEnfGroupName;
-
+
// Coordinates of enforced vertex
typedef sequence<double,3> TEnfVertexCoords;
// List of coords
typedef sequence<TEnfVertexCoords> TEnfVertexCoordsList;
-
+
// Enforced vertex
struct TEnfVertex {
TEnfName name;
typedef sequence<TPreCadPeriodicity> TPeriodicityList;
// Hyper-patches
- typedef sequence<long> THyperPatch;
- typedef sequence<THyperPatch> THyperPatchList;
+ typedef sequence< long > THyperPatch;
+ typedef sequence< THyperPatch > THyperPatchList;
+ typedef sequence< string > THyperPatchEntries;
+ typedef sequence< THyperPatchEntries > THyperPatchEntriesList;
+ typedef sequence< GEOM::ListOfGO > THyperPatchShapesList;
/*!
* BLSURFPlugin_BLSURF: interface of BLSURF algorithm
{
/*!
- * Sets a way to define size of mesh elements to generate
+ * Get version of MeshGems suite.
+ * The version is a string in form <major>.<minor>-<patch>. Example: "2.9-6".
+ */
+ string GetMeshGemsVersion();
+
+ /*!
+ *Set a way to define size of mesh elements to generate
* 0 - size is defined automatically
* 1 - size is set by SetPhySize() method
* 2 - size is set by SetPhySize() method. A sizemap is defined.
long GetPhysicalMesh();
/*!
- * Sets a way to define maximum angular deflection of mesh from CAD model
+ *Set a way to define maximum angular deflection of mesh from CAD model
* 0 - deflection is defined automatically
* 1 - deflection is set by SetAngleMesh() method
* 2 - deflection is set by SetAngleMesh() method. A sizemap is defined (TODO).
long GetGeometricMesh();
/*!
- * Sets size of mesh elements to generate
+ *Set size of mesh elements to generate
*/
void SetPhySize(in double size);
void SetPhySizeRel(in double size);
boolean IsPhySizeRel();
/*!
- * Sets lower boundary of mesh element size
+ *Set lower boundary of mesh element size
*/
void SetMinSize(in double theMinSize);
void SetMinSizeRel(in double theMinSize);
boolean IsMinSizeRel();
/*!
- * Sets upper boundary of mesh element size
+ *Set upper boundary of mesh element size
*/
void SetMaxSize(in double theMaxSize);
void SetMaxSizeRel(in double theMaxSize);
boolean IsMaxSizeRel();
/*!
- * Sets maximal allowed ratio between the lengths of two adjacent edges
+ *Set maximal allowed ratio between the lengths of two adjacent edges
*/
void SetUseGradation(in boolean toUse);
boolean GetUseGradation();
double GetGradation();
/*!
- * Sets maximal allowed ratio between the lengths of two adjacent edges in 3D mesh
+ *Set maximal allowed ratio between the lengths of two adjacent edges in 3D mesh
*/
void SetUseVolumeGradation(in boolean toUse);
boolean GetUseVolumeGradation();
double GetVolumeGradation();
/*!
- * Sets to create quadrilateral elements or not
+ *Set to create quadrilateral elements or not
*/
void SetQuadAllowed(in boolean allowed);
- boolean GetQuadAllowed();
+ void SetElementType(in long elementType);
+ long GetElementType();
/*!
- * Sets angular deflection (in degrees) of a mesh face and edge from CAD surface
+ *Set angular deflection (in degrees) of a mesh face and edge from CAD surface
*/
void SetAngleMesh(in double angle);
double GetAngleMesh();
/*!
- * Sets the maximum desired distance between a triangle and its supporting CAD surface
+ *Set the maximum desired distance between a triangle and its supporting CAD surface
*/
void SetChordalError(in double distance);
double GetChordalError();
double GetCorrectSurfaceIntersectionMaxCost();
/*!
- * This patch independent correction option can be activated to remove the bad
+ * This patch independent correction option can be activated to remove the bad
* elements (often called slivers) from the generated mesh, without taking into account
* the tags (attributes) specification.
*/
/*!
* This parameter defines the aspect ratio triggering the "bad element"
- * classification for the force bad surface element removal option.
+ * classification for the force bad surface element removal option.
*/
void SetBadElementAspectRatio(in double ratio);
double GetBadElementAspectRatio();
boolean GetQuadraticMesh();
/*!
- * Sets topology usage way defining how mesh conformity is assured
+ *Set topology usage way defining how mesh conformity is assured
* value=0 - mesh conformity is assured by conformity of a shape
* value=1,2 - mesh conformity is assured by pre-processing a CAD model (OBSOLETE)
* value=3 - mesh conformity is assured by pre-processing a CAD model with Pre-CAD
void SetTopology(in long way);
long GetTopology();
+
+ /*!
+ * Activate/deactivate surface proximity computation
+ */
+ void SetSurfaceProximity( in boolean toUse );
+ boolean GetSurfaceProximity();
+
+ /*!
+ * Set number of surface element layers to be generated due to surface proximity
+ */
+ void SetNbSurfaceProximityLayers( in short nbLayers );
+ short GetNbSurfaceProximityLayers();
+
+ /*!
+ * Set coefficient by which size of element refined due to surface proximity is increased
+ */
+ void SetSurfaceProximityRatio( in double ratio );
+ double GetSurfaceProximityRatio();
+
/*!
- * Sets verbosity level in the range 0 to 100.
+ * Activate/deactivate volume proximity computation
+ */
+ void SetVolumeProximity( in boolean toUse );
+ boolean GetVolumeProximity();
+
+ /*!
+ * Set number of surface element layers to be generated due to volume proximity
+ */
+ void SetNbVolumeProximityLayers( in short nbLayers );
+ short GetNbVolumeProximityLayers();
+
+ /*!
+ * Set coefficient by which size of element refined due to volume proximity is increased
+ */
+ void SetVolumeProximityRatio( in double ratio );
+ double GetVolumeProximityRatio();
+
+ /*!
+ * Set verbosity level in the range 0 to 10.
*/
void SetVerbosity(in short theVal) raises (SALOME::SALOME_Exception);
short GetVerbosity();
+ /*!
+ * Set/Get enforced 1D meshes
+ */
+ void SetEnforcedMeshes( in EnforcedMeshesList enforcedMeshes );
+ EnforcedMeshesList GetEnforcedMeshes();
+
/*!
* Set enforce_cad_edge_sizes parameter
*
void SetJacobianRectification( in boolean allowRectification );
boolean GetJacobianRectification();
+ /*!
+ * Set use_deprecated_patch_mesher parameter (compatibility with older versions of Meshgems)
+ *
+ * the use_deprecated_patch_mesher parameter allows to keep the same behaviour than
+ * in salome < 8.3 (meshgems 2.1.11 instead of meshgems >= 2.4.5)
+ */
+ void SetUseDeprecatedPatchMesher( in boolean useDeprecatedPatchMesher );
+ boolean GetUseDeprecatedPatchMesher();
+
/*!
* Set max_number_of_points_per_patch parameter
*
void SetMaxNumberOfPointsPerPatch( in long nb ) raises (SALOME::SALOME_Exception);
long GetMaxNumberOfPointsPerPatch();
+
+ /*!
+ * Set max_number_of_threads parameter
+ *
+ * Set the maximum of threads to use for multithreading mesh computation.
+ */
+ void SetMaxNumberOfThreads( in long nb ) raises (SALOME::SALOME_Exception);
+ long GetMaxNumberOfThreads();
+
/*!
* Set respect_geometry parameter
*
* Set hyper-patches
*/
void SetHyperPatches(in THyperPatchList hpl);
- THyperPatchList GetHyperPatches();
+ THyperPatchList GetHyperPatches( in GEOM::GEOM_Object mainShape );
+ void SetHyperPatchShapes(in THyperPatchShapesList hpsl);
+ THyperPatchEntriesList GetHyperPatchShapes();
+ void SetHyperPatchEntries(in THyperPatchEntriesList hpel);
/*!
* To merges edges.
boolean GetPreCADDiscardInput();
/*!
- * Sets advanced option value
+ *Set advanced option value
*/
void SetOptionValue(in string optionName,
in string optionValue) raises (SALOME::SALOME_Exception);
///////////////////////
/*!
- * Sets the file for export resulting mesh in GMF format
+ *Set the file for export resulting mesh in GMF format
*/
-// void SetGMFFile(in string theFileName, in boolean isBinary);
void SetGMFFile(in string theFileName);
string GetGMFFile();
-// boolean GetGMFFileMode();
-
- //
- // Obsolete methods - To be removed in V7
- //
- void SetPhyMin(in double theMinSize);
- double GetPhyMin();
- void SetPhyMax(in double theMaxSize);
- double GetPhyMax();
- void SetGeoMin(in double theMinSize);
- double GetGeoMin();
- void SetGeoMax(in double theMaxSize);
- double GetGeoMax();
- void SetAngleMeshS(in double angle);
- double GetAngleMeshS();
- void SetAngleMeshC(in double angle);
- double GetAngleMeshC();
- void SetDecimesh(in boolean toIgnoreEdges);
- boolean GetDecimesh();
- void SetPreCADRemoveNanoEdges(in boolean toRemoveNanoEdges);
- boolean GetPreCADRemoveNanoEdges();
- void SetPreCADEpsNano(in double epsNano);
- double GetPreCADEpsNano();
};
};