Changeset 1390
- Timestamp:
- 01/08/18 16:46:46 (6 years ago)
- Location:
- XIOS/dev/XIOS_DEV_CMIP6/src
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/XIOS_DEV_CMIP6/src/io/nc4_data_output.cpp
r1333 r1390 128 128 for (int idx = 0; idx < nbWritten; ++idx) 129 129 { 130 writtenLat(idx) = domain->latvalue(indexToWrite(idx)); 131 writtenLon(idx) = domain->lonvalue(indexToWrite(idx)); 130 if (idx < domain->latvalue.numElements()) 131 { 132 writtenLat(idx) = domain->latvalue(indexToWrite(idx)); 133 writtenLon(idx) = domain->lonvalue(indexToWrite(idx)); 134 } 135 else 136 { 137 writtenLat(idx) = 0.; 138 writtenLon(idx) = 0.; 139 } 132 140 } 133 141 … … 143 151 for (int nv = 0; nv < nvertex; ++nv) 144 152 { 145 writtenBndsLat(nv, idx) = boundslat(nv, int(indexToWrite(idx))); 146 writtenBndsLon(nv, idx) = boundslon(nv, int(indexToWrite(idx))); 153 if (idx < boundslat.columns()) 154 { 155 writtenBndsLat(nv, idx) = boundslat(nv, int(indexToWrite(idx))); 156 writtenBndsLon(nv, idx) = boundslon(nv, int(indexToWrite(idx))); 157 } 158 else 159 { 160 writtenBndsLat(nv, idx) = 0.; 161 writtenBndsLon(nv, idx) = 0.; 162 } 147 163 } 148 164 } … … 154 170 for (int idx = 0; idx < nbWritten; ++idx) 155 171 { 156 writtenArea(idx) = domain->areavalue(indexToWrite(idx)); 172 if (idx < domain->areavalue.numElements()) 173 writtenArea(idx) = domain->areavalue(indexToWrite(idx)); 174 else 175 writtenArea(idx) = 0.; 157 176 } 158 177 } … … 940 959 for (int idx = 0; idx < nbWritten; ++idx) 941 960 { 942 writtenLat(idx) = domain->latvalue(indexToWrite(idx)); 943 writtenLon(idx) = domain->lonvalue(indexToWrite(idx)); 944 } 961 if (idx < domain->latvalue.numElements()) 962 { 963 writtenLat(idx) = domain->latvalue(indexToWrite(idx)); 964 writtenLon(idx) = domain->lonvalue(indexToWrite(idx)); 965 } 966 else 967 { 968 writtenLat(idx) = 0.; 969 writtenLon(idx) = 0.; 970 } 971 } 972 } 945 973 946 947 if (domain->hasBounds) 948 { 949 int nvertex = domain->nvertex, idx; 950 writtenBndsLat.resize(nvertex, nbWritten); 951 writtenBndsLon.resize(nvertex, nbWritten); 952 CArray<double,2>& boundslat = domain->bounds_latvalue; 953 CArray<double,2>& boundslon = domain->bounds_lonvalue; 954 for (idx = 0; idx < nbWritten; ++idx) 955 for (int nv = 0; nv < nvertex; ++nv) 974 if (domain->hasBounds) 975 { 976 int nvertex = domain->nvertex, idx; 977 writtenBndsLat.resize(nvertex, nbWritten); 978 writtenBndsLon.resize(nvertex, nbWritten); 979 CArray<double,2>& boundslat = domain->bounds_latvalue; 980 CArray<double,2>& boundslon = domain->bounds_lonvalue; 981 for (idx = 0; idx < nbWritten; ++idx) 982 { 983 for (int nv = 0; nv < nvertex; ++nv) 984 { 985 if (idx < boundslat.columns()) 956 986 { 957 987 writtenBndsLat(nv, idx) = boundslat(nv, int(indexToWrite(idx))); 958 988 writtenBndsLon(nv, idx) = boundslon(nv, int(indexToWrite(idx))); 959 989 } 990 else 991 { 992 writtenBndsLat(nv, idx) = 0.; 993 writtenBndsLon(nv, idx) = 0.; 994 } 995 } 960 996 } 961 997 } … … 966 1002 for (int idx = 0; idx < nbWritten; ++idx) 967 1003 { 968 writtenArea(idx) = domain->areavalue(indexToWrite(idx)); 1004 if (idx < domain->areavalue.numElements()) 1005 writtenArea(idx) = domain->areavalue(indexToWrite(idx)); 1006 else 1007 writtenArea(idx) = 0.; 969 1008 } 970 1009 } -
XIOS/dev/XIOS_DEV_CMIP6/src/node/domain.cpp
r1364 r1390 1902 1902 itSrve = writtenGlobalIndex.end(), itSrv; 1903 1903 1904 // for (itSrv = itSrvb; itSrv != itSrve; ++itSrv) 1905 // { 1906 // indGlo = *itSrv; 1907 // if (ite != globalLocalIndexMap_.find(indGlo)) 1908 // { 1909 // ++nbWritten; 1910 // } 1911 // } 1912 1913 // localIndexToWriteOnServer.resize(nbWritten); 1914 localIndexToWriteOnServer.resize(writtenGlobalIndex.numElements()); 1915 1916 nbWritten = 0; 1904 1917 for (itSrv = itSrvb; itSrv != itSrve; ++itSrv) 1905 1918 { 1906 1919 indGlo = *itSrv; 1907 1920 if (ite != globalLocalIndexMap_.find(indGlo)) 1908 {1909 ++nbWritten;1910 }1911 }1912 1913 localIndexToWriteOnServer.resize(nbWritten);1914 1915 nbWritten = 0;1916 for (itSrv = itSrvb; itSrv != itSrve; ++itSrv)1917 {1918 indGlo = *itSrv;1919 if (ite != globalLocalIndexMap_.find(indGlo))1920 1921 { 1921 1922 localIndexToWriteOnServer(nbWritten) = globalLocalIndexMap_[indGlo]; 1922 1923 ++nbWritten; 1923 } 1924 } 1925 else 1926 { 1927 localIndexToWriteOnServer(nbWritten) = 0; 1928 ++nbWritten; 1929 } 1924 1930 } 1925 1931 -
XIOS/dev/XIOS_DEV_CMIP6/src/node/grid.hpp
r1353 r1390 475 475 if (2 == axisDomainOrder(i)) 476 476 { 477 maskValue = maskValue && (*domainMasks[idxDomain])(idxLoop[indexMap[i]] + idxLoop[indexMap[i]+1] * eachDimSize[indexMap[i]]); 477 int idxTmp = idxLoop[indexMap[i]] + idxLoop[indexMap[i]+1] * eachDimSize[indexMap[i]]; 478 if (idxTmp < (*domainMasks[idxDomain]).numElements()) 479 maskValue = maskValue && (*domainMasks[idxDomain])(idxTmp); 480 else 481 maskValue = false; 478 482 ++idxDomain; 479 483 }
Note: See TracChangeset
for help on using the changeset viewer.