1 // SALOME VTKViewer : build VTK viewer into Salome desktop
3 // Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
29 #ifndef VISU_Convertor_impl_HeaderFile
30 #define VISU_Convertor_impl_HeaderFile
32 #include <vtkSmartPointer.h>
34 #include <boost/tuple/tuple.hpp>
38 class vtkUnstructuredGrid;
39 class VTKViewer_AppendFilter;
40 class VISU_MergeFilter;
42 #include "VISU_Convertor.hxx"
43 #include "MED_SliceArray.hxx"
45 #ifndef VISU_ENABLE_QUADRATIC
46 #define VISU_ENABLE_QUADRATIC
47 #define VISU_USE_VTK_QUADRATIC
52 //! Defines VISU enumeration of geometrical types
53 enum EGeometry {ePOINT1=1, eSEG2=102, eSEG3=103, eTRIA3=203,
54 eQUAD4=204, eTRIA6=206,eQUAD8=208, eTETRA4=304,
55 ePYRA5=305, ePENTA6=306, eHEXA8=308, eTETRA10=310,
56 ePYRA13=313, ePENTA15=315, eHEXA20=320,
57 ePOLYGONE=400, ePOLYEDRE=500, eNONE=-1};
59 //! Get number of nodes for defined geometrical type
61 VISUGeom2NbNodes(EGeometry theGeom);
63 //! Maps VISU geometrical type to VTK one
65 VISUGeom2VTK(EGeometry theGeom);
67 //---------------------------------------------------------------
71 typedef vtkUnstructuredGrid TDataSet;
73 typedef vtkSmartPointer<TDataSet> TVTKSource;
74 typedef vtkSmartPointer<vtkPoints> TVTKPoints;
75 typedef vtkSmartPointer<VISU_MergeFilter> TVTKMergeFilter;
77 typedef vtkSmartPointer<VTKViewer_AppendFilter> TVTKAppendFilter;
79 typedef vtkFloatingPointType TCoord;
81 //---------------------------------------------------------------
82 //! Define an utility base class which is repsonsible for preventing repetion
83 struct TIsVTKDone: virtual TBaseStructure
86 bool myIsDone; //!< Say, is the corresponding MED entity already loaded into intermediate data structure
87 bool myIsVTKDone; //!< Say, is the corresponding intermediate data structure already mapped into VTK representation
91 //---------------------------------------------------------------
92 //! Define an utility base class which allow to keep calculated number of cells and their size
93 struct TSizeCounter: virtual TIsVTKDone
96 vtkIdType myNbCells; //!< Number of cells contained into corresponding sublclass
97 vtkIdType myCellsSize; //!< Size of cells contained into corresponding sublclass
101 //---------------------------------------------------------------
102 //! Define a container for VTK representation
103 class TSource: public virtual TSizeCounter
106 mutable TVTKSource mySource;
110 //! This method allow to create corresponding VTK data set by demand (not at once)
114 //! Reimplement the TIDMapper::GetVTKOutput
121 //---------------------------------------------------------------
122 //! Define a container for VTK representation
124 This container allow to combine other VTK representation into single one.
126 class TAppendFilter: public virtual TIsVTKDone,
127 public virtual TIDMapper
130 mutable TVTKAppendFilter myFilter;
134 //! This method allow to create corresponding VTK filter by demand (not at once)
135 const TVTKAppendFilter&
138 //! Reimplement the TIDMapper::GetVTKOutput
145 //---------------------------------------------------------------
146 //! Define a container for VTK representation
148 This container allow to assign data to mesh and represent them into single VTK representation
150 class TMergeFilter: public virtual TIsVTKDone,
151 public virtual TIDMapper
154 mutable TVTKMergeFilter myFilter;
158 //! This method allow to create corresponding VTK filter by demand (not at once)
159 const TVTKMergeFilter&
162 //! Reimplement the TIDMapper::GetVTKOutput
169 //---------------------------------------------------------------
170 typedef TVector<TCoord> TCoordArray;
171 typedef TSlice<TCoordArray> TCoordSlice;
172 typedef TCSlice<TCoordArray> TCCoordSlice;
174 //! This class is responsible for representation of mesh nodes
175 class TPointCoords: public virtual TBaseStructure
178 vtkIdType myDim; //!< Dimension of the nodal coordinates
179 vtkIdType myNbPoints; //!< Number of nodes in corresponding mesh
181 //! An container for coordinates of the nodes
183 Usage of slices allow to minimize amount of memory to store the nodal coordinates and
184 provide unifirm way of conversation with this coordinates (independant from mesh dimension)
187 TVTKPoints myPoints; //!< VTK representation for the mesh nodes
192 //! To initilize the class
194 Init(vtkIdType theNbPoints,
197 //! Get slice of coordinates for defined node (const version)
199 GetCoordSlice(vtkIdType theNodeId) const;
201 //! Get slice of coordinates for defined node
203 GetCoordSlice(vtkIdType theNodeId);
206 GetNbPoints() const { return myNbPoints; }
209 GetDim() const { return myDim; }
212 size() const { return GetNbPoints(); }
215 GetPoints() const { return myPoints;}
217 typedef SharedPtr<TPointCoords> PPointCoords;
220 //---------------------------------------------------------------
221 typedef TVector<vtkIdType> TVectorID;
222 typedef std::map<vtkIdType,vtkIdType> TObj2VTKID;
224 //! This class is responsible for representation of mesh nodes
226 In additition to its base functionlity it support mapping of VTK to object numeration and
227 keeps names for each of nodes.
229 class TNamedPointCoords: public virtual TPointCoords
232 typedef TVector<std::string> TPointsDim;
233 TPointsDim myPointsDim; //!< Keeps name of each dimension
234 TVectorID myVectorID; //!< Keeps object¶ numeration
235 TObj2VTKID myObj2VTKID; //!< Keeps mapping from object number to VTK one
239 //! To initilize the class (numeration of the nodes can be missed)
241 Init(vtkIdType theNbPoints,
243 const TVectorID& theVectorID = TVectorID());
245 //! Get name for defined dimension
247 GetName(vtkIdType theDim);
249 //! Get name for defined dimension (const version)
251 GetName(vtkIdType theDim) const;
253 //! Get object number for node by its VTK one
256 GetObjID(vtkIdType theID) const;
258 //! Get VTK number for node by its object one
261 GetVTKID(vtkIdType theID) const;
263 //! Get name of node by its object number
266 GetNodeName(vtkIdType theObjID) const;
268 typedef SharedPtr<TNamedPointCoords> PNamedPointCoords;
271 //---------------------------------------------------------------
272 //! Specialize TMesh to provide VTK mapping for nodes
273 struct TMeshImpl: virtual TMesh,
276 PNamedPointCoords myNamedPointCoords; //!< Keeps intermediate representation of the nodes
278 TVTKPoints myPoints; //!< Keeps VTK representation of the nodes
279 vtkIdType myNbPoints; //!< Keeps number of the nodes
283 typedef SharedPtr<TMeshImpl> PMeshImpl;
286 //---------------------------------------------------------------
287 typedef TVector<vtkIdType> TSubMeshID;
288 typedef enum {eRemoveAll, eAddAll, eAddPart, eNone} ESubMeshStatus;
290 //! Specialize TSubProfile to provide VTK mapping
291 struct TSubProfileImpl: virtual TSubProfile,
296 EGeometry myGeom; //!< Defines to what geometrical type the MED PROFILE belong to
297 std::string myName; //!< Keeps its name
299 //! Get object number of mesh cell by its VTK one
302 GetElemObjID(int theVtkI) const;
304 //! Keeps status of the structure
306 In some cases MED file does not use MED PROFILES, but at VISU creates corresponding data strucutre
307 in order to construct mesh for MED TIEMSTAMPS in uniform way.
309 ESubMeshStatus myStatus;
310 TSubMeshID mySubMeshID; //!< Keeps numbers of mesh cell which contain the MED PROFILE
312 typedef SharedPtr<TSubProfileImpl> PSubProfileImpl;
315 //---------------------------------------------------------------
316 struct TMeshOnEntityImpl;
318 typedef std::map<vtkIdType,vtkIdType> TID2ID;
319 typedef TVector<PSubProfileImpl> TSubProfileArr;
320 typedef std::map<EGeometry,PSubProfileImpl> TGeom2SubProfile;
322 //! Specialize TProfile to provide VTK mapping for MED TIMESTAMP mesh
323 struct TProfileImpl: virtual TProfile,
324 virtual TAppendFilter
327 bool myIsAll; //!< Say, whether the MED TIMESTAMP defined on all MED ENTITY or not
329 //! Reimplement the TIDMapper::GetNodeObjID
332 GetNodeObjID(vtkIdType theID) const;
334 //! Reimplement the TIDMapper::GetNodeVTKID
337 GetNodeVTKID(vtkIdType theID) const;
339 //! Reimplement the TIDMapper::GetNodeCoord
341 vtkFloatingPointType*
342 GetNodeCoord(vtkIdType theObjID);
344 //! Reimplement the TIDMapper::GetElemObjID
347 GetElemObjID(vtkIdType theID) const;
349 //! Reimplement the TIDMapper::GetElemVTKID
352 GetElemVTKID(vtkIdType theID) const;
354 //! Reimplement the TIDMapper::GetElemCell
357 GetElemCell(vtkIdType theObjID);
359 //! Reimplement the TIDMapper::GetVTKOutput
364 //! Reimplement the TNamedIDMapper::GetNodeName
367 GetNodeName(vtkIdType theObjID) const;
369 //! Reimplement the TNamedIDMapper::GetElemName
372 GetElemName(vtkIdType theObjID) const;
374 TID2ID myElemObj2VTKID; //!< Keeps object to VTK numeration mapping
375 TSubProfileArr mySubProfileArr; //!< Keeps sequence of TSubProfiles as they were added into TAppendFilter
376 PNamedPointCoords myNamedPointCoords; //!< Keeps reference on the same TNamedPointCoords as TMesh
377 TMeshOnEntityImpl* myMeshOnEntity; //<! Keeps backward reference to corresponding MED ENTITY mesh
379 TSource mySource; //!< Keeps VTK representation of the MED TIMESTAMP mesh
380 TGeom2SubProfile myGeom2SubProfile; //!< Keeps TSubProfiles according to their geometrical type
382 typedef SharedPtr<TProfileImpl> PProfileImpl;
385 //---------------------------------------------------------------
386 //! Specialize TIDMapper to provide VTK mapping for MED TIMESTAMP mesh
387 struct TIDMapperFilter: virtual TMergeFilter
389 TAppendFilter myIDMapper; //!< Responsible for numbering
390 TSource mySource; //!< Keeps assigned data
392 //! Reimplement the TIDMapper::GetNodeObjID
395 GetNodeObjID(vtkIdType theID) const;
397 //! Reimplement the TIDMapper::GetNodeVTKID
400 GetNodeVTKID(vtkIdType theID) const;
402 //! Reimplement the TIDMapper::GetNodeCoord
404 vtkFloatingPointType*
405 GetNodeCoord(vtkIdType theObjID);
407 //! Reimplement the TIDMapper::GetElemObjID
410 GetElemObjID(vtkIdType theID) const;
412 //! Reimplement the TIDMapper::GetElemVTKID
415 GetElemVTKID(vtkIdType theID) const;
417 //! Reimplement the TIDMapper::GetElemCell
420 GetElemCell(vtkIdType theObjID);
422 //! Reimplement the TIDMapper::GetVTKOutput
427 typedef SharedPtr<TIDMapperFilter> PIDMapperFilter;
430 //---------------------------------------------------------------
432 typedef SharedPtr<TGaussImpl> PGaussImpl;
434 //! Specialize TGauss to provide more detail information of the MED GAUSS entity for VTK mapping
435 struct TGaussImpl: virtual TGauss
437 EGeometry myGeom; //!< Define, to which geometrical type the MED GAUSS entity belongs
438 std::string myName; //!< Keeps name of the MED GAUSS entity
439 vtkIdType myNbPoints; //<! Keeps number of points for the MED GAUSS entity
441 //! To define a way to implement more detail comparision of the TGaussSubMesh instances
444 LessThan(const PGaussImpl& theGauss,
445 bool& theResult) const;
449 //---------------------------------------------------------------
450 //! Specialize TGaussSubMesh to provide VTK mapping for the entity
451 struct TGaussSubMeshImpl: virtual TGaussSubMesh,
456 //! To implement the TGaussPtsIDMapper::GetObjID
459 GetObjID(vtkIdType theID,
460 vtkIdType theStartID) const;
462 PGaussImpl myGauss; //<! Keep reference to corresponding TGauss structure
464 //! Keeps status of the structure
466 In some cases MED file does not use MED GAUSS, but at VISU creates corresponding data strucutre
467 in order to construct mesh for MED TIEMSTAMPS in uniform way.
469 ESubMeshStatus myStatus;
471 TPointCoords myPointCoords; //!< Keeps coordinates of Gauss Points
473 typedef SharedPtr<TGaussSubMeshImpl> PGaussSubMeshImpl;
476 //---------------------------------------------------------------
477 typedef TVector<PGaussSubMeshImpl> TGaussSubMeshArr;
478 typedef std::map<EGeometry,PGaussSubMeshImpl> TGeom2GaussSubMesh;
480 //! Specialize TGaussMesh to provide VTK mapping for the entity
481 struct TGaussMeshImpl: virtual TGaussMesh,
482 virtual TAppendFilter
486 //! Reimplement the TGaussPtsIDMapper::GetObjID
489 GetObjID(vtkIdType theID) const;
491 //! Reimplement the TIDMapper::GetVTKOutput
496 //! Reimplement the TGaussPtsIDMapper::GetParent
501 TSource mySource; //!< Keeps VTK representation of the Gauss Points
502 TNamedIDMapper* myParent; //!< Refer to parent mesh
503 TGaussSubMeshArr myGaussSubMeshArr; //!< Keeps sequence of TGaussSubMesh as they were added into TAppendFilter
504 TGeom2GaussSubMesh myGeom2GaussSubMesh; //!< Keeps TGaussSubMesh according to their geometrical type
506 typedef SharedPtr<TGaussMeshImpl> PGaussMeshImpl;
509 //---------------------------------------------------------------
510 //! Specialize TGaussPtsIDMapper to provide VTK mapping for MED TIMESTAMP mesh
511 struct TGaussPtsIDFilter: virtual TIDMapperFilter,
512 virtual TGaussPtsIDMapper
514 PGaussPtsIDMapper myGaussPtsIDMapper;
516 //! Reimplement the TGaussPtsIDMapper::GetObjID
519 GetObjID(vtkIdType theID) const;
521 //! Reimplement the TGaussPtsIDMapper::GetParent
526 typedef SharedPtr<TGaussPtsIDFilter> PGaussPtsIDFilter;
529 //---------------------------------------------------------------
530 typedef TVector<vtkIdType> TConnect;
531 typedef TVector<TConnect> TCell2Connect;
533 //! The class is responsible for mapping of cells of defined geometrical type
534 struct TSubMeshImpl: virtual TSource
537 //! To implement the TIDMapper::GetElemObjID
540 GetElemObjID(vtkIdType theID) const;
542 //! To implement the TNamedIDMapper::GetElemName
545 GetElemName(vtkIdType theObjID) const;
548 TCell2Connect myCell2Connect; //!< Contains connectivity for the cells
550 typedef SharedPtr<TSubMeshImpl> PSubMeshImpl;
553 //---------------------------------------------------------------
554 typedef std::map<EGeometry,PSubMeshImpl> TGeom2SubMesh;
555 typedef TVector<PSubMeshImpl> TSubMeshArr;
557 //! Specialize TMeshOnEntity to provide VTK mapping for the entity
558 struct TMeshOnEntityImpl: virtual TMeshOnEntity,
559 virtual TAppendFilter,
562 //! Reimplement the TIDMapper::GetNodeVTKID
565 GetNodeVTKID(vtkIdType theID) const;
567 //! Reimplement the TIDMapper::GetNodeObjID
570 GetNodeObjID(vtkIdType theID) const;
572 //! Reimplement the TIDMapper::GetElemVTKID
575 GetElemVTKID(vtkIdType theID) const;
577 //! Reimplement the TIDMapper::GetElemObjID
580 GetElemObjID(vtkIdType theID) const;
582 //! Reimplement the TNamedIDMapper::GetNodeName
585 GetNodeName(vtkIdType theObjID) const;
587 //! Reimplement the TNamedIDMapper::GetElemName
590 GetElemName(vtkIdType theObjID) const;
592 TID2ID myElemObj2VTKID; //!< To support object to VTK number mapping
593 TSubMeshArr mySubMeshArr; //!< Keeps sequence of TSubMeshImpl as they were added into TAppendFilter
594 PNamedPointCoords myNamedPointCoords; //!< Share the same instance with TMesh to implement nodal mapping
596 TGeom2SubMesh myGeom2SubMesh; //!< Keeps TSubMeshImpl according to their geometrical type
598 typedef SharedPtr<TMeshOnEntityImpl> PMeshOnEntityImpl;
601 //---------------------------------------------------------------
602 typedef std::map<EGeometry,TSubMeshID> TGeom2SubMeshID;
604 //! Specialize TFamily to provide VTK mapping for the entity
605 struct TFamilyImpl: virtual TFamily,
608 //! Reimplement the TIDMapper::GetNodeObjID
610 GetNodeObjID(vtkIdType theID) const ;
612 //! Reimplement the TIDMapper::GetNodeVTKID
615 GetNodeVTKID(vtkIdType theID) const ;
617 //! Reimplement the TIDMapper::GetElemVTKID
620 GetElemVTKID(vtkIdType theID) const;
622 //! Reimplement the TIDMapper::GetElemObjID
625 GetElemObjID(vtkIdType theID) const;
627 //! Reimplement the TIDMapper::GetVTKOutput
632 PNamedPointCoords myNamedPointCoords; //!< Share the same instance with TMesh to implement nodal mapping
633 TID2ID myElemObj2VTKID; //!< To support object to VTK number mapping
634 TSubMeshID myMeshID; //!< Keeps numbers of mesh elements that belongs to the MED FAMILY
636 TGeom2SubMeshID myGeom2SubMeshID; //!< Keeps TSubMeshID according to their geometrical type
638 typedef SharedPtr<TFamilyImpl> PFamilyImpl;
641 //---------------------------------------------------------------
642 typedef std::pair<vtkIdType,vtkIdType> TNbASizeCells;
643 typedef TVector<PFamilyImpl> TFamilyArr;
645 //! Specialize TGroup to provide VTK mapping for the entity
646 struct TGroupImpl: virtual TGroup,
647 virtual TAppendFilter
649 //! Calculate pair of values - number of cells and its size
651 GetNbASizeCells() const;
653 //! Reimplement the TIDMapper::GetElemVTKID
656 GetElemVTKID(vtkIdType theID) const;
658 //! Reimplement the TIDMapper::GetElemObjID
661 GetElemObjID(vtkIdType theID) const;
663 //! Reimplement the TIDMapper::GetNodeObjID
666 GetNodeObjID(vtkIdType theID) const;
668 //! Reimplement the TIDMapper::GetNodeVTKID
671 GetNodeVTKID(vtkIdType theID) const;
673 TID2ID myElemObj2VTKID; //!< To support object to VTK number mapping
674 TFamilyArr myFamilyArr; //!< Keeps sequence of TFamily as they were added into TAppendFilter
675 PNamedPointCoords myNamedPointCoords; //!< Share the same instance with TMesh to implement nodal mapping
677 typedef SharedPtr<TGroupImpl> PGroupImpl;
680 //---------------------------------------------------------------
681 typedef TVector<TMinMax> TMinMaxArr;
683 //! Specialize TField to provide VTK mapping for the entity
684 struct TFieldImpl: virtual TField
686 vtkIdType myDataSize; //!< Keeps size of the assigned data
688 TMinMaxArr myMinMaxArr; //!< Keeps min/max values for each component of the MED FIELD
690 //! Implement the TField::GetMinMax
693 GetMinMax(vtkIdType theCompID);
695 //! To initialize the data structure
697 InitArrays(vtkIdType theNbComp);
701 typedef SharedPtr<TFieldImpl> PFieldImpl;
704 //---------------------------------------------------------------
705 typedef TVector<vtkFloatingPointType> TValue;
706 typedef TSlice<TValue> TValueSlice;
707 typedef TCSlice<TValue> TCValueSlice;
709 typedef TVector<TCValueSlice> TCValueSliceArr;
710 typedef TVector<TValueSlice> TValueSliceArr;
712 //! Define a container to get access to data assigned to mesh
715 TValue myValue; //!< Keeps all values as one dimensional sequence
717 vtkIdType myNbElem; //!< Defines number of mesh elements where the data assigned to
718 vtkIdType myNbComp; //!< Keeps number of components of corresponding MED FIELD
719 vtkIdType myNbGauss; //!< Defines number of Gauss Points
720 vtkIdType myStep; //! Internal variable
722 //! To intitilize the data strucutre
724 Init(vtkIdType theNbElem,
725 vtkIdType theNbGauss,
726 vtkIdType theNbComp);
728 //! To get assigned values first by Gauss Points and then by components (constant version)
730 GetGaussValueSliceArr(vtkIdType theElemId) const;
732 //! To get assigned values first by Gauss Points and then by components
734 GetGaussValueSliceArr(vtkIdType theElemId);
736 //! To get assigned values first by components and then by Gauss Points (constant version)
738 GetCompValueSliceArr(vtkIdType theElemId) const;
740 //! To get assigned values first by components and then by Gauss Points
742 GetCompValueSliceArr(vtkIdType theElemId);
746 //---------------------------------------------------------------
747 typedef std::map<EGeometry,TMeshValue> TGeom2Value;
748 typedef std::map<EGeometry,vtkIdType> TGeom2NbGauss;
750 //! Specialize TValForTime to provide VTK mapping for the entity
751 struct TValForTimeImpl: virtual TValForTime
753 PGaussPtsIDFilter myGaussPtsIDFilter; //!< Keep VTK representation for mesh and data on Gauss Points
754 PIDMapperFilter myIDMapperFilter; //!< Keep VTK representation for ordinary mesh and data
755 TGeom2Value myGeom2Value; //!< Keep value that is assigned to the mesh
756 TGeom2NbGauss myGeom2NbGauss; //!< Keep number of Gauss Points
760 //! Get mesh data for defined geometrical type (constant version)
762 GetMeshValue(EGeometry theGeom) const;
764 //! Get mesh data for defined geometrical type
766 GetMeshValue(EGeometry theGeom);
768 //! Get number of Gauss Points for defined geometrical type
771 GetNbGauss(EGeometry theGeom) const;
773 typedef SharedPtr<TValForTimeImpl> PValForTimeImpl;
777 //! This class perfroms mapping of intermediate data strucutres into corresponding VTK representation
779 It implements VISU_Convertor public interface and declare new pure virtual functions
780 to fill its intermediate data structure from a MED source
782 class VISU_Convertor_impl: public VISU_Convertor
785 VISU_Convertor_impl();
788 ~VISU_Convertor_impl();
790 //! Just to define default behaviour
795 //! Just to define default behaviour
800 //! Just to define default behaviour
805 //! Just to define default behaviour
810 //! Just to define default behaviour
815 //! Implemention of the VISU_Convertor::GetSize
820 //! Implemention of the VISU_Convertor::GetMeshOnEntity
823 GetMeshOnEntity(const std::string& theMeshName,
824 const VISU::TEntity& theEntity);
826 //! Implemention of the VISU_Convertor::GetMeshOnEntitySize
829 GetMeshOnEntitySize(const std::string& theMeshName,
830 const VISU::TEntity& theEntity);
832 //! Implemention of the VISU_Convertor::GetFamilyOnEntity
835 GetFamilyOnEntity(const std::string& theMeshName,
836 const VISU::TEntity& theEntity,
837 const std::string& theFamilyName);
839 //! Implemention of the VISU_Convertor::GetFamilyOnEntitySize
842 GetFamilyOnEntitySize(const std::string& theMeshName,
843 const VISU::TEntity& theEntity,
844 const std::string& theFamilyName);
846 //! Implemention of the VISU_Convertor::GetMeshOnGroup
849 GetMeshOnGroup(const std::string& theMeshName,
850 const std::string& theGroupName);
852 //! Implemention of the VISU_Convertor::GetMeshOnGroupSize
855 GetMeshOnGroupSize(const std::string& theMeshName,
856 const std::string& theGroupName);
858 //! Implemention of the VISU_Convertor::GetTimeStampOnMesh
861 GetTimeStampOnMesh(const std::string& theMeshName,
862 const VISU::TEntity& theEntity,
863 const std::string& theFieldName,
866 //! Implemention of the VISU_Convertor::GetTimeStampSize
869 GetTimeStampSize(const std::string& theMeshName,
870 const VISU::TEntity& theEntity,
871 const std::string& theFieldName,
874 //! Implemention of the VISU_Convertor::GetTimeStampOnGaussPts
876 VISU::PGaussPtsIDMapper
877 GetTimeStampOnGaussPts(const std::string& theMeshName,
878 const VISU::TEntity& theEntity,
879 const std::string& theFieldName,
882 //! Implemention of the VISU_Convertor::GetFieldOnMeshSize
885 GetFieldOnMeshSize(const std::string& theMeshName,
886 const VISU::TEntity& theEntity,
887 const std::string& theFieldName);
889 //! Implemention of the VISU_Convertor::GetField
892 GetField(const std::string& theMeshName,
893 VISU::TEntity theEntity,
894 const std::string& theFieldName);
896 //! Implemention of the VISU_Convertor::GetTimeStamp
898 const VISU::PValForTime
899 GetTimeStamp(const std::string& theMeshName,
900 const VISU::TEntity& theEntity,
901 const std::string& theFieldName,
905 //! An utility method to find TMesh by its name
907 FindMesh(const std::string& theMeshName);
909 //! An utility method to find TMeshOnEntity by name of its parent mesh and entity
910 typedef boost::tuple<VISU::PMeshImpl,VISU::PMeshOnEntityImpl> TFindMeshOnEntity;
912 FindMeshOnEntity(const std::string& theMeshName,
913 const VISU::TEntity& theEntity);
915 //! An utility method to find TFamily by name of its parent mesh, corresponding entity and its name
916 typedef boost::tuple<VISU::PMeshImpl,VISU::PMeshOnEntityImpl,VISU::PFamilyImpl> TFindFamilyOnEntity;
918 FindFamilyOnEntity(const std::string& theMeshName,
919 const VISU::TEntity& theEntity,
920 const std::string& theFamilyName);
922 //! An utility method to find Group by name of its parent mesh and its name
923 typedef boost::tuple<VISU::PMeshImpl,VISU::PGroupImpl> TFindMeshOnGroup;
925 FindMeshOnGroup(const std::string& theMeshName,
926 const std::string& theGroupName);
928 //! An utility method to find TField by name of its parent mesh, corresponding entity and its name
929 typedef boost::tuple<VISU::PMeshImpl,
930 VISU::PMeshOnEntityImpl,
931 VISU::PMeshOnEntityImpl,
932 VISU::PFieldImpl> TFindField;
934 FindField(const std::string& theMeshName,
935 const VISU::TEntity& theEntity,
936 const std::string& theFieldName);
938 //! An utility method to find TTimeStamp by name of its parent mesh, corresponding entity, field name and its number
939 typedef boost::tuple<VISU::PMeshImpl,
940 VISU::PMeshOnEntityImpl,
941 VISU::PMeshOnEntityImpl,
943 VISU::PValForTimeImpl> TFindTimeStamp;
945 FindTimeStamp(const std::string& theMeshName,
946 const VISU::TEntity& theEntity,
947 const std::string& theFieldName,
951 GetTimeStampOnProfile(const VISU::PMeshImpl& theMesh,
952 const VISU::PMeshOnEntityImpl& theMeshOnEntity,
953 const VISU::PFieldImpl& theField,
954 const VISU::PValForTimeImpl& theValForTime,
955 const VISU::PIDMapperFilter& theIDMapperFilter,
956 const VISU::PProfileImpl& theProfile,
957 const VISU::TEntity& theEntity);
960 //! To fill intermeiate representation of TMeshOnEntity from a MED source
963 LoadMeshOnEntity(VISU::PMeshImpl theMesh,
964 VISU::PMeshOnEntityImpl theMeshOnEntity) = 0;
966 //! To fill intermeiate representation of TFamily from a MED source
969 LoadFamilyOnEntity(VISU::PMeshImpl theMesh,
970 VISU::PMeshOnEntityImpl theMeshOnEntity,
971 VISU::PFamilyImpl theFamily) = 0;
973 //! To fill intermeiate representation of TGroup from a MED source
976 LoadMeshOnGroup(VISU::PMeshImpl theMesh,
977 const VISU::TFamilySet& theFamilySet) = 0;
979 //! To fill intermeiate representation of TValForTime for ordinary mesh from a MED source
982 LoadValForTimeOnMesh(VISU::PMeshImpl theMesh,
983 VISU::PMeshOnEntityImpl theMeshOnEntity,
984 VISU::PFieldImpl theField,
985 VISU::PValForTimeImpl theValForTime) = 0;
987 //! To fill intermeiate representation of TValForTime for mesh on Gauss Points from a MED source
990 LoadValForTimeOnGaussPts(VISU::PMeshImpl theMesh,
991 VISU::PMeshOnEntityImpl theMeshOnEntity,
992 VISU::PFieldImpl theField,
993 VISU::PValForTimeImpl theValForTime) = 0;