diff --git a/src/closure_mod.F90 b/src/closure_mod.F90 index dc37e2f54b348cdfaa4713966fff9cffd65633ea..f8846d4a0ee44df96cc02e0d6ff22bc05e580bba 100644 --- a/src/closure_mod.F90 +++ b/src/closure_mod.F90 @@ -12,6 +12,7 @@ PUBLIC :: apply_closure_model CONTAINS +! Positive Oob indices are approximated with a model SUBROUTINE apply_closure_model IMPLICIT NONE complex(dp) :: i_kz @@ -27,46 +28,80 @@ SUBROUTINE apply_closure_model sqpp1p_i = SQRT((pmaxi_dp+1)*(pmaxi_dp)) CALL cpu_time(t0_clos) - ! Positive Oob indices are approximated with a model - IF (CLOS .EQ. 0) THEN - ! zero truncation, An+1=0 for n+1>nmax - DO ikr = ikrs,ikre - DO ikz = ikzs,ikze +! zero truncation, An+1=0 for n+1>nmax + IF (CLOS .EQ. 0) THEN + DO ikr = ikrs,ikre + DO ikz = ikzs,ikze - DO ip = ipsg_e,ipeg_e - moments_e(ip,ijsg_e,ikr,ikz,updatetlevel) = 0._dp - moments_e(ip,ijeg_e,ikr,ikz,updatetlevel) = 0._dp - ENDDO - DO ij = ijsg_e,ijeg_e - moments_e(ipsg_e+1,ij,ikr,ikz,updatetlevel) = 0._dp - moments_e(ipsg_e ,ij,ikr,ikz,updatetlevel) = 0._dp - moments_e(ipeg_e-1,ij,ikr,ikz,updatetlevel) = 0._dp - moments_e(ipeg_e ,ij,ikr,ikz,updatetlevel) = 0._dp - ENDDO - kernel_e(ijsg_e,ikr,ikz) = 0._dp - kernel_e(ijeg_e,ikr,ikz) = 0._dp + DO ip = ipsg_e,ipeg_e + moments_e(ip,ijsg_e,ikr,ikz,updatetlevel) = 0._dp + moments_e(ip,ijeg_e,ikr,ikz,updatetlevel) = 0._dp + ENDDO + DO ij = ijsg_e,ijeg_e + moments_e(ipsg_e+1,ij,ikr,ikz,updatetlevel) = 0._dp + moments_e(ipsg_e ,ij,ikr,ikz,updatetlevel) = 0._dp + moments_e(ipeg_e-1,ij,ikr,ikz,updatetlevel) = 0._dp + moments_e(ipeg_e ,ij,ikr,ikz,updatetlevel) = 0._dp + ENDDO + kernel_e(ijsg_e,ikr,ikz) = 0._dp + kernel_e(ijeg_e,ikr,ikz) = 0._dp + + DO ip = ipsg_i,ipeg_i + moments_i(ip,ijsg_i,ikr,ikz,updatetlevel) = 0._dp + moments_i(ip,ijeg_i,ikr,ikz,updatetlevel) = 0._dp + ENDDO + DO ij = ijsg_i,ijeg_i + moments_i(ipsg_i+1,ij,ikr,ikz,updatetlevel) = 0._dp + moments_i(ipsg_i ,ij,ikr,ikz,updatetlevel) = 0._dp + moments_i(ipeg_i-1,ij,ikr,ikz,updatetlevel) = 0._dp + moments_i(ipeg_i ,ij,ikr,ikz,updatetlevel) = 0._dp + ENDDO + kernel_i(ijsg_i,ikr,ikz) = 0._dp + kernel_i(ijeg_i,ikr,ikz) = 0._dp + + ENDDO + ENDDO - DO ip = ipsg_i,ipeg_i - moments_i(ip,ijsg_i,ikr,ikz,updatetlevel) = 0._dp - moments_i(ip,ijeg_i,ikr,ikz,updatetlevel) = 0._dp - ENDDO - DO ij = ijsg_i,ijeg_i - moments_i(ipsg_i+1,ij,ikr,ikz,updatetlevel) = 0._dp - moments_i(ipsg_i ,ij,ikr,ikz,updatetlevel) = 0._dp - moments_i(ipeg_i-1,ij,ikr,ikz,updatetlevel) = 0._dp - moments_i(ipeg_i ,ij,ikr,ikz,updatetlevel) = 0._dp - ENDDO - kernel_i(ijsg_i,ikr,ikz) = 0._dp - kernel_i(ijeg_i,ikr,ikz) = 0._dp + ! zero truncation, An+1=0 for n+1>nmax + ELSEIF (CLOS .EQ. 1) THEN + DO ikr = ikrs,ikre + DO ikz = ikzs,ikze + DO ip = ipsg_e,ipeg_e + moments_e(ip,ijsg_e,ikr,ikz,updatetlevel) = 0._dp + moments_e(ip,ijeg_e,ikr,ikz,updatetlevel) = 0._dp ENDDO + DO ij = ijsg_e,ijeg_e + moments_e(ipsg_e+1,ij,ikr,ikz,updatetlevel) = 0._dp + moments_e(ipsg_e ,ij,ikr,ikz,updatetlevel) = 0._dp + moments_e(ipeg_e-1,ij,ikr,ikz,updatetlevel) = 0._dp + moments_e(ipeg_e ,ij,ikr,ikz,updatetlevel) = 0._dp + ENDDO + kernel_e(ijsg_e,ikr,ikz) = 0._dp + kernel_e(ijeg_e,ikr,ikz) = 0._dp + + DO ip = ipsg_i,ipeg_i + moments_i(ip,ijsg_i,ikr,ikz,updatetlevel) = 0._dp + moments_i(ip,ijeg_i,ikr,ikz,updatetlevel) = 0._dp + ENDDO + DO ij = ijsg_i,ijeg_i + moments_i(ipsg_i+1,ij,ikr,ikz,updatetlevel) = 0._dp + moments_i(ipsg_i ,ij,ikr,ikz,updatetlevel) = 0._dp + moments_i(ipeg_i-1,ij,ikr,ikz,updatetlevel) = 0._dp + moments_i(ipeg_i ,ij,ikr,ikz,updatetlevel) = 0._dp + ENDDO + kernel_i(ijsg_i,ikr,ikz) = 0._dp + kernel_i(ijeg_i,ikr,ikz) = 0._dp + ENDDO - ELSE - if(my_id .EQ. 0) write(*,*) '! Closure scheme not found !' + ENDDO + ELSE + if(my_id .EQ. 0) write(*,*) '! Closure scheme not found !' + + ENDIF - ENDIF + CALL cpu_time(t1_clos) + tc_clos = tc_clos + (t1_clos - t0_clos) +END SUBROUTINE apply_closure_model - CALL cpu_time(t1_clos) - tc_clos = tc_clos + (t1_clos - t0_clos) - END SUBROUTINE apply_closure_model END module closure