Changeset 4499 for palm/trunk/UTIL/inifor/src/inifor_util.f90
- Timestamp:
- Apr 16, 2020 3:51:56 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/UTIL/inifor/src/inifor_util.f90
r4481 r4499 26 26 ! ----------------- 27 27 ! $Id$ 28 ! Bugfix: avoid using already overwritten elements in 'reverse' subroutine 29 ! 30 ! 31 ! 4481 2020-03-31 18:55:54Z maronga 28 32 ! Bugfix: use explicit loop in 'reverse' subroutine instead of implicit loop 29 33 ! … … 272 276 SUBROUTINE reverse(input_arr) 273 277 274 INTEGER :: i 278 INTEGER :: idx, opposite_idx, half_idx 279 INTEGER :: size_1st_dimension 280 INTEGER :: size_2nd_dimension 281 INTEGER :: size_3rd_dimension 275 282 INTEGER :: lbound_3rd_dimension 276 283 INTEGER :: ubound_3rd_dimension 277 284 278 285 REAL(wp), INTENT(INOUT) :: input_arr(:,:,:) 286 REAL(wp), ALLOCATABLE :: buffer_arr(:,:) 279 287 280 288 lbound_3rd_dimension = LBOUND(input_arr, 3) 281 289 ubound_3rd_dimension = UBOUND(input_arr, 3) 282 283 DO i = lbound_3rd_dimension, ubound_3rd_dimension 284 input_arr(:,:,i) = input_arr(:,:, & 285 ubound_3rd_dimension - ( i - lbound_3rd_dimension )) 290 size_1st_dimension = SIZE(input_arr, 1) 291 size_2nd_dimension = SIZE(input_arr, 2) 292 size_3rd_dimension = SIZE(input_arr, 3) 293 half_idx = lbound_3rd_dimension + size_3rd_dimension / 2 - 1 294 295 ALLOCATE( buffer_arr(size_1st_dimension, size_2nd_dimension) ) 296 297 DO idx = lbound_3rd_dimension, half_idx 298 opposite_idx = ubound_3rd_dimension - ( idx - lbound_3rd_dimension ) 299 buffer_arr(:,:) = input_arr(:,:,idx) 300 input_arr(:,:,idx) = input_arr(:,:,opposite_idx) 301 input_arr(:,:,opposite_idx) = buffer_arr(:,:) 286 302 ENDDO 303 304 DEALLOCATE( buffer_arr ) 287 305 288 306 END SUBROUTINE reverse
Note: See TracChangeset
for help on using the changeset viewer.