Changeset 2409 for XIOS3/trunk/src/node/file.cpp
- Timestamp:
- 10/04/22 14:04:11 (21 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS3/trunk/src/node/file.cpp
r2400 r2409 863 863 std::vector<int> domainNvertices; 864 864 std::vector<StdString> domainNames; 865 std::map<string, tuple<set<CDomain*>,set<CDomain*>,set<CDomain*>>> registeredDomains ; 865 866 866 867 for (int i = 0; i < size; ++i) … … 905 906 domainNvertices.push_back(nvertex); 906 907 } 908 909 if (nvertex==1) std::get<0>(registeredDomains[domainName]).insert(domain[0]) ; 910 else if (nvertex==2) std::get<1>(registeredDomains[domainName]).insert(domain[0]) ; 911 else std::get<2>(registeredDomains[domainName]).insert(domain[0]) ; 912 } 913 914 for(auto& it:registeredDomains) 915 { 916 list<CDomain*> domains ; 917 string domainName=it.first ; 918 919 for(auto& domain : std::get<0>(it.second) ) domains.push_back(domain) ; 920 for(auto& domain : std::get<1>(it.second) ) domains.push_back(domain) ; 921 for(auto& domain : std::get<2>(it.second) ) domains.push_back(domain) ; 922 923 // for each component of a given mesh (i.e. domains with same name but different number of vertices) 924 // associate the UGRID mesh in increasing order 925 for(auto& domain : domains ) 926 { 927 //domain-> computeWrittenIndex(); 928 //CArray<int, 1>& indexToWrite = domain->localIndexToWriteOnServer; 929 CArray<int, 1> indexToWrite = domain->getLocalView(CElementView::WORKFLOW)->getIndex(); 930 int nbWritten = indexToWrite.numElements(); 931 932 CArray<double,1> writtenLat, writtenLon; 933 CArray<double,2> writtenBndsLat, writtenBndsLon; 934 935 writtenLat.resize(nbWritten); 936 writtenLon.resize(nbWritten); 937 for (int idx = 0; idx < nbWritten; ++idx) 938 { 939 writtenLat(idx) = domain->latvalue(indexToWrite(idx)); 940 writtenLon(idx) = domain->lonvalue(indexToWrite(idx)); 941 } 942 943 int nvertex = domain->nvertex, idx; 944 if (nvertex>1) 945 { 946 writtenBndsLat.resize(nvertex, nbWritten); 947 writtenBndsLon.resize(nvertex, nbWritten); 948 CArray<double,2>& boundslat = domain->bounds_latvalue; 949 CArray<double,2>& boundslon = domain->bounds_lonvalue; 950 for (idx = 0; idx < nbWritten; ++idx) 951 for (int nv = 0; nv < nvertex; ++nv) 952 { 953 writtenBndsLat(nv, idx) = boundslat(nv, int(indexToWrite(idx))); 954 writtenBndsLon(nv, idx) = boundslon(nv, int(indexToWrite(idx))); 955 } 956 } 957 domain->assignMesh(domainName, domain->nvertex); 958 //CContextServer* server=CContext::getCurrent()->server ; 959 //domain->mesh->createMeshEpsilon(server->intraComm, writtenLon, writtenLat, writtenBndsLon, writtenBndsLat); 960 MPI_Comm intraComm =CContext::getCurrent()->getIntraComm() ; 961 domain->mesh->createMeshEpsilon(intraComm, writtenLon, writtenLat, writtenBndsLon, writtenBndsLat); 962 } 963 907 964 } 908 965 }
Note: See TracChangeset
for help on using the changeset viewer.