Fix IDX2IJK and IJK2IDX for LPK.

MixedI8
Salvatore Filippone 8 years ago
parent 211aecc347
commit d099c19d89

@ -257,10 +257,17 @@ contains
! j = mod(idx_/nz,ny) + base_ ! j = mod(idx_/nz,ny) + base_
! i = mod(idx_/(nx*ny),nx) + base_ ! i = mod(idx_/(nx*ny),nx) + base_
! !
if (col_major) then
do i=1,size(dims)
coords(i) = mod(idx_,dims(i)) + base_
idx_ = idx_ / dims(i)
end do
else
do i=size(dims),1,-1 do i=size(dims),1,-1
coords(i) = mod(idx_,dims(i)) + base_ coords(i) = mod(idx_,dims(i)) + base_
idx_ = idx_ / dims(i) idx_ = idx_ / dims(i)
end do end do
end if
end subroutine lidx2ijkv end subroutine lidx2ijkv
@ -341,10 +348,17 @@ contains
! j = mod(idx_/nz,ny) + base_ ! j = mod(idx_/nz,ny) + base_
! i = mod(idx_/(nx*ny),nx) + base_ ! i = mod(idx_/(nx*ny),nx) + base_
! !
if (col_major) then
do i=1,size(dims)
coords(i) = mod(idx_,dims(i)) + base_
idx_ = idx_ / dims(i)
end do
else
do i=size(dims),1,-1 do i=size(dims),1,-1
coords(i) = mod(idx_,dims(i)) + base_ coords(i) = mod(idx_,dims(i)) + base_
idx_ = idx_ / dims(i) idx_ = idx_ / dims(i)
end do end do
end if
end subroutine lidx2lijkv end subroutine lidx2lijkv
! !
@ -447,11 +461,19 @@ contains
return return
end if end if
if (col_major) then
idx = coords(sz) - base_
do i=sz-1,1,-1
idx = (idx * dims(i)) + coords(i) - base_
end do
idx = idx + base_
else
idx = coords(1) - base_ idx = coords(1) - base_
do i=2, sz do i=2,sz
idx = (idx * dims(i)) + coords(i) - base_ idx = (idx * dims(i)) + coords(i) - base_
end do end do
idx = idx + base_ idx = idx + base_
end if
end subroutine ijk2lidxv end subroutine ijk2lidxv
! !
@ -509,11 +531,19 @@ contains
return return
end if end if
if (col_major) then
idx = coords(sz) - base_
do i=sz-1,1,-1
idx = (idx * dims(i)) + coords(i) - base_
end do
idx = idx + base_
else
idx = coords(1) - base_ idx = coords(1) - base_
do i=2, sz do i=2,sz
idx = (idx * dims(i)) + coords(i) - base_ idx = (idx * dims(i)) + coords(i) - base_
end do end do
idx = idx + base_ idx = idx + base_
end if
end subroutine lijk2lidxv end subroutine lijk2lidxv
! !

Loading…
Cancel
Save