Ignore:
Timestamp:
10/25/21 14:34:40 (3 months ago)
Author:
ymipsl
Message:

Fix issue for Ugrid convention output.

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/node/mesh.cpp

    r2200 r2250  
    427427    if (nvertex == 1) 
    428428    { 
     429      if (nodesAreWritten) return ; 
     430 
    429431      nbNodes_ = lonvalue.numElements(); 
    430432      node_lon.resize(nbNodes_); 
     
    449451      for (size_t nn = 0; nn < nbNodes_; ++nn) 
    450452      { 
     453        cout<<"MESH : "<<"node inserted : ("<< lonvalue(nn)<<","<< latvalue(nn)<<") index glo "<<nodeStart + nn<<" : hash =>   " ; 
    451454        hashValues = CMesh::createHashes(lonvalue(nn), latvalue(nn)); 
    452455        for (size_t nh = 0; nh < 4; ++nh) 
    453456        { 
    454           nodeHash2IdxGlo[hashValues[nh]].push_back(nodeStart + nn);  
    455         } 
     457          nodeHash2IdxGlo[hashValues[nh]].push_back(nodeStart + nn); 
     458          cout<<hashValues[nh]<<"    "; 
     459        } 
     460        cout<<endl ; 
    456461      } 
    457462      pNodeGlobalIndex = new CClientClientDHTSizet (nodeHash2IdxGlo, comm); 
     
    462467    else if (nvertex == 2) 
    463468    { 
     469      if (edgesAreWritten) return ; 
     470 
    464471      nbEdges_ = bounds_lon.shape()[1]; 
    465472      edge_lon.resize(nbEdges_); 
     
    508515        for (int ne = 0; ne < nbEdges_; ++ne) 
    509516        { 
     517          cout<<"MESH : "<<"insert edge " ; 
    510518          for (int nv = 0; nv < nvertex; ++nv) 
    511519          { 
     
    524532            else 
    525533              nodeIdxGlo2 = it->second[0]; 
     534            
     535            cout<<"("<<bounds_lon(nv, ne)<<","<<bounds_lat(nv, ne)<<")" ; 
    526536          } 
    527537          size_t edgeIdxGlo = nbEdgesAccum + ne; 
    528538          edgeHash2IdxGlo[ hashPairOrdered(nodeIdxGlo1, nodeIdxGlo2) ].push_back(edgeIdxGlo); 
     539          cout<<"  nodes Id : "<<nodeIdxGlo1<<"&"<<nodeIdxGlo2<<" ; edge Id : "<<edgeIdxGlo<<" with hash : "<<hashPairOrdered(nodeIdxGlo1, nodeIdxGlo2)<<endl ; 
    529540        } 
    530541      } // nodesAreWritten 
     
    689700    else // nvertex > 2 
    690701    { 
     702      if (facesAreWritten) return ; 
     703 
    691704      nbFaces_ = bounds_lon.shape()[1]; 
    692705      face_lon.resize(nbFaces_); 
     
    702715      MPI_Scan(&nbFacesOnProc, &nbFacesAccum, 1, MPI_UNSIGNED_LONG, MPI_SUM, comm); 
    703716      nbFacesAccum -= nbFaces_; 
     717      cout<<bounds_lon<<endl ; 
     718      cout<<bounds_lat<<endl ; 
    704719 
    705720      // Case (1): edges have been previously generated 
     
    722737        CClientClientDHTSizet::Index2VectorInfoTypeMap::iterator it1, it2; 
    723738        CArray<size_t,1> edgeHashList(nbFaces_*nvertex); 
     739 
    724740        size_t nEdge = 0; 
    725741        for (int nf = 0; nf < nbFaces_; ++nf) 
     
    784800              size_t faceIdxGlo = nbFacesAccum + nf; 
    785801              size_t edgeHash = hashPairOrdered(it1->second[0], it2->second[0]); 
     802              cout<<"MESH : "<<"find edge : ("<<bounds_lon(nv1,nf)<<","<<bounds_lat(nv1,nf)<<")&("<<bounds_lon(nv2,nf)<<","<<bounds_lat(nv2,nf) 
     803                  <<") ;  edgeHash "<<edgeHash<<" with node index : "<<it1->second[0]<<" & "<<it2->second[0]<<endl ; 
    786804              itEdgeHash = edgeHash2IdxGlo.find(edgeHash); 
    787805              size_t edgeIdxGlo = itEdgeHash->second[0]; 
     
    13081326        } 
    13091327 
    1310 //        CDHTAutoIndexing dhtNodeIdxGlo = CDHTAutoIndexing(nodeIdx2Idx, comm); 
     1328        //        CDHTAutoIndexing dhtNodeIdxGlo = CDHTAutoIndexing(nodeIdx2Idx, comm); 
    13111329        // CDHTAutoIndexing will not give consistent node numbering for varying number of procs. => 
    13121330        // Solution: global node indexing by hand. 
     
    13511369        // (3.3) Saving node data: node_lon, node_lat, and face_nodes 
    13521370        // Generating edgeHash2Info = <hash, <idx, rank>> and edgeHashList 
    1353 //        nbNodesGlo = dhtNodeIdxGlo.getNbIndexesGlobal(); 
    1354 //        node_count = dhtNodeIdxGlo.getIndexCount(); 
    1355 //        node_start = dhtNodeIdxGlo.getIndexStart(); 
     1371         
     1372        //        nbNodesGlo = dhtNodeIdxGlo.getNbIndexesGlobal(); 
     1373        //        node_count = dhtNodeIdxGlo.getIndexCount(); 
     1374        //        node_start = dhtNodeIdxGlo.getIndexStart(); 
    13561375        node_lon.resize(node_count); 
    13571376        node_lat.resize(node_count); 
     
    14821501        // (3.5) Saving variables: edge_lon, edge_lat, face_edges 
    14831502        // Creating map edgeIdxGlo2Face <idxGlo, face> 
    1484 //        nbEdgesGlo = dhtEdgeIdxGlo.getNbIndexesGlobal(); 
    1485 //        edge_count = dhtEdgeIdxGlo.getIndexCount(); 
    1486 //        edge_start = dhtEdgeIdxGlo.getIndexStart(); 
     1503        //        nbEdgesGlo = dhtEdgeIdxGlo.getNbIndexesGlobal(); 
     1504        //        edge_count = dhtEdgeIdxGlo.getIndexCount(); 
     1505        //        edge_start = dhtEdgeIdxGlo.getIndexStart(); 
    14871506 
    14881507        edge_lon.resize(edge_count); 
Note: See TracChangeset for help on using the changeset viewer.