Changeset 1083
- Timestamp:
- 04/07/17 17:30:28 (8 years ago)
- Location:
- XIOS/trunk
- Files:
-
- 3 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/bld.cfg
r1078 r1083 33 33 bld::target generate_fortran_interface.exe 34 34 bld::target xios_server.exe 35 bld::target test_remap.exe 36 bld::target test_regular.exe 37 bld::target test_new_features.exe test_unstruct_complete.exe 35 #bld::target test_remap.exe 36 #bld::target test_regular.exe 37 #bld::target test_expand_domain.exe 38 #bld::target test_new_features.exe test_unstruct_complete.exe 38 39 bld::target test_client.exe test_complete.exe test_xios2_cmip6.exe 39 bld::target test_connectivity_expand.exe40 #bld::target test_connectivity_expand.exe 40 41 bld::exe_dep 41 42 -
XIOS/trunk/src/transformation/domain_algorithm_expand.cpp
r1078 r1083 57 57 58 58 this->type_ = (ELEMENT_MODIFICATION_WITH_DATA); 59 // Make sure domain source have all valid attributes 60 // domainSource->checkAllAttributes(); 59 61 expandDomain->checkValid(domainDestination); 60 62 if (!expandDomain->i_periodic.isEmpty()) isXPeriodic_ = expandDomain->i_periodic; 61 63 if (!expandDomain->j_periodic.isEmpty()) isYPeriodic_ = expandDomain->j_periodic; 62 64 63 65 switch (expandDomain->type) 64 66 { … … 164 166 int niSrc = domainSource->ni, ibegin = domainSource->ibegin; 165 167 int njSrc = domainSource->nj, jbegin = domainSource->jbegin; 168 int dataDimSrc = domainSource->data_dim; 166 169 CArray<bool,1>& mask_1d_src = domainSource->mask_1d; 167 170 CArray<int,1>& i_index_src = domainSource->i_index; … … 190 193 int nVertex = bounds_lon_src.shape()[0]; 191 194 int oldNbLocal = i_index_src.numElements(); 192 int dataIindexBoundSrc = max(i_index_src) - min(i_index_src); 193 int dataJindexBoundSrc = max(j_index_src) - min(j_index_src); 195 // Calculate ni, nj by using i_index and j_index 196 int niSrcByIndex = max(i_index_src) - min(i_index_src) + 1; 197 int njSrcByIndex = max(j_index_src) - min(j_index_src) + 1; 198 int dataIindexBoundSrc = (1 == dataDimSrc) ? (niSrcByIndex * njSrcByIndex) : niSrcByIndex; 199 int dataJindexBoundSrc = (1 == dataDimSrc) ? (niSrcByIndex * njSrcByIndex) : njSrcByIndex; 194 200 195 201 // Uncompress data_i_index, data_j_index … … 203 209 int dataIidx = data_i_index_src(idx) + data_i_begin_src; 204 210 int dataJidx = data_j_index_src(idx) + data_j_begin_src; 205 if ((0 <= dataIidx) && (dataIidx < =dataIindexBoundSrc) &&206 (0 <= dataJidx) && (dataJidx < =dataJindexBoundSrc))211 if ((0 <= dataIidx) && (dataIidx < dataIindexBoundSrc) && 212 (0 <= dataJidx) && (dataJidx < dataJindexBoundSrc)) 207 213 { 208 214 data_i_index_src_full(nbUnMaskedPointOnLocalDomain) = dataIidx; … … 263 269 j_index_dst(idx) = j + jbegin; 264 270 } 265 266 271 267 272 … … 409 414 410 415 // Finally, update data_i_index, data_j_index 416 int dataDstDim = domainDestination->data_dim; 411 417 data_i_index_dst.resize(nbUnMaskedPointOnExtendedPart); 412 418 data_j_index_dst.resize(nbUnMaskedPointOnExtendedPart); … … 418 424 if ((0 <= dataIIndex) && (0 <= dataJIndex)) 419 425 { 420 data_i_index_dst(count) = i_index_dst(idx) - i_index_dst(0);421 data_j_index_dst(count) = j_index_dst(idx) - j_index_dst(0);426 data_i_index_dst(count) = (1 == dataDstDim) ? idx : i_index_dst(idx) - i_index_dst(0); 427 data_j_index_dst(count) = (1 == dataDstDim) ? 0 : j_index_dst(idx) - j_index_dst(0); 422 428 ++count; 423 429 } … … 425 431 426 432 // Update data_ni, data_nj 427 domainDestination->data_ni.setValue(niDst); 428 domainDestination->data_nj.setValue(njDst); 433 434 domainDestination->data_ni.setValue((1==dataDstDim) ? niDst * njDst : niDst); 435 domainDestination->data_nj.setValue((1==dataDstDim) ? niDst * njDst : njDst); 429 436 domainDestination->data_ibegin.setValue(0); 430 437 domainDestination->data_jbegin.setValue(0); 431 432 438 433 439 // Update longitude and latitude
Note: See TracChangeset
for help on using the changeset viewer.