diff --git a/src/MNH/gradient_m.f90 b/src/MNH/gradient_m.f90 index b74fb40d947f7c3ace3aba78574019cc06d47e59..f99ed00d5a50afb89410f694d5d1e6bc34a85f69 100644 --- a/src/MNH/gradient_m.f90 +++ b/src/MNH/gradient_m.f90 @@ -23,9 +23,7 @@ END FUNCTION GX_M_M ! ! #ifdef MNH_OPENACC -SUBROUTINE GX_M_M_DEVICE(KKA,KKU,KL,PA,PDXX,PDZZ,PDZX,PGX_M_M) -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 GX_M_M_DEVICE(PA,PDXX,PDZZ,PDZX,PGX_M_M) REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at the mass point REAL, DIMENSION(:,:,:), INTENT(IN) :: PDXX ! metric coefficient dxx REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! metric coefficient dzz @@ -49,9 +47,7 @@ END FUNCTION GY_M_M ! ! #ifdef MNH_OPENACC -SUBROUTINE GY_M_M_DEVICE(KKA,KKU,KL,PA,PDYY,PDZZ,PDZY,PGY_M_M) -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 GY_M_M_DEVICE(PA,PDYY,PDZZ,PDZY,PGY_M_M) REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at the mass point REAL, DIMENSION(:,:,:), INTENT(IN) :: PDYY ! metric coefficient dyy REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! metric coefficient dzz @@ -74,9 +70,7 @@ END FUNCTION GZ_M_M ! ! #ifdef MNH_OPENACC -SUBROUTINE GZ_M_M_DEVICE(KKA,KKU,KL,PA,PDZZ,PGZ_M_M) -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 GZ_M_M_DEVICE(PA,PDZZ,PGZ_M_M) REAL, DIMENSION(:,:,:), INTENT(IN) :: PA ! variable at the mass point REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! metric coefficient dzz ! @@ -276,7 +270,7 @@ END FUNCTION GX_M_M ! #ifdef MNH_OPENACC ! ####################################################### - SUBROUTINE GX_M_M_DEVICE(KKA,KKU,KL,PA,PDXX,PDZZ,PDZX,PGX_M_M) + SUBROUTINE GX_M_M_DEVICE(PA,PDXX,PDZZ,PDZX,PGX_M_M) ! ####################################################### ! !* 0. DECLARATIONS @@ -292,8 +286,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 mass point REAL, DIMENSION(:,:,:), INTENT(IN) :: PDXX ! metric coefficient dxx REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! metric coefficient dzz @@ -446,7 +438,7 @@ END FUNCTION GY_M_M ! #ifdef MNH_OPENACC ! ####################################################### - SUBROUTINE GY_M_M_DEVICE(KKA,KKU,KL,PA,PDYY,PDZZ,PDZY,PGY_M_M) + SUBROUTINE GY_M_M_DEVICE(PA,PDYY,PDZZ,PDZY,PGY_M_M) ! ####################################################### ! !* 0. DECLARATIONS @@ -462,8 +454,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 mass point REAL, DIMENSION(:,:,:), INTENT(IN) :: PDYY ! metric coefficient dyy REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! metric coefficient dzz @@ -602,7 +592,7 @@ END FUNCTION GZ_M_M ! #ifdef MNH_OPENACC ! ####################################################### - SUBROUTINE GZ_M_M_DEVICE(KKA,KKU,KL,PA,PDZZ,PGZ_M_M) + SUBROUTINE GZ_M_M_DEVICE(PA,PDZZ,PGZ_M_M) ! ####################################################### ! !* 0. DECLARATIONS @@ -618,8 +608,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 mass point REAL, DIMENSION(:,:,:), INTENT(IN) :: PDZZ ! metric coefficient dzz ! diff --git a/src/MNH/prandtl.f90 b/src/MNH/prandtl.f90 index af2fb057768313d44db11abdb482884215f10fb5..4f07ff0d0ce8ced2e9365b4012f7c8119309fd8e 100644 --- a/src/MNH/prandtl.f90 +++ b/src/MNH/prandtl.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. @@ -563,7 +563,7 @@ ELSE IF (L2D) THEN ! 3D case in a 2D model #endif PRED2TH3(:,:,IKB)=PRED2TH3(:,:,IKB+KKL) #else - CALL GX_M_M_DEVICE(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PTHLM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) !$acc kernels #ifndef MNH_BITREP !$acc loop independent collapse(3) @@ -604,7 +604,7 @@ ELSE IF (L2D) THEN ! 3D case in a 2D model #endif PRED2R3(:,:,IKB)=PRED2R3(:,:,IKB+KKL) #else - CALL GX_M_M_DEVICE(KKA,KKU,KKL,PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) !$acc kernels #ifndef MNH_BITREP !$acc loop independent collapse(3) @@ -646,8 +646,8 @@ ELSE IF (L2D) THEN ! 3D case in a 2D model GX_M_M(PTHLM,PDXX,PDZZ,PDZX)) PRED2THR3(:,:,IKB)=PRED2THR3(:,:,IKB+KKL) #else - CALL GX_M_M_DEVICE(KKA,KKU,KKL,PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) - CALL GX_M_M_DEVICE(KKA,KKU,KKL,PTHLM ,PDXX,PDZZ,PDZX,ZTMP2_DEVICE) + CALL GX_M_M_DEVICE(PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PTHLM ,PDXX,PDZZ,PDZX,ZTMP2_DEVICE) !$acc kernels !$acc loop independent collapse(3) DO CONCURRENT ( JI=1:JIU,JJ=1:JJU,JK=1:JKU) @@ -687,7 +687,7 @@ call Print_msg( NVERB_WARNING, 'GEN', 'PRANDTL', 'OpenACC: L2D=.T. and KRR=0 not #endif PRED2TH3(:,:,IKB)=PRED2TH3(:,:,IKB+KKL) #else - CALL GX_M_M_DEVICE(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PTHLM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) !$acc kernels #ifndef MNH_BITREP DO CONCURRENT ( JI=1:JIU,JJ=1:JJU,JK=1:JKU) @@ -743,8 +743,8 @@ ELSE ! 3D case in a 3D model #endif PRED2TH3(:,:,IKB)=PRED2TH3(:,:,IKB+KKL) #else - CALL GX_M_M_DEVICE(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) - CALL GY_M_M_DEVICE(KKA,KKU,KKL,PTHLM,PDYY,PDZZ,PDZY,ZTMP2_DEVICE) + CALL GX_M_M_DEVICE(PTHLM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GY_M_M_DEVICE(PTHLM,PDYY,PDZZ,PDZY,ZTMP2_DEVICE) !$acc kernels #ifndef MNH_BITREP !$acc loop independent collapse(3) @@ -787,8 +787,8 @@ ELSE ! 3D case in a 3D model #endif PRED2R3(:,:,IKB)=PRED2R3(:,:,IKB+KKL) #else - CALL GX_M_M_DEVICE(KKA,KKU,KKL,PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) - CALL GY_M_M_DEVICE(KKA,KKU,KKL,PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZTMP2_DEVICE) + CALL GX_M_M_DEVICE(PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GY_M_M_DEVICE(PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZTMP2_DEVICE) !$acc kernels #ifndef MNH_BITREP !$acc loop independent collapse(3) @@ -834,10 +834,10 @@ ELSE ! 3D case in a 3D model GY_M_M(PTHLM,PDYY,PDZZ,PDZY) ) PRED2THR3(:,:,IKB)=PRED2THR3(:,:,IKB+KKL) #else - CALL GX_M_M_DEVICE(KKA,KKU,KKL,PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) - CALL GX_M_M_DEVICE(KKA,KKU,KKL,PTHLM ,PDXX,PDZZ,PDZX,ZTMP2_DEVICE) - CALL GY_M_M_DEVICE(KKA,KKU,KKL,PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZTMP3_DEVICE) - CALL GY_M_M_DEVICE(KKA,KKU,KKL,PTHLM ,PDYY,PDZZ,PDZY,ZTMP4_DEVICE) + CALL GX_M_M_DEVICE(PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PTHLM ,PDXX,PDZZ,PDZX,ZTMP2_DEVICE) + CALL GY_M_M_DEVICE(PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZTMP3_DEVICE) + CALL GY_M_M_DEVICE(PTHLM ,PDYY,PDZZ,PDZY,ZTMP4_DEVICE) !$acc kernels !$acc loop independent collapse(3) DO CONCURRENT ( JI=1:JIU,JJ=1:JJU,JK=1:JKU) @@ -877,8 +877,8 @@ call Print_msg( NVERB_WARNING, 'GEN', 'PRANDTL', 'OpenACC: L2D=.F. and KRR=0 not + BR_P2(GY_M_M(PTHLM,PDYY,PDZZ,PDZY)) ) #endif #else - CALL GX_M_M_DEVICE(KKA,KKU,KKL,PTHLM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) - CALL GY_M_M_DEVICE(KKA,KKU,KKL,PTHLM,PDYY,PDZZ,PDZY,ZTMP2_DEVICE) + CALL GX_M_M_DEVICE(PTHLM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GY_M_M_DEVICE(PTHLM,PDYY,PDZZ,PDZY,ZTMP2_DEVICE) !$acc kernels #ifndef MNH_BITREP !$acc loop independent collapse(3) @@ -1014,8 +1014,8 @@ ELSE IF (L2D) THEN ! 3D case in a 2D model GX_M_M(PTHLM,PDXX,PDZZ,PDZX) & ) #else - CALL GX_M_M_DEVICE(KKA,KKU,KKL,PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) - CALL GX_M_M_DEVICE(KKA,KKU,KKL,PTHLM ,PDXX,PDZZ,PDZX,ZTMP2_DEVICE) + CALL GX_M_M_DEVICE(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PTHLM ,PDXX,PDZZ,PDZX,ZTMP2_DEVICE) !$acc kernels ZTMP1_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:) !$acc end kernels @@ -1033,8 +1033,8 @@ ELSE IF (L2D) THEN ! 3D case in a 2D model GX_M_M(PRM(:,:,:,1),PDXX,PDZZ,PDZX) & ) #else - CALL GX_M_M_DEVICE(KKA,KKU,KKL,PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) - CALL GX_M_M_DEVICE(KKA,KKU,KKL,PRM(:,:,:,1) ,PDXX,PDZZ,PDZX,ZTMP2_DEVICE) + CALL GX_M_M_DEVICE(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PRM(:,:,:,1) ,PDXX,PDZZ,PDZX,ZTMP2_DEVICE) !$acc kernels ZTMP1_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:) !$acc end kernels @@ -1095,10 +1095,10 @@ ELSE ! 3D case in a 3D model GY_M_M(PTHLM,PDYY,PDZZ,PDZY) & ) #else - CALL GX_M_M_DEVICE(KKA,KKU,KKL,PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) - CALL GX_M_M_DEVICE(KKA,KKU,KKL,PTHLM ,PDXX,PDZZ,PDZX,ZTMP2_DEVICE) - CALL GY_M_M_DEVICE(KKA,KKU,KKL,PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY,ZTMP3_DEVICE) - CALL GY_M_M_DEVICE(KKA,KKU,KKL,PTHLM ,PDYY,PDZZ,PDZY,ZTMP4_DEVICE) + CALL GX_M_M_DEVICE(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PTHLM ,PDXX,PDZZ,PDZX,ZTMP2_DEVICE) + CALL GY_M_M_DEVICE(PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY,ZTMP3_DEVICE) + CALL GY_M_M_DEVICE(PTHLM ,PDYY,PDZZ,PDZY,ZTMP4_DEVICE) !$acc kernels ZTMP1_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:)+& ZTMP3_DEVICE(:,:,:)*ZTMP4_DEVICE(:,:,:) @@ -1120,10 +1120,10 @@ ELSE ! 3D case in a 3D model GY_M_M(PRM(:,:,:,1),PDYY,PDZZ,PDZY) & ) #else - CALL GX_M_M_DEVICE(KKA,KKU,KKL,PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) - CALL GX_M_M_DEVICE(KKA,KKU,KKL,PRM(:,:,:,1) ,PDXX,PDZZ,PDZX,ZTMP2_DEVICE) - CALL GY_M_M_DEVICE(KKA,KKU,KKL,PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY,ZTMP3_DEVICE) - CALL GY_M_M_DEVICE(KKA,KKU,KKL,PRM(:,:,:,1) ,PDYY,PDZZ,PDZY,ZTMP4_DEVICE) + CALL GX_M_M_DEVICE(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PRM(:,:,:,1) ,PDXX,PDZZ,PDZX,ZTMP2_DEVICE) + CALL GY_M_M_DEVICE(PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY,ZTMP3_DEVICE) + CALL GY_M_M_DEVICE(PRM(:,:,:,1) ,PDYY,PDZZ,PDZY,ZTMP4_DEVICE) !$acc kernels ZTMP1_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:)+& ZTMP3_DEVICE(:,:,:)*ZTMP4_DEVICE(:,:,:) diff --git a/src/MNH/turb_hor_dyn_corr.f90 b/src/MNH/turb_hor_dyn_corr.f90 index 4581679589ed22c2803b123df662ce4b0e0f4857..5ce8a931f14d6b2306ae529b2d5199e4f47c77f5 100644 --- a/src/MNH/turb_hor_dyn_corr.f90 +++ b/src/MNH/turb_hor_dyn_corr.f90 @@ -1202,7 +1202,7 @@ IF (LLES_CALL .AND. KSPLT==1) THEN !$acc end kernels CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_RES_ddxa_W_SBG_UaW , .TRUE.) ! - CALL GZ_M_M_DEVICE(1,IKU,1,PTHLM,PDZZ,ZTMP1_DEVICE) + CALL GZ_M_M_DEVICE(PTHLM,PDZZ,ZTMP1_DEVICE) !$acc kernels ZTMP2_DEVICE = ZTMP1_DEVICE * ZFLX !$acc end kernels @@ -1220,7 +1220,7 @@ IF (LLES_CALL .AND. KSPLT==1) THEN IF (KRR>=1) THEN !$acc data copy(X_LES_RES_ddxa_Rt_SBG_UaW,X_LES_RES_ddz_Rt_SBG_W2) ! - CALL GZ_M_M_DEVICE(1,IKU,1,PRM(:,:,:,1),PDZZ,ZTMP1_DEVICE) + CALL GZ_M_M_DEVICE(PRM(:,:,:,1),PDZZ,ZTMP1_DEVICE) !$acc kernels ZTMP2_DEVICE = ZTMP1_DEVICE*ZFLX !$acc end kernels @@ -1239,7 +1239,7 @@ IF (LLES_CALL .AND. KSPLT==1) THEN DO JSV=1,NSV ! ! - CALL GZ_M_M_DEVICE(1,IKU,1,PSVM(:,:,:,JSV),PDZZ,ZTMP1_DEVICE) + CALL GZ_M_M_DEVICE(PSVM(:,:,:,JSV),PDZZ,ZTMP1_DEVICE) !$acc kernels ZTMP2_DEVICE = ZTMP1_DEVICE*ZFLX !$acc end kernels diff --git a/src/MNH/turb_hor_sv_flux.f90 b/src/MNH/turb_hor_sv_flux.f90 index 39692bb03b13808d218a0a8c0ec3f519eeff4f24..9870a9e6ff996f8397b94825e029ad50e6d39751 100644 --- a/src/MNH/turb_hor_sv_flux.f90 +++ b/src/MNH/turb_hor_sv_flux.f90 @@ -401,7 +401,7 @@ DO JSV=1,ISV CALL MZF_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE ) CALL LES_MEAN_SUBGRID( ZTMP2_DEVICE, X_LES_RES_ddxa_W_SBG_UaSv(:,:,:,JSV) , .TRUE. ) ! - CALL GX_M_M_DEVICE(1,IKU,1,PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PSVM(:,:,:,JSV),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) CALL MXF_DEVICE(ZFLXX,ZTMP2_DEVICE) !$acc kernels ZTMP3_DEVICE = ZTMP1_DEVICE*ZTMP2_DEVICE @@ -520,7 +520,7 @@ DO JSV=1,ISV CALL MZF_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE ) CALL LES_MEAN_SUBGRID( ZTMP2_DEVICE,X_LES_RES_ddxa_W_SBG_UaSv(:,:,:,JSV) , .TRUE. ) ! - CALL GY_M_M_DEVICE(1,IKU,1,PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY,ZTMP1_DEVICE) + CALL GY_M_M_DEVICE(PSVM(:,:,:,JSV),PDYY,PDZZ,PDZY,ZTMP1_DEVICE) CALL MYF_DEVICE(ZFLXY,ZTMP2_DEVICE) !$acc kernels ZTMP3_DEVICE = ZTMP1_DEVICE*ZTMP2_DEVICE diff --git a/src/MNH/turb_hor_thermo_corr.f90 b/src/MNH/turb_hor_thermo_corr.f90 index f0bf84af1834082b8e21ebe2e329e54fc6dea157..eb3ec18e89228d15e304b4defed7e995ec98d318 100644 --- a/src/MNH/turb_hor_thermo_corr.f90 +++ b/src/MNH/turb_hor_thermo_corr.f90 @@ -346,8 +346,8 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) & END IF #else IF (.NOT. L2D) THEN - CALL GX_M_M_DEVICE(1,IKU,1,PTHLM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) - CALL GY_M_M_DEVICE(1,IKU,1,PTHLM,PDYY,PDZZ,PDZY,ZTMP2_DEVICE) + CALL GX_M_M_DEVICE(PTHLM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GY_M_M_DEVICE(PTHLM,PDYY,PDZZ,PDZY,ZTMP2_DEVICE) !$acc kernels #ifndef MNH_BITREP ZFLX(:,:,:) = XCTV * PLM(:,:,:) * PLEPS(:,:,:) * ( ZTMP1_DEVICE(:,:,:)**2 + ZTMP2_DEVICE(:,:,:)**2 ) @@ -356,7 +356,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) & #endif !$acc end kernels ELSE - CALL GX_M_M_DEVICE(1,IKU,1,PTHLM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PTHLM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) !$acc kernels #ifndef MNH_BITREP ZFLX(:,:,:) = XCTV * PLM(:,:,:) * PLEPS(:,:,:) * ZTMP1_DEVICE(:,:,:)**2 @@ -512,17 +512,17 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) & END IF #else IF (.NOT. L2D) THEN - CALL GX_M_M_DEVICE(1,IKU,1,PTHLM ,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) - CALL GX_M_M_DEVICE(1,IKU,1,PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP2_DEVICE) - CALL GY_M_M_DEVICE(1,IKU,1,PTHLM ,PDYY,PDZZ,PDZY,ZTMP3_DEVICE) - CALL GY_M_M_DEVICE(1,IKU,1,PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZTMP4_DEVICE) + CALL GX_M_M_DEVICE(PTHLM ,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP2_DEVICE) + CALL GY_M_M_DEVICE(PTHLM ,PDYY,PDZZ,PDZY,ZTMP3_DEVICE) + CALL GY_M_M_DEVICE(PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZTMP4_DEVICE) !$acc kernels ZFLX(:,:,:)=PLM(:,:,:) * PLEPS(:,:,:) * (ZTMP1_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:) & +ZTMP3_DEVICE(:,:,:)*ZTMP4_DEVICE(:,:,:) ) * (XCHT1+XCHT2) !$acc end kernels ELSE - CALL GX_M_M_DEVICE(1,IKU,1,PTHLM ,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) - CALL GX_M_M_DEVICE(1,IKU,1,PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP2_DEVICE) + CALL GX_M_M_DEVICE(PTHLM ,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP2_DEVICE) !$acc kernels ZFLX(:,:,:)=PLM(:,:,:) * PLEPS(:,:,:) * (ZTMP1_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:)) * (XCHT1+XCHT2) !$acc end kernels @@ -725,8 +725,8 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) & END IF #else IF (.NOT. L2D) THEN - CALL GX_M_M_DEVICE(1,IKU,1,PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) - CALL GY_M_M_DEVICE(1,IKU,1,PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZTMP2_DEVICE) + CALL GX_M_M_DEVICE(PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GY_M_M_DEVICE(PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZTMP2_DEVICE) !$acc kernels #ifndef MNH_BITREP ZFLX(:,:,:) = XCHV * PLM(:,:,:) * PLEPS(:,:,:) * ( ZTMP1_DEVICE(:,:,:)**2 + ZTMP2_DEVICE(:,:,:)**2 ) @@ -735,7 +735,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) & #endif !$acc end kernels ELSE - CALL GX_M_M_DEVICE(1,IKU,1,PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) !$acc kernels #ifndef MNH_BITREP ZFLX(:,:,:) = XCHV * PLM(:,:,:) * PLEPS(:,:,:) * ZTMP1_DEVICE(:,:,:)**2 diff --git a/src/MNH/turb_hor_thermo_flux.f90 b/src/MNH/turb_hor_thermo_flux.f90 index 9b88a408c3e561d7df4b4b5c8328d5c098764e40..8cd6d6b5fb08e2817968d1408bfa1171b8a504f4 100644 --- a/src/MNH/turb_hor_thermo_flux.f90 +++ b/src/MNH/turb_hor_thermo_flux.f90 @@ -635,7 +635,7 @@ IF (KSPLT==1 .AND. LLES_CALL) THEN CALL MZF_DEVICE( ZTMP1_DEVICE, ZTMP2_DEVICE ) CALL LES_MEAN_SUBGRID( ZTMP2_DEVICE,X_LES_RES_ddxa_W_SBG_UaThl , .TRUE. ) ! - CALL GX_M_M_DEVICE(1,IKU,1,PTHLM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PTHLM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) CALL MXF_DEVICE(ZFLX,ZTMP2_DEVICE) !$acc kernels ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:) @@ -643,7 +643,7 @@ IF (KSPLT==1 .AND. LLES_CALL) THEN CALL LES_MEAN_SUBGRID( ZTMP3_DEVICE,X_LES_RES_ddxa_Thl_SBG_UaThl , .TRUE. ) ! IF (KRR>=1) THEN - CALL GX_M_M_DEVICE(1,IKU,1,PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) !$acc kernels ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:) !$acc end kernels @@ -964,14 +964,14 @@ END DO CALL MZF_DEVICE( ZTMP4_DEVICE, ZTMP3_DEVICE ) CALL LES_MEAN_SUBGRID( ZTMP3_DEVICE, X_LES_RES_ddxa_W_SBG_UaRt , .TRUE. ) ! - CALL GX_M_M_DEVICE(1,IKU,1,PTHLM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PTHLM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) CALL MXF_DEVICE(ZFLX,ZTMP2_DEVICE) !$acc kernels ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:) !$acc end kernels CALL LES_MEAN_SUBGRID( ZTMP3_DEVICE, X_LES_RES_ddxa_Thl_SBG_UaRt , .TRUE. ) ! - CALL GX_M_M_DEVICE(1,IKU,1,PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) CALL MXF_DEVICE(ZFLX,ZTMP2_DEVICE) !$acc kernels ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:) @@ -1365,7 +1365,7 @@ IF (KSPLT==1 .AND. LLES_CALL) THEN CALL MZF_DEVICE( ZTMP4_DEVICE, ZTMP1_DEVICE ) CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_RES_ddxa_W_SBG_UaThl , .TRUE. ) ! - CALL GY_M_M_DEVICE(1,IKU,1,PTHLM,PDYY,PDZZ,PDZY,ZTMP1_DEVICE) + CALL GY_M_M_DEVICE(PTHLM,PDYY,PDZZ,PDZY,ZTMP1_DEVICE) CALL MYF_DEVICE(ZFLX,ZTMP2_DEVICE) !$acc kernels ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:) @@ -1376,7 +1376,7 @@ IF (KSPLT==1 .AND. LLES_CALL) THEN ! IF (KRR>=1) THEN !$acc data copy(X_LES_RES_ddxa_Rt_SBG_UaThl) - CALL GY_M_M_DEVICE(1,IKU,1,PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZTMP1_DEVICE) + CALL GY_M_M_DEVICE(PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZTMP1_DEVICE) CALL MYF_DEVICE(ZFLX,ZTMP2_DEVICE) !$acc kernels ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:) @@ -1723,14 +1723,14 @@ IF (KRR/=0) THEN CALL MZF_DEVICE( ZTMP4_DEVICE, ZTMP1_DEVICE ) CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE,X_LES_RES_ddxa_W_SBG_UaRt , .TRUE. ) ! - CALL GY_M_M_DEVICE(1,IKU,1,PTHLM,PDYY,PDZZ,PDZY,ZTMP1_DEVICE) + CALL GY_M_M_DEVICE(PTHLM,PDYY,PDZZ,PDZY,ZTMP1_DEVICE) CALL MYF_DEVICE(ZFLX,ZTMP2_DEVICE) !$acc kernels ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:) !$acc end kernels CALL LES_MEAN_SUBGRID( ZTMP3_DEVICE, X_LES_RES_ddxa_Thl_SBG_UaRt , .TRUE. ) ! - CALL GY_M_M_DEVICE(1,IKU,1,PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZTMP1_DEVICE) + CALL GY_M_M_DEVICE(PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZTMP1_DEVICE) CALL MYF_DEVICE(ZFLX,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 4fd456bf8b1ab59908debfe23e28fe78df54b34d..18808749a8a3ddd98449ff96a99e841da3f87253 100644 --- a/src/ZSOLVER/turb_hor_dyn_corr.f90 +++ b/src/ZSOLVER/turb_hor_dyn_corr.f90 @@ -1208,7 +1208,7 @@ IF (LLES_CALL .AND. KSPLT==1) THEN !$acc end kernels CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_RES_ddxa_W_SBG_UaW , .TRUE.) ! - CALL GZ_M_M_DEVICE(1,IKU,1,PTHLM,PDZZ,ZTMP1_DEVICE) + CALL GZ_M_M_DEVICE(PTHLM,PDZZ,ZTMP1_DEVICE) !$acc kernels ZTMP2_DEVICE = ZTMP1_DEVICE * ZFLX !$acc end kernels @@ -1226,7 +1226,7 @@ IF (LLES_CALL .AND. KSPLT==1) THEN IF (KRR>=1) THEN !$acc data copy(X_LES_RES_ddxa_Rt_SBG_UaW,X_LES_RES_ddz_Rt_SBG_W2) ! - CALL GZ_M_M_DEVICE(1,IKU,1,PRM(:,:,:,1),PDZZ,ZTMP1_DEVICE) + CALL GZ_M_M_DEVICE(PRM(:,:,:,1),PDZZ,ZTMP1_DEVICE) !$acc kernels ZTMP2_DEVICE = ZTMP1_DEVICE*ZFLX !$acc end kernels @@ -1245,7 +1245,7 @@ IF (LLES_CALL .AND. KSPLT==1) THEN DO JSV=1,NSV ! ! - CALL GZ_M_M_DEVICE(1,IKU,1,PSVM(:,:,:,JSV),PDZZ,ZTMP1_DEVICE) + CALL GZ_M_M_DEVICE(PSVM(:,:,:,JSV),PDZZ,ZTMP1_DEVICE) !$acc kernels ZTMP2_DEVICE = ZTMP1_DEVICE*ZFLX !$acc end kernels diff --git a/src/ZSOLVER/turb_hor_thermo_flux.f90 b/src/ZSOLVER/turb_hor_thermo_flux.f90 index ec6c195bcbc5ed7c7f016abe73f721d2ac8b97af..a8a9b45f8bf988541fdda32ff26f656381402581 100644 --- a/src/ZSOLVER/turb_hor_thermo_flux.f90 +++ b/src/ZSOLVER/turb_hor_thermo_flux.f90 @@ -633,7 +633,7 @@ IF (KSPLT==1 .AND. LLES_CALL) THEN CALL MZF_DEVICE( ZTMP1_DEVICE,ZTMP2_DEVICE) CALL LES_MEAN_SUBGRID( ZTMP2_DEVICE,X_LES_RES_ddxa_W_SBG_UaThl , .TRUE. ) ! - CALL GX_M_M_DEVICE(1,IKU,1,PTHLM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PTHLM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) CALL MXF_DEVICE(ZFLX,ZTMP2_DEVICE) !$acc kernels ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:) @@ -641,7 +641,7 @@ IF (KSPLT==1 .AND. LLES_CALL) THEN CALL LES_MEAN_SUBGRID( ZTMP3_DEVICE,X_LES_RES_ddxa_Thl_SBG_UaThl , .TRUE. ) ! IF (KRR>=1) THEN - CALL GX_M_M_DEVICE(1,IKU,1,PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) !$acc kernels ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:) !$acc end kernels @@ -959,14 +959,14 @@ END DO CALL MZF_DEVICE( ZTMP4_DEVICE, ZTMP3_DEVICE ) CALL LES_MEAN_SUBGRID( ZTMP3_DEVICE, X_LES_RES_ddxa_W_SBG_UaRt , .TRUE. ) ! - CALL GX_M_M_DEVICE(1,IKU,1,PTHLM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PTHLM,PDXX,PDZZ,PDZX,ZTMP1_DEVICE) CALL MXF_DEVICE(ZFLX,ZTMP2_DEVICE) !$acc kernels ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:) !$acc end kernels CALL LES_MEAN_SUBGRID( ZTMP3_DEVICE, X_LES_RES_ddxa_Thl_SBG_UaRt , .TRUE. ) ! - CALL GX_M_M_DEVICE(1,IKU,1,PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PRM(:,:,:,1),PDXX,PDZZ,PDZX,ZTMP1_DEVICE) CALL MXF_DEVICE(ZFLX,ZTMP2_DEVICE) !$acc kernels ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:)*ZTMP2_DEVICE(:,:,:) @@ -1360,7 +1360,7 @@ IF (KSPLT==1 .AND. LLES_CALL) THEN CALL MZF_DEVICE( ZTMP4_DEVICE, ZTMP1_DEVICE ) CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE, X_LES_RES_ddxa_W_SBG_UaThl , .TRUE. ) ! - CALL GY_M_M_DEVICE(1,IKU,1,PTHLM,PDYY,PDZZ,PDZY,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PTHLM,PDYY,PDZZ,PDZY,ZTMP1_DEVICE) CALL MYF_DEVICE(ZFLX,ZTMP2_DEVICE) !$acc kernels ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:) @@ -1371,7 +1371,7 @@ IF (KSPLT==1 .AND. LLES_CALL) THEN ! IF (KRR>=1) THEN !$acc data copy(X_LES_RES_ddxa_Rt_SBG_UaThl) - CALL GY_M_M_DEVICE(1,IKU,1,PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZTMP1_DEVICE) CALL MYF_DEVICE(ZFLX,ZTMP2_DEVICE) !$acc kernels ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:) @@ -1718,14 +1718,14 @@ IF (KRR/=0) THEN CALL MZF_DEVICE( ZTMP4_DEVICE, ZTMP1_DEVICE ) CALL LES_MEAN_SUBGRID( ZTMP1_DEVICE,X_LES_RES_ddxa_W_SBG_UaRt , .TRUE. ) ! - CALL GY_M_M_DEVICE(1,IKU,1,PTHLM,PDYY,PDZZ,PDZY,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PTHLM,PDYY,PDZZ,PDZY,ZTMP1_DEVICE) CALL MYF_DEVICE(ZFLX,ZTMP2_DEVICE) !$acc kernels ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:) !$acc end kernels CALL LES_MEAN_SUBGRID( ZTMP3_DEVICE, X_LES_RES_ddxa_Thl_SBG_UaRt , .TRUE. ) ! - CALL GY_M_M_DEVICE(1,IKU,1,PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZTMP1_DEVICE) + CALL GX_M_M_DEVICE(PRM(:,:,:,1),PDYY,PDZZ,PDZY,ZTMP1_DEVICE) CALL MYF_DEVICE(ZFLX,ZTMP2_DEVICE) !$acc kernels ZTMP3_DEVICE(:,:,:) = ZTMP1_DEVICE(:,:,:) * ZTMP2_DEVICE(:,:,:)