const int MEDCoupling1SGTUMesh::HEXA8_FACE_PAIRS[6]={0,1,2,4,3,5};
-MEDCoupling1GTUMesh::MEDCoupling1GTUMesh()
+MEDCoupling1GTUMesh::MEDCoupling1GTUMesh():_cm(0)
{
}
{
if(_conn->getNumberOfComponents()==1)
{
- int nbOfCells=getNumberOfCells();
- int sz=getNumberOfNodesPerCell();
- const int *connPtr=_conn->begin();
- for(int i=0;i<nbOfCells;i++,connPtr+=sz)
- {
- ret << "Cell #" << i << " : ";
- std::copy(connPtr,connPtr+sz,std::ostream_iterator<int>(ret," "));
- ret << "\n";
- }
+ int nbOfCells=getNumberOfCells();
+ int sz=getNumberOfNodesPerCell();
+ const int *connPtr=_conn->begin();
+ for(int i=0;i<nbOfCells;i++,connPtr+=sz)
+ {
+ ret << "Cell #" << i << " : ";
+ std::copy(connPtr,connPtr+sz,std::ostream_iterator<int>(ret," "));
+ ret << "\n";
+ }
}
else
ret << "Nodal connectivity array specified and allocated but with not exactly one component !" << "\n";
DataArrayInt *MEDCoupling1SGTUMesh::simplexize(int policy)
{
switch(policy)
- {
+ {
case 0:
return simplexizePol0();
case 1:
return simplexizePol1();
case (int) INTERP_KERNEL::PLANAR_FACE_5:
- return simplexizePlanarFace5();
+ return simplexizePlanarFace5();
case (int) INTERP_KERNEL::PLANAR_FACE_6:
- return simplexizePlanarFace6();
+ return simplexizePlanarFace6();
default:
throw INTERP_KERNEL::Exception("MEDCoupling1SGTUMesh::simplexize : unrecognized policy ! Must be :\n - 0 or 1 (only available for meshdim=2) \n - PLANAR_FACE_5, PLANAR_FACE_6 (only for meshdim=3)");
- }
+ }
}
/// @cond INTERNAL
if(!cm.isSimplex())
throw INTERP_KERNEL::Exception("MEDCoupling1SGTUMesh::computeDualMesh : this mesh is not a simplex mesh ! Please invoke simplexize of tetrahedrize on this before calling this method !");
switch(getMeshDimension())
- {
+ {
case 3:
return computeDualMesh3D();
case 2:
return computeDualMesh2D();
default:
throw INTERP_KERNEL::Exception("MEDCoupling1SGTUMesh::computeDualMesh : meshdimension must be in [2,3] !");
- }
+ }
}
/*!
ret << "Number of cells : ";
bool isOK=true;
try { checkCoherency(); } catch(INTERP_KERNEL::Exception& /* e */)
- {
+ {
ret << "Nodal connectivity arrays are not set or badly set !\n";
isOK=false;
- }
+ }
if(isOK)
ret << getNumberOfCells() << "\n";
ret << "Cell type : " << _cm->getRepr() << "\n";
//
bool isOK=true;
try { checkCoherency1(); } catch(INTERP_KERNEL::Exception& /* e */)
- {
+ {
ret << "Nodal connectivity arrays are not set or badly set !\n";
isOK=false;
- }
+ }
if(!isOK)
return ret.str();
int nbOfCells=getNumberOfCells();
stream << "Number of nodes : " << _coords->getNumberOfTuples() << ".";
bool isOK=true;
try { checkCoherency(); } catch(INTERP_KERNEL::Exception& /* e */)
- {
+ {
stream << std::endl << "Nodal connectivity NOT set properly !\n";
isOK=false;
- }
+ }
if(isOK)
stream << std::endl << "Number of cells : " << getNumberOfCells() << ".";
}
setName(mesh3D->getName());
}
catch(INTERP_KERNEL::Exception& e)
- {
+{
if(_mesh2D)
_mesh2D->decrRef();
if(_mesh1D)
if(_mesh3D_ids)
_mesh3D_ids->decrRef();
throw e;
- }
+}
MEDCouplingExtrudedMesh::MEDCouplingExtrudedMesh():_mesh2D(0),_mesh1D(0),_mesh3D_ids(0),_cell_2D_id(-1)
{
MEDCouplingAutoRefCountObjectPtr<DataArrayInt> ret3D=DataArrayInt::New(); ret3D->alloc(nbOfLevs*nbOfCells2D,1);
int *pt=ret3D->getPointer();
for(int i=0;i<nbOfLevs;i++,pt+=nbOfCells2D)
- std::copy(ret2D->begin(),ret2D->end(),pt);
+ std::copy(ret2D->begin(),ret2D->end(),pt);
ret3D->applyLin(2,0,0);
return ret3D->renumberR(_mesh3D_ids->begin());
}
MEDCouplingAutoRefCountObjectPtr<DataArrayInt> ret3D=DataArrayInt::New(); ret3D->alloc(nbOfLevs*nbOfCells2D,1);
int *pt=ret3D->getPointer();
for(int i=0;i<nbOfLevs;i++,pt+=nbOfCells2D)
- std::copy(ret2D->begin(),ret2D->end(),pt);
+ std::copy(ret2D->begin(),ret2D->end(),pt);
ret3D->applyLin(2,2,0);
return ret3D->renumberR(_mesh3D_ids->begin());
}
return ret.str();
}
-void MEDCouplingExtrudedMesh::checkCoherency() const throw (INTERP_KERNEL::Exception)
+void MEDCouplingExtrudedMesh::checkCoherency() const
{
}
void MEDCouplingExtrudedMesh::build1DExtrusion(int idIn3DDesc, int newId, int nbOf1DLev, MEDCouplingUMesh *subMesh,
const int *desc3D, const int *descIndx3D,
const int *revDesc3D, const int *revDescIndx3D,
- bool computeMesh1D) throw(INTERP_KERNEL::Exception)
+ bool computeMesh1D)
{
int nbOf2DCells=_mesh2D->getNumberOfCells();
int start=revDescIndx3D[idIn3DDesc];
if(computeMesh1D)
computeBaryCenterOfFace(conn,i-1);
current2DCell=findOppositeFaceOf(current2DCell,current3DCell,conn,
- desc3D,descIndx3D,conn2D,conn2DIndx);
+ desc3D,descIndx3D,conn2D,conn2DIndx);
start=revDescIndx3D[current2DCell];
end=revDescIndx3D[current2DCell+1];
if(end-start!=2)
std::sort(conn.begin(),conn.end());
computeBaryCenterOfFace(conn,nbOf1DLev-1);
current2DCell=findOppositeFaceOf(current2DCell,current3DCell,conn,
- desc3D,descIndx3D,conn2D,conn2DIndx);
+ desc3D,descIndx3D,conn2D,conn2DIndx);
conn.clear();
conn.insert(conn.end(),conn2D+conn2DIndx[current2DCell]+1,conn2D+conn2DIndx[current2DCell+1]);
std::sort(conn.begin(),conn.end());
int MEDCouplingExtrudedMesh::findOppositeFaceOf(int current2DCell, int current3DCell, const std::vector<int>& connSorted,
const int *desc3D, const int *descIndx3D,
- const int *conn2D, const int *conn2DIndx) throw(INTERP_KERNEL::Exception)
+ const int *conn2D, const int *conn2DIndx)
{
int start=descIndx3D[current3DCell];
int end=descIndx3D[current3DCell+1];
std::transform(zoneToUpdate,zoneToUpdate+3,zoneToUpdate,std::bind2nd(std::multiplies<double>(),(double)(1./(int)nodalConnec.size())));
}
-int MEDCouplingExtrudedMesh::FindCorrespCellByNodalConn(const std::vector<int>& nodalConnec, const int *revNodalPtr, const int *revNodalIndxPtr) throw(INTERP_KERNEL::Exception)
+int MEDCouplingExtrudedMesh::FindCorrespCellByNodalConn(const std::vector<int>& nodalConnec, const int *revNodalPtr, const int *revNodalIndxPtr)
{
std::vector<int>::const_iterator iter=nodalConnec.begin();
std::set<int> s1(revNodalPtr+revNodalIndxPtr[*iter],revNodalPtr+revNodalIndxPtr[*iter+1]);
* @throw in case that m1 and m2 are not compatible each other.
*/
void MEDCouplingExtrudedMesh::Project1DMeshes(const MEDCouplingUMesh *m1, const MEDCouplingUMesh *m2, double eps,
- MEDCouplingUMesh *&m1r, MEDCouplingUMesh *&m2r, double *v) throw(INTERP_KERNEL::Exception)
+ MEDCouplingUMesh *&m1r, MEDCouplingUMesh *&m2r, double *v)
{
if(m1->getSpaceDimension()!=3 || m1->getSpaceDimension()!=3)
throw INTERP_KERNEL::Exception("Input meshes are expected to have a spaceDim==3 for Projec1D !");
std::transform(v,v+3,v,std::bind2nd(std::multiplies<double>(),1/n));
m1->project1D(&ref[0],v,eps,m1r->getCoords()->getPointer());
m2->project1D(&ref[0],v,eps,m2r->getCoords()->getPointer());
-
}
void MEDCouplingExtrudedMesh::rotate(const double *center, const double *vector, double angle)
for(int i=0;i<nbOf2DCells;i++)
{
int idInSubMesh;
- std::vector<int> nodalConnec(nodal2D+nodal2DIndx[i]+1,nodal2D+nodal2DIndx[i+1]);
- try
- {
+ std::vector<int> nodalConnec(nodal2D+nodal2DIndx[i]+1,nodal2D+nodal2DIndx[i+1]);
+ try
+ {
idInSubMesh=FindCorrespCellByNodalConn(nodalConnec,revNodal2DPtr,revNodalIndx2DPtr);
- }
- catch(INTERP_KERNEL::Exception& e)
- {
- std::ostringstream ostr; ostr << "mesh2D cell # " << i << " is not part of any cell of 3D mesh !\n";
- ostr << e.what();
- throw INTERP_KERNEL::Exception(ostr.str().c_str());
- }
- build1DExtrusion(idInSubMesh,i,nbOf1DLev,subMesh,descP,descIndxP,revDescP,revDescIndxP,i==_cell_2D_id);
+ }
+ catch(INTERP_KERNEL::Exception& e)
+ {
+ std::ostringstream ostr; ostr << "mesh2D cell # " << i << " is not part of any cell of 3D mesh !\n";
+ ostr << e.what();
+ throw INTERP_KERNEL::Exception(ostr.str().c_str());
+ }
+ build1DExtrusion(idInSubMesh,i,nbOf1DLev,subMesh,descP,descIndxP,revDescP,revDescIndxP,i==_cell_2D_id);
}
//
revNodal2D->decrRef();
MEDCOUPLING_EXPORT void getCoordinatesOfNode(int nodeId, std::vector<double>& coo) const;
MEDCOUPLING_EXPORT std::string simpleRepr() const;
MEDCOUPLING_EXPORT std::string advancedRepr() const;
- MEDCOUPLING_EXPORT void checkCoherency() const throw (INTERP_KERNEL::Exception);
+ MEDCOUPLING_EXPORT void checkCoherency() const;
MEDCOUPLING_EXPORT void checkCoherency1(double eps=1e-12) const;
MEDCOUPLING_EXPORT void checkCoherency2(double eps=1e-12) const;
MEDCOUPLING_EXPORT void getBoundingBox(double *bbox) const;
MEDCOUPLING_EXPORT MEDCouplingFieldDouble *buildOrthogonalField() const;
MEDCOUPLING_EXPORT int getCellContainingPoint(const double *pos, double eps) const;
MEDCOUPLING_EXPORT static int FindCorrespCellByNodalConn(const std::vector<int>& nodalConnec,
- const int *revNodalPtr, const int *revNodalIndxPtr) throw(INTERP_KERNEL::Exception);
+ const int *revNodalPtr, const int *revNodalIndxPtr);
MEDCOUPLING_EXPORT static void Project1DMeshes(const MEDCouplingUMesh *m1, const MEDCouplingUMesh *m2, double eps,
- MEDCouplingUMesh *&m1r, MEDCouplingUMesh *&m2r, double *v) throw(INTERP_KERNEL::Exception);
+ MEDCouplingUMesh *&m1r, MEDCouplingUMesh *&m2r, double *v);
MEDCOUPLING_EXPORT void rotate(const double *center, const double *vector, double angle);
MEDCOUPLING_EXPORT void translate(const double *vector);
MEDCOUPLING_EXPORT void scale(const double *point, double factor);
void build1DExtrusion(int idIn3DDesc, int newId, int nbOf1DLev, MEDCouplingUMesh *subMesh,
const int *desc3D, const int *descIndx3D,
const int *revDesc3D, const int *revDescIndx3D,
- bool computeMesh1D) throw(INTERP_KERNEL::Exception);
+ bool computeMesh1D);
int findOppositeFaceOf(int current2DCell, int current3DCell, const std::vector<int>& connSorted,
const int *desc3D, const int *descIndx3D,
- const int *conn2D, const int *conn2DIndx) throw(INTERP_KERNEL::Exception);
+ const int *conn2D, const int *conn2DIndx);
void computeBaryCenterOfFace(const std::vector<int>& nodalConnec, int lev1DId);
~MEDCouplingExtrudedMesh();
void writeVTKLL(std::ostream& ofs, const std::string& cellData, const std::string& pointData, DataArrayByte *byteData) const;