FIXME : Add documentation
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(dens_vel_diagnostics), | intent(inout), | dimension(:,:) | :: | dvk | ||
type(dens_vel_diagnostics), | intent(inout), | dimension (:,:,0:) | :: | dvk_hist | ||
integer, | intent(in) | :: | istep | |||
integer, | intent(in) | :: | navg |
subroutine avg_dvk (dvk, dvk_hist, istep, navg)
use mp, only: proc0
implicit none
type (dens_vel_diagnostics), dimension(:,:), intent(in out) :: dvk
type (dens_vel_diagnostics), dimension (:,:,0:), intent(in out) :: dvk_hist
integer, intent (in) :: istep, navg
integer :: i, m, n, mmax, nmax
mmax = size(dvk, 1)
nmax = size(dvk, 2)
if (proc0) then
if (navg > 1) then
if (istep > 1) then
do n=1,nmax
do m=1,mmax
dvk_hist(m,n,mod(istep,navg)) % dvpar(:) = dvk(m,n) % dvpar(:)
dvk_hist(m,n,mod(istep,navg)) % dvperp(:) = dvk(m,n) % dvperp(:)
dvk_hist(m,n,mod(istep,navg)) % dn(:) = dvk(m,n) % dn(:)
enddo
enddo
end if
if (istep >= navg) then
call zero_dvtype (dvk)
do n=1,nmax
do m=1,mmax
do i=0,navg-1
dvk(m,n) % dvpar(:) = dvk(m,n) % dvpar(:) + dvk_hist(m,n,i) % dvpar(:) / real(navg)
dvk(m,n) % dvperp(:) = dvk(m,n) % dvperp(:) + dvk_hist(m,n,i) % dvperp(:) / real(navg)
dvk(m,n) % dn(:) = dvk(m,n) % dn(:) + dvk_hist(m,n,i) % dn (:) / real(navg)
end do
enddo
enddo
end if
end if
end if
end subroutine avg_dvk