Salome HOME
Merge branch 'OCCT780'
[modules/smesh.git] / idl / SMESH_Gen.idl
index dd0866f8a240579c824e61ceea0755e75a0217b6..f3bf7f4542c6fe5304318c34c150ebda0ceeef22 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 
 #include "SMESH_Mesh.idl"
 #include "SMESH_Hypothesis.idl"
 
 #include "SMESH_Mesh.idl"
 #include "SMESH_Hypothesis.idl"
+#include "SMESH_smIdType.idl"
+
+module SMESHHOMARD
+{
+  interface HOMARD_Gen;
+};
 
 module SMESH
 {
 
 module SMESH
 {
@@ -43,6 +49,8 @@ module SMESH
   interface FilterManager;
   interface SMESH_Pattern;
   interface Measurements;
   interface FilterManager;
   interface SMESH_Pattern;
   interface Measurements;
+  interface MG_ADAPT;
+  interface MG_ADAPT_OBJECT;
 
   /*!
    * Tags definition
 
   /*!
    * Tags definition
@@ -111,11 +119,20 @@ module SMESH
     short   code;       // ComputeErrorName or, if negative, algo specific code
     string  comment;    // textual problem description
     string  algoName;
     short   code;       // ComputeErrorName or, if negative, algo specific code
     string  comment;    // textual problem description
     string  algoName;
-    short   subShapeID; // id of sub-shape of a shape to mesh
+    long    subShapeID; // id of sub-shape of a shape to mesh
     boolean hasBadMesh; // there are elements preventing computation available for visualization
   };
   typedef sequence<ComputeError> compute_error_array;
 
     boolean hasBadMesh; // there are elements preventing computation available for visualization
   };
   typedef sequence<ComputeError> compute_error_array;
 
+  /*!
+   * Way to initialize hypothesis
+   */
+  struct HypInitParams
+  {
+    short   way; // 0 - by mesh, 1 - by geometry size + preferred parameters, 2 - by averageLength
+    double  averageLength;
+    boolean quadDominated;
+  };
 
   interface SMESH_Gen : Engines::EngineComponent, SALOMEDS::Driver
   {
 
   interface SMESH_Gen : Engines::EngineComponent, SALOMEDS::Driver
   {
@@ -139,14 +156,19 @@ module SMESH
     boolean IsEmbeddedMode();
 
     /*!
     boolean IsEmbeddedMode();
 
     /*!
-      Set the current study
+      Update the study
      */
      */
-    void SetCurrentStudy( in SALOMEDS::Study theStudy );
+    void UpdateStudy();
 
     /*!
 
     /*!
-      Get the current study
+      Set enable publishing in the study
      */
      */
-    SALOMEDS::Study GetCurrentStudy();
+    void SetEnablePublish( in boolean theIsEnablePublish );
+
+    /*!
+      Get enable publishing in the study
+     */
+    boolean IsEnablePublish();
 
     /*!
      * Create a hypothesis that can be shared by different parts of the mesh.
 
     /*!
      * Create a hypothesis that can be shared by different parts of the mesh.
@@ -159,6 +181,15 @@ module SMESH
                                        in string theLibName )
       raises ( SALOME::SALOME_Exception );
 
                                        in string theLibName )
       raises ( SALOME::SALOME_Exception );
 
+    /*!
+     * Create a hypothesis and initialize it by average length
+     */
+    SMESH_Hypothesis CreateHypothesisByAverageLength( in string  theHypName,
+                                                      in string  theLibName,
+                                                      in double  theAverageLength,
+                                                      in boolean theQuadDominated)
+      raises ( SALOME::SALOME_Exception );
+
     /*!
      * Return a hypothesis holding parameter values corresponding either to the mesh
      * existing on the given geometry or to size of the geometry.
     /*!
      * Return a hypothesis holding parameter values corresponding either to the mesh
      * existing on the given geometry or to size of the geometry.
@@ -170,7 +201,7 @@ module SMESH
                                                    in string            theLibName,
                                                    in SMESH_Mesh        theMesh,
                                                    in GEOM::GEOM_Object theGeom,
                                                    in string            theLibName,
                                                    in SMESH_Mesh        theMesh,
                                                    in GEOM::GEOM_Object theGeom,
-                                                   in boolean           byMesh)
+                                                   in HypInitParams     theWay)
       raises ( SALOME::SALOME_Exception );
 
     /*!
       raises ( SALOME::SALOME_Exception );
 
     /*!
@@ -211,6 +242,16 @@ module SMESH
     SMESH_Mesh CreateMesh( in GEOM::GEOM_Object theObject )
       raises ( SALOME::SALOME_Exception );
 
     SMESH_Mesh CreateMesh( in GEOM::GEOM_Object theObject )
       raises ( SALOME::SALOME_Exception );
 
+    /*!
+     * Create a Mesh object, given a geometry shape.
+     * Mesh is created empty (no points, no elements).
+     * Shape is explored via GEOM_Client to create local copies.
+     * of TopoDS_Shapes and bind CORBA references of shape & subshapes
+     * with TopoDS_Shapes
+     * The mesh is a parallel one
+     */
+    SMESH_ParallelMesh CreateParallelMesh( in GEOM::GEOM_Object theObject )
+      raises ( SALOME::SALOME_Exception );
     /*!
      * Create an empty mesh object
      */
     /*!
      * Create an empty mesh object
      */
@@ -227,16 +268,9 @@ module SMESH
     /*!
      * Create Mesh object(s) importing data from given MED file
      */
     /*!
      * Create Mesh object(s) importing data from given MED file
      */
-     mesh_array CreateMeshesFromMED( in string theFileName,
-                                     out SMESH::DriverMED_ReadStatus theStatus )
-       raises ( SALOME::SALOME_Exception );
-
-    /*!
-     * Create Mesh object(s) importing data from given MED file
-     */
-     mesh_array CreateMeshesFromSAUV( in string theFileName,
-                                     out SMESH::DriverMED_ReadStatus theStatus )
-       raises ( SALOME::SALOME_Exception );
+    mesh_array CreateMeshesFromMED( in string theFileName,
+                                    out SMESH::DriverMED_ReadStatus theStatus )
+      raises ( SALOME::SALOME_Exception );
 
     /*!
      * Create Mesh object importing data from given STL file
 
     /*!
      * Create Mesh object importing data from given STL file
@@ -261,6 +295,24 @@ module SMESH
                                     out SMESH::ComputeError theError)
       raises ( SALOME::SALOME_Exception );
 
                                     out SMESH::ComputeError theError)
       raises ( SALOME::SALOME_Exception );
 
+    /*!
+     * Create a mesh and import data from any file supported by meshio library
+     */
+    mesh_array CreateMeshesFromMESHIO(in string theFileName,
+                                      out SMESH::DriverMED_ReadStatus theStatus)
+      raises (SALOME::SALOME_Exception);
+
+    /*!
+     * Create a dual mesh of a Tetrahedron mesh
+     *  \param mesh - TetraHedron mesh to create dual from
+     *  \param meshName - a name of the new mesh
+     *  \param adaptToShape - if True project boundary point on shape
+     */
+    SMESH_Mesh CreateDualMesh(in SMESH_IDSource mesh,
+                              in string         meshName,
+                              in boolean        adaptToShape)
+      raises ( SALOME::SALOME_Exception );
+
     /*!
      * Create a mesh by copying a part of another mesh
      *  \param meshPart - a part of mesh to copy
     /*!
      * Create a mesh by copying a part of another mesh
      *  \param meshPart - a part of mesh to copy
@@ -276,7 +328,39 @@ module SMESH
       raises ( SALOME::SALOME_Exception );
 
     /*!
       raises ( SALOME::SALOME_Exception );
 
     /*!
-     * Concatenate the given meshes or groups into one mesh.
+     * Create a mesh by copying definitions of another mesh to a given geometry
+     *  \param sourceMesh - a mesh to copy
+     *  \param newGeometry - a new geometry
+     *  \param meshName - a name of the new mesh
+     *  \param toCopyGroups - to create groups in the new mesh
+     *  \param toReuseHypotheses - if True, existing hypothesis will be used by the new mesh,
+     *         otherwise new hypotheses with the same parameters will be created for the new mesh.
+     *  \param toCopyElements - to copy mesh elements of same sub-shapes of the two geometries
+     *  \param newMesh - return a new mesh
+     *  \param newGroups - return new groups
+     *  \param newSubmeshes - return new sub-meshes
+     *  \param newHypotheses - return new algorithms and hypotheses
+     *  \param invalidEntries - return study entries of objects whose
+     *         counterparts are not found in the newGeometry, followed by entries
+     *         of mesh sub-objects that are invalid because they depend on a not found
+     *         preceding sub-shape
+     */
+    boolean CopyMeshWithGeom( in SMESH_Mesh        sourceMesh,
+                              in GEOM::GEOM_Object newGeometry,
+                              in string            meshName,
+                              in boolean           toCopyGroups,
+                              in boolean           toReuseHypotheses,
+                              in boolean           toCopyElements,
+                              out SMESH_Mesh       newMesh,
+                              out ListOfGroups     newGroups,
+                              out submesh_array    newSubmeshes,
+                              out ListOfHypothesis newHypotheses,
+                              out string_array     invalidEntries)
+      raises ( SALOME::SALOME_Exception );
+
+    /*!
+     * Concatenate the given meshes or groups into one mesh,
+     * optionally to theMeshToAppendTo.
      * Union groups with the same name and type if
      * theUniteIdenticalGroups flag is true.
      * Merge coincident nodes and elements if
      * Union groups with the same name and type if
      * theUniteIdenticalGroups flag is true.
      * Merge coincident nodes and elements if
@@ -285,11 +369,13 @@ module SMESH
     SMESH_Mesh Concatenate(in ListOfIDSources theMeshesArray,
                            in boolean         theUniteIdenticalGroups,
                            in boolean         theMergeNodesAndElements,
     SMESH_Mesh Concatenate(in ListOfIDSources theMeshesArray,
                            in boolean         theUniteIdenticalGroups,
                            in boolean         theMergeNodesAndElements,
-                           in double          theMergeTolerance)
+                           in double          theMergeTolerance,
+                           in SMESH_Mesh      theMeshToAppendTo)
       raises ( SALOME::SALOME_Exception );
 
     /*!
       raises ( SALOME::SALOME_Exception );
 
     /*!
-     * Concatenate the given meshes into one mesh.
+     * Concatenate the given meshes into one mesh,
+     * optionally to theMeshToAppendTo.
      * Union groups with the same name and type if
      * theUniteIdenticalGroups flag is true.
      * Merge coincident nodes and elements if
      * Union groups with the same name and type if
      * theUniteIdenticalGroups flag is true.
      * Merge coincident nodes and elements if
@@ -299,7 +385,8 @@ module SMESH
     SMESH_Mesh ConcatenateWithGroups(in ListOfIDSources theMeshesArray,
                                      in boolean         theUniteIdenticalGroups,
                                      in boolean         theMergeNodesAndElements,
     SMESH_Mesh ConcatenateWithGroups(in ListOfIDSources theMeshesArray,
                                      in boolean         theUniteIdenticalGroups,
                                      in boolean         theMergeNodesAndElements,
-                                     in double          theMergeTolerance)
+                                     in double          theMergeTolerance,
+                                     in SMESH_Mesh      theMeshToAppendTo)
       raises ( SALOME::SALOME_Exception );
 
     /*!
       raises ( SALOME::SALOME_Exception );
 
     /*!
@@ -327,8 +414,8 @@ module SMESH
     /*!
      * Evaluates size of prospective mesh on a shape
      */
     /*!
      * Evaluates size of prospective mesh on a shape
      */
-    long_array  Evaluate(in SMESH_Mesh        theMesh,
-                         in GEOM::GEOM_Object theSubObject)
+    smIdType_array  Evaluate(in SMESH_Mesh        theMesh,
+                             in GEOM::GEOM_Object theSubObject)
       raises ( SALOME::SALOME_Exception );
 
     /*!
       raises ( SALOME::SALOME_Exception );
 
     /*!
@@ -386,17 +473,17 @@ module SMESH
      * The returned geometrical object, if not nil, is either found in the
      * study or is published by this method with the given name
      */
      * The returned geometrical object, if not nil, is either found in the
      * study or is published by this method with the given name
      */
-    GEOM::GEOM_Object GetGeometryByMeshElement( in SMESH_Mesh  theMesh,
-                                                in long        theElementID,
-                                                in string      theGeomName)
+    GEOM::GEOM_Object GetGeometryByMeshElement( in SMESH_Mesh theMesh,
+                                                in smIdType   theElementID,
+                                                in string     theGeomName)
       raises ( SALOME::SALOME_Exception );
 
     /*!
      * Return geometrical object the given element is built on.
      * The returned geometrical object not published in study by this method.
      */
       raises ( SALOME::SALOME_Exception );
 
     /*!
      * Return geometrical object the given element is built on.
      * The returned geometrical object not published in study by this method.
      */
-    GEOM::GEOM_Object FindGeometryByMeshElement( in SMESH_Mesh  theMesh,
-                                                 in long        theElementID)
+    GEOM::GEOM_Object FindGeometryByMeshElement( in SMESH_Mesh theMesh,
+                                                 in smIdType   theElementID)
       raises ( SALOME::SALOME_Exception );
 
     /*!
       raises ( SALOME::SALOME_Exception );
 
     /*!
@@ -406,10 +493,25 @@ module SMESH
      */
     long GetObjectId(in Object theObject);
 
      */
     long GetObjectId(in Object theObject);
 
+    /*!
+     * \brief Get version of MED format being used.
+     */
+    string GetMEDFileVersion();
+
     /*!
      * \brief Get MED version of the file by its name.
      */
     /*!
      * \brief Get MED version of the file by its name.
      */
-    boolean GetMEDVersion(in string theFileName, out MED_VERSION theVersion);
+    string GetMEDVersion(in string theFileName);
+
+    /*!
+     * \brief Check compatibility of file with MED format being used, for read only.
+     */
+    boolean CheckCompatibility(in string theFileName);
+
+    /*!
+     * \brief Check compatibility of file with MED format being used, for append on write.
+     */
+    boolean CheckWriteCompatibility(in string theFileName);
 
     /*!
      * \brief Get names of meshes defined in file with the specified name.
 
     /*!
      * \brief Get names of meshes defined in file with the specified name.
@@ -445,60 +547,60 @@ module SMESH
      * Return indices of elements, which are located inside the sphere
      *  \param theSource - mesh, sub-mesh or group
      *  \param theElemType - mesh element type
      * Return indices of elements, which are located inside the sphere
      *  \param theSource - mesh, sub-mesh or group
      *  \param theElemType - mesh element type
-     *  \param theX - x cooridate of the center of the sphere
-     *  \param theY - y cooridate of the center of the sphere
-     *  \param theZ - y cooridate of the center of the sphere
+     *  \param theX - x coordinate of the center of the sphere
+     *  \param theY - y coordinate of the center of the sphere
+     *  \param theZ - y coordinate of the center of the sphere
      *  \param theR - radius of the sphere
      */
     long_array GetInsideSphere( in SMESH_IDSource theSource,
                                in ElementType    theElemType,
      *  \param theR - radius of the sphere
      */
     long_array GetInsideSphere( in SMESH_IDSource theSource,
                                in ElementType    theElemType,
-                               in double theX, 
-                               in double theY, 
+                               in double theX,
+                               in double theY,
                                in double theZ,
                                in double theZ,
-                               in double theR );    
+                               in double theR );
 
     /*!
      * Return indices of elements, which are located inside the box
      *  \param theSource - mesh, sub-mesh or group
      *  \param theElemType - mesh element type
 
     /*!
      * Return indices of elements, which are located inside the box
      *  \param theSource - mesh, sub-mesh or group
      *  \param theElemType - mesh element type
-     *  \param theX1 - x cooridate of the first opposite point
-     *  \param theY1 - y cooridate of the first opposite point
-     *  \param theZ1 - y cooridate of the first opposite point
-     *  \param theX2 - x cooridate of the second opposite point
-     *  \param theY2 - y cooridate of the second opposite point
-     *  \param theZ2 - y cooridate of the second opposite point
+     *  \param theX1 - x coordinate of the first opposite point
+     *  \param theY1 - y coordinate of the first opposite point
+     *  \param theZ1 - y coordinate of the first opposite point
+     *  \param theX2 - x coordinate of the second opposite point
+     *  \param theY2 - y coordinate of the second opposite point
+     *  \param theZ2 - y coordinate of the second opposite point
      */
     long_array GetInsideBox( in SMESH_IDSource theSource,
                             in ElementType    theElemType,
      */
     long_array GetInsideBox( in SMESH_IDSource theSource,
                             in ElementType    theElemType,
-                            in double theX1, 
-                            in double theY1, 
+                            in double theX1,
+                            in double theY1,
                             in double theZ1,
                             in double theX2,
                             in double theY2,
                             in double theZ1,
                             in double theX2,
                             in double theY2,
-                            in double theZ2);    
+                            in double theZ2);
     /*!
      * Return indices of elements, which are located inside the box
      *  \param theSource - mesh, sub-mesh or group
      *  \param theElemType - mesh element type
     /*!
      * Return indices of elements, which are located inside the box
      *  \param theSource - mesh, sub-mesh or group
      *  \param theElemType - mesh element type
-     *  \param theX - x cooridate of the cented of the bottom face
-     *  \param theY - y cooridate of the cented of the bottom face
-     *  \param theZ - y cooridate of the cented of the bottom face
-     *  \param theDX - x cooridate of the cented of the base vector
-     *  \param theDY - y cooridate of the cented of the base vector
-     *  \param theDZ - z cooridate of the cented of the base vector
+     *  \param theX - x coordinate of the cented of the bottom face
+     *  \param theY - y coordinate of the cented of the bottom face
+     *  \param theZ - y coordinate of the cented of the bottom face
+     *  \param theDX - x coordinate of the cented of the base vector
+     *  \param theDY - y coordinate of the cented of the base vector
+     *  \param theDZ - z coordinate of the cented of the base vector
      *  \param theH - height of the cylinder
      *  \param theR - radius of the cylinder
      */
     long_array GetInsideCylinder( in SMESH_IDSource theSource,
                                  in ElementType    theElemType,
      *  \param theH - height of the cylinder
      *  \param theR - radius of the cylinder
      */
     long_array GetInsideCylinder( in SMESH_IDSource theSource,
                                  in ElementType    theElemType,
-                                 in double theX, 
-                                 in double theY, 
+                                 in double theX,
+                                 in double theY,
                                  in double theZ,
                                  in double theDX,
                                  in double theDY,
                                  in double theDZ,
                                  in double theH,
                                  in double theZ,
                                  in double theDX,
                                  in double theDY,
                                  in double theDZ,
                                  in double theH,
-                                 in double theR );    
+                                 in double theR );
     /*!
      * Return indices of elements, which are located inside the geometry
      *  \param theSource - mesh, sub-mesh or group
     /*!
      * Return indices of elements, which are located inside the geometry
      *  \param theSource - mesh, sub-mesh or group
@@ -509,9 +611,13 @@ module SMESH
     long_array GetInside( in SMESH_IDSource theSource,
                          in ElementType    theElemType,
                          in GEOM::GEOM_Object theGeom,
     long_array GetInside( in SMESH_IDSource theSource,
                          in ElementType    theElemType,
                          in GEOM::GEOM_Object theGeom,
-                         in double theTolerance );    
-
+                         in double theTolerance );
 
 
+    MG_ADAPT CreateMG_ADAPT();
+    SMESHHOMARD::HOMARD_Gen CreateHOMARD_ADAPT() raises ( SALOME::SALOME_Exception );
+    //MG_ADAPT_OBJECT Adaptation(in string adaptType);
+    SALOME::GenericObj Adaptation(in string adaptType) raises ( SALOME::SALOME_Exception );
+    MG_ADAPT CreateAdaptationHypothesis();
   };
 
 };
   };
 
 };