X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FDriverCGNS%2FDriverCGNS_Write.cxx;h=9320b826ac675f902802c7b482322e9e04635dcf;hp=b4d3dfe42b959ab9daab365c37c74f56adef12d2;hb=b09372829929f8f561495d6c16527134971a1909;hpb=aae0e72c350c31c43d151132f0c7e302a6b79ad2 diff --git a/src/DriverCGNS/DriverCGNS_Write.cxx b/src/DriverCGNS/DriverCGNS_Write.cxx index b4d3dfe42..9320b826a 100644 --- a/src/DriverCGNS/DriverCGNS_Write.cxx +++ b/src/DriverCGNS/DriverCGNS_Write.cxx @@ -201,17 +201,17 @@ namespace */ struct TPolyhedFace { - int _id; // id of NGON_n - vector< int > _nodes; // lowest node IDs used for sorting + smIdType _id; // id of NGON_n + vector< smIdType > _nodes; // lowest node IDs used for sorting - TPolyhedFace( const SMDS_MeshNode** nodes, const int nbNodes, int ID):_id(ID) + TPolyhedFace( const SMDS_MeshNode** nodes, const smIdType nbNodes, smIdType ID):_id(ID) { - set< int > ids; - for ( int i = 0; i < nbNodes; ++i ) + set< smIdType > ids; + for ( smIdType i = 0; i < nbNodes; ++i ) ids.insert( nodes[i]->GetID() ); _nodes.resize( 3 ); // std::min( nbNodes, 4 )); hope 3 nodes is enough - set< int >::iterator idIt = ids.begin(); + set< smIdType >::iterator idIt = ids.begin(); for ( size_t j = 0; j < _nodes.size(); ++j, ++idIt ) _nodes[j] = *idIt; } @@ -267,6 +267,9 @@ Driver_Mesh::Status DriverCGNS_Write::Perform() if ( !myMesh || myMesh->GetMeshInfo().NbElements() < 1 ) return addMessage( !myMesh ? "NULL mesh" : "Empty mesh (no elements)", /*fatal = */true ); + if ( Driver_Mesh::IsMeshTooLarge< cgsize_t >( myMesh, /*checkIDs =*/ false)) + return DRS_TOO_LARGE_MESH; + // open the file if ( cg_open(myFile.c_str(), CG_MODE_MODIFY, &_fn) != CG_OK && cg_open(myFile.c_str(), CG_MODE_WRITE, &_fn) != CG_OK ) @@ -295,13 +298,15 @@ Driver_Mesh::Status DriverCGNS_Write::Perform() // create a Zone // -------------- - int nbCells = myMesh->NbEdges(); + smIdType nbCells = myMesh->NbEdges(); if ( meshDim == 3 ) nbCells = myMesh->NbVolumes(); else if ( meshDim == 2 ) nbCells = myMesh->NbFaces(); - cgsize_t size[9] = { myMesh->NbNodes(), nbCells, /*NBoundVertex=*/0, 0,0,0,0,0,0 }; + cgsize_t size[9] = { FromSmIdType( myMesh->NbNodes() ), + FromSmIdType( nbCells ), + /*NBoundVertex=*/0, 0,0,0,0,0,0 }; int iZone; if ( cg_zone_write( _fn, iBase, "SMESH_Mesh", size, CGNS_ENUMV( Unstructured ), &iZone) != CG_OK )