Changeset 949 for XIOS/trunk/src
- Timestamp:
- 09/23/16 14:21:06 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/transformation/domain_algorithm_interpolate.cpp
r933 r949 170 170 bool isNorthPole = false; 171 171 bool isSouthPole = false; 172 if (std::abs(poleValue - std::abs(domainDest_->lat_start)) < NumTraits<double>::epsilon()) isNorthPole = true;173 if (std::abs(poleValue - std::abs(domainDest_->lat_end)) < NumTraits<double>::epsilon()) isSouthPole = true;174 172 175 173 CArray<double,1> lon_g ; … … 178 176 if (!domainDest_->lonvalue_1d.isEmpty() && !domainDest_->latvalue_1d.isEmpty()) 179 177 { 180 domainDest_->AllgatherRectilinearLonLat(domainDest_->lonvalue_1d,domainDest_->latvalue_1d, lon_g,lat_g) ; 181 } 182 else if (! domainDest_->latvalue_rectilinear_read_from_file.isEmpty() && ! domainDest_->lonvalue_rectilinear_read_from_file.isEmpty() ) 183 { 184 lat_g=domainDest_->latvalue_rectilinear_read_from_file ; 185 lon_g=domainDest_->lonvalue_rectilinear_read_from_file ; 186 } 187 else if (!domainDest_->lon_start.isEmpty() && !domainDest_->lon_end.isEmpty() && 188 !domainDest_->lat_start.isEmpty() && !domainDest_->lat_end.isEmpty()) 189 { 190 double step=(domainDest_->lon_end-domainDest_->lon_start)/domainDest_->ni_glo ; 191 for(int i=0; i<domainDest_->ni_glo; ++i) lon_g(i)=domainDest_->lon_start+i*step ; 192 step=(domainDest_->lat_end-domainDest_->lat_start)/domainDest_->nj_glo ; 193 for(int i=0; i<domainDest_->ni_glo; ++i) lat_g(i)=domainDest_->lat_start+i*step ; 194 } 195 else ERROR("void CDomainAlgorithmInterpolate::computeRemap()",<<"Cannot compute bounds for rectilinear domain") ; 178 domainDest_->AllgatherRectilinearLonLat(domainDest_->lonvalue_1d,domainDest_->latvalue_1d, lon_g,lat_g) ; 179 } 180 else if (! domainDest_->latvalue_rectilinear_read_from_file.isEmpty() && ! domainDest_->lonvalue_rectilinear_read_from_file.isEmpty() ) 181 { 182 lat_g=domainDest_->latvalue_rectilinear_read_from_file ; 183 lon_g=domainDest_->lonvalue_rectilinear_read_from_file ; 184 } 185 else if (!domainDest_->lon_start.isEmpty() && !domainDest_->lon_end.isEmpty() && 186 !domainDest_->lat_start.isEmpty() && !domainDest_->lat_end.isEmpty()) 187 { 188 double step=(domainDest_->lon_end-domainDest_->lon_start)/domainDest_->ni_glo ; 189 for(int i=0; i<domainDest_->ni_glo; ++i) lon_g(i)=domainDest_->lon_start+i*step ; 190 step=(domainDest_->lat_end-domainDest_->lat_start)/domainDest_->nj_glo ; 191 for(int i=0; i<domainDest_->ni_glo; ++i) lat_g(i)=domainDest_->lat_start+i*step ; 192 } 193 else ERROR("void CDomainAlgorithmInterpolate::computeRemap()",<<"Cannot compute bounds for rectilinear domain") ; 194 196 195 if (std::abs(poleValue - std::abs(lat_g(0))) < NumTraits<double>::epsilon()) isNorthPole = true; 197 196 if (std::abs(poleValue - std::abs(lat_g(domainDest_->nj_glo-1))) < NumTraits<double>::epsilon()) isSouthPole = true;
Note: See TracChangeset
for help on using the changeset viewer.