--- /dev/null
+// Copyright (C) 2017-2019 CEA/DEN, EDF R&D
+//
+// 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, 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
+// 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
+//
+// Author : Anthony Geay (EDF R&D)
+
+#ifndef __IK_MCIDTYPE_HXX__
+#define __IK_MCIDTYPE_HXX__
+
+#include <cstdint>
+#include <stddef.h>
+#include <cstddef>
+
+#ifndef MEDCOUPLING_USE_64BIT_IDS
+
+typedef std::int32_t mcIdType;
+
+#else
+
+typedef std::int64_t mcIdType;
+
+#endif
+
+template <class T> inline mcIdType ToIdType(T val)
+{
+ return static_cast<mcIdType>(val);
+}
+
+#endif
public:
static const int MY_SPACEDIM=SPACEDIM;
static const int MY_MESHDIM=MESHDIM;
- typedef int MyConnType;
+ typedef mcIdType MyConnType;
static const INTERP_KERNEL::NumberingPolicy My_numPol=INTERP_KERNEL::ALL_C_MODE;
public:
MEDCouplingNormalizedUnstructuredMesh(const MEDCoupling::MEDCouplingPointSet *mesh);
void getBoundingBox(double *boundingBox) const;
- INTERP_KERNEL::NormalizedCellType getTypeOfElement(int eltId) const;
- int getNumberOfNodesOfElement(int eltId) const;
- int getNumberOfElements() const;
- int getNumberOfNodes() const;
- const int *getConnectivityPtr() const;
+ INTERP_KERNEL::NormalizedCellType getTypeOfElement(mcIdType eltId) const;
+ int getNumberOfNodesOfElement(mcIdType eltId) const;
+ mcIdType getNumberOfElements() const;
+ mcIdType getNumberOfNodes() const;
+ const mcIdType *getConnectivityPtr() const;
const double *getCoordinatesPtr() const;
- const int *getConnectivityIndexPtr() const;
+ const mcIdType *getConnectivityIndexPtr() const;
void releaseTempArrays();
~MEDCouplingNormalizedUnstructuredMesh();
private:
void prepare();
private:
const MEDCoupling::MEDCouplingPointSet *_mesh;
- int *_conn_for_interp;
- int *_conn_index_for_interp;
+ mcIdType *_conn_for_interp;
+ mcIdType *_conn_index_for_interp;
};
#endif
}
const MEDCoupling::DataArrayDouble *array=_mesh->getCoords();
const double *ptr=array->getConstPointer();
- MEDCoupling::mcIdType nbOfPts=MEDCoupling::ToIdType(array->getNbOfElems())/SPACEDIM;
+ mcIdType nbOfPts=ToIdType(array->getNbOfElems())/SPACEDIM;
for(int j=0;j<SPACEDIM;j++)
{
const double *work=ptr+j;
- for(int i=0;i<nbOfPts;i++,work+=SPACEDIM)
+ for(mcIdType i=0;i<nbOfPts;i++,work+=SPACEDIM)
{
if(boundingBox[j]>*work)
boundingBox[j]=*work;
}
template<int SPACEDIM,int MESHDIM>
-INTERP_KERNEL::NormalizedCellType MEDCouplingNormalizedUnstructuredMesh<SPACEDIM,MESHDIM>::getTypeOfElement(int eltId) const
+INTERP_KERNEL::NormalizedCellType MEDCouplingNormalizedUnstructuredMesh<SPACEDIM,MESHDIM>::getTypeOfElement(mcIdType eltId) const
{
return _mesh->getTypeOfCell(eltId);
}
template<int SPACEDIM,int MESHDIM>
-int MEDCouplingNormalizedUnstructuredMesh<SPACEDIM,MESHDIM>::getNumberOfNodesOfElement(int eltId) const
+int MEDCouplingNormalizedUnstructuredMesh<SPACEDIM,MESHDIM>::getNumberOfNodesOfElement(mcIdType eltId) const
{
return _mesh->getNumberOfNodesInCell(eltId);
}
template<int SPACEDIM,int MESHDIM>
-int MEDCouplingNormalizedUnstructuredMesh<SPACEDIM,MESHDIM>::getNumberOfElements() const
+mcIdType MEDCouplingNormalizedUnstructuredMesh<SPACEDIM,MESHDIM>::getNumberOfElements() const
{
- return MEDCoupling::ToIdType(_mesh->getNumberOfCells());
+ return ToIdType(_mesh->getNumberOfCells());
}
template<int SPACEDIM,int MESHDIM>
-int MEDCouplingNormalizedUnstructuredMesh<SPACEDIM,MESHDIM>::getNumberOfNodes() const
+mcIdType MEDCouplingNormalizedUnstructuredMesh<SPACEDIM,MESHDIM>::getNumberOfNodes() const
{
return _mesh->getNumberOfNodes();
}
template<int SPACEDIM,int MESHDIM>
-const int *MEDCouplingNormalizedUnstructuredMesh<SPACEDIM,MESHDIM>::getConnectivityPtr() const
+const mcIdType *MEDCouplingNormalizedUnstructuredMesh<SPACEDIM,MESHDIM>::getConnectivityPtr() const
{
return _conn_for_interp;
}
}
template<int SPACEDIM,int MESHDIM>
-const int *MEDCouplingNormalizedUnstructuredMesh<SPACEDIM,MESHDIM>::getConnectivityIndexPtr() const
+const mcIdType *MEDCouplingNormalizedUnstructuredMesh<SPACEDIM,MESHDIM>::getConnectivityIndexPtr() const
{
return _conn_index_for_interp;
}
const MEDCoupling::MEDCouplingUMesh *m1(dynamic_cast<const MEDCoupling::MEDCouplingUMesh *>(_mesh));
if(m1)
{
- MEDCoupling::mcIdType nbOfCell=MEDCoupling::ToIdType(m1->getNumberOfCells());
- MEDCoupling::mcIdType initialConnSize=MEDCoupling::ToIdType(m1->getNodalConnectivity()->getNbOfElems());
- _conn_for_interp=new int[initialConnSize-nbOfCell];
- _conn_index_for_interp=new int[nbOfCell+1];
+ mcIdType nbOfCell=ToIdType(m1->getNumberOfCells());
+ mcIdType initialConnSize=ToIdType(m1->getNodalConnectivity()->getNbOfElems());
+ _conn_for_interp=new mcIdType[initialConnSize-nbOfCell];
+ _conn_index_for_interp=new mcIdType[nbOfCell+1];
_conn_index_for_interp[0]=0;
- const int *work_conn=m1->getNodalConnectivity()->getConstPointer()+1;
- const int *work_conn_index=m1->getNodalConnectivityIndex()->getConstPointer();
- int *work_conn_for_interp=_conn_for_interp;
- int *work_conn_index_for_interp=_conn_index_for_interp;
- for(int i=0;i<nbOfCell;i++)
+ const mcIdType *work_conn=m1->getNodalConnectivity()->getConstPointer()+1;
+ const mcIdType *work_conn_index=m1->getNodalConnectivityIndex()->getConstPointer();
+ mcIdType *work_conn_for_interp=_conn_for_interp;
+ mcIdType *work_conn_index_for_interp=_conn_index_for_interp;
+ for(mcIdType i=0;i<nbOfCell;i++)
{
- int nbOfValsToCopy=work_conn_index[1]-work_conn_index[0]-1;
+ mcIdType nbOfValsToCopy=work_conn_index[1]-work_conn_index[0]-1;
work_conn_for_interp=std::copy(work_conn,work_conn+nbOfValsToCopy,work_conn_for_interp);
work_conn_index_for_interp[1]=work_conn_index_for_interp[0]+nbOfValsToCopy;
work_conn_index++;
const MEDCoupling::MEDCoupling1DGTUMesh *m2(dynamic_cast<const MEDCoupling::MEDCoupling1DGTUMesh *>(_mesh));
if(m2)
{
- MEDCoupling::mcIdType nbOfCell=MEDCoupling::ToIdType(m2->getNumberOfCells());
- _conn_index_for_interp=new int[nbOfCell+1];
- const int *conni(m2->getNodalConnectivityIndex()->begin());
+ mcIdType nbOfCell=ToIdType(m2->getNumberOfCells());
+ _conn_index_for_interp=new mcIdType[nbOfCell+1];
+ const mcIdType *conni(m2->getNodalConnectivityIndex()->begin());
std::copy(conni,conni+nbOfCell+1,_conn_index_for_interp);
- _conn_for_interp=new int[m2->getNodalConnectivity()->getNumberOfTuples()];
+ _conn_for_interp=new mcIdType[m2->getNodalConnectivity()->getNumberOfTuples()];
std::copy(m2->getNodalConnectivity()->begin(),m2->getNodalConnectivity()->end(),_conn_for_interp);
return ;
}
const MEDCoupling::MEDCoupling1SGTUMesh *m3(dynamic_cast<const MEDCoupling::MEDCoupling1SGTUMesh *>(_mesh));
if(m3)
{
- MEDCoupling::mcIdType nbOfCell=MEDCoupling::ToIdType(m3->getNumberOfCells()),nbNodesPerCell(m3->getNumberOfNodesPerCell());
- _conn_index_for_interp=new int[nbOfCell+1]; _conn_index_for_interp[0]=0;
- int *work(_conn_index_for_interp);
- for(int i=0;i<nbOfCell;i++,work++)
+ mcIdType nbOfCell=ToIdType(m3->getNumberOfCells()),nbNodesPerCell(m3->getNumberOfNodesPerCell());
+ _conn_index_for_interp=new mcIdType[nbOfCell+1]; _conn_index_for_interp[0]=0;
+ mcIdType *work(_conn_index_for_interp);
+ for(mcIdType i=0;i<nbOfCell;i++,work++)
work[1]=work[0]+nbNodesPerCell;
- _conn_for_interp=new int[m3->getNodalConnectivity()->getNumberOfTuples()];
+ _conn_for_interp=new mcIdType[m3->getNodalConnectivity()->getNumberOfTuples()];
std::copy(m3->getNodalConnectivity()->begin(),m3->getNodalConnectivity()->end(),_conn_for_interp);
return ;
}