subroutine fill_3d_tensor_int32(tensor, alpha, threaded)
!! fill a tensor of datatype int32 with a value
integer(int32), intent(inout) :: tensor(:, :, :)
integer(int32), intent(in) :: alpha
integer(default_int) :: i, j, k
integer(default_int) :: ii, jj, kk
integer(default_int) :: nx, ny, nz
logical, intent(in), optional :: threaded
logical :: use_threads
nx = size(tensor, 1)
ny = size(tensor, 2)
nz = size(tensor, 3)
use_threads = pic_optional(threaded, use_threaded_default)
if (use_threads) then
!$omp parallel do collapse(3) private(i,j,k,ii,jj,kk)
do kk = 1, nz, block_size
do jj = 1, ny, block_size
do ii = 1, nx, block_size
do k = kk, min(kk + block_size - 1, nz)
do j = jj, min(jj + block_size - 1, ny)
do i = ii, min(ii + block_size - 1, nx)
tensor(i, j, k) = alpha
end do
end do
end do
end do
end do
end do
!$omp end parallel do
else
tensor = alpha
end if
end subroutine fill_3d_tensor_int32