diff --git a/src/MNH/gradient_v.f90 b/src/MNH/gradient_v.f90 index 80161d8c6188715b0d0e3f08c8269ce9f74ef59f..5f44dbffb7b74ef5291e958c039b947a4efacf03 100644 --- a/src/MNH/gradient_v.f90 +++ b/src/MNH/gradient_v.f90 @@ -23,10 +23,8 @@ END FUNCTION GY_V_M ! ! #ifdef MNH_OPENACC -SUBROUTINE GY_V_M_DEVICE(KKA,KKU,KL,PA,PDYY,PDZZ,PDZY,PGY_V_M_DEVICE) +SUBROUTINE GY_V_M_DEVICE(PA,PDYY,PDZZ,PDZY,PGY_V_M_DEVICE) ! -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 the V point REAL, DIMENSION(:,:,:), INTENT(IN) :: PDYY ! metric coefficient dyy REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! metric coefficient dzz @@ -51,10 +49,8 @@ END FUNCTION GX_V_UV ! ! #ifdef MNH_OPENACC -SUBROUTINE GX_V_UV_DEVICE(KKA,KKU,KL,PA,PDXX,PDZZ,PDZX,PGX_V_UV_DEVICE) +SUBROUTINE GX_V_UV_DEVICE(PA,PDXX,PDZZ,PDZX,PGX_V_UV_DEVICE) ! -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 the V point REAL, DIMENSION(:,:,:), INTENT(IN) :: PDXX ! metric coefficient dxx REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! metric coefficient dzz @@ -77,10 +73,8 @@ END FUNCTION GZ_V_VW ! ! #ifdef MNH_OPENACC -SUBROUTINE GZ_V_VW_DEVICE(KKA,KKU,KL,PA,PDZZ,PGZ_V_VW_DEVICE) +SUBROUTINE GZ_V_VW_DEVICE(PA,PDZZ,PGZ_V_VW_DEVICE) ! -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 the V point REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! metric coefficient dzz ! @@ -191,7 +185,7 @@ END FUNCTION GY_V_M ! #ifdef MNH_OPENACC ! ####################################################### - SUBROUTINE GY_V_M_DEVICE(KKA,KKU,KL,PA,PDYY,PDZZ,PDZY,PGY_V_M_DEVICE) + SUBROUTINE GY_V_M_DEVICE(PA,PDYY,PDZZ,PDZY,PGY_V_M_DEVICE) ! ####################################################### ! !* 0. DECLARATIONS @@ -206,8 +200,6 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments 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 the V point REAL, DIMENSION(:,:,:), INTENT(IN) :: PDYY ! metric coefficient dyy REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! metric coefficient dzz @@ -381,7 +373,7 @@ END FUNCTION GX_V_UV ! #ifdef MNH_OPENACC ! ######################################################### - SUBROUTINE GX_V_UV_DEVICE(KKA,KKU,KL,PA,PDXX,PDZZ,PDZX,PGX_V_UV_DEVICE) + SUBROUTINE GX_V_UV_DEVICE(PA,PDXX,PDZZ,PDZX,PGX_V_UV_DEVICE) ! ######################################################### ! !* 0. DECLARATIONS @@ -396,8 +388,6 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments 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 the V point REAL, DIMENSION(:,:,:), INTENT(IN) :: PDXX ! metric coefficient dxx REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! metric coefficient dzz @@ -562,7 +552,7 @@ END FUNCTION GZ_V_VW ! #ifdef MNH_OPENACC ! ####################################################### - SUBROUTINE GZ_V_VW_DEVICE(KKA,KKU,KL,PA,PDZZ,PGZ_V_VW_DEVICE) + SUBROUTINE GZ_V_VW_DEVICE(PA,PDZZ,PGZ_V_VW_DEVICE) ! ####################################################### ! !* 0. DECLARATIONS @@ -577,8 +567,6 @@ IMPLICIT NONE ! !* 0.1 declarations of arguments 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 the V point REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! metric coefficient dzz ! diff --git a/src/MNH/turb_hor_dyn_corr.f90 b/src/MNH/turb_hor_dyn_corr.f90 index 2ac0e3d5416fbbb0a62aa53bc245c248ae35678f..831f1f0b2a653d1809104491afe12f544024eee6 100644 --- a/src/MNH/turb_hor_dyn_corr.f90 +++ b/src/MNH/turb_hor_dyn_corr.f90 @@ -425,7 +425,7 @@ ZMZF_DZZ = MZF(PDZZ) #else CALL GX_U_M_DEVICE(PUM,PDXX,PDZZ,PDZX,GX_U_M_PUM) IF (.NOT. L2D) THEN - CALL GY_V_M_DEVICE(1,IKU,1,PVM,PDYY,PDZZ,PDZY,GY_V_M_PVM) + CALL GY_V_M_DEVICE(PVM,PDYY,PDZZ,PDZY,GY_V_M_PVM) END IF CALL GZ_W_M_DEVICE(1,IKU,1,PWM,PDZZ,GZ_W_M_PWM) ! diff --git a/src/MNH/turb_hor_uv.f90 b/src/MNH/turb_hor_uv.f90 index e597f4f9b05805186c99dc81bed2861beaac6d17..a861077797cb5efd3b417f10617ebb708d526af2 100644 --- a/src/MNH/turb_hor_uv.f90 +++ b/src/MNH/turb_hor_uv.f90 @@ -224,7 +224,6 @@ INTEGER :: IZFLX,IZWORK,IZDIRSINZW,IGY_U_UV_PUM,IGX_V_UV_PVM REAL :: ZTIME1, ZTIME2 ! #ifdef MNH_OPENACC -INTEGER :: IKU REAL, DIMENSION(:,:,:), pointer , contiguous :: ZTMP1_DEVICE REAL, DIMENSION(:,:,:), pointer , contiguous :: ZTMP2_DEVICE REAL, DIMENSION(:,:,:), pointer , contiguous :: ZTMP3_DEVICE @@ -319,9 +318,6 @@ iztmp7_device = MNH_ALLOCATE_ZT3D( ztmp7_device,JIU,JJU,JKU ) ! IKB = 1+JPVEXT IKE = SIZE(PUM,3)-JPVEXT -#ifdef MNH_OPENACC -IKU = NKMAX + 2 * JPVEXT -#endif ! !$acc kernels !$acc loop independent collapse(2) @@ -340,7 +336,7 @@ IF (.NOT. L2D) THEN GY_U_UV_PUM = GY_U_UV(PUM,PDYY,PDZZ,PDZY) END IF #else -CALL GX_V_UV_DEVICE(1,IKU,1,PVM,PDXX,PDZZ,PDZX,GX_V_UV_PVM) +CALL GX_V_UV_DEVICE(PVM,PDXX,PDZZ,PDZX,GX_V_UV_PVM) IF (.NOT. L2D) THEN CALL GY_U_UV_DEVICE(PUM,PDYY,PDZZ,PDZY,GY_U_UV_PUM) END IF @@ -776,7 +772,7 @@ IF (LLES_CALL .AND. KSPLT==1) THEN CALL MXF_DEVICE(ZTMP2_DEVICE,ZTMP1_DEVICE) CALL LES_MEAN_SUBGRID(ZTMP1_DEVICE, X_LES_RES_ddxa_U_SBG_UaU , .TRUE.) ! - CALL GX_V_UV_DEVICE(1,IKU,1,PVM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GX_V_UV_DEVICE(PVM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) !$acc kernels ZTMP3_DEVICE = ZTMP1_DEVICE*ZFLX !$acc end kernels diff --git a/src/MNH/turb_hor_vw.f90 b/src/MNH/turb_hor_vw.f90 index 0af42385c75bc0d4359ce142236e3cd24317462a..17e5ad9109d16dd07f15b93241545b445f5adbf9 100644 --- a/src/MNH/turb_hor_vw.f90 +++ b/src/MNH/turb_hor_vw.f90 @@ -436,7 +436,7 @@ IF (KSPLT==1) THEN #ifndef MNH_OPENACC ZWORK(:,:,:) =-MZF( MYF( ZFLX *( GZ_V_VW(PVM,PDZZ) + GY_W_VW_PWM ) ) ) #else - CALL GZ_V_VW_DEVICE(1,IKU,1,PVM,PDZZ,ZTMP1_DEVICE) + CALL GZ_V_VW_DEVICE(PVM,PDZZ,ZTMP1_DEVICE) !$acc kernels !$acc loop independent collapse(3) DO CONCURRENT ( JI=1:JIU,JJ=1:JJU,JK=1:JKU) @@ -527,7 +527,7 @@ IF (LLES_CALL .AND. KSPLT==1) THEN CALL MZF_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE ) CALL LES_MEAN_SUBGRID( ZTMP2_DEVICE, X_LES_SUBGRID_WV , .TRUE. ) ! - CALL GZ_V_VW_DEVICE(1,IKU,1,PVM,PDZZ,ZTMP1_DEVICE) + CALL GZ_V_VW_DEVICE(PVM,PDZZ,ZTMP1_DEVICE) !$acc kernels ZTMP2_DEVICE = ZTMP1_DEVICE*ZFLX !$acc end kernels diff --git a/src/MNH/turb_ver_dyn_flux.f90 b/src/MNH/turb_ver_dyn_flux.f90 index 1efb2d22c8659773abf50729746b9be2b3755856..07131de0e992fb3a2e88e98fab19f3eaaabb1dd6 100644 --- a/src/MNH/turb_ver_dyn_flux.f90 +++ b/src/MNH/turb_ver_dyn_flux.f90 @@ -1315,7 +1315,7 @@ PWV(:,:,:) = ZFLXZ(:,:,:) #ifndef MNH_OPENACC ZA(:,:,:) = - MZF( MYF ( ZFLXZ * GZ_V_VW(PVM,PDZZ) ) ) #else -CALL GZ_V_VW_DEVICE(KKA,KKU,KKL,PVM,PDZZ,ZTMP1_DEVICE) +CALL GZ_V_VW_DEVICE(PVM,PDZZ,ZTMP1_DEVICE) !$acc kernels !$acc loop independent collapse(3) DO CONCURRENT ( JI=1:JIU,JJ=1:JJU,JK=1:JKU) @@ -1377,7 +1377,7 @@ IF (LLES_CALL) THEN CALL MZF_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE ) CALL LES_MEAN_SUBGRID( ZTMP2_DEVICE, X_LES_SUBGRID_WV ) ! - CALL GZ_V_VW_DEVICE(KKA,KKU,KKL,PVM,PDZZ,ZTMP1_DEVICE) + CALL GZ_V_VW_DEVICE(PVM,PDZZ,ZTMP1_DEVICE) !$acc kernels ZTMP2_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZFLXZ(:,:,:) !$acc end kernels @@ -1574,7 +1574,7 @@ IF(HTURBDIM=='3DIM') THEN CALL LES_MEAN_SUBGRID( ZTMP4_DEVICE, X_LES_RES_ddxa_Thl_SBG_UaW , .TRUE. ) ! IF (KRR>=1) THEN - CALL GY_V_M_DEVICE(KKA,KKU,KKL,PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZTMP1_DEVICE) + CALL GY_V_M_DEVICE(PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZTMP1_DEVICE) CALL MZF_DEVICE( ZFLXZ, ZTMP2_DEVICE ) !$acc kernels ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:) diff --git a/src/ZSOLVER/turb_hor_dyn_corr.f90 b/src/ZSOLVER/turb_hor_dyn_corr.f90 index f44d4e47ef09ab7a75e797ce1d7dd785f62c5b44..74548507bdfa8d709ef74110d2a33784a081bdb1 100644 --- a/src/ZSOLVER/turb_hor_dyn_corr.f90 +++ b/src/ZSOLVER/turb_hor_dyn_corr.f90 @@ -429,7 +429,7 @@ ZMZF_DZZ = MZF(PDZZ) #else CALL GX_U_M_DEVICE(PUM,PDXX,PDZZ,PDZX,GX_U_M_PUM) IF (.NOT. L2D) THEN - CALL GY_V_M_DEVICE(1,IKU,1,PVM,PDYY,PDZZ,PDZY,GY_V_M_PVM) + CALL GY_V_M_DEVICE(PVM,PDYY,PDZZ,PDZY,GY_V_M_PVM) END IF CALL GZ_W_M_DEVICE(1,IKU,1,PWM,PDZZ,GZ_W_M_PWM) !