diff --git a/src/MNH/advecuvw_4th.f90 b/src/MNH/advecuvw_4th.f90 index c9e254c8b1eab41ea77a6c1f5db67c6e9c3e480a..d90db2748844c95c64117008da4f396ce69d7295 100644 --- a/src/MNH/advecuvw_4th.f90 +++ b/src/MNH/advecuvw_4th.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2005-2020 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2005-2022 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -304,7 +304,7 @@ call mxm_device(PRWCT,ZTEMP2) !$acc kernels ZTEMP3 = ZTEMP1 * ZTEMP2 !$acc end kernels -call dzf_device(1,IKU,1,ZTEMP3,ZTEMP4) +call dzf_device( ZTEMP3, ZTEMP4 ) !$acc kernels PRUS(:,:,:) = PRUS(:,:,:) - ZTEMP4 !$acc end kernels @@ -353,7 +353,7 @@ ZTEMP2 = MZM4( PVT ) !$acc kernels ZTEMP3 = ZTEMP1 * ZTEMP2 !$acc end kernels -call dzf_device(1,IKU,1,ZTEMP3,ZTEMP4) +call dzf_device( ZTEMP3, ZTEMP4 ) !$acc kernels PRVS(:,:,:) = PRVS(:,:,:) - ZTEMP4 !$acc end kernels diff --git a/src/MNH/advecuvw_weno_k.f90 b/src/MNH/advecuvw_weno_k.f90 index f86a88619d8e3698149540780a2af0da4eaff92a..7a9ac07765004199dacfbefd4d7f9fe94e5856d8 100644 --- a/src/MNH/advecuvw_weno_k.f90 +++ b/src/MNH/advecuvw_weno_k.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 2013-2020 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2013-2022 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -223,7 +223,7 @@ CASE(1) ! WENO 1 !PRUS = PRUS - DZF(1,IKU,1,UP_MZ(PUT,MXM(PRWCT))) CALL MXM_DEVICE(PRWCT,ZWORK) CALL UP_MZ_DEVICE(PUT,ZWORK,ZMEAN) - CALL DZF_DEVICE(1,IKU,1,ZMEAN,ZWORK) + CALL DZF_DEVICE( ZMEAN, ZWORK ) !$acc kernels PRUS(:,:,:) = PRUS(:,:,:) - ZWORK(:,:,:) !$acc end kernels @@ -249,7 +249,7 @@ CASE(1) ! WENO 1 !PRVS = PRVS - DZF(1,IKU,1,UP_MZ(PVT,MYM(PRWCT))) CALL MYM_DEVICE(PRWCT,ZWORK) CALL UP_MZ_DEVICE(PVT,ZWORK,ZMEAN) - CALL DZF_DEVICE(1,IKU,1,ZMEAN,ZWORK) + CALL DZF_DEVICE( ZMEAN, ZWORK ) !$acc kernels PRVS(:,:,:) = PRVS(:,:,:) - ZWORK(:,:,:) !$acc end kernels @@ -360,7 +360,7 @@ CASE(3) ! WENO 3 ZT3D(:,:,:,IZFPOS1), ZT3D(:,:,:,IZFPOS2), ZT3D(:,:,:,IZFNEG1), ZT3D(:,:,:,IZFNEG2), & ZT3D(:,:,:,IZBPOS1), ZT3D(:,:,:,IZBPOS2), ZT3D(:,:,:,IZBNEG1), ZT3D(:,:,:,IZBNEG2), & ZT3D(:,:,:,IZOMP1), ZT3D(:,:,:,IZOMP2), ZT3D(:,:,:,IZOMN1), ZT3D(:,:,:,IZOMN2) ) - CALL DZF_DEVICE(1,IKU,1,ZMEAN,ZWORK) + CALL DZF_DEVICE( ZMEAN, ZWORK ) !$acc kernels PRUS(:,:,:) = PRUS(:,:,:) - ZWORK(:,:,:) !$acc end kernels @@ -394,7 +394,7 @@ CASE(3) ! WENO 3 ZT3D(:,:,:,IZFPOS1), ZT3D(:,:,:,IZFPOS2), ZT3D(:,:,:,IZFNEG1), ZT3D(:,:,:,IZFNEG2), & ZT3D(:,:,:,IZBPOS1), ZT3D(:,:,:,IZBPOS2), ZT3D(:,:,:,IZBNEG1), ZT3D(:,:,:,IZBNEG2), & ZT3D(:,:,:,IZOMP1), ZT3D(:,:,:,IZOMP2), ZT3D(:,:,:,IZOMN1), ZT3D(:,:,:,IZOMN2) ) - CALL DZF_DEVICE(1,IKU,1,ZMEAN,ZWORK) + CALL DZF_DEVICE( ZMEAN, ZWORK ) !$acc kernels PRVS(:,:,:) = PRVS(:,:,:) - ZWORK(:,:,:) !$acc end kernels @@ -544,7 +544,7 @@ CASE(5) ! WENO 5 ZT3D(:,:,:,IZOMP1), ZT3D(:,:,:,IZOMP2), ZT3D(:,:,:,IZOMP3), & ZT3D(:,:,:,IZOMN1), ZT3D(:,:,:,IZOMN2), ZT3D(:,:,:,IZOMN3) ) CALL GET_HALO_D(ZMEAN)! Update HALO - maybe not necessary (T.Lunet) - CALL DZF_DEVICE(1,IKU,1,ZMEAN,ZWORK) + CALL DZF_DEVICE( ZMEAN, ZWORK ) !$acc kernels PRUS(:,:,:) = PRUS(:,:,:) - ZWORK(:,:,:) !$acc end kernels @@ -589,7 +589,7 @@ CASE(5) ! WENO 5 ZT3D(:,:,:,IZOMP1), ZT3D(:,:,:,IZOMP2), ZT3D(:,:,:,IZOMP3), & ZT3D(:,:,:,IZOMN1), ZT3D(:,:,:,IZOMN2), ZT3D(:,:,:,IZOMN3) ) CALL GET_HALO_D(ZMEAN)! Update HALO - maybe not necessary (T.Lunet) - CALL DZF_DEVICE(1,IKU,1,ZMEAN,ZWORK) + CALL DZF_DEVICE( ZMEAN, ZWORK ) !$acc kernels PRVS(:,:,:) = PRVS(:,:,:) - ZWORK(:,:,:) !$acc end kernels diff --git a/src/MNH/gradient_w.f90 b/src/MNH/gradient_w.f90 index f49ddab87bdd5ec92a0742325d4926829de7cac7..9f0c4291a75eafd8256a4f60b6f3875534de2cc2 100644 --- a/src/MNH/gradient_w.f90 +++ b/src/MNH/gradient_w.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2020 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -217,7 +217,7 @@ iztmp2_device = MNH_ALLOCATE_ZT3D( ztmp2_device,JIU,JJU,JKU ) !* 1. DEFINITION of GZ_W_M_DEVICE ! -------------------- ! -CALL DZF_DEVICE(KKA,KKU,KL,PA(:,:,:),ZTMP1_DEVICE) +CALL DZF_DEVICE( PA(:,:,:), ZTMP1_DEVICE ) CALL MZF_DEVICE(KKA,KKU,KL,PDZZ(:,:,:),ZTMP2_DEVICE) !$acc kernels PGZ_W_M_DEVICE(:,:,:)= ZTMP1_DEVICE(:,:,:)/ZTMP2_DEVICE(:,:,:) diff --git a/src/MNH/ppm.f90 b/src/MNH/ppm.f90 index 2db3a4daab59cb715c255ba06f6e2c0dc7ed8665..b121afec54f9a1098f41bdc7f23561752c6a119d 100644 --- a/src/MNH/ppm.f90 +++ b/src/MNH/ppm.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2020 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -427,7 +427,7 @@ REAL, INTENT(IN) :: PTSTEP ! Time step #ifndef MNH_OPENACC REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: PR #else -REAL, DIMENSION(IIU,IJU,IKU), INTENT(OUT) :: PR +REAL, DIMENSION(:,:,:), INTENT(OUT) :: PR #endif ! !* 0.2 Declarations of local variables : @@ -457,7 +457,7 @@ INTEGER :: I,J,K ! !!$! !!$! terms used in parabolic interpolation, dmq, qL, qR, dq, q6 -REAL , DIMENSION(IIU,IJU,IKU) :: & +REAL , DIMENSION(:,:,:) :: & ZQL,ZQR, ZDQ,ZQ6, ZDMQ & !!$! !!$! extra variables for the initial guess of parabolae parameters @@ -515,7 +515,7 @@ ZQ60 (:,:,:) = PSRC(:,:,:) ZFPOS(:,:,:) = PSRC(:,:,:) ZFNEG(:,:,:) = PSRC(:,:,:) #else -CALL GET_HALO_D(PSRC,HDIR="01_X", HNAME='PSRC') +CALL GET_HALO_D(PSRC,HDIR="01_X", HNAME='UPDATE_HALO_ll::GET_HALO::PSRC') ! !$acc kernels !$acc loop independent collapse(3) @@ -753,7 +753,7 @@ CASE('OPEN') CALL GET_HALO(ZDMQ, HNAME='ZDMQ') #else !$acc end kernels - CALL GET_HALO_D(ZDMQ, HDIR="01_X", HNAME='ZDMQ') + CALL GET_HALO_D(ZDMQ, HDIR="01_X", HNAME='UPDATE_HALO_ll::GET_HALO::ZDMQ') #endif !$acc kernels ! @@ -774,7 +774,7 @@ CASE('OPEN') CALL GET_HALO(ZQL0, HNAME='ZQL0') #else !$acc end kernels - CALL GET_HALO_D(ZQL0,HDIR="01_X", HNAME='ZQL0') + CALL GET_HALO_D(ZQL0,HDIR="01_X", HNAME='UPDATE_HALO_ll::GET_HALO::ZQL0') !$acc kernels #endif ! @@ -790,7 +790,7 @@ CASE('OPEN') CALL GET_HALO(ZQR0, HNAME='ZQR0') #else !$acc end kernels - CALL GET_HALO_D(ZQR0, HDIR="01_X", HNAME='ZQR0') + CALL GET_HALO_D(ZQR0, HDIR="01_X", HNAME='UPDATE_HALO_ll::GET_HALO::ZQR0') !$acc kernels #endif ! @@ -895,7 +895,7 @@ ENDDO ; ENDDO ; ENDDO CALL GET_HALO(ZFPOS, HNAME='ZFPOS') #else !$acc end kernels - CALL GET_HALO_D(ZFPOS, HDIR="01_X", HNAME='ZFPOS') + CALL GET_HALO_D(ZFPOS, HDIR="01_X", HNAME='UPDATE_HALO_ll::GET_HALO::ZFPOS') !$acc kernels #endif ! @@ -929,7 +929,7 @@ ENDDO ; ENDDO ; ENDDO CALL GET_HALO(ZFNEG, HNAME='ZFNEG') #else !$acc end kernels - CALL GET_HALO_D(ZFNEG, HDIR="01_X", HNAME='ZFNEG') + CALL GET_HALO_D(ZFNEG, HDIR="01_X", HNAME='UPDATE_HALO_ll::GET_HALO::ZFNEG') !$acc kernels #endif ! @@ -960,7 +960,7 @@ ENDDO ; ENDDO ; ENDDO !dxf(PR,ZQR) !$acc end kernels CALL DXF_DEVICE(ZQR,PR) - CALL GET_HALO_D(PR, HDIR="01_X", HNAME='PR') + CALL GET_HALO_D(PR, HDIR="01_X", HNAME='UPDATE_HALO_ll::GET_HALO::PR') #endif ! END SELECT @@ -1126,10 +1126,10 @@ CONTAINS USE MODD_CONF USE MODE_ll +use mode_mppdb #ifdef MNH_OPENACC use mode_msg #endif -use mode_mppdb #ifdef MNH_BITREP USE MODI_BITREP @@ -1162,7 +1162,7 @@ REAL, INTENT(IN) :: PTSTEP ! Time step #ifndef MNH_OPENACC REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: PR #else -REAL, DIMENSION(IIU,IJU,IKU), INTENT(OUT) :: PR +REAL, DIMENSION(:,:,:), INTENT(OUT) :: PR #endif ! !* 0.2 Declarations of local variables : @@ -1189,7 +1189,7 @@ REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZFPOS, ZFNEG ! #else ! terms used in parabolic interpolation, dmq, qL, qR, dq, q6 -REAL, DIMENSION(IIU,IJU,IKU) :: & +REAL, DIMENSION(:,:,:) :: & ZQL,ZQR , ZDQ,ZQ6 , ZDMQ & ! extra variables for the initial guess of parabolae parameters , ZQL0,ZQR0,ZQ60 & @@ -1247,7 +1247,7 @@ IKE=IKU !IIB=2 !IIE=IIU-1 ! -CALL GET_HALO_D(PSRC, HDIR="01_Y", HNAME='PSRC') +CALL GET_HALO_D(PSRC, HDIR="01_Y", HNAME='UPDATE_HALO_ll::GET_HALO::PSRC') #endif ! !------------------------------------------------------------------------------- @@ -1286,6 +1286,7 @@ ZFNEG(:,:,:) = PSRC(:,:,:) #endif !$acc end kernels ! +print *,'PW: HLBCY(1)=',HLBCY(1);flush(5) SELECT CASE ( HLBCY(1) ) ! Y direction LBC type: (1) for left side ! !* 2.1 CYCLIC BOUNDARY CONDITIONS IN THE Y DIRECTION @@ -1330,7 +1331,7 @@ CASE ('CYCL','WALL') ! In that case one must have HLBCY(1) == HLBCY(2) CALL GET_HALO(ZDMQ, HNAME='ZDMQ') #else !$acc end kernels - CALL GET_HALO_D(ZDMQ,HDIR="01_Y", HNAME='ZDMQ') + CALL GET_HALO_D(ZDMQ,HDIR="01_Y", HNAME='UPDATE_HALO_ll::GET_HALO::ZDMQ') !$acc kernels #endif ! @@ -1338,6 +1339,7 @@ CASE ('CYCL','WALL') ! In that case one must have HLBCY(1) == HLBCY(2) ! ! ZQL0(IIW:IIA,IJB:IJE+1,:) = 0.5*(PSRC(IIW:IIA,IJB:IJE+1,:) + PSRC(IIW:IIA,IJB-1:IJE,:)) - & ! (ZDMQ(IIW:IIA,IJB:IJE+1,:) - ZDMQ(IIW:IIA,IJB-1:IJE,:))/6.0 +#if 1 !$acc loop independent collapse(3) do jk = 1, iku do jj = ijb, ije + 1 @@ -1346,12 +1348,23 @@ CASE ('CYCL','WALL') ! In that case one must have HLBCY(1) == HLBCY(2) end do end do end do +#else + DO CONCURRENT( ji = iiw : iia, jj = ijb : ije + 1, jk = 1 : iku ) + ZQL0(ji, jj, jk ) = 0.5 * ( PSRC(ji, jj, jk ) + PSRC(ji, jj-1, jk )) - ( ZDMQ(ji, jj, jk ) - ZDMQ(ji, jj-1, jk ) ) / 6.0 + END DO +#endif ! #ifndef MNH_OPENACC +CALL MPPDB_CHECK(PSRC,"PPM_01_Y: PSRC") +CALL MPPDB_CHECK(ZDMQ,"PPM_01_Y: ZDMQ") +CALL MPPDB_CHECK(ZQL0,"PPM_01_Y: ZQL0") CALL GET_HALO(ZQL0, HNAME='ZQL0') #else !$acc end kernels - CALL GET_HALO_D(ZQL0,HDIR="01_Y", HNAME='ZQL0') +CALL MPPDB_CHECK(PSRC,"PPM_01_Y: PSRC") +CALL MPPDB_CHECK(ZDMQ,"PPM_01_Y: ZDMQ") +CALL MPPDB_CHECK(ZQL0,"PPM_01_Y: ZQL0") + CALL GET_HALO_D(ZQL0,HDIR="01_Y", HNAME='UPDATE_HALO_ll::GET_HALO::ZQL0') !$acc kernels #endif ! @@ -1365,7 +1378,7 @@ CASE ('CYCL','WALL') ! In that case one must have HLBCY(1) == HLBCY(2) CALL GET_HALO(ZQR0, HNAME='ZQR0') #else !$acc end kernels - CALL GET_HALO_D(ZQR0,HDIR="01_Y", HNAME='ZQR0') + CALL GET_HALO_D(ZQR0,HDIR="01_Y", HNAME='UPDATE_HALO_ll::GET_HALO::ZQR0') !$acc kernels #endif ! @@ -1458,7 +1471,7 @@ CASE ('CYCL','WALL') ! In that case one must have HLBCY(1) == HLBCY(2) CALL GET_HALO(ZFPOS, HNAME='ZFPOS') #else !$acc end kernels - CALL GET_HALO_D(ZFPOS,HDIR="01_Y", HNAME='ZFPOS') + CALL GET_HALO_D(ZFPOS,HDIR="01_Y", HNAME='UPDATE_HALO_ll::GET_HALO::ZFPOS') !$acc kernels #endif ! @@ -1475,7 +1488,7 @@ CASE ('CYCL','WALL') ! In that case one must have HLBCY(1) == HLBCY(2) CALL GET_HALO(ZFNEG, HNAME='ZFNEG') #else !$acc end kernels - CALL GET_HALO_D(ZFNEG,HDIR="01_Y", HNAME='ZFNEG') + CALL GET_HALO_D(ZFNEG,HDIR="01_Y", HNAME='UPDATE_HALO_ll::GET_HALO::ZFNEG') !$acc kernels #endif ! @@ -1506,7 +1519,7 @@ CASE ('CYCL','WALL') ! In that case one must have HLBCY(1) == HLBCY(2) #ifndef MNH_OPENACC CALL GET_HALO(PR, HNAME='PR') #else - CALL GET_HALO_D(PR,HDIR="01_Y", HNAME='PR') + CALL GET_HALO_D(PR,HDIR="01_Y", HNAME='UPDATE_HALO_ll::GET_HALO::PR') #endif ! !* 2.2 NON-CYCLIC BOUNDARY CONDITIONS IN THE Y DIRECTION @@ -1562,7 +1575,7 @@ end do CALL GET_HALO(ZDMQ, HNAME='ZDMQ') #else !$acc end kernels - CALL GET_HALO_D(ZDMQ,HDIR="01_Y", HNAME='ZDMQ') + CALL GET_HALO_D(ZDMQ,HDIR="01_Y", HNAME='UPDATE_HALO_ll::GET_HALO::ZDMQ') !$acc kernels #endif ! @@ -1581,7 +1594,7 @@ end do CALL GET_HALO(ZQL0, HNAME='ZQL0') #else !$acc end kernels -CALL GET_HALO_D(ZQL0,HDIR="01_Y", HNAME='ZQL0') +CALL GET_HALO_D(ZQL0,HDIR="01_Y", HNAME='UPDATE_HALO_ll::GET_HALO::ZQL0') !$acc kernels #endif ! @@ -1699,7 +1712,7 @@ CALL GET_HALO_D(ZQL0,HDIR="01_Y", HNAME='ZQL0') CALL GET_HALO(ZFPOS, HNAME='ZFPOS') #else !$acc end kernels - CALL GET_HALO_D(ZFPOS,HDIR="01_Y", HNAME='ZFPOS') + CALL GET_HALO_D(ZFPOS,HDIR="01_Y", HNAME='UPDATE_HALO_ll::GET_HALO::ZFPOS') !$acc kernels #endif ! @@ -1734,7 +1747,7 @@ CALL GET_HALO_D(ZQL0,HDIR="01_Y", HNAME='ZQL0') CALL GET_HALO(ZFNEG, HNAME='ZFNEG') #else !$acc end kernels - CALL GET_HALO_D(ZFNEG,HDIR="01_Y", HNAME='ZFNEG') + CALL GET_HALO_D(ZFNEG,HDIR="01_Y", HNAME='UPDATE_HALO_ll::GET_HALO::ZFNEG') !$acc kernels #endif ! @@ -1776,7 +1789,7 @@ CALL GET_HALO_D(ZQL0,HDIR="01_Y", HNAME='ZQL0') #ifndef MNH_OPENACC CALL GET_HALO(PR, HNAME='PR') #else - CALL GET_HALO_D(PR,HDIR="01_Y", HNAME='PR') + CALL GET_HALO_D(PR,HDIR="01_Y", HNAME='UPDATE_HALO_ll::GET_HALO::PR') #endif ! ! @@ -1977,7 +1990,7 @@ REAL, INTENT(IN) :: PTSTEP ! Time step #ifndef MNH_OPENACC REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: PR #else -REAL, DIMENSION(IIU,IJU,IKU), INTENT(OUT) :: PR +REAL, DIMENSION(:,:,:), INTENT(OUT) :: PR #endif ! !* 0.2 Declarations of local variables : @@ -1999,7 +2012,7 @@ REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZQL0,ZQR0,ZQ60 REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZFPOS, ZFNEG #else ! terms used in parabolic interpolation, dmq, qL, qR, dq, q6 -REAL, DIMENSION(IIU,IJU,IKU) :: & +REAL, DIMENSION(:,:,:) :: & ZQL, ZQR, ZDQ, ZQ6, ZDMQ & ! ! extra variables for the initial guess of parabolae parameters @@ -2275,7 +2288,7 @@ do jk = 1, iku end do !dzf(PR,ZQR) !$acc end kernels - CALL DZF_DEVICE(1,1,1,ZQR,PR) + CALL DZF_DEVICE( ZQR, PR ) #endif ! #ifndef MNH_OPENACC @@ -2446,6 +2459,7 @@ USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll USE MODD_CONF USE MODE_ll +USE MODE_MPPDB #ifdef MNH_OPENACC use mode_msg #endif @@ -2464,7 +2478,6 @@ USE MODE_MNH_ZWORK, ONLY : IIB,IIE, IIU,IJU,IKU , IJS,IJN, GWEST,GEAST ! USE MODD_IO, ONLY : GSMONOPROC #endif -USE MODE_MPPDB ! IMPLICIT NONE ! @@ -2661,7 +2674,7 @@ ENDIF ! update ZPHAT HALO before next/further utilisation ! #ifndef MNH_OPENACC -CALL GET_HALO(ZPHAT, HNAME='ZPHAT') +!PW: a remettre? CALL GET_HALO(ZPHAT, HNAME='ZPHAT') #else ! acc update self(ZPHAT) !CALL GET_HALO_D(ZPHAT(:,:,:), HDIR="Z0_X", HNAME='ZPHAT') @@ -2696,7 +2709,7 @@ CALL GET_HALO(ZPHAT, HNAME='ZPHAT') !$acc end kernels ! #ifndef MNH_OPENACC -CALL GET_HALO(ZFPOS, HNAME='ZFPOS') ! JUAN +!PW: a remettre? CALL GET_HALO(ZFPOS, HNAME='ZFPOS') ! JUAN #else ! acc update self(ZFPOS) !CALL GET_HALO_D(ZFPOS(:,:,:), HDIR="Z0_X", HNAME='ZFPOS') ! JUAN @@ -2724,7 +2737,7 @@ CALL GET_HALO(ZFPOS, HNAME='ZFPOS') ! JUAN !$acc end kernels ! #ifndef MNH_OPENACC - CALL GET_HALO(ZFNEG, HNAME='ZFNEG') ! JUAN +!PW: a remettre? CALL GET_HALO(ZFNEG, HNAME='ZFNEG') ! JUAN #else ! acc update self(ZFNEG) !CALL GET_HALO_D(ZFNEG, HDIR="Z0_X", HNAME='ZFNEG') ! JUAN @@ -2788,7 +2801,8 @@ END SELECT #ifndef MNH_OPENACC CALL GET_HALO(PR, HNAME='PR') #else -CALL GET_HALO_D(PR, HDIR="S0_X", HNAME='PR') +! CALL GET_HALO_D(PR, HDIR="S0_X", HNAME='PR') +CALL GET_HALO_D(PR, HDIR="S0_X", HNAME='UPDATE_HALO_ll::GET_HALO::PR') #endif !------------------------------------------------------------------------------- CALL DEL_HALO2_ll(TZ_PSRC_HALO2_ll) @@ -2880,6 +2894,7 @@ CONTAINS USE MODD_CONF USE MODE_ll +USE MODE_MPPDB #ifdef MNH_OPENACC use mode_msg #endif @@ -2899,7 +2914,6 @@ USE MODE_MNH_ZWORK, ONLY : IJB,IJE, IIU,IJU,IKU , IIW,IIA, GSOUTH , GNORTH ! USE MODD_IO, ONLY : GSMONOPROC #endif -USE MODE_MPPDB ! IMPLICIT NONE ! @@ -3018,7 +3032,7 @@ PR=PSRC ZPHAT(IIW:IIA,IJB+1:IJE,:) = (7.0 * & (PSRC(IIW:IIA,IJB+1:IJE,:) + PSRC(IIW:IIA,IJB:IJE-1,:)) - & (PSRC(IIW:IIA,IJB+2:IJE+1,:) + PSRC(IIW:IIA,IJB-1:IJE-2,:))) / 12.0 -!$acc end kernels +!$acc end kernels ! SELECT CASE ( HLBCY(1) ) ! Y direction LBC type: (1) for left side CASE ('CYCL','WALL') ! In that case one must have HLBCY(1) == HLBCY(2) @@ -3086,7 +3100,7 @@ CALL GET_HALO(ZFNEG, HNAME='ZFNEG') ! JUAN #endif ! CASE ('OPEN') -!$acc kernels +!$acc kernels ! !!$ ZPHAT(:,IJB,:) = 0.5*(PSRC(:,IJB-1,:) + PSRC(:,IJB,:)) !!$ ZPHAT(:,IJB-1,:) = ZPHAT(:,IJB,:) ! not used @@ -3107,7 +3121,7 @@ CASE ('OPEN') !$acc end kernels ! #ifndef MNH_OPENACC -CALL GET_HALO(ZPHAT, HNAME='ZPHAT') +!PW: a remettre? CALL GET_HALO(ZPHAT, HNAME='ZPHAT') #else ! acc update self(ZPHAT) !CALL GET_HALO_D(ZPHAT(:,:,:), HDIR="Z0_Y", HNAME='ZPHAT') @@ -3144,7 +3158,7 @@ CALL GET_HALO(ZPHAT, HNAME='ZPHAT') !$acc end kernels ! #ifndef MNH_OPENACC -CALL GET_HALO(ZFPOS, HNAME='ZFPOS') ! JUAN +!PW: a remettre? CALL GET_HALO(ZFPOS, HNAME='ZFPOS') ! JUAN #else ! acc update self(ZFPOS) !CALL GET_HALO_D(ZFPOS(:,:,:), HDIR="Z0_Y", HNAME='ZFPOS') ! JUAN @@ -3173,7 +3187,7 @@ CALL GET_HALO(ZFPOS, HNAME='ZFPOS') ! JUAN !$acc end kernels ! #ifndef MNH_OPENACC - CALL GET_HALO(ZFNEG, HNAME='ZFNEG') ! JUAN +!PW: a remettre? CALL GET_HALO(ZFNEG, HNAME='ZFNEG') ! JUAN #else ! acc update self(ZFNEG) ! CALL GET_HALO_D(ZFNEG, HDIR="Z0_Y", HNAME='ZFNEG') ! JUAN @@ -3200,7 +3214,7 @@ CALL GET_HALO(ZFPOS, HNAME='ZFPOS') ! JUAN !$acc end kernels CALL MYM_DEVICE(PRHO,ZRHO_MYM) !$acc kernels - ZCR_MYM = PCR* ZRHO_MYM*( ZFPOS(:,:,:)*(0.5+SIGN(0.5,PCR)) + ZFNEG*(0.5-SIGN(0.5,PCR)) ) + ZCR_MYM = PCR * ZRHO_MYM * ( ZFPOS(:,:,:)*(0.5+SIGN(0.5,PCR)) + ZFNEG*(0.5-SIGN(0.5,PCR)) ) !$acc end kernels CALL DYF_DEVICE(ZCR_MYM,ZCR_DYF) !$acc kernels @@ -3233,7 +3247,8 @@ END SELECT #ifndef MNH_OPENACC CALL GET_HALO(PR, HNAME='PR') #else -CALL GET_HALO_D(PR, HDIR="S0_Y", HNAME='PR') +! CALL GET_HALO_D(PR, HDIR="S0_Y", HNAME='PR') +CALL GET_HALO_D(PR, HDIR="S0_Y", HNAME='UPDATE_HALO_ll::GET_HALO::PR') #endif ! CALL DEL_HALO2_ll(TZ_PSRC_HALO2_ll) @@ -3406,7 +3421,7 @@ IKE = SIZE(PSRC,3) - JPVEXT #ifndef MNH_OPENACC CALL GET_HALO(PSRC, HNAME='PSRC') #else - CALL GET_HALO_D(PSRC, HNAME='PSRC') + CALL GET_HALO_D(PSRC, HNAME='UPDATE_HALO_ll::GET_HALO::PSRC') #endif ! #ifdef MNH_OPENACC @@ -3470,7 +3485,7 @@ PR = PSRC * PRHO - & ZCR_MZM = PCR* ZRHO_MZM*( ZFPOS(:,:,:)*(0.5+SIGN(0.5,PCR)) + ZFNEG*(0.5-SIGN(0.5,PCR)) ) !dzf(ZCR_DZF,ZCR_MZM) !$acc end kernels - CALL DZF_DEVICE(1,1,1,ZCR_MZM,ZCR_DZF) + CALL DZF_DEVICE( ZCR_MZM, ZCR_DZF ) !$acc kernels PR = PSRC * PRHO - ZCR_DZF #endif @@ -3482,10 +3497,14 @@ PR = PSRC * PRHO - & ! !$acc end kernels ! +CALL MPPDB_CHECK(ZPHAT,"PPM_S0_Z:ZPHAT") +CALL MPPDB_CHECK(ZFPOS,"PPM_S0_Z:ZFPOS") +CALL MPPDB_CHECK(ZFNEG,"PPM_S0_Z:ZFNEG") +CALL MPPDB_CHECK(PR,"PPM_S0_Z:PR") #ifndef MNH_OPENACC CALL GET_HALO(PR, HNAME='PR') #else - CALL GET_HALO_D(PR, HNAME='PR') + CALL GET_HALO_D(PR, HNAME='UPDATE_HALO_ll::GET_HALO::PR') #endif IF (MPPDB_INITIALIZED) THEN !Check all INOUT arrays @@ -3583,6 +3602,9 @@ INTEGER :: IZPHAT,IZRUT,IZFUP,IZFCOR,IZRPOS,IZRNEG !! !------------------------------------------------------------------------------- ! +USE MODD_CONF +USE MODD_PARAMETERS + USE MODE_ll use mode_mppdb @@ -3592,11 +3614,7 @@ USE MODI_SHUMAN USE MODI_SHUMAN USE MODI_SHUMAN_DEVICE #endif -! -USE MODD_CONF -USE MODD_PARAMETERS -!USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll -! + IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : @@ -3627,6 +3645,7 @@ REAL, DIMENSION(:,:,:), INTENT(OUT) :: PR INTEGER:: IIB,IJB,IKB ! Begining useful area in x,y,z directions INTEGER:: IIE,IJE,IKE ! End useful area in x,y,z directions ! +#ifndef MNH_OPENACC ! variable at cell edges REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZPHAT, ZRUT ! @@ -3635,6 +3654,16 @@ REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZFUP, ZFCOR ! ! ratios for limiting the correction flux REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZRPOS, ZRNEG +#else +! variable at cell edges +REAL, DIMENSION(:,:,:) :: ZPHAT, ZRUT +! +! advection fluxes, upwind and correction +REAL, DIMENSION(:,:,:) :: ZFUP, ZFCOR +! +! ratios for limiting the correction flux +REAL, DIMENSION(:,:,:) :: ZRPOS, ZRNEG +#endif ! ! variables for limiting the correction flux REAL :: ZSRCMAX, ZSRCMIN, ZFIN, ZFOUT @@ -3982,6 +4011,7 @@ REAL, DIMENSION(:,:,:), INTENT(OUT) :: PR INTEGER:: IIB,IJB,IKB ! Begining useful area in x,y,z directions INTEGER:: IIE,IJE,IKE ! End useful area in x,y,z directions ! +#ifndef MNH_OPENACC ! variable at cell edges REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZPHAT, ZRVT ! @@ -3990,6 +4020,16 @@ REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZFUP, ZFCOR ! ! ratios for limiting the correction flux REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZRPOS, ZRNEG +#else +! variable at cell edges +REAL, DIMENSION(:,:,:) :: ZPHAT, ZRVT +! +! advection fluxes, upwind and correction +REAL, DIMENSION(:,:,:) :: ZFUP, ZFCOR +! +! ratios for limiting the correction flux +REAL, DIMENSION(:,:,:) :: ZRPOS, ZRNEG +#endif ! ! variables for limiting the correction flux REAL :: ZSRCMAX, ZSRCMIN, ZFIN, ZFOUT @@ -4338,6 +4378,7 @@ REAL, DIMENSION(:,:,:), INTENT(OUT) :: PR INTEGER:: IIB,IJB,IKB ! Begining useful area in x,y,z directions INTEGER:: IIE,IJE,IKE ! End useful area in x,y,z directions ! +#ifndef MNH_OPENACC ! variable at cell edges REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZPHAT, ZRVT ! @@ -4346,6 +4387,16 @@ REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZFUP, ZFCOR ! ! ratios for limiting the correction flux REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: ZRPOS, ZRNEG +#else +! variable at cell edges +REAL, DIMENSION(:,:,:) :: ZPHAT, ZRVT +! +! advection fluxes, upwind and correction +REAL, DIMENSION(:,:,:) :: ZFUP, ZFCOR +! +! ratios for limiting the correction flux +REAL, DIMENSION(:,:,:) :: ZRPOS, ZRNEG +#endif ! ! variables for limiting the correction flux REAL :: ZSRCMAX, ZSRCMIN, ZFIN, ZFOUT diff --git a/src/MNH/shuman_device.f90 b/src/MNH/shuman_device.f90 index 0ca7755d45e1c1a13b5a8fdd76e592e27413fd53..35b62252510eaefe5ee869a842a071412c4d7de8 100644 --- a/src/MNH/shuman_device.f90 +++ b/src/MNH/shuman_device.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -30,9 +30,7 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at mass localization REAL, DIMENSION(:,:,:), INTENT(OUT) :: PDYM ! result at flux side END SUBROUTINE DYM_DEVICE ! -SUBROUTINE DZF_DEVICE(KKA,KKU,KL,PA,PDZF) -INTEGER, INTENT(IN) :: KKA, KKU ! near ground and uppest atmosphere array indexes -INTEGER, INTENT(IN) :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise +SUBROUTINE DZF_DEVICE(PA,PDZF) REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at flux side REAL, DIMENSION(:,:,:), INTENT(OUT) :: PDZF ! result at mass localization END SUBROUTINE DZF_DEVICE @@ -1275,7 +1273,7 @@ END DO END SUBROUTINE DYM_DEVICE ! ! ############################### - SUBROUTINE DZF_DEVICE(KKA,KKU,KL,PA,PDZF) + SUBROUTINE DZF_DEVICE(PA,PDZF) ! ############################### ! !!**** *DZF* - Shuman operator : finite difference operator in z direction @@ -1325,8 +1323,6 @@ IMPLICIT NONE !* 0.1 Declarations of argument and result ! ------------------------------------ ! -INTEGER, INTENT(IN) :: KKA, KKU ! near ground and uppest atmosphere array indexes -INTEGER, INTENT(IN) :: KL ! +1 if grid goes from ground to atmosphere top, -1 otherwise REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at flux side REAL, DIMENSION(:,:,:), INTENT(OUT) :: PDZF ! result at mass localization ! diff --git a/src/MNH/tke_eps_sources.f90 b/src/MNH/tke_eps_sources.f90 index 4f98499d21f94ea14a54b0479289afc0ebe5d93b..5385bdf08265f0316fa6ecbc3df2f320c03480ba 100644 --- a/src/MNH/tke_eps_sources.f90 +++ b/src/MNH/tke_eps_sources.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -494,7 +494,7 @@ IF ( LLES_CALL .OR. & #else ZTMP1_DEVICE(:,:,:) = ZTMP2_DEVICE(:,:,:) * ZFLX(:,:,:) / PDZZ(:,:,:) !Re-use of ZTMP2_DEVICE !$acc end kernels - CALL DZF_DEVICE(KKA,KKU,KKL,ZTMP1_DEVICE,ZTMP2_DEVICE) + CALL DZF_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE ) !$acc kernels PTR(:,:,:)= PTR(:,:,:) - ZTMP2_DEVICE(:,:,:) / PRHODJ(:,:,:) !$acc end kernels diff --git a/src/MNH/turb_hor_dyn_corr.f90 b/src/MNH/turb_hor_dyn_corr.f90 index ad9da4172e6c3453cca7ccb41f1c3955cecd9367..521e66616a0876ac00fc855e0846f750ab6603e7 100644 --- a/src/MNH/turb_hor_dyn_corr.f90 +++ b/src/MNH/turb_hor_dyn_corr.f90 @@ -727,7 +727,7 @@ IF (.NOT. LFLAT) THEN ZTMP2_DEVICE(JI,JJ,JK) = PDZX(JI,JJ,JK) / ZTMP1_DEVICE(JI,JJ,JK) * ZTMP4_DEVICE(JI,JJ,JK) END DO !CONCURRENT !$acc end kernels - CALL DZF_DEVICE(1,IKU,1,ZTMP2_DEVICE,ZTMP1_DEVICE) + CALL DZF_DEVICE( ZTMP2_DEVICE, ZTMP1_DEVICE ) !$acc kernels async(1) PRUS(:,:,:)=PRUS(:,:,:) & -ZTMP3_DEVICE(:,:,:) & @@ -946,7 +946,7 @@ IF (.NOT. L2D) THEN ZTMP2_DEVICE(JI,JJ,JK) = PDZY(JI,JJ,JK) / ZTMP1_DEVICE(JI,JJ,JK) * ZTMP4_DEVICE(JI,JJ,JK) END DO !CONCURRENT !$acc end kernels - CALL DZF_DEVICE(1,IKU,1,ZTMP2_DEVICE,ZTMP4_DEVICE ) + CALL DZF_DEVICE( ZTMP2_DEVICE, ZTMP4_DEVICE ) !$acc kernels async(1) PRVS(:,:,:)=PRVS(:,:,:) & -ZTMP3_DEVICE(:,:,:) & diff --git a/src/MNH/turb_hor_sv_flux.f90 b/src/MNH/turb_hor_sv_flux.f90 index dff4a900791163672da0e96f30f77066acd6b45c..b43300c3f31d30c0baa07c61da3fff52d38ee1e0 100644 --- a/src/MNH/turb_hor_sv_flux.f90 +++ b/src/MNH/turb_hor_sv_flux.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -595,7 +595,7 @@ DO JSV=1,ISV !$acc kernels ZTMP3_DEVICE = PMZM_PRHODJ * PINV_PDZZ * ( ZTMP4_DEVICE + ZTMP5_DEVICE ) !$acc end kernels - CALL DZF_DEVICE( 1,IKU,1, ZTMP3_DEVICE, ZTMP4_DEVICE) + CALL DZF_DEVICE( ZTMP3_DEVICE, ZTMP4_DEVICE ) !$acc kernels PRSVS(:,:,:,JSV) = PRSVS(:,:,:,JSV) - ZTMP1_DEVICE - ZTMP2_DEVICE + ZTMP4_DEVICE !$acc end kernels @@ -617,7 +617,7 @@ DO JSV=1,ISV !$acc kernels ZTMP3_DEVICE = PMZM_PRHODJ * PINV_PDZZ * ZTMP4_DEVICE !$acc end kernels - CALL DZF_DEVICE(1,IKU,1, ZTMP3_DEVICE, ZTMP2_DEVICE) + CALL DZF_DEVICE( ZTMP3_DEVICE, ZTMP2_DEVICE) !$acc kernels PRSVS(:,:,:,JSV) = PRSVS(:,:,:,JSV) - ZTMP1_DEVICE + ZTMP2_DEVICE !$acc end kernels diff --git a/src/MNH/turb_hor_thermo_flux.f90 b/src/MNH/turb_hor_thermo_flux.f90 index 5b629bd4efbf8486a3d062676971528ea4e1472d..b4ae8261b8d2ee3b5a8b91dd953f69fce9620fd5 100644 --- a/src/MNH/turb_hor_thermo_flux.f90 +++ b/src/MNH/turb_hor_thermo_flux.f90 @@ -434,7 +434,7 @@ DO CONCURRENT ( JI=1:JIU,JJ=1:JJU,JK=1:JKU) ZTMP2_DEVICE(JI,JJ,JK) = PMZM_PRHODJ(JI,JJ,JK) * ZTMP4_DEVICE(JI,JJ,JK) * PINV_PDZZ(JI,JJ,JK) END DO !$acc end kernels - CALL DZF_DEVICE(1,IKU,1,ZTMP2_DEVICE,ZTMP4_DEVICE ) + CALL DZF_DEVICE( ZTMP2_DEVICE, ZTMP4_DEVICE ) !$acc kernels PRTHLS(:,:,:) = PRTHLS(:,:,:) - ZTMP3_DEVICE(:,:,:) + ZTMP4_DEVICE(:,:,:) !$acc end kernels @@ -532,7 +532,7 @@ IF ( KRRL >= 1 ) THEN !$acc kernels ZTMP3_DEVICE(:,:,:) = ZTMP4_DEVICE(:,:,:)*ZTMP5_DEVICE(:,:,:)*PINV_PDZZ(:,:,:) !$acc end kernels - CALL DZF_DEVICE(1,IKU,1, ZTMP3_DEVICE, ZTMP4_DEVICE ) + CALL DZF_DEVICE( ZTMP3_DEVICE, ZTMP4_DEVICE ) !$acc kernels PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * (- ZTMP2_DEVICE(:,:,:) + ZTMP4_DEVICE(:,:,:) )*(1.0-PFRAC_ICE(:,:,:)) PRRS(:,:,:,4) = PRRS(:,:,:,4) + 2. * (- ZTMP2_DEVICE(:,:,:) + ZTMP4_DEVICE(:,:,:) )*PFRAC_ICE(:,:,:) @@ -549,7 +549,7 @@ IF ( KRRL >= 1 ) THEN !$acc kernels ZTMP3_DEVICE(:,:,:) = ZTMP4_DEVICE(:,:,:)*ZTMP5_DEVICE(:,:,:)*PINV_PDZZ(:,:,:) !$acc end kernels - CALL DZF_DEVICE(1,IKU,1, ZTMP3_DEVICE, ZTMP4_DEVICE ) + CALL DZF_DEVICE( ZTMP3_DEVICE, ZTMP4_DEVICE ) !$acc kernels PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * (- ZTMP2_DEVICE(:,:,:) + ZTMP4_DEVICE(:,:,:) ) !$acc end kernels @@ -840,7 +840,7 @@ END DO ZTMP2_DEVICE(JI,JJ,JK) = PMZM_PRHODJ(JI,JJ,JK) * ZTMP4_DEVICE(JI,JJ,JK) * PINV_PDZZ(JI,JJ,JK) END DO !$acc end kernels - CALL DZF_DEVICE(1,IKU,1, ZTMP2_DEVICE, ZTMP4_DEVICE) + CALL DZF_DEVICE( ZTMP2_DEVICE, ZTMP4_DEVICE ) !$acc kernels !$acc loop independent collapse(3) DO CONCURRENT ( JI=1:JIU,JJ=1:JJU,JK=1:JKU) @@ -889,7 +889,7 @@ END DO !$acc kernels ZTMP6_DEVICE(:,:,:) = ZTMP4_DEVICE(:,:,:)*ZTMP5_DEVICE(:,:,:)*PINV_PDZZ(:,:,:) !$acc end kernels - CALL DZF_DEVICE(1,IKU,1, ZTMP6_DEVICE, ZTMP3_DEVICE ) + CALL DZF_DEVICE( ZTMP6_DEVICE, ZTMP3_DEVICE ) !$acc kernels ZTMP4_DEVICE(:,:,:) = ZTMP8_DEVICE(:,:,:) * ZFLX(:,:,:)*PINV_PDXX(:,:,:) !$acc end kernels @@ -1226,7 +1226,7 @@ IF (.NOT. L2D) THEN ZTMP1_DEVICE(JI,JJ,JK) = PMZM_PRHODJ(JI,JJ,JK) * ZTMP2_DEVICE(JI,JJ,JK) * PINV_PDZZ(JI,JJ,JK) END DO !$acc end kernels - CALL DZF_DEVICE(1,IKU,1, ZTMP1_DEVICE, ZTMP2_DEVICE ) + CALL DZF_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE ) !$acc kernels !$acc loop independent collapse(3) DO CONCURRENT ( JI=1:JIU,JJ=1:JJU,JK=1:JKU) @@ -1282,7 +1282,7 @@ IF ( KRRL >= 1 .AND. .NOT. L2D) THEN !$acc kernels ZTMP3_DEVICE(:,:,:) = ZTMP6_DEVICE(:,:,:)*PINV_PDZZ(:,:,:) !$acc end kernels - CALL DZF_DEVICE(1,IKU,1, ZTMP3_DEVICE, ZTMP5_DEVICE ) + CALL DZF_DEVICE( ZTMP3_DEVICE, ZTMP5_DEVICE ) !$acc kernels PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * (- ZTMP4_DEVICE(:,:,:) + ZTMP5_DEVICE(:,:,:) )*(1.0-PFRAC_ICE(:,:,:)) PRRS(:,:,:,4) = PRRS(:,:,:,4) + 2. * (- ZTMP4_DEVICE(:,:,:) + ZTMP5_DEVICE(:,:,:) )*PFRAC_ICE(:,:,:) @@ -1295,7 +1295,7 @@ IF ( KRRL >= 1 .AND. .NOT. L2D) THEN !$acc kernels ZTMP3_DEVICE(:,:,:) = ZTMP6_DEVICE(:,:,:)*PINV_PDZZ(:,:,:) !$acc end kernels - CALL DZF_DEVICE(1,IKU,1, ZTMP3_DEVICE, ZTMP5_DEVICE ) + CALL DZF_DEVICE( ZTMP3_DEVICE, ZTMP5_DEVICE ) !$acc kernels PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * (- ZTMP4_DEVICE(:,:,:) + ZTMP5_DEVICE(:,:,:) ) !$acc end kernels @@ -1593,7 +1593,7 @@ IF (KRR/=0) THEN ZTMP1_DEVICE(JI,JJ,JK) = PMZM_PRHODJ(JI,JJ,JK) * ZTMP2_DEVICE(JI,JJ,JK) * PINV_PDZZ(JI,JJ,JK) END DO !$acc end kernels - CALL DZF_DEVICE(1,IKU,1,ZTMP1_DEVICE,ZTMP2_DEVICE ) + CALL DZF_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE ) ! !$acc kernels !$acc loop independent collapse(3) @@ -1649,7 +1649,7 @@ IF (KRR/=0) THEN !$acc kernels ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)* PINV_PDZZ(:,:,:) !$acc end kernels - CALL DZF_DEVICE(1,IKU,1, ZTMP2_DEVICE, ZTMP4_DEVICE ) + CALL DZF_DEVICE( ZTMP2_DEVICE, ZTMP4_DEVICE ) !$acc kernels PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * (- ZTMP3_DEVICE(:,:,:) + ZTMP4_DEVICE(:,:,:) )*(1.0-PFRAC_ICE(:,:,:)) PRRS(:,:,:,4) = PRRS(:,:,:,4) + 2. * (- ZTMP3_DEVICE(:,:,:) + ZTMP4_DEVICE(:,:,:) )*PFRAC_ICE(:,:,:) diff --git a/src/MNH/turb_hor_tke.f90 b/src/MNH/turb_hor_tke.f90 index c5db45b264f6b9f0873232ff6b2adaff8e978855..2319dbaa81a430eb7a82fce09a99ab47b5f3e879 100644 --- a/src/MNH/turb_hor_tke.f90 +++ b/src/MNH/turb_hor_tke.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2020 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -317,7 +317,7 @@ IF (.NOT. LFLAT) THEN ZTMP2_DEVICE(JI,JJ,JK) = PMZM_PRHODJ(JI,JJ,JK) * ZTMP3_DEVICE(JI,JJ,JK) * PINV_PDZZ(JI,JJ,JK) END DO !CONCURRENT !$acc end kernels - CALL DZF_DEVICE(1,IKU,1,ZTMP2_DEVICE,ZTMP3_DEVICE) + CALL DZF_DEVICE( ZTMP2_DEVICE, ZTMP3_DEVICE ) !$acc kernels !$acc loop independent collapse(3) DO CONCURRENT ( JI=1:JIU,JJ=1:JJU,JK=1:JKU) @@ -453,7 +453,7 @@ IF (.NOT. L2D) THEN ZTMP2_DEVICE(JI,JJ,JK) = PMZM_PRHODJ(JI,JJ,JK) * ZTMP3_DEVICE(JI,JJ,JK) * PINV_PDZZ(JI,JJ,JK) END DO !CONCURRENT !$acc end kernels - CALL DZF_DEVICE(1,IKU,1,ZTMP2_DEVICE,ZTMP3_DEVICE) + CALL DZF_DEVICE( ZTMP2_DEVICE, ZTMP3_DEVICE ) !$acc kernels !$acc loop independent collapse(3) DO CONCURRENT ( JI=1:JIU,JJ=1:JJU,JK=1:JKU) diff --git a/src/MNH/turb_hor_uv.f90 b/src/MNH/turb_hor_uv.f90 index f206bcee4bf5373492cbf1c4c52637d9ef07829b..5027ccb574815d722c30805144776f6d4ae80568 100644 --- a/src/MNH/turb_hor_uv.f90 +++ b/src/MNH/turb_hor_uv.f90 @@ -560,7 +560,7 @@ IF (.NOT. LFLAT) THEN ZTMP5_DEVICE(JI,JJ,JK) = ZTMP2_DEVICE(JI,JJ,JK)*ZTMP4_DEVICE(JI,JJ,JK) END DO !CONCURRENT !$acc end kernels - CALL DZF_DEVICE(1,IKU,1,ZTMP5_DEVICE,ZTMP3_DEVICE) + CALL DZF_DEVICE( ZTMP5_DEVICE, ZTMP3_DEVICE ) !$acc kernels !$acc loop independent collapse(3) DO CONCURRENT ( JI=1:JIU,JJ=1:JJU,JK=1:JKU) @@ -630,7 +630,7 @@ IF (.NOT. LFLAT) THEN ZTMP5_DEVICE(JI,JJ,JK) = ZTMP2_DEVICE(JI,JJ,JK)*ZTMP4_DEVICE(JI,JJ,JK) END DO !CONCURRENT !$acc end kernels - CALL DZF_DEVICE(1,IKU,1,ZTMP5_DEVICE,ZTMP3_DEVICE) + CALL DZF_DEVICE( ZTMP5_DEVICE, ZTMP3_DEVICE ) !$acc kernels !$acc loop independent collapse(3) DO CONCURRENT ( JI=1:JIU,JJ=1:JJU,JK=1:JKU) diff --git a/src/MNH/turb_hor_uw.f90 b/src/MNH/turb_hor_uw.f90 index 5433d83f53e4b5d4d0ffd6590824d7a25c46efaa..8978148b5fc25599ca8f5c2db122933cc4dd69a9 100644 --- a/src/MNH/turb_hor_uw.f90 +++ b/src/MNH/turb_hor_uw.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -335,7 +335,7 @@ DO CONCURRENT ( JI=1:JIU,JJ=1:JJU,JK=1:JKU) ZTMP3_DEVICE(JI,JJ,JK) = ZFLX(JI,JJ,JK)* ZTMP1_DEVICE(JI,JJ,JK) / ZTMP2_DEVICE(JI,JJ,JK) END DO !CONCURRENT !$acc end kernels -CALL DZF_DEVICE(1,IKU,1, ZTMP3_DEVICE, ZTMP1_DEVICE ) +CALL DZF_DEVICE( ZTMP3_DEVICE, ZTMP1_DEVICE ) !$acc kernels !$acc loop independent collapse(3) DO CONCURRENT ( JI=1:JIU,JJ=1:JJU,JK=1:JKU) diff --git a/src/MNH/turb_hor_vw.f90 b/src/MNH/turb_hor_vw.f90 index 93446e37cab6a41ac6e2698e6c2fd86685b4d9e4..271f793bec40e683e81e72ee79003dafda768690 100644 --- a/src/MNH/turb_hor_vw.f90 +++ b/src/MNH/turb_hor_vw.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -342,7 +342,7 @@ IF (.NOT. L2D) THEN ZTMP3_DEVICE(JI,JJ,JK) = ZFLX(JI,JJ,JK)* ZTMP1_DEVICE(JI,JJ,JK) / ZTMP2_DEVICE(JI,JJ,JK) END DO !CONCURRENT !$acc end kernels - CALL DZF_DEVICE(1,IKU,1, ZTMP3_DEVICE, ZTMP1_DEVICE ) + CALL DZF_DEVICE( ZTMP3_DEVICE, ZTMP1_DEVICE ) !$acc kernels !$acc loop independent collapse(3) DO CONCURRENT ( JI=1:JIU,JJ=1:JJU,JK=1:JKU) diff --git a/src/MNH/turb_ver_thermo_flux.f90 b/src/MNH/turb_ver_thermo_flux.f90 index f6dfef48bfd697836c49f3f4ab042414e6b9ac28..a074759110a0b314b0aa8a96b266533825cd185f 100644 --- a/src/MNH/turb_ver_thermo_flux.f90 +++ b/src/MNH/turb_ver_thermo_flux.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -1106,7 +1106,7 @@ IF ( KRRL >= 1 ) THEN ZTMP1_DEVICE(:,:,:) = PRHODJ(:,:,:) * PATHETA(:,:,:) * 2. * PSRCM(:,:,:) ZTMP2_DEVICE(:,:,:) = ZFLXZ(:,:,:) / PDZZ(:,:,:) !$acc end kernels - CALL DZF_DEVICE( KKA, KKU, KKL, ZTMP2_DEVICE, ZTMP3_DEVICE ) + CALL DZF_DEVICE( ZTMP2_DEVICE, ZTMP3_DEVICE ) !$acc kernels PRRS(:,:,:,2) = PRRS(:,:,:,2) - ZTMP1_DEVICE(:,:,:) * ZTMP3_DEVICE * (1.0-PFRAC_ICE(:,:,:)) PRRS(:,:,:,4) = PRRS(:,:,:,4) - ZTMP1_DEVICE(:,:,:) * ZTMP3_DEVICE * PFRAC_ICE(:,:,:) @@ -1116,7 +1116,7 @@ IF ( KRRL >= 1 ) THEN ZTMP1_DEVICE(:,:,:) = PRHODJ(:,:,:) * PATHETA(:,:,:) * 2. * PSRCM(:,:,:) ZTMP2_DEVICE(:,:,:) = ZFLXZ(:,:,:) / PDZZ(:,:,:) !$acc end kernels - CALL DZF_DEVICE( KKA, KKU, KKL, ZTMP2_DEVICE, ZTMP3_DEVICE ) + CALL DZF_DEVICE( ZTMP2_DEVICE, ZTMP3_DEVICE ) !$acc kernels PRRS(:,:,:,2) = PRRS(:,:,:,2) - ZTMP1_DEVICE(:,:,:) * ZTMP3_DEVICE(:,:,:) !$acc end kernels @@ -1592,7 +1592,7 @@ END DO ZTMP1_DEVICE(:,:,:) = PRHODJ(:,:,:)*PAMOIST(:,:,:)*2.*PSRCM(:,:,:) ZTMP2_DEVICE(:,:,:) = ZFLXZ(:,:,:)/PDZZ(:,:,:) !$acc end kernels - CALL DZF_DEVICE(KKA,KKU,KKL, ZTMP2_DEVICE, ZTMP3_DEVICE ) + CALL DZF_DEVICE( ZTMP2_DEVICE, ZTMP3_DEVICE ) !$acc kernels PRRS(:,:,:,2) = PRRS(:,:,:,2) - ZTMP1_DEVICE(:,:,:) * ZTMP3_DEVICE(:,:,:) * (1.0-PFRAC_ICE(:,:,:)) PRRS(:,:,:,4) = PRRS(:,:,:,4) - ZTMP1_DEVICE(:,:,:) * ZTMP3_DEVICE(:,:,:) * PFRAC_ICE(:,:,:) @@ -1602,7 +1602,7 @@ END DO ZTMP1_DEVICE(:,:,:) = PRHODJ(:,:,:)*PAMOIST(:,:,:)*2.*PSRCM(:,:,:) ZTMP2_DEVICE(:,:,:) = ZFLXZ(:,:,:)/PDZZ(:,:,:) !$acc end kernels - CALL DZF_DEVICE(KKA,KKU,KKL, ZTMP2_DEVICE, ZTMP3_DEVICE ) + CALL DZF_DEVICE( ZTMP2_DEVICE, ZTMP3_DEVICE ) !$acc kernels PRRS(:,:,:,2) = PRRS(:,:,:,2) - ZTMP1_DEVICE(:,:,:) * ZTMP3_DEVICE(:,:,:) !$acc end kernels diff --git a/src/ZSOLVER/advecuvw_weno_k.f90 b/src/ZSOLVER/advecuvw_weno_k.f90 index d9d492b8129ddee5b93835b7a9f4ec710438fa8b..9535df3c91010cb889670cbe5d6aa6baf5c4ef5c 100644 --- a/src/ZSOLVER/advecuvw_weno_k.f90 +++ b/src/ZSOLVER/advecuvw_weno_k.f90 @@ -235,7 +235,7 @@ CASE(1) ! WENO 1 !PRUS = PRUS - DZF(1,IKU,1,UP_MZ(PUT,MXM(PRWCT))) CALL MXM_DEVICE(PRWCT,ZWORK) CALL UP_MZ_DEVICE(PUT,ZWORK,ZMEAN) - CALL DZF_DEVICE(1,IKU,1,ZMEAN,ZWORK) + CALL DZF_DEVICE( ZMEAN, ZWORK ) !$acc kernels PRUS(:,:,:) = PRUS(:,:,:) - ZWORK(:,:,:) !$acc end kernels @@ -261,7 +261,7 @@ CASE(1) ! WENO 1 !PRVS = PRVS - DZF(1,IKU,1,UP_MZ(PVT,MYM(PRWCT))) CALL MYM_DEVICE(PRWCT,ZWORK) CALL UP_MZ_DEVICE(PVT,ZWORK,ZMEAN) - CALL DZF_DEVICE(1,IKU,1,ZMEAN,ZWORK) + CALL DZF_DEVICE( ZMEAN, ZWORK ) !$acc kernels PRVS(:,:,:) = PRVS(:,:,:) - ZWORK(:,:,:) !$acc end kernels @@ -372,7 +372,7 @@ CASE(3) ! WENO 3 ZT3D(:,:,:,IZFPOS1), ZT3D(:,:,:,IZFPOS2), ZT3D(:,:,:,IZFNEG1), ZT3D(:,:,:,IZFNEG2), & ZT3D(:,:,:,IZBPOS1), ZT3D(:,:,:,IZBPOS2), ZT3D(:,:,:,IZBNEG1), ZT3D(:,:,:,IZBNEG2), & ZT3D(:,:,:,IZOMP1), ZT3D(:,:,:,IZOMP2), ZT3D(:,:,:,IZOMN1), ZT3D(:,:,:,IZOMN2) ) - CALL DZF_DEVICE(1,IKU,1,ZMEAN,ZWORK) + CALL DZF_DEVICE( ZMEAN, ZWORK ) !$acc kernels PRUS(:,:,:) = PRUS(:,:,:) - ZWORK(:,:,:) !$acc end kernels @@ -406,7 +406,7 @@ CASE(3) ! WENO 3 ZT3D(:,:,:,IZFPOS1), ZT3D(:,:,:,IZFPOS2), ZT3D(:,:,:,IZFNEG1), ZT3D(:,:,:,IZFNEG2), & ZT3D(:,:,:,IZBPOS1), ZT3D(:,:,:,IZBPOS2), ZT3D(:,:,:,IZBNEG1), ZT3D(:,:,:,IZBNEG2), & ZT3D(:,:,:,IZOMP1), ZT3D(:,:,:,IZOMP2), ZT3D(:,:,:,IZOMN1), ZT3D(:,:,:,IZOMN2) ) - CALL DZF_DEVICE(1,IKU,1,ZMEAN,ZWORK) + CALL DZF_DEVICE( ZMEAN, ZWORK ) !$acc kernels PRVS(:,:,:) = PRVS(:,:,:) - ZWORK(:,:,:) !$acc end kernels @@ -556,7 +556,7 @@ CASE(5) ! WENO 5 ZT3D(:,:,:,IZOMP1), ZT3D(:,:,:,IZOMP2), ZT3D(:,:,:,IZOMP3), & ZT3D(:,:,:,IZOMN1), ZT3D(:,:,:,IZOMN2), ZT3D(:,:,:,IZOMN3) ) CALL GET_HALO_D(ZMEAN)! Update HALO - maybe not necessary (T.Lunet) - CALL DZF_DEVICE(1,IKU,1,ZMEAN,ZWORK) + CALL DZF_DEVICE( ZMEAN, ZWORK ) !$acc kernels PRUS(:,:,:) = PRUS(:,:,:) - ZWORK(:,:,:) !$acc end kernels @@ -601,7 +601,7 @@ CASE(5) ! WENO 5 ZT3D(:,:,:,IZOMP1), ZT3D(:,:,:,IZOMP2), ZT3D(:,:,:,IZOMP3), & ZT3D(:,:,:,IZOMN1), ZT3D(:,:,:,IZOMN2), ZT3D(:,:,:,IZOMN3) ) CALL GET_HALO_D(ZMEAN)! Update HALO - maybe not necessary (T.Lunet) - CALL DZF_DEVICE(1,IKU,1,ZMEAN,ZWORK) + CALL DZF_DEVICE( ZMEAN, ZWORK ) !$acc kernels PRVS(:,:,:) = PRVS(:,:,:) - ZWORK(:,:,:) !$acc end kernels diff --git a/src/ZSOLVER/ppm.f90 b/src/ZSOLVER/ppm.f90 index d97a86b4eef6ca1d6b0b0e9c0433ef503899e4a8..43378661f97691e9cadf74aed320c0df1ac2148f 100644 --- a/src/ZSOLVER/ppm.f90 +++ b/src/ZSOLVER/ppm.f90 @@ -2412,7 +2412,7 @@ do jk = 1, iku end do !dzf(PR,ZQR) !$acc end kernels - CALL DZF_DEVICE(1,1,1,ZQR,PR) + CALL DZF_DEVICE(ZQR,PR) #endif ! #ifndef MNH_OPENACC @@ -3723,7 +3723,7 @@ PR = PSRC * PRHO - & ZCR_MZM = PCR* ZRHO_MZM*( ZFPOS(:,:,:)*(0.5+SIGN(0.5,PCR)) + ZFNEG*(0.5-SIGN(0.5,PCR)) ) !dzf(ZCR_DZF,ZCR_MZM) !$acc end kernels - CALL DZF_DEVICE(1,1,1,ZCR_MZM,ZCR_DZF) + CALL DZF_DEVICE(ZCR_MZM,ZCR_DZF) !$acc kernels PR = PSRC * PRHO - ZCR_DZF #endif diff --git a/src/ZSOLVER/turb_hor_dyn_corr.f90 b/src/ZSOLVER/turb_hor_dyn_corr.f90 index 45e0b91b2ca6d8fe4dbbf5fa96019afe611cc16a..9c9fb79dd445e15be05838ae9d506fb0586001e7 100644 --- a/src/ZSOLVER/turb_hor_dyn_corr.f90 +++ b/src/ZSOLVER/turb_hor_dyn_corr.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -733,7 +733,7 @@ IF (.NOT. LFLAT) THEN ZTMP2_DEVICE(JI,JJ,JK) = PDZX(JI,JJ,JK) / ZTMP1_DEVICE(JI,JJ,JK) * ZTMP4_DEVICE(JI,JJ,JK) END DO !CONCURRENT !$acc end kernels - CALL DZF_DEVICE(1,IKU,1,ZTMP2_DEVICE,ZTMP1_DEVICE) + CALL DZF_DEVICE( ZTMP2_DEVICE, ZTMP1_DEVICE ) !$acc kernels async(1) PRUS(:,:,:)=PRUS(:,:,:) & -ZTMP3_DEVICE(:,:,:) & @@ -953,7 +953,7 @@ IF (.NOT. L2D) THEN ZTMP2_DEVICE(JI,JJ,JK) = PDZY(JI,JJ,JK) / ZTMP1_DEVICE(JI,JJ,JK) * ZTMP4_DEVICE(JI,JJ,JK) END DO !CONCURRENT !$acc end kernels - CALL DZF_DEVICE(1,IKU,1,ZTMP2_DEVICE,ZTMP4_DEVICE ) + CALL DZF_DEVICE( ZTMP2_DEVICE, ZTMP4_DEVICE ) !$acc kernels async(1) PRVS(:,:,:)=PRVS(:,:,:) & -ZTMP3_DEVICE(:,:,:) & diff --git a/src/ZSOLVER/turb_hor_thermo_flux.f90 b/src/ZSOLVER/turb_hor_thermo_flux.f90 index c16b9e9c8b8f74b77b3f3467f1bb7208ceec77bb..8217fa9da82dd684f1fbf5cfff94000e44aa8567 100644 --- a/src/ZSOLVER/turb_hor_thermo_flux.f90 +++ b/src/ZSOLVER/turb_hor_thermo_flux.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -432,7 +432,7 @@ DO CONCURRENT ( JI=1:JIU,JJ=1:JJU,JK=1:JKU) ZTMP2_DEVICE(JI,JJ,JK) = PMZM_PRHODJ(JI,JJ,JK) * ZTMP4_DEVICE(JI,JJ,JK) * PINV_PDZZ(JI,JJ,JK) END DO !$acc end kernels - CALL DZF_DEVICE(1,IKU,1,ZTMP2_DEVICE,ZTMP4_DEVICE ) + CALL DZF_DEVICE( ZTMP2_DEVICE, ZTMP4_DEVICE ) !$acc kernels PRTHLS(:,:,:) = PRTHLS(:,:,:) - ZTMP3_DEVICE(:,:,:) + ZTMP4_DEVICE(:,:,:) !$acc end kernels @@ -530,7 +530,7 @@ IF ( KRRL >= 1 ) THEN !$acc kernels ZTMP3_DEVICE(:,:,:) = ZTMP4_DEVICE(:,:,:)*ZTMP5_DEVICE(:,:,:)*PINV_PDZZ(:,:,:) !$acc end kernels - CALL DZF_DEVICE(1,IKU,1, ZTMP3_DEVICE, ZTMP4_DEVICE ) + CALL DZF_DEVICE( ZTMP3_DEVICE, ZTMP4_DEVICE ) !$acc kernels PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * (- ZTMP2_DEVICE(:,:,:) + ZTMP4_DEVICE(:,:,:) )*(1.0-PFRAC_ICE(:,:,:)) PRRS(:,:,:,4) = PRRS(:,:,:,4) + 2. * (- ZTMP2_DEVICE(:,:,:) + ZTMP4_DEVICE(:,:,:) )*PFRAC_ICE(:,:,:) @@ -547,7 +547,7 @@ IF ( KRRL >= 1 ) THEN !$acc kernels ZTMP3_DEVICE(:,:,:) = ZTMP4_DEVICE(:,:,:)*ZTMP5_DEVICE(:,:,:)*PINV_PDZZ(:,:,:) !$acc end kernels - CALL DZF_DEVICE(1,IKU,1, ZTMP3_DEVICE, ZTMP4_DEVICE ) + CALL DZF_DEVICE( ZTMP3_DEVICE, ZTMP4_DEVICE ) !$acc kernels PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * (- ZTMP2_DEVICE(:,:,:) + ZTMP4_DEVICE(:,:,:) ) !$acc end kernels @@ -838,7 +838,7 @@ END DO ZTMP2_DEVICE(JI,JJ,JK) = PMZM_PRHODJ(JI,JJ,JK) * ZTMP4_DEVICE(JI,JJ,JK) * PINV_PDZZ(JI,JJ,JK) END DO !$acc end kernels - CALL DZF_DEVICE(1,IKU,1, ZTMP2_DEVICE, ZTMP4_DEVICE) + CALL DZF_DEVICE( ZTMP2_DEVICE, ZTMP4_DEVICE) !$acc kernels !$acc loop independent collapse(3) DO CONCURRENT ( JI=1:JIU,JJ=1:JJU,JK=1:JKU) @@ -884,7 +884,7 @@ END DO ! ZTMP6_DEVICE(:,:,:) = ZTMP4_DEVICE(:,:,:)*ZTMP5_DEVICE(:,:,:)*PINV_PDZZ(:,:,:) !$acc end kernels - CALL DZF_DEVICE(1,IKU,1, ZTMP6_DEVICE, ZTMP3_DEVICE ) + CALL DZF_DEVICE( ZTMP6_DEVICE, ZTMP3_DEVICE ) !$acc kernels ZTMP4_DEVICE(:,:,:) = ZTMP8_DEVICE(:,:,:) * ZFLX(:,:,:)*PINV_PDXX(:,:,:) !$acc end kernels @@ -1221,7 +1221,7 @@ IF (.NOT. L2D) THEN ZTMP1_DEVICE(JI,JJ,JK) = PMZM_PRHODJ(JI,JJ,JK) * ZTMP2_DEVICE(JI,JJ,JK) * PINV_PDZZ(JI,JJ,JK) END DO !$acc end kernels - CALL DZF_DEVICE(1,IKU,1, ZTMP1_DEVICE, ZTMP2_DEVICE ) + CALL DZF_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE ) !$acc kernels !$acc loop independent collapse(3) DO CONCURRENT ( JI=1:JIU,JJ=1:JJU,JK=1:JKU) @@ -1277,7 +1277,7 @@ IF ( KRRL >= 1 .AND. .NOT. L2D) THEN !$acc kernels ZTMP3_DEVICE(:,:,:) = ZTMP6_DEVICE(:,:,:)*PINV_PDZZ(:,:,:) !$acc end kernels - CALL DZF_DEVICE(1,IKU,1, ZTMP3_DEVICE, ZTMP5_DEVICE ) + CALL DZF_DEVICE( ZTMP3_DEVICE, ZTMP5_DEVICE ) !$acc kernels PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * (- ZTMP4_DEVICE(:,:,:) + ZTMP5_DEVICE(:,:,:) )*(1.0-PFRAC_ICE(:,:,:)) PRRS(:,:,:,4) = PRRS(:,:,:,4) + 2. * (- ZTMP4_DEVICE(:,:,:) + ZTMP5_DEVICE(:,:,:) )*PFRAC_ICE(:,:,:) @@ -1290,7 +1290,7 @@ IF ( KRRL >= 1 .AND. .NOT. L2D) THEN !$acc kernels ZTMP3_DEVICE(:,:,:) = ZTMP6_DEVICE(:,:,:)*PINV_PDZZ(:,:,:) !$acc end kernels - CALL DZF_DEVICE(1,IKU,1, ZTMP3_DEVICE, ZTMP5_DEVICE ) + CALL DZF_DEVICE( ZTMP3_DEVICE, ZTMP5_DEVICE ) !$acc kernels PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * (- ZTMP4_DEVICE(:,:,:) + ZTMP5_DEVICE(:,:,:) ) !$acc end kernels @@ -1588,7 +1588,7 @@ IF (KRR/=0) THEN ZTMP1_DEVICE(JI,JJ,JK) = PMZM_PRHODJ(JI,JJ,JK) * ZTMP2_DEVICE(JI,JJ,JK) * PINV_PDZZ(JI,JJ,JK) END DO !$acc end kernels - CALL DZF_DEVICE(1,IKU,1,ZTMP1_DEVICE,ZTMP2_DEVICE ) + CALL DZF_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE ) ! !$acc kernels !$acc loop independent collapse(3) @@ -1644,7 +1644,7 @@ IF (KRR/=0) THEN !$acc kernels ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)* PINV_PDZZ(:,:,:) !$acc end kernels - CALL DZF_DEVICE(1,IKU,1, ZTMP2_DEVICE, ZTMP4_DEVICE ) + CALL DZF_DEVICE( ZTMP2_DEVICE, ZTMP4_DEVICE ) !$acc kernels PRRS(:,:,:,2) = PRRS(:,:,:,2) + 2. * (- ZTMP3_DEVICE(:,:,:) + ZTMP4_DEVICE(:,:,:) )*(1.0-PFRAC_ICE(:,:,:)) PRRS(:,:,:,4) = PRRS(:,:,:,4) + 2. * (- ZTMP3_DEVICE(:,:,:) + ZTMP4_DEVICE(:,:,:) )*PFRAC_ICE(:,:,:)