X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FStdMeshers%2FStdMeshers_CartesianParameters3D.hxx;h=e5ef065ccd75b3942a6701bbc032e1fb95c21621;hp=98970956bc8dcc2a62f80a9d2b789fbe5a8b73e5;hb=e15a3a87cc738a5e3da00b3e09e7c8e17d733dc7;hpb=f7aba4830d53719b963fdb7fccc98b760fdef2d1 diff --git a/src/StdMeshers/StdMeshers_CartesianParameters3D.hxx b/src/StdMeshers/StdMeshers_CartesianParameters3D.hxx index 98970956b..e5ef065cc 100644 --- a/src/StdMeshers/StdMeshers_CartesianParameters3D.hxx +++ b/src/StdMeshers/StdMeshers_CartesianParameters3D.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -6,7 +6,7 @@ // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -49,7 +49,7 @@ class STDMESHERS_EXPORT StdMeshers_CartesianParameters3D: public SMESH_Hypothes { public: // Constructor - StdMeshers_CartesianParameters3D( int hypId, int studyId, SMESH_Gen * gen ); + StdMeshers_CartesianParameters3D( int hypId, SMESH_Gen * gen ); /*! * Sets coordinates of node positions along an axis (countered from 0) @@ -65,7 +65,7 @@ public: * \param spaceFunctions - functions defining spacing values at given point on axis * \param internalPoints - points dividing a grid into parts along each direction * - * Parameter t of spaceFunction f(t) is a position [0,1] withing bounding box of + * Parameter t of spaceFunction f(t) is a position [0,1] within bounding box of * the shape to mesh */ void SetGridSpacing(std::vector& spaceFunctions, @@ -78,6 +78,13 @@ public: bool IsGridBySpacing(const int axis) const throw ( SALOME_Exception ); + /*! + * Set/unset a fixed point, at which a node will be created provided that grid + * is defined by spacing in all directions + */ + void SetFixedPoint(const double p[3], bool toUnset); + bool GetFixedPoint(double p[3]) const; + /*! * \brief Computes node coordinates by spacing functions * \param x0 - lower coordinate @@ -91,7 +98,8 @@ public: std::vector& spaceFuns, std::vector& points, std::vector& coords, - const std::string& axis ) throw (SALOME_Exception); + const std::string& axis, + const double* xForced=0) throw (SALOME_Exception); /*! * Return coordinates of node positions along the three axes. * If the grid is defined by spacing functions, the coordinates are computed @@ -101,13 +109,21 @@ public: std::vector& zNodes, const Bnd_Box& bndBox) const throw ( SALOME_Exception ); + /*! + * \brief Set custom direction of axes + */ void SetAxisDirs(const double* the9DirComps) throw ( SALOME_Exception ); const double* GetAxisDirs() const { return _axisDirs; } - + /*! + * \brief Returns axes at which number of hexahedra is maximal + */ + static void ComputeOptimalAxesDirs(const TopoDS_Shape& shape, + const bool isOrthogonal, + double dirCoords[9]); /*! * 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. + * it's size is \athreshold times less than the size of the initial hexahedron. */ void SetSizeThreshold(const double threshold) throw ( SALOME_Exception ); /*! @@ -150,7 +166,8 @@ public: std::vector _spaceFunctions[3]; std::vector _internalPoints[3]; - double _axisDirs[9]; + double _axisDirs [9]; + double _fixedPoint[3]; double _sizeThreshold; bool _toAddEdges;