diff --git a/MNH/advec_ppm_algo.f90 b/MNH/advec_ppm_algo.f90 index c5cadd21140cc3e986d8f6093e6b1490567cbfa6..834360306225394b154ed49dd291ebe24330016b 100644 --- a/MNH/advec_ppm_algo.f90 +++ b/MNH/advec_ppm_algo.f90 @@ -10,13 +10,55 @@ ! CONTAINS ! -! -! ! ########################################################################## SUBROUTINE ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, KGRID, PFIELDT, & PRHODJ, PTSTEP, & PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1,PRHOZ2,& PSRC, KTCOUNT, PCRU, PCRV, PCRW) + + USE MODE_MNH_ZWORK, ONLY : ZT3D, MNH_GET_ZT3D , MNH_REL_ZT3D +! +IMPLICIT NONE +! +!* 0.1 Declarations of dummy arguments : +! +CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX ! X direction LBC type +CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY ! Y direction LBC type +CHARACTER (LEN=6), INTENT(IN) :: HMET_ADV_SCHEME +! +REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELDT ! variable at t +INTEGER, INTENT(IN) :: KGRID ! C grid localisation +! +REAL, DIMENSION(:,:,:), INTENT(IN) :: PCRU, PCRV, PCRW ! Courant numbers +! +REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! density +REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOX1, PRHOX2 +REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOY1, PRHOY2 +REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHOZ1, PRHOZ2 +REAL, INTENT(IN) :: PTSTEP ! Time step +INTEGER, INTENT(IN) :: KTCOUNT ! iteration count +! +REAL, DIMENSION(:,:,:), INTENT(OUT) :: PSRC ! source term after advection + +INTEGER :: IZPPM + + CALL MNH_GET_ZT3D(IZPPM) + + CALL ADVEC_PPM_ALGO_D(HMET_ADV_SCHEME, HLBCX, HLBCY, KGRID, PFIELDT, & + & PRHODJ, PTSTEP, & + & PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1,PRHOZ2,& + & PSRC, KTCOUNT, PCRU, PCRV, PCRW, & + & ZT3D(:,:,:,IZPPM) ) + + CALL MNH_REL_ZT3D(IZPPM) + +CONTAINS + + SUBROUTINE ADVEC_PPM_ALGO_D(HMET_ADV_SCHEME, HLBCX, HLBCY, KGRID, PFIELDT, & + PRHODJ, PTSTEP, & + PRHOX1, PRHOX2, PRHOY1, PRHOY2, PRHOZ1,PRHOZ2,& + PSRC, KTCOUNT, PCRU, PCRV, PCRW, & + ZPPM) ! ########################################################################## !! !!**** *ADVEC_PPM_ALGO* - interface for 3D advection with PPM type scheme @@ -50,8 +92,6 @@ CONTAINS USE MODI_SHUMAN USE MODI_PPM ! -USE MODE_MNH_ZWORK, ONLY : ZPPM -! IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : @@ -74,11 +114,11 @@ INTEGER, INTENT(IN) :: KTCOUNT ! iteration count ! REAL, DIMENSION(:,:,:), INTENT(OUT) :: PSRC ! source term after advection ! -!TYPE(HALO2_ll), OPTIONAL, POINTER :: TPHALO2 ! halo2 for the field at t ! !* 0.2 Declarations of local variables : ! -!!$REAL, DIMENSION(SIZE(PFIELDT,1),SIZE(PFIELDT,2),SIZE(PFIELDT,3)) :: ZPPM ! temp PPM output +REAL, DIMENSION(SIZE(PFIELDT,1),SIZE(PFIELDT,2),SIZE(PFIELDT,3)) :: ZPPM ! temp PPM output +!$acc declare present(ZPPM) ! !INTEGER:: IW,IE,IS,IN,IT,IB,IWF,IEF,ISF,INF ! Coordinate of 4th order diffusion area ! @@ -285,6 +325,8 @@ PSRC = (PSRC - PFIELDT)*PRHODJ/PTSTEP !$acc end kernels !$acc end data ! +END SUBROUTINE ADVEC_PPM_ALGO_D + END SUBROUTINE ADVEC_PPM_ALGO END MODULE MODI_ADVEC_PPM_ALGO diff --git a/MNH/mode_mnh_zwork.f90 b/MNH/mode_mnh_zwork.f90 index f72687df5c16384c21a92e581c11c3749fcfc5cc..15c959c44238120d6ea78cf95d7f9897af208858 100644 --- a/MNH/mode_mnh_zwork.f90 +++ b/MNH/mode_mnh_zwork.f90 @@ -14,17 +14,13 @@ MODULE MODE_MNH_ZWORK LOGICAL, SAVE :: GFIRST_CALL_MNH_ALLOC_ZWORK = .TRUE. ! - - REAL, SAVE, ALLOCATABLE , DIMENSION(:,:,:) :: ZPPM - !$acc declare mirror(ZPPM) - REAL, SAVE, ALLOCATABLE , DIMENSION(:,:) :: ZPSRC_HALO2_WEST REAL, SAVE, ALLOCATABLE , DIMENSION(:,:) :: ZPSRC_HALO2_SOUTH !$acc declare mirror(ZPSRC_HALO2_WEST,ZPSRC_HALO2_SOUTH) REAL, SAVE, ALLOCATABLE , DIMENSION(:,:,:) :: ZUNIT3D !$acc declare mirror(ZUNIT3D) - ! + INTEGER :: JPMAX_T3D = 25 INTEGER , ALLOCATABLE, DIMENSION (:) :: NT3D_POOL INTEGER :: NT3D_TOP , NT3D_TOP_MAX = 0 @@ -38,8 +34,6 @@ MODULE MODE_MNH_ZWORK TYPE(TMODEL) , DIMENSION(10) :: MODEL - !acc declare mirror(MODEL) - CONTAINS SUBROUTINE MNH_ALLOC_ZWORK(IMODEL) @@ -84,8 +78,6 @@ CONTAINS ! ! Work array ! - ALLOCATE (ZPPM(IIU,IJU,IKU)) - ALLOCATE (ZPSRC_HALO2_WEST(IJU,IKU)) ALLOCATE (ZPSRC_HALO2_SOUTH(IIU,IKU)) @@ -102,27 +94,18 @@ CONTAINS END DO !$acc kernels - - ZPPM = XUNDEF - ZPSRC_HALO2_WEST = XUNDEF ZPSRC_HALO2_SOUTH = XUNDEF ZUNIT3D = 1.0 - ZT3D_A1 = XUNDEF - + ZT3D = XUNDEF !$acc end kernels - !$acc update host (ZPPM) - !$acc update host (ZPSRC_HALO2_WEST,ZPSRC_HALO2_SOUTH) !$acc update host (ZUNIT3D) - !$acc update host (ZT3D) - - END IF END SUBROUTINE MNH_ALLOC_ZWORK