std::vector<const BigMemoryObject *> getDirectChildren() const;
const MEDFileMesh *getTheMesh() const { return _mesh; }
int getNumberOfNodes() const { return _nb_nodes; }
+ bool doesManageGeoType(INTERP_KERNEL::NormalizedCellType t) const;
int getNumberOfElemsOfGeoType(INTERP_KERNEL::NormalizedCellType t) const;
int getLevelOfGeoType(INTERP_KERNEL::NormalizedCellType t) const;
int getNumberOfLevs() const;
int getNumberOfGeoTypesInLev(int relativeLev) const;
+ // non const methods
+ void appendIfImplicitType(INTERP_KERNEL::NormalizedCellType t);
private:
MEDFileMeshStruct(const MEDFileMesh *mesh);
private:
int _nb_nodes;
std::vector< std::vector<int> > _geo_types_distrib;
};
-
+
class MEDFileField1TSStructItem;
-
+
class MEDMeshMultiLev : public RefCountObject
{
public:
static MEDMeshMultiLev *New(const MEDFileMesh *m, const std::vector<int>& levs);
static MEDMeshMultiLev *NewOnlyOnNode(const MEDFileMesh *m, const DataArrayInt *pflOnNode);
void setNodeReduction(const DataArrayInt *nr);
+ void setCellReduction(const DataArrayInt *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;
DataArray *constructDataArray(const MEDFileField1TSStructItem& fst, const MEDFileFieldGlobsReal *globs, const DataArray *vals) const;
virtual void appendVertices(const DataArrayInt *verticesToAdd, DataArrayInt *nr);
protected:
- MEDMeshMultiLev();
+ MEDMeshMultiLev(const MEDFileMesh *mesh);
MEDMeshMultiLev(const MEDMeshMultiLev& other);
- MEDMeshMultiLev(int nbNodes, const std::vector<INTERP_KERNEL::NormalizedCellType>& gts, const std::vector<const DataArrayInt *>& pfls, const std::vector<int>& nbEntities);
+ MEDMeshMultiLev(const MEDFileMesh *mesh, int nbNodes, const std::vector<INTERP_KERNEL::NormalizedCellType>& gts, const std::vector<const DataArrayInt *>& pfls, const std::vector<int>& nbEntities);
protected:
+ const MEDFileMesh *_mesh;
std::vector< MEDCouplingAutoRefCountObjectPtr<DataArrayInt> > _pfls;
std::vector< INTERP_KERNEL::NormalizedCellType > _geo_types;
std::vector<int> _nb_entities;
MEDCouplingAutoRefCountObjectPtr<DataArrayInt> _node_num_ids;
bool _node_num_ids_nocpy;
public:
- static const int PARAMEDMEM_2_VTKTYPE_LGTH=34;
- static const unsigned char PARAMEDMEM_2_VTKTYPE[PARAMEDMEM_2_VTKTYPE_LGTH];
+ 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 unsigned char HEXA27_PERM_ARRAY[27];
};
-
+
class MEDStructuredMeshMultiLev;
-
+
class MEDUMeshMultiLev : public MEDMeshMultiLev
{
public:
void selectPartOfNodes(const DataArrayInt *pflNodes);
virtual std::vector<int> getNodeGridStructure() const = 0;
protected:
- MEDStructuredMeshMultiLev();
MEDStructuredMeshMultiLev(const MEDStructuredMeshMultiLev& other);
MEDStructuredMeshMultiLev(const MEDFileStructuredMesh *m, const std::vector<int>& lev);
MEDStructuredMeshMultiLev(const MEDFileStructuredMesh *m, int nbOfNodes, const std::vector<INTERP_KERNEL::NormalizedCellType>& gts, const std::vector<const DataArrayInt *>& pfls, const std::vector<int>& nbEntities);
+ void dealWithImplicitUnstructuredMesh(const MEDFileMesh *m);
+ protected:
+ void moveFaceToCell() const;
+ bool prepareForImplicitUnstructuredMeshCase(MEDMeshMultiLev *&ret) const;
+ private:
+ void initStdFieldOfIntegers(const MEDFileStructuredMesh *m);
protected:
bool _is_internal;
+ MEDCouplingAutoRefCountObjectPtr<DataArrayInt> _face_fam_ids;
+ bool _face_fam_ids_nocpy;
+ MEDCouplingAutoRefCountObjectPtr<DataArrayInt> _face_num_ids;
+ bool _face_num_ids_nocpy;
};
-
+
class MEDCMeshMultiLev : public MEDStructuredMeshMultiLev
{
public:
//! 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;
- bool operator==(const MEDFileField1TSStructItem2& other) const throw(INTERP_KERNEL::Exception);
+ bool operator==(const MEDFileField1TSStructItem2& other) const;
bool isCellSupportEqual(const MEDFileField1TSStructItem2& other, const MEDFileFieldGlobsReal *globs) const;
bool isNodeSupportEqual(const MEDFileField1TSStructItem2& other, const MEDFileFieldGlobsReal *globs) const;
static MEDFileField1TSStructItem2 BuildAggregationOf(const std::vector<const MEDFileField1TSStructItem2 *>& objs, const MEDFileFieldGlobsReal *globs);
MEDFileField1TSStructItem() { }
MEDFileField1TSStructItem(TypeOfField a, const std::vector< MEDFileField1TSStructItem2 >& b);
void checkWithMeshStruct(const MEDFileMeshStruct *mst, const MEDFileFieldGlobsReal *globs);
- bool operator==(const MEDFileField1TSStructItem& other) const throw(INTERP_KERNEL::Exception);
+ bool operator==(const MEDFileField1TSStructItem& other) const;
MEDLOADER_EXPORT std::size_t getHeapMemorySizeWithoutChildren() const;
MEDLOADER_EXPORT std::vector<const BigMemoryObject *> getDirectChildren() const;
bool isEntityCell() const;
bool isComputed() const { return _computed; }
TypeOfField getType() const { return _type; }
std::size_t getNumberOfItems() const { return _items.size(); }
- const MEDFileField1TSStructItem2& operator[](std::size_t i) const throw(INTERP_KERNEL::Exception);
+ const MEDFileField1TSStructItem2& operator[](std::size_t i) const;
//
bool isCellSupportEqual(const MEDFileField1TSStructItem& other, const MEDFileFieldGlobsReal *globs) const;
bool isNodeSupportEqual(const MEDFileField1TSStructItem& other, const MEDFileFieldGlobsReal *globs) const;