Newer
Older
MODULE advance_field_routine
USE prec_const
implicit none
CONTAINS
SUBROUTINE advance_time_level
USE time_integration, ONLY :set_updatetlevel, updatetlevel, ntimelevel
CALL set_updatetlevel(mod(updatetlevel,ntimelevel)+1)
SUBROUTINE advance_moments
USE grid, ONLY:local_na,local_np,local_nj,local_nky,local_nkx,local_nz,&
ngp_o2, ngj_o2, ngz_o2
use fields, ONLY: moments
use array, ONLY: moments_rhs
USE time_integration, ONLY: updatetlevel, A_E, b_E, ntimelevel
INTEGER :: ia, ip, ij, ikx,iky,iz, istage, ipi, iji, izi
DO istage=1,ntimelevel
DO iz =1,local_nz
DO ikx =1,local_nkx
DO iky =1,local_nky
DO ij =1,local_nj
moments(ia,ipi,iji,iky,ikx,izi,1) = moments(ia,ipi,iji,iky,ikx,izi,1) &
+ dt*b_E(istage,1)*moments_rhs(ia,ip,ij,iky,ikx,iz,istage)
END DO
END DO
END DO
END DO
END DO
END DO
END DO
moments(:,:,:,:,:,:,updatetlevel) = moments(:,:,:,:,:,:,1);
DO istage=1,ntimelevel-1
DO iz =1,local_nz
DO ikx =1,local_nkx
DO iky =1,local_nky
DO ij =1,local_nj
moments(ia,ipi,iji,iky,ikx,izi,updatetlevel) = moments(ia,ipi,iji,iky,ikx,izi,updatetlevel) + &
dt*A_E(updatetlevel,istage)*moments_rhs(ia,ip,ij,iky,ikx,iz,istage)
END DO
END DO
END DO
END DO
END DO
END DO
END DO
END SUBROUTINE advance_moments