Average cube along spatial axis depending on level n
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nside | nside of the cube |
||
real(kind=xp), | intent(in), | dimension(:,:,:), allocatable | :: | cube | cube |
|
real(kind=xp), | intent(inout), | dimension(:,:,:), allocatable | :: | cube_mean | average cube |
subroutine mean_array(nside, cube, cube_mean)
!! Average cube along spatial axis depending on level n
implicit none
integer, intent(in) :: nside !! nside of the cube
real(xp), intent(in), dimension(:,:,:), allocatable :: cube !! cube
real(xp), intent(inout), dimension(:,:,:), allocatable :: cube_mean !! average cube
integer :: i, j, k, l, n
real(xp), dimension(:), allocatable :: spectrum
allocate(spectrum(size(cube,dim=1)))
spectrum = 0.
n = size(cube, dim=2) / nside
do i=1,size(cube_mean,dim=2)
do j=1,size(cube_mean,dim=3)
do k=1,n
do l=1,n
spectrum = spectrum + cube(:,k+((i-1)*n),l+((j-1)*n))
enddo
enddo
spectrum = spectrum / (n**2)
cube_mean(:,i,j) = spectrum
spectrum = 0.
enddo
enddo
end subroutine mean_array