X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDLoader%2FMEDFileFieldOverView.hxx;h=bcce70af29d4ea4d415db8984bc33c38eac44de7;hb=662a2a2393a25baef77e42f74204b11b70a9646c;hp=ef2fc77588fd212b9ddae4c6db20587b48ef98a1;hpb=3c911ce36f5caa779ea60042e738fa57671a44b1;p=tools%2Fmedcoupling.git diff --git a/src/MEDLoader/MEDFileFieldOverView.hxx b/src/MEDLoader/MEDFileFieldOverView.hxx index ef2fc7758..bcce70af2 100644 --- a/src/MEDLoader/MEDFileFieldOverView.hxx +++ b/src/MEDLoader/MEDFileFieldOverView.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D +// Copyright (C) 2007-2023 CEA, EDF // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -23,7 +23,7 @@ #include "MEDLoaderDefines.hxx" -#include "MEDCouplingAutoRefCountObjectPtr.hxx" +#include "MCAuto.hxx" #include "MEDCouplingRefCountObject.hxx" #include "MEDCoupling1GTUMesh.hxx" @@ -32,7 +32,7 @@ #include -namespace ParaMEDMEM +namespace MEDCoupling { class DataArrayInt; class MEDCouplingMesh; @@ -50,12 +50,13 @@ namespace ParaMEDMEM { public: MEDLOADER_EXPORT static MEDFileMeshStruct *New(const MEDFileMesh *mesh); + std::string getClassName() const override { return std::string("MEDFileMeshStruct"); } std::size_t getHeapMemorySizeWithoutChildren() const; std::vector getDirectChildrenWithNull() const; const MEDFileMesh *getTheMesh() const { return _mesh; } - int getNumberOfNodes() const { return _nb_nodes; } + mcIdType getNumberOfNodes() const { return _nb_nodes; } bool doesManageGeoType(INTERP_KERNEL::NormalizedCellType t) const; - int getNumberOfElemsOfGeoType(INTERP_KERNEL::NormalizedCellType t) const; + mcIdType getNumberOfElemsOfGeoType(INTERP_KERNEL::NormalizedCellType t) const; int getLevelOfGeoType(INTERP_KERNEL::NormalizedCellType t) const; int getNumberOfLevs() const; int getNumberOfGeoTypesInLev(int relativeLev) const; @@ -66,8 +67,8 @@ namespace ParaMEDMEM private: const MEDFileMesh *_mesh; std::string _name; - int _nb_nodes; - std::vector< std::vector > _geo_types_distrib; + mcIdType _nb_nodes; + std::vector< std::vector > _geo_types_distrib; }; class MEDFileField1TSStructItem; @@ -77,50 +78,52 @@ namespace ParaMEDMEM public: std::size_t getHeapMemorySizeWithoutChildren() const; std::vector getDirectChildrenWithNull() const; + std::string getClassName() const override { return std::string("MEDMeshMultiLev"); } public: - static MEDMeshMultiLev *New(const MEDFileMesh *m, const std::vector& gts, const std::vector& pfls, const std::vector& nbEntities); + static MEDMeshMultiLev *New(const MEDFileMesh *m, const std::vector& gts, const std::vector& pfls, const std::vector& nbEntities); static MEDMeshMultiLev *New(const MEDFileMesh *m, const std::vector& levs); - static MEDMeshMultiLev *NewOnlyOnNode(const MEDFileMesh *m, const DataArrayInt *pflOnNode); - void setNodeReduction(const DataArrayInt *nr); - void setCellReduction(const DataArrayInt *cr); + static MEDMeshMultiLev *NewOnlyOnNode(const MEDFileMesh *m, const DataArrayIdType *pflOnNode); + void setNodeReduction(const DataArrayIdType *nr); + void setCellReduction(const DataArrayIdType *cr); bool isFastlyTheSameStruct(const MEDFileField1TSStructItem& fst, const MEDFileFieldGlobsReal *globs) const; MEDLOADER_EXPORT DataArray *buildDataArray(const MEDFileField1TSStructItem& fst, const MEDFileFieldGlobsReal *globs, const DataArray *vals) const; - MEDLOADER_EXPORT void retrieveFamilyIdsOnCells(DataArrayInt *& famIds, bool& isWithoutCopy) const; - MEDLOADER_EXPORT void retrieveNumberIdsOnCells(DataArrayInt *& numIds, bool& isWithoutCopy) const; - MEDLOADER_EXPORT void retrieveFamilyIdsOnNodes(DataArrayInt *& famIds, bool& isWithoutCopy) const; - MEDLOADER_EXPORT void retrieveNumberIdsOnNodes(DataArrayInt *& numIds, bool& isWithoutCopy) const; + MEDLOADER_EXPORT void retrieveFamilyIdsOnCells(DataArrayIdType *& famIds, bool& isWithoutCopy) const; + MEDLOADER_EXPORT void retrieveNumberIdsOnCells(DataArrayIdType *& numIds, bool& isWithoutCopy) const; + MEDLOADER_EXPORT void retrieveFamilyIdsOnNodes(DataArrayIdType *& famIds, bool& isWithoutCopy) const; + MEDLOADER_EXPORT void retrieveNumberIdsOnNodes(DataArrayIdType *& numIds, bool& isWithoutCopy) const; + MEDLOADER_EXPORT DataArrayIdType *retrieveGlobalNodeIdsIfAny() const; MEDLOADER_EXPORT std::vector< INTERP_KERNEL::NormalizedCellType > getGeoTypes() const; - void setFamilyIdsOnCells(DataArrayInt *famIds); - void setNumberIdsOnCells(DataArrayInt *numIds); - void setFamilyIdsOnNodes(DataArrayInt *famIds); - void setNumberIdsOnNodes(DataArrayInt *numIds); - virtual void selectPartOfNodes(const DataArrayInt *pflNodes) = 0; + void setFamilyIdsOnCells(DataArrayIdType *famIds); + void setNumberIdsOnCells(DataArrayIdType *numIds); + void setFamilyIdsOnNodes(DataArrayIdType *famIds); + void setNumberIdsOnNodes(DataArrayIdType *numIds); + virtual void selectPartOfNodes(const DataArrayIdType *pflNodes) = 0; virtual MEDMeshMultiLev *prepare() const = 0; - int getNumberOfCells(INTERP_KERNEL::NormalizedCellType t) const; - int getNumberOfNodes() const; + mcIdType getNumberOfCells(INTERP_KERNEL::NormalizedCellType t) const; + mcIdType getNumberOfNodes() const; protected: std::string getPflNameOfId(int id) const; DataArray *constructDataArray(const MEDFileField1TSStructItem& fst, const MEDFileFieldGlobsReal *globs, const DataArray *vals) const; - virtual void appendVertices(const DataArrayInt *verticesToAdd, DataArrayInt *nr); + virtual void appendVertices(const DataArrayIdType *verticesToAdd, DataArrayIdType *nr); protected: MEDMeshMultiLev(const MEDFileMesh *mesh); MEDMeshMultiLev(const MEDMeshMultiLev& other); - MEDMeshMultiLev(const MEDFileMesh *mesh, int nbNodes, const std::vector& gts, const std::vector& pfls, const std::vector& nbEntities); + MEDMeshMultiLev(const MEDFileMesh *mesh, mcIdType nbNodes, const std::vector& gts, const std::vector& pfls, const std::vector& nbEntities); protected: const MEDFileMesh *_mesh; - std::vector< MEDCouplingAutoRefCountObjectPtr > _pfls; + std::vector< MCAuto > _pfls; std::vector< INTERP_KERNEL::NormalizedCellType > _geo_types; - std::vector _nb_entities; - MEDCouplingAutoRefCountObjectPtr _node_reduction; - int _nb_nodes; + std::vector _nb_entities; + MCAuto _node_reduction; + mcIdType _nb_nodes; // - MEDCouplingAutoRefCountObjectPtr _cell_fam_ids; - MEDCouplingAutoRefCountObjectPtr _cell_num_ids; - MEDCouplingAutoRefCountObjectPtr _node_fam_ids; - MEDCouplingAutoRefCountObjectPtr _node_num_ids; + MCAuto _cell_fam_ids; + MCAuto _cell_num_ids; + MCAuto _node_fam_ids; + MCAuto _node_num_ids; public: - MEDLOADER_EXPORT static const int PARAMEDMEM_2_VTKTYPE_LGTH=34; - MEDLOADER_EXPORT static const unsigned char PARAMEDMEM_2_VTKTYPE[PARAMEDMEM_2_VTKTYPE_LGTH]; + MEDLOADER_EXPORT static const int PARAMEDMEM_2_VTKTYPE_LGTH=MEDCOUPLING2VTKTYPETRADUCER_LGTH; + MEDLOADER_EXPORT static const unsigned char *PARAMEDMEM_2_VTKTYPE; MEDLOADER_EXPORT static const unsigned char HEXA27_PERM_ARRAY[27]; }; @@ -130,34 +133,36 @@ namespace ParaMEDMEM { public: static MEDUMeshMultiLev *New(const MEDFileUMesh *m, const std::vector& levs); - static MEDUMeshMultiLev *New(const MEDFileUMesh *m, const std::vector& gts, const std::vector& pfls, const std::vector& nbEntities); - void selectPartOfNodes(const DataArrayInt *pflNodes); + static MEDUMeshMultiLev *New(const MEDFileUMesh *m, const std::vector& gts, const std::vector& pfls, const std::vector& nbEntities); + void selectPartOfNodes(const DataArrayIdType *pflNodes); + std::string getClassName() const override { return std::string("MEDUMeshMultiLev"); } MEDMeshMultiLev *prepare() const; - MEDUMeshMultiLev(const MEDStructuredMeshMultiLev& other, const MEDCouplingAutoRefCountObjectPtr& part); - MEDLOADER_EXPORT bool buildVTUArrays(DataArrayDouble *& coords, DataArrayByte *&types, DataArrayInt *&cellLocations, DataArrayInt *& cells, DataArrayInt *&faceLocations, DataArrayInt *&faces) const; + MEDUMeshMultiLev(const MEDStructuredMeshMultiLev& other, const MCAuto& part); + MEDLOADER_EXPORT bool buildVTUArrays(DataArrayDouble *& coords, DataArrayByte *&types, DataArrayIdType *&cellLocations, DataArrayIdType *& cells, DataArrayIdType *&faceLocations, DataArrayIdType *&faces) const; protected: - void appendVertices(const DataArrayInt *verticesToAdd, DataArrayInt *nr); + void appendVertices(const DataArrayIdType *verticesToAdd, DataArrayIdType *nr); private: - void reorderNodesIfNecessary(MEDCouplingAutoRefCountObjectPtr& coords, DataArrayInt *nodalConnVTK, DataArrayInt *polyhedNodalConnVTK) const; + void reorderNodesIfNecessary(MCAuto& coords, DataArrayIdType *nodalConnVTK, DataArrayIdType *polyhedNodalConnVTK) const; private: MEDUMeshMultiLev(const MEDUMeshMultiLev& other); MEDUMeshMultiLev(const MEDFileUMesh *m, const std::vector& levs); - MEDUMeshMultiLev(const MEDFileUMesh *m, const std::vector& gts, const std::vector& pfls, const std::vector& nbEntities); + MEDUMeshMultiLev(const MEDFileUMesh *m, const std::vector& gts, const std::vector& pfls, const std::vector& nbEntities); private: - std::vector< MEDCouplingAutoRefCountObjectPtr > _parts; + std::vector< MCAuto > _parts; //! this attribute is used only for mesh with no cells but having coordinates. For classical umeshes those pointer is equal to pointer of coordinates of instances in this->_parts. - MEDCouplingAutoRefCountObjectPtr _coords; + MCAuto _coords; }; class MEDStructuredMeshMultiLev : public MEDMeshMultiLev { public: - void selectPartOfNodes(const DataArrayInt *pflNodes); - virtual std::vector getNodeGridStructure() const = 0; + void selectPartOfNodes(const DataArrayIdType *pflNodes); + virtual std::vector getNodeGridStructure() const = 0; + std::string getClassName() const override { return std::string("MEDStructuredMeshMultiLev"); } protected: MEDStructuredMeshMultiLev(const MEDStructuredMeshMultiLev& other); MEDStructuredMeshMultiLev(const MEDFileStructuredMesh *m, const std::vector& lev); - MEDStructuredMeshMultiLev(const MEDFileStructuredMesh *m, int nbOfNodes, const std::vector& gts, const std::vector& pfls, const std::vector& nbEntities); + MEDStructuredMeshMultiLev(const MEDFileStructuredMesh *m, mcIdType nbOfNodes, const std::vector& gts, const std::vector& pfls, const std::vector& nbEntities); void dealWithImplicitUnstructuredMesh(const MEDFileMesh *m); protected: void moveFaceToCell() const; @@ -166,48 +171,51 @@ namespace ParaMEDMEM void initStdFieldOfIntegers(const MEDFileStructuredMesh *m); protected: bool _is_internal; - MEDCouplingAutoRefCountObjectPtr _face_fam_ids; - MEDCouplingAutoRefCountObjectPtr _face_num_ids; + MCAuto _face_fam_ids; + MCAuto _face_num_ids; }; class MEDCMeshMultiLev : public MEDStructuredMeshMultiLev { public: static MEDCMeshMultiLev *New(const MEDFileCMesh *m, const std::vector& levs); - static MEDCMeshMultiLev *New(const MEDFileCMesh *m, const std::vector& gts, const std::vector& pfls, const std::vector& nbEntities); - std::vector getNodeGridStructure() const; + static MEDCMeshMultiLev *New(const MEDFileCMesh *m, const std::vector& gts, const std::vector& pfls, const std::vector& nbEntities); + std::vector getNodeGridStructure() const; + std::string getClassName() const override { return std::string("MEDCMeshMultiLev"); } MEDMeshMultiLev *prepare() const; MEDLOADER_EXPORT std::vector< DataArrayDouble * > buildVTUArrays(bool& isInternal) const; private: MEDCMeshMultiLev(const MEDCMeshMultiLev& other); MEDCMeshMultiLev(const MEDFileCMesh *m, const std::vector& levs); - MEDCMeshMultiLev(const MEDFileCMesh *m, const std::vector& gts, const std::vector& pfls, const std::vector& nbEntities); + MEDCMeshMultiLev(const MEDFileCMesh *m, const std::vector& gts, const std::vector& pfls, const std::vector& nbEntities); private: - std::vector< MEDCouplingAutoRefCountObjectPtr > _coords; + std::vector< MCAuto > _coords; }; class MEDCurveLinearMeshMultiLev : public MEDStructuredMeshMultiLev { public: static MEDCurveLinearMeshMultiLev *New(const MEDFileCurveLinearMesh *m, const std::vector& levs); - static MEDCurveLinearMeshMultiLev *New(const MEDFileCurveLinearMesh *m, const std::vector& gts, const std::vector& pfls , const std::vector& nbEntities); - std::vector getNodeGridStructure() const; + static MEDCurveLinearMeshMultiLev *New(const MEDFileCurveLinearMesh *m, const std::vector& gts, const std::vector& pfls , const std::vector& nbEntities); + std::string getClassName() const override { return std::string("MEDCurveLinearMeshMultiLev"); } + std::vector getNodeGridStructure() const; MEDMeshMultiLev *prepare() const; - MEDLOADER_EXPORT void buildVTUArrays(DataArrayDouble *&coords, std::vector& nodeStrct, bool& isInternal) const; + MEDLOADER_EXPORT void buildVTUArrays(DataArrayDouble *&coords, std::vector& nodeStrct, bool& isInternal) const; private: MEDCurveLinearMeshMultiLev(const MEDCurveLinearMeshMultiLev& other); MEDCurveLinearMeshMultiLev(const MEDFileCurveLinearMesh *m, const std::vector& levs); - MEDCurveLinearMeshMultiLev(const MEDFileCurveLinearMesh *m, const std::vector& gts, const std::vector& pfls, const std::vector& nbEntities); + MEDCurveLinearMeshMultiLev(const MEDFileCurveLinearMesh *m, const std::vector& gts, const std::vector& pfls, const std::vector& nbEntities); private: - MEDCouplingAutoRefCountObjectPtr _coords; - std::vector _structure; + MCAuto _coords; + std::vector _structure; }; class MEDFileField1TSStructItem2 : public BigMemoryObject { public: MEDFileField1TSStructItem2(); - MEDFileField1TSStructItem2(INTERP_KERNEL::NormalizedCellType a, const std::pair& b, const std::string& pfl, const std::string& loc); + MEDFileField1TSStructItem2(INTERP_KERNEL::NormalizedCellType a, const std::pair& b, const std::string& pfl, const std::string& loc); + std::string getClassName() const override { return std::string("MEDFileField1TSStructItem2"); } void checkWithMeshStructForCells(const MEDFileMeshStruct *mst, const MEDFileFieldGlobsReal *globs); void checkWithMeshStructForGaussNE(const MEDFileMeshStruct *mst, const MEDFileFieldGlobsReal *globs); void checkWithMeshStructForGaussPT(const MEDFileMeshStruct *mst, const MEDFileFieldGlobsReal *globs); @@ -215,15 +223,15 @@ namespace ParaMEDMEM MEDLOADER_EXPORT std::size_t getHeapMemorySizeWithoutChildren() const; MEDLOADER_EXPORT std::vector getDirectChildrenWithNull() const; // - const DataArrayInt *getPfl(const MEDFileFieldGlobsReal *globs) const; + const DataArrayIdType *getPfl(const MEDFileFieldGlobsReal *globs) const; INTERP_KERNEL::NormalizedCellType getGeo() const { return _geo_type; } - int getNbEntity() const { return _nb_of_entity; } - const std::pair& getStartStop() const { return _start_end; } + mcIdType getNbEntity() const { return _nb_of_entity; } + const std::pair& getStartStop() const { return _start_end; } std::string getPflName() const; int getNbOfIntegrationPts(const MEDFileFieldGlobsReal *globs) const; //! warning this method also set _nb_of_entity attribute ! - void checkInRange(int nbOfEntity, int nip, const MEDFileFieldGlobsReal *globs); - bool isFastlyEqual(int& startExp, INTERP_KERNEL::NormalizedCellType gt, const std::string& pflName) const; + void checkInRange(mcIdType nbOfEntity, int nip, const MEDFileFieldGlobsReal *globs); + bool isFastlyEqual(mcIdType& startExp, INTERP_KERNEL::NormalizedCellType gt, const std::string& pflName) const; bool operator==(const MEDFileField1TSStructItem2& other) const; bool isCellSupportEqual(const MEDFileField1TSStructItem2& other, const MEDFileFieldGlobsReal *globs) const; bool isNodeSupportEqual(const MEDFileField1TSStructItem2& other, const MEDFileFieldGlobsReal *globs) const; @@ -232,19 +240,20 @@ namespace ParaMEDMEM static const char NEWLY_CREATED_PFL_NAME[]; private: INTERP_KERNEL::NormalizedCellType _geo_type; - std::pair _start_end; - MEDCouplingAutoRefCountObjectPtr _pfl; + std::pair _start_end; + MCAuto _pfl; std::string _loc; - int _nb_of_entity; + mcIdType _nb_of_entity; }; class MEDFileField1TSStructItem : public BigMemoryObject { public: - MEDFileField1TSStructItem() { } + MEDFileField1TSStructItem():_computed(false),_type(ON_CELLS) { } MEDFileField1TSStructItem(TypeOfField a, const std::vector< MEDFileField1TSStructItem2 >& b); void checkWithMeshStruct(const MEDFileMeshStruct *mst, const MEDFileFieldGlobsReal *globs); bool operator==(const MEDFileField1TSStructItem& other) const; + std::string getClassName() const override { return std::string("MEDFileField1TSStructItem"); } MEDLOADER_EXPORT std::size_t getHeapMemorySizeWithoutChildren() const; MEDLOADER_EXPORT std::vector getDirectChildrenWithNull() const; bool isEntityCell() const; @@ -273,6 +282,7 @@ namespace ParaMEDMEM static MEDFileField1TSStruct *New(const MEDFileAnyTypeField1TS *ref, MEDFileMeshStruct *mst); void checkWithMeshStruct(MEDFileMeshStruct *mst, const MEDFileFieldGlobsReal *globs); std::size_t getHeapMemorySizeWithoutChildren() const; + std::string getClassName() const override { return std::string("MEDFileField1TSStruct"); } std::vector getDirectChildrenWithNull() const; bool isEqualConsideringThePast(const MEDFileAnyTypeField1TS *other, const MEDFileMeshStruct *mst) const; bool isSupportSameAs(const MEDFileAnyTypeField1TS *other, const MEDFileMeshStruct *meshSt); @@ -292,6 +302,7 @@ namespace ParaMEDMEM { public: MEDLOADER_EXPORT static MEDFileFastCellSupportComparator *New(const MEDFileMeshStruct *m, const MEDFileAnyTypeFieldMultiTS *ref); + MEDLOADER_EXPORT std::string getClassName() const override { return std::string("MEDFileFastCellSupportComparator"); } MEDLOADER_EXPORT MEDMeshMultiLev *buildFromScratchDataSetSupport(int timeStepId, const MEDFileFieldGlobsReal *globs) const; MEDLOADER_EXPORT bool isDataSetSupportEqualToThePreviousOne(int timeStepId, const MEDFileFieldGlobsReal *globs) const; MEDLOADER_EXPORT int getNumberOfTS() const; @@ -303,8 +314,8 @@ namespace ParaMEDMEM private: MEDFileFastCellSupportComparator(const MEDFileMeshStruct *m, const MEDFileAnyTypeFieldMultiTS *ref); private: - MEDCouplingAutoRefCountObjectPtr _mesh_comp; - std::vector< MEDCouplingAutoRefCountObjectPtr > _f1ts_cmps; + MCAuto _mesh_comp; + std::vector< MCAuto > _f1ts_cmps; }; }