Newer
Older
MODULE advance_field_routine
USE prec_const
implicit none
CONTAINS
SUBROUTINE advance_time_level
USE basic
USE time_integration
use prec_const
IMPLICIT NONE
CALL set_updatetlevel(mod(updatetlevel,ntimelevel)+1)
SUBROUTINE advance_moments
USE basic
USE time_integration
USE grid
use prec_const
USE model, ONLY: CLOS
use fields, ONLY: moments
use array, ONLY: moments_rhs
INTEGER :: p_int, j_int, ia, ip, ij
DO ia=ias,iae
DO ip=ips,ipe
p_int = parray(ip)
DO ij=ijs,ije
j_int = jarray(ij)
IF((CLOS .NE. 1) .OR. (p_int+2*j_int .LE. dmax))&
CALL advance_field(moments(ia,ip,ij,ikys:ikye,ikxs:ikxe,izs:ize,:), moments_rhs(ia,ip,ij,ikys:ikye,ikxs:ikxe,izs:ize,:))
! Execution time end
CALL cpu_time(t1_adv_field)
tc_adv_field = tc_adv_field + (t1_adv_field - t0_adv_field)
END SUBROUTINE advance_moments
SUBROUTINE advance_field( f, f_rhs )
USE basic
USE time_integration
USE array
COMPLEX(dp), DIMENSION ( ikys:ikye, ikxs:ikxe, izs:ize, ntimelevel ) :: f
COMPLEX(dp), DIMENSION ( ikys:ikye, ikxs:ikxe, izs:ize, ntimelevel ) :: f_rhs
f(ikys:ikye,ikxs:ikxe,izs:ize,1) = f(ikys:ikye,ikxs:ikxe,izs:ize,1) &
+ dt*b_E(istage)*f_rhs(ikys:ikye,ikxs:ikxe,izs:ize,istage)
f(ikys:ikye,ikxs:ikxe,izs:ize,updatetlevel) = f(ikys:ikye,ikxs:ikxe,izs:ize,1);
f(ikys:ikye,ikxs:ikxe,izs:ize,updatetlevel) = f(ikys:ikye,ikxs:ikxe,izs:ize,updatetlevel) + &
dt*A_E(updatetlevel,istage)*f_rhs(ikys:ikye,ikxs:ikxe,izs:ize,istage)
END SELECT
END SUBROUTINE advance_field
END MODULE advance_field_routine