From e53afe57b7402b1afdb738b47df61a892d95c265 Mon Sep 17 00:00:00 2001 From: eap Date: Fri, 28 Oct 2011 12:29:43 +0000 Subject: [PATCH] 0021336: EDF 1717 SMESH: New algorithm "body fitting" cartesian unstructured + interface StdMeshers_CartesianParameters3D : SMESH::SMESH_Hypothesis + interface StdMeshers_Cartesian_3D : SMESH::SMESH_3D_Algo --- idl/SMESH_BasicHypothesis.idl | 68 +++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/idl/SMESH_BasicHypothesis.idl b/idl/SMESH_BasicHypothesis.idl index 230b02dcc..20a50816a 100644 --- a/idl/SMESH_BasicHypothesis.idl +++ b/idl/SMESH_BasicHypothesis.idl @@ -861,6 +861,68 @@ module StdMeshers double GetStretchFactor(); }; + /*! + * interface of "Body fitting Parameters" hypothesis. + * This hypothesis specifies + * - Definition of the Cartesian grid + * - Size threshold + */ + interface StdMeshers_CartesianParameters3D : SMESH::SMESH_Hypothesis + { + /*! + * Set size threshold. A polyhedral cell got by cutting an initial + * hexahedron by geometry boundary is considered small and is removed if + * it's size is \athreshold times less than the size of the initial hexahedron. + * threshold must be > 1.0 + */ + void SetSizeThreshold(in double threshold) raises (SALOME::SALOME_Exception); + double GetSizeThreshold(); + + /*! + * \brief Return true if the grid is defined by spacing functions and + * not by node coordinates in given direction (X==0,...) + */ + boolean IsGridBySpacing(in short axis); + + /*! + * Set coordinates of nodes along an axis (counterd from zero) + */ + void SetGrid(in SMESH::double_array coords, + in short axis) raises (SALOME::SALOME_Exception); + SMESH::double_array GetGrid(in short axis) raises (SALOME::SALOME_Exception); + + /*! + * \brief Set grid spacing along an axis + * \param spaceFunctions - functions defining spacing values at given point on axis + * \param internalPoints - points dividing a grid into parts along an axis + * \param axis - index of an axis counterd from zero, i.e. 0==X, 1==Y, 2==Z + * + * Parameter t of spaceFunction f(t) is a position [0,1] withing bounding box of + * the shape to mesh or withing an interval defined by internal points + */ + void SetGridSpacing(in SMESH::string_array spaceFunctions, + in SMESH::double_array internalPoints, + in short axis) raises (SALOME::SALOME_Exception); + + void GetGridSpacing(out SMESH::string_array spaceFunctions, + out SMESH::double_array internalPoints, + in short axis) raises (SALOME::SALOME_Exception); + + /*! + * \brief Computes node coordinates by spacing functions + * \param x0 - lower coordinate + * \param x1 - upper coordinate + * \param spaceFuns - space functions + * \param points - internal points + * \param coords - the computed coordinates + */ + SMESH::double_array ComputeCoordinates(in double x0, + in double x1, + in SMESH::string_array spaceFuns, + in SMESH::double_array points, + in string axisName ) raises (SALOME::SALOME_Exception); + }; + /*! * StdMeshers_SegmentAroundVertex_0D: interface of "SegmentAroundVertex" algorithm */ @@ -980,6 +1042,12 @@ module StdMeshers interface StdMeshers_Import_1D : SMESH::SMESH_1D_Algo { }; + /*! + * StdMeshers_Cartesian_3D: interface of "Body fitting" algorithm + */ + interface StdMeshers_Cartesian_3D : SMESH::SMESH_3D_Algo + { + }; };