X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMDS%2FSMDS_UnstructuredGrid.hxx;h=4cd1dae371aefb52bae9e7af4b2397d098548efd;hb=20c126bc220757c06b5576f71ed6f34ae85e3e40;hp=8f670af14ee0f5fa60ce0749487b695e1c429263;hpb=fcae5eda64fe8a9a60b290c7ccd0039fb7c44abe;p=modules%2Fsmesh.git diff --git a/src/SMDS/SMDS_UnstructuredGrid.hxx b/src/SMDS/SMDS_UnstructuredGrid.hxx index 8f670af14..4cd1dae37 100644 --- a/src/SMDS/SMDS_UnstructuredGrid.hxx +++ b/src/SMDS/SMDS_UnstructuredGrid.hxx @@ -1,13 +1,31 @@ -/* - * File: SMDS_UnstructuredGrid.hxx - * Author: prascle - * - * Created on September 16, 2009, 10:28 PM - */ +// Copyright (C) 2010-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// +// 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. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +// File: SMDS_UnstructuredGrid.hxx +// Author: prascle +// Created: September 16, 2009, 10:28 PM #ifndef _SMDS_UNSTRUCTUREDGRID_HXX #define _SMDS_UNSTRUCTUREDGRID_HXX +#include "SMESH_SMDS.hxx" + #include #include #include "chrono.hxx" @@ -18,7 +36,7 @@ //#define VTK_HAVE_POLYHEDRON //#ifdef VTK_HAVE_POLYHEDRON - #define VTK_MAXTYPE VTK_POLYHEDRON +#define VTK_MAXTYPE VTK_POLYHEDRON //#else // #define VTK_MAXTYPE VTK_QUADRATIC_PYRAMID //#endif @@ -30,49 +48,51 @@ class SMDS_Downward; class SMDS_Mesh; +class SMDS_MeshCell; +class SMDS_MeshVolume; -class SMDS_CellLinks: public vtkCellLinks +class SMDS_EXPORT SMDS_CellLinks: public vtkCellLinks { public: - vtkCellLinks::Link* ResizeL(vtkIdType sz); - vtkIdType GetLinksSize(); + void ResizeForPoint(vtkIdType vtkID); static SMDS_CellLinks* New(); protected: SMDS_CellLinks(); ~SMDS_CellLinks(); }; -class SMDS_UnstructuredGrid: public vtkUnstructuredGrid +class SMDS_EXPORT SMDS_UnstructuredGrid: public vtkUnstructuredGrid { public: void setSMDS_mesh(SMDS_Mesh *mesh); - void compactGrid(std::vector& idNodesOldToNew, int newNodeSize, std::vector& idCellsOldToNew, - int newCellSize); - + void compactGrid(std::vector& idNodesOldToNew, + int newNodeSize, + std::vector& idCellsOldToNew, + int newCellSize); virtual unsigned long GetMTime(); virtual void Update(); virtual void UpdateInformation(); virtual vtkPoints *GetPoints(); -//#ifdef VTK_HAVE_POLYHEDRON + //#ifdef VTK_HAVE_POLYHEDRON int InsertNextLinkedCell(int type, int npts, vtkIdType *pts); -//#endif + //#endif int CellIdToDownId(int vtkCellId); void setCellIdToDownId(int vtkCellId, int downId); + void CleanDownwardConnectivity(); void BuildDownwardConnectivity(bool withEdges); - int GetNeighbors(int* neighborsVtkIds, int* downIds, unsigned char* downTypes, int vtkId); + int GetNeighbors(int* neighborsVtkIds, int* downIds, unsigned char* downTypes, int vtkId, bool getSkin=false); int GetParentVolumes(int* volVtkIds, int vtkId); + int GetParentVolumes(int* volVtkIds, int downId, unsigned char downType); void GetNodeIds(std::set& nodeSet, int downId, unsigned char downType); void ModifyCellNodes(int vtkVolId, std::map localClonedNodeIds); - int getOrderedNodesOfFace(int vtkVolId, std::vector& orderedNodes); + int getOrderedNodesOfFace(int vtkVolId, int& dim, std::vector& orderedNodes); void BuildLinks(); - bool extrudeVolumeFromFace(int vtkVolId, - int domain1, - int domain2, - std::set& originalNodes, - std::map >& nodeDomains, - std::map >& nodeQuadDomains); + SMDS_MeshCell* extrudeVolumeFromFace(int vtkVolId, int domain1, int domain2, + std::set& originalNodes, + std::map >& nodeDomains, + std::map >& nodeQuadDomains); vtkCellLinks* GetLinks() { return Links; @@ -81,8 +101,13 @@ public: { return _downArray[vtkType]; } + void AllocateDiameters( vtkIdType maxVtkID ); + void SetBallDiameter( vtkIdType vtkID, double diameter ); + double GetBallDiameter( vtkIdType vtkID ) const; + static SMDS_UnstructuredGrid* New(); SMDS_Mesh *_mesh; + protected: SMDS_UnstructuredGrid(); ~SMDS_UnstructuredGrid();