diff --git a/src/ZSOLVER/advection_metsv.f90 b/src/ZSOLVER/advection_metsv.f90 index e7b76ef20d5abcb4f2c7d6d183c1474cf5e8c8bd..69e17922982cf95d6ab8f49d94c0b981b50eb1f5 100644 --- a/src/ZSOLVER/advection_metsv.f90 +++ b/src/ZSOLVER/advection_metsv.f90 @@ -191,7 +191,7 @@ USE MODI_ADV_BOUNDARIES #if defined(MNH_BITREP) || defined(MNH_BITREP_OMP) USE MODI_BITREP #endif -#ifdef MNH_BITREP_OMP +#ifdef MNH_COMPILER_CCE !$mnh_undef(LOOP) !$mnh_undef(OPENACC) #endif diff --git a/src/ZSOLVER/advecuvw_rk.f90 b/src/ZSOLVER/advecuvw_rk.f90 index 783da5c8106d8c50a9f5df5731e3c18f7f18b866..e702792924df7aca7e38368376c30c4c3ffb0b34 100644 --- a/src/ZSOLVER/advecuvw_rk.f90 +++ b/src/ZSOLVER/advecuvw_rk.f90 @@ -463,7 +463,7 @@ INBVAR = 3 CALL INIT_HALO2_ll(TZHALO2MT_ll,INBVAR,SIZE(PUT,1),SIZE(PUT,2),SIZE(PWT,3)) #endif ! -!$acc kernels +!$acc kernels present_cr(ZRUS,ZRVS,ZRWS) ZRUS(:, :, :, : ) = 0. ZRVS(:, :, :, : ) = 0. ZRWS(:, :, :, : ) = 0. diff --git a/src/ZSOLVER/modeln.f90 b/src/ZSOLVER/modeln.f90 index ce37ab13b86dab14b34389ce438acddfa791483b..4f635b6ff3a2f6bceebe945be752984869292266 100644 --- a/src/ZSOLVER/modeln.f90 +++ b/src/ZSOLVER/modeln.f90 @@ -1690,7 +1690,7 @@ CALL GRAVITY_IMPL ( CLBCX, CLBCY, NRR, NRRL, NRRI,XTSTEP, & ! compensated by the pressure gradient ! IF (KTCOUNT == 1 .AND. CCONF=='START') THEN -!$acc kernels present( ZRWS ) +!$acc kernels present( ZRWS,XRWS_PRES) XRWS_PRES(:,:,:) = ZRWS(:,:,:) - XRWS(:,:,:) !$acc end kernels END IF @@ -1852,7 +1852,7 @@ ZPABST(:,:,:) = XPABST(:,:,:) ! IF(.NOT. L1D) THEN ! - !$acc kernels ! present(XRUS_PRES,XRVS_PRES,XRWS_PRES) + !$acc kernels present(XRUS,XRVS,XRWS) !present(XRUS_PRES,XRVS_PRES,XRWS_PRES) XRUS_PRES(:,:,:) = XRUS(:,:,:) XRVS_PRES(:,:,:) = XRVS(:,:,:) XRWS_PRES(:,:,:) = XRWS(:,:,:) @@ -1871,7 +1871,7 @@ IF(.NOT. L1D) THEN XA_K,XB_K,XC_K,XD_K) !JUAN FULL ZSOLVER ! !$acc update host(XPABST) - !$acc kernels ! present(XRUS_PRES,XRVS_PRES,XRWS_PRES) + !$acc kernels present(XRUS,XRVS,XRWS) !present(XRUS_PRES,XRVS_PRES,XRWS_PRES) XRUS_PRES(:,:,:) = XRUS(:,:,:) - XRUS_PRES(:,:,:) + ZRUS(:,:,:) XRVS_PRES(:,:,:) = XRVS(:,:,:) - XRVS_PRES(:,:,:) + ZRVS(:,:,:) XRWS_PRES(:,:,:) = XRWS(:,:,:) - XRWS_PRES(:,:,:) + ZRWS(:,:,:) diff --git a/src/ZSOLVER/pressurez.f90 b/src/ZSOLVER/pressurez.f90 index 16e5cded61f9ab76926de0ce89f6b4912e50c49f..b91bb89c2dfe822b9629183f617ef126a68c9922 100644 --- a/src/ZSOLVER/pressurez.f90 +++ b/src/ZSOLVER/pressurez.f90 @@ -537,9 +537,18 @@ END IF ! -------------------------------------------------- ! IF (LIBM) THEN - WHERE(XIBM_LS(:,:,:,2).GT.-XIBM_EPSI) PRUS(:,:,:) = 0. - WHERE(XIBM_LS(:,:,:,3).GT.-XIBM_EPSI) PRVS(:,:,:) = 0. - WHERE(XIBM_LS(:,:,:,4).GT.-XIBM_EPSI) PRWS(:,:,:) = 0. + WHERE(XIBM_LS(:,:,:,2).GT.-XIBM_EPSI) + !dir$ safe_address + PRUS(:,:,:) = 0. + ENDWHERE + WHERE(XIBM_LS(:,:,:,3).GT.-XIBM_EPSI) + !dir$ safe_address + PRVS(:,:,:) = 0. + ENDWHERE + WHERE(XIBM_LS(:,:,:,4).GT.-XIBM_EPSI) + !dir$ safe_address + PRWS(:,:,:) = 0. + ENDWHERE ENDIF ! IF (MPPDB_INITIALIZED) THEN diff --git a/src/ZSOLVER/turb.f90 b/src/ZSOLVER/turb.f90 index a7d1b3cc7d148954f83cb688fa99003bdad3a5b5..a173a86c6f031343af90f2246e7002e168755fd8 100644 --- a/src/ZSOLVER/turb.f90 +++ b/src/ZSOLVER/turb.f90 @@ -14,7 +14,7 @@ module mode_turb #if defined(MNH_BITREP) || defined(MNH_BITREP_OMP) use modi_bitrep #endif -#ifdef MNH_BITREP_OMP +#ifdef MNH_COMPILER_CCE !$mnh_undef(LOOP) !$mnh_undef(OPENACC) #endif @@ -714,15 +714,18 @@ GTURBLEN_BL89_TURBLEN_RM17_TURBLEN_ADAP_ORMC01 = & HTURBLEN=='BL89' .OR. HTURBLEN=='RM17' .OR. HTURBLEN == 'ADAP' .OR. ORMC01 ! !$acc update device(PTHLT,PRT) -!$acc kernels present_cr(ZCOEF_DISS,ZTHLM,ZRM,zcp) !Copy data into ZTHLM and ZRM only if needed IF (GTURBLEN_BL89_TURBLEN_RM17_TURBLEN_ADAP_ORMC01) THEN - DO CONCURRENT(JI=1:JIU,JJ=1:JJU,JK=1:JKU) - ZTHLM(JI,JJ,JK) = PTHLT(JI,JJ,JK) - ZRM(JI,JJ,JK,:) = PRT(JI,JJ,JK,:) - END DO +!$acc kernels present_cr(ZTHLM,ZRM) + ZTHLM(:,:,:) = PTHLT(:,:,:) + ZRM(:,:,:,:) = PRT(:,:,:,:) + !DO CONCURRENT(JI=1:JIU,JJ=1:JJU,JK=1:JKU) + !ZTHLM(JI,JJ,JK) = PTHLT(JI,JJ,JK) + !ZRM(JI,JJ,JK,:) = PRT(JI,JJ,JK,:) + !END DO +!$acc end kernels END IF -! +!$acc kernels present_cr(ZTRH,ZCOEF_DISS,ZTHLM,ZRM,zcp) ZTRH(:, :, : ) = XUNDEF ! !---------------------------------------------------------------------------- @@ -807,7 +810,7 @@ IF (KRRL >=1) THEN CALL COMPUTE_FUNCTION_THERMO(XALPI,XBETAI,XGAMI,XLSTT,XCI,ZT,ZEXN,ZCP, & ZLSOCPEXNM,ZAMOIST_ICE,ZATHETA_ICE) ! -!$acc kernels present( zamoist, zatheta, zlocpexnm, zlvocpexnm, zlsocpexnm, zamoist_ice, zatheta_ice ) +!$acc kernels present_cr( zamoist, zatheta, zlocpexnm, zlvocpexnm, zlsocpexnm, zamoist_ice, zatheta_ice ) DO CONCURRENT(JI=1:JIU,JJ=1:JJU,JK=1:JKU) IF (PRT(JI,JJ,JK,2)+PRT(JI,JJ,JK,4)>0.0) THEN ZFRAC_ICE(JI,JJ,JK) = PRT(JI,JJ,JK,4) / ( PRT(JI,JJ,JK,2)+PRT(JI,JJ,JK,4) ) @@ -863,7 +866,7 @@ IF (KRRL >=1) THEN END IF ! ELSE -!$acc kernels present( zlocpexnm ) +!$acc kernels present_cr( zlocpexnm ) ZLOCPEXNM=0. !$acc end kernels END IF ! loop end on KRRL >= 1 @@ -872,7 +875,7 @@ END IF ! loop end on KRRL >= 1 ! !$acc update device(PRRS,PRTHLS) IF ( KRRL >= 1 ) THEN -!$acc kernels present( zlocpexnm ) +!$acc kernels present_cr( zlocpexnm ) IF ( KRRI >= 1 ) THEN DO CONCURRENT (JI=1:JIU,JJ=1:JJU,JK=1:JKU) ! Rnp at t @@ -909,7 +912,7 @@ SELECT CASE (HTURBLEN) ! ------------------ CASE ('BL89') -!$acc kernels +!$acc kernels present_cr(ZSHEAR) ZSHEAR(:, :, : ) = 0. !$acc end kernels CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,PLEM) @@ -1000,7 +1003,7 @@ END IF !* 3.6 Dissipative length ! ------------------ ! -!$acc kernels +!$acc kernels present_cr(ZLEPS) ZLEPS(:,:,:)=PLEM(:,:,:) ! !* 3.7 Correction in the Surface Boundary Layer (Redelsperger 2001) @@ -1066,7 +1069,7 @@ ENDIF ! CALL UPDATE_ROTATE_WIND(ZUSLOPE,ZVSLOPE) ELSE -!$acc kernels +!$acc kernels present_cr(ZUSLOPE,ZVSLOPE) ZUSLOPE=PUT(:,:,KKA) ZVSLOPE=PVT(:,:,KKA) !$acc end kernels @@ -1129,7 +1132,7 @@ IF (HTOM=='TM06') THEN CALL GZ_W_M_DEVICE(ZMTH2,PDZZ,ZFTH2) ! -d(w'th'2 )/dz !CALL GZ_W_M_DEVICE(ZMR2, PDZZ,ZFR2) ! -d(w'r'2 )/dz !CALL GZ_W_M_DEVICE(ZMTHR,PDZZ,ZFTHR) ! -d(w'th'r')/dz -!$acc kernels +!$acc kernels present_cr(ZFWTH,ZFTH2,ZFWR,ZFR2,ZFTHR) ZFWTH = -ZFWTH !ZFWR = -ZFWR ZFTH2 = -ZFTH2 @@ -1152,7 +1155,7 @@ IF (HTOM=='TM06') THEN ZFTHR = 0. !$acc end kernels ELSE -!$acc kernels +!$acc kernels present_cr(ZFWTH,ZFWR,ZFTH2,ZFR2,ZFTHR) ZFWTH(:,:,:) = 0. ZFWR(:,:,:) = 0. ZFTH2(:,:,:) = 0. @@ -1172,13 +1175,13 @@ if ( lbudget_w ) call Budget_store_init( tbudgets(NBUDGET_W ), 'VTURB', prws ( if ( lbudget_th ) then if ( krri >= 1 .and. krrl >= 1 ) then - !$acc kernels present(ZTEMP_BUD) + !$acc kernels present_cr(ZTEMP_BUD) ZTEMP_BUD(:,:,:) = prthls(:, :, :) + zlvocpexnm(:, :, :) * prrs(:, :, :, 2) & + zlsocpexnm(:, :, :) * prrs(:, :, :, 4) !$acc end kernels call Budget_store_init( tbudgets(NBUDGET_TH), 'VTURB', ZTEMP_BUD(:,:,:) ) else if ( krrl >= 1 ) then - !$acc kernels present( ZTEMP_BUD, zlocpexnm ) + !$acc kernels present_cr( ZTEMP_BUD, zlocpexnm ) ZTEMP_BUD(:,:,:) = prthls(:, :, :) + zlocpexnm(:, :, :) * prrs(:, :, :, 2) !$acc end kernels call Budget_store_init( tbudgets(NBUDGET_TH), 'VTURB', ZTEMP_BUD(:,:,:) ) @@ -1189,12 +1192,12 @@ end if if ( lbudget_rv ) then if ( krri >= 1 .and. krrl >= 1 ) then - !$acc kernels present(ZTEMP_BUD) + !$acc kernels present_cr(ZTEMP_BUD) ZTEMP_BUD(:,:,:) = prrs(:, :, :, 1) - prrs(:, :, :, 2) - prrs(:, :, :, 4) !$acc end kernels call Budget_store_init( tbudgets(NBUDGET_RV), 'VTURB', ZTEMP_BUD(:,:,:) ) else if ( krrl >= 1 ) then - !$acc kernels present(ZTEMP_BUD) + !$acc kernels present_cr(ZTEMP_BUD) ZTEMP_BUD(:,:,:) = prrs(:, :, :, 1) - prrs(:, :, :, 2) !$acc end kernels call Budget_store_init( tbudgets(NBUDGET_RV), 'VTURB', ZTEMP_BUD(:,:,:) ) @@ -1238,13 +1241,13 @@ if ( lbudget_w ) call Budget_store_end( tbudgets(NBUDGET_W), 'VTURB', prws(:, :, if ( lbudget_th ) then if ( krri >= 1 .and. krrl >= 1 ) then - !$acc kernels present(ZTEMP_BUD) + !$acc kernels present_cr(ZTEMP_BUD) ZTEMP_BUD(:,:,:) = prthls(:, :, :) + zlvocpexnm(:, :, :) * prrs(:, :, :, 2) & + zlsocpexnm(:, :, :) * prrs(:, :, :, 4) !$acc end kernels call Budget_store_end( tbudgets(NBUDGET_TH), 'VTURB', ZTEMP_BUD(:,:,:) ) else if ( krrl >= 1 ) then - !$acc kernels present(ZTEMP_BUD, zlocpexnm ) + !$acc kernels present_cr(ZTEMP_BUD, zlocpexnm ) ZTEMP_BUD(:,:,:) = prthls(:, :, :) + zlocpexnm(:, :, :) * prrs(:, :, :, 2) !$acc end kernels call Budget_store_end( tbudgets(NBUDGET_TH), 'VTURB', ZTEMP_BUD(:,:,:) ) @@ -1255,12 +1258,12 @@ end if if ( lbudget_rv ) then if ( krri >= 1 .and. krrl >= 1 ) then - !$acc kernels present(ZTEMP_BUD) + !$acc kernels present_cr(ZTEMP_BUD) ZTEMP_BUD(:,:,:) = prrs(:, :, :, 1) - prrs(:, :, :, 2) - prrs(:, :, :, 4) !$acc end kernels call Budget_store_end( tbudgets(NBUDGET_RV), 'VTURB', ZTEMP_BUD(:,:,:) ) else if ( krrl >= 1 ) then - !$acc kernels present(ZTEMP_BUD) + !$acc kernels present_cr(ZTEMP_BUD) ZTEMP_BUD(:,:,:) = prrs(:, :, :, 1) - prrs(:, :, :, 2) !$acc end kernels call Budget_store_end( tbudgets(NBUDGET_RV), 'VTURB', ZTEMP_BUD(:,:,:) ) @@ -1285,13 +1288,13 @@ if ( hturbdim == '3DIM' ) then if (lbudget_th) then if ( krri >= 1 .and. krrl >= 1 ) then - !$acc kernels present(ZTEMP_BUD) + !$acc kernels present_cr(ZTEMP_BUD) ZTEMP_BUD(:,:,:) = prthls(:, :, :) + zlvocpexnm(:, :, :) * prrs(:, :, :, 2) & + zlsocpexnm(:, :, :) * prrs(:, :, :, 4) !$acc end kernels call Budget_store_init( tbudgets(NBUDGET_TH), 'HTURB', ZTEMP_BUD(:,:,:) ) else if ( krrl >= 1 ) then - !$acc kernels present(ZTEMP_BUD, zlocpexnm ) + !$acc kernels present_cr(ZTEMP_BUD, zlocpexnm ) ZTEMP_BUD(:,:,:) = prthls(:, :, :) + zlocpexnm(:, :, :) * prrs(:, :, :, 2) !$acc end kernels call Budget_store_init( tbudgets(NBUDGET_TH), 'HTURB', ZTEMP_BUD(:,:,:) ) @@ -1302,12 +1305,12 @@ if ( hturbdim == '3DIM' ) then if ( lbudget_rv ) then if ( krri >= 1 .and. krrl >= 1 ) then - !$acc kernels present(ZTEMP_BUD) + !$acc kernels present_cr(ZTEMP_BUD) ZTEMP_BUD(:,:,:) = prrs(:, :, :, 1) - prrs(:, :, :, 2) - prrs(:, :, :, 4) !$acc end kernels call Budget_store_init( tbudgets(NBUDGET_RV), 'HTURB', ZTEMP_BUD(:,:,:) ) else if ( krrl >= 1 ) then - !$acc kernels present(ZTEMP_BUD) + !$acc kernels present_cr(ZTEMP_BUD) ZTEMP_BUD(:,:,:) = prrs(:, :, :, 1) - prrs(:, :, :, 2) !$acc end kernels call Budget_store_init( tbudgets(NBUDGET_RV), 'HTURB', ZTEMP_BUD(:,:,:) ) @@ -1347,13 +1350,13 @@ if ( hturbdim == '3DIM' ) then if ( lbudget_th ) then if ( krri >= 1 .and. krrl >= 1 ) then - !$acc kernels present(ZTEMP_BUD) + !$acc kernels present_cr(ZTEMP_BUD) ZTEMP_BUD(:,:,:) = prthls(:, :, :) + zlvocpexnm(:, :, :) * prrs(:, :, :, 2) & + zlsocpexnm(:, :, :) * prrs(:, :, :, 4) !$acc end kernels call Budget_store_end( tbudgets(NBUDGET_TH), 'HTURB', ZTEMP_BUD(:,:,:) ) else if ( krrl >= 1 ) then - !$acc kernels present(ZTEMP_BUD, zlocpexnm ) + !$acc kernels present_cr(ZTEMP_BUD, zlocpexnm ) ZTEMP_BUD(:,:,:) = prthls(:, :, :) + zlocpexnm(:, :, :) * prrs(:, :, :, 2) !$acc end kernels call Budget_store_end( tbudgets(NBUDGET_TH), 'HTURB', ZTEMP_BUD(:,:,:) ) @@ -1364,12 +1367,12 @@ if ( hturbdim == '3DIM' ) then if ( lbudget_rv ) then if ( krri >= 1 .and. krrl >= 1 ) then - !$acc kernels present(ZTEMP_BUD) + !$acc kernels present_cr(ZTEMP_BUD) ZTEMP_BUD(:,:,:) = prrs(:, :, :, 1) - prrs(:, :, :, 2) - prrs(:, :, :, 4) !$acc end kernels call Budget_store_end( tbudgets(NBUDGET_RV), 'HTURB', ZTEMP_BUD(:,:,:) ) else if ( krrl >= 1 ) then - !$acc kernels present(ZTEMP_BUD) + !$acc kernels present_cr(ZTEMP_BUD) ZTEMP_BUD(:,:,:) = prrs(:, :, :, 1) - prrs(:, :, :, 2) !$acc end kernels call Budget_store_end( tbudgets(NBUDGET_RV), 'HTURB', ZTEMP_BUD(:,:,:) ) @@ -1401,7 +1404,7 @@ end if PTHP = PTHP + XG / PTHVREF * MZF( PFLXZTHVMF ) #else CALL MZF_DEVICE( PFLXZTHVMF, ZTMP1_DEVICE ) -!$acc kernels +!$acc kernels present_cr(PTHP) PTHP(:,:,:) = PTHP(:,:,:) + XG / PTHVREF(:,:,:) * ZTMP1_DEVICE(:,:,:) !$acc end kernels #endif @@ -1483,7 +1486,7 @@ END IF ! IF ( KRRL >= 1 ) THEN IF ( KRRI >= 1 ) THEN -!$acc kernels +!$acc kernels present_cr(PRT,PRRS,PTHLT,PRTHLS) PRT(:,:,:,1) = PRT(:,:,:,1) - PRT(:,:,:,2) - PRT(:,:,:,4) PRRS(:,:,:,1) = PRRS(:,:,:,1) - PRRS(:,:,:,2) - PRRS(:,:,:,4) PTHLT(:,:,:) = PTHLT(:,:,:) + ZLVOCPEXNM(:,:,:) * PRT(:,:,:,2) & @@ -1501,7 +1504,7 @@ IF ( KRRL >= 1 ) THEN CALL MNH_MEM_RELEASE() #endif ELSE -!$acc kernels present( zlocpexnm ) +!$acc kernels present_cr(PRT,PRRS,PTHLT,PRTHLS, zlocpexnm ) PRT(:,:,:,1) = PRT(:,:,:,1) - PRT(:,:,:,2) PRRS(:,:,:,1) = PRRS(:,:,:,1) - PRRS(:,:,:,2) PTHLT(:,:,:) = PTHLT(:,:,:) + ZLOCPEXNM(:,:,:) * PRT(:,:,:,2) @@ -1535,7 +1538,7 @@ IF (LLES_CALL) THEN #ifndef MNH_OPENACC CALL LES_MEAN_SUBGRID((PSFU*PSFU+PSFV*PSFV)**0.25,X_LES_USTAR) #else -!$acc kernels +!$acc kernels present_cr(ZTMP1_DEVICE) ZTMP1_DEVICE(:,:,1) = (PSFU*PSFU+PSFV*PSFV)**0.25 !$acc end kernels CALL LES_MEAN_SUBGRID(ZTMP1_DEVICE(:,:,1),X_LES_USTAR) @@ -1581,17 +1584,17 @@ IF (LLES_CALL) THEN #else IF (HTURBDIM=="1DIM") THEN !$acc data copy(X_LES_SUBGRID_U2,X_LES_SUBGRID_V2,X_LES_SUBGRID_W2,X_LES_RES_ddz_Thl_SBG_W2) -!$acc kernels +!$acc kernels present_cr(ZTMP1_DEVICE) ZTMP1_DEVICE = 2./3.*PTKET !$acc end kernels CALL LES_MEAN_SUBGRID(ZTMP1_DEVICE,X_LES_SUBGRID_U2) -!$acc kernels +!$acc kernels present_cr(X_LES_SUBGRID_V2,X_LES_SUBGRID_W2) X_LES_SUBGRID_V2(:,:,:) = X_LES_SUBGRID_U2(:,:,:) X_LES_SUBGRID_W2(:,:,:) = X_LES_SUBGRID_U2(:,:,:) !$acc end kernels CALL GZ_M_W_DEVICE(KKA,KKU,KKL,PTHLT,PDZZ,ZTMP2_DEVICE) CALL MZF_DEVICE( ZTMP2_DEVICE, ZTMP3_DEVICE ) -!$acc kernels +!$acc kernels present_cr(ZTMP2_DEVICE) ZTMP2_DEVICE = ZTMP1_DEVICE*ZTMP3_DEVICE !$acc end kernels CALL LES_MEAN_SUBGRID(ZTMP2_DEVICE,X_LES_RES_ddz_Thl_SBG_W2) @@ -1600,7 +1603,7 @@ IF (LLES_CALL) THEN !$acc data copy(X_LES_RES_ddz_Rt_SBG_W2) CALL GZ_M_W_DEVICE(KKA,KKU,KKL,PRT(:,:,:,1),PDZZ,ZTMP2_DEVICE) CALL MZF_DEVICE( ZTMP2_DEVICE, ZTMP3_DEVICE ) -!$acc kernels +!$acc kernels present_cr(ZTMP2_DEVICE) ZTMP2_DEVICE = ZTMP1_DEVICE*PTKET*ZTMP3_DEVICE !$acc end kernels CALL LES_MEAN_SUBGRID(ZTMP2_DEVICE,X_LES_RES_ddz_Rt_SBG_W2) @@ -1610,7 +1613,7 @@ IF (LLES_CALL) THEN DO JSV=1,NSV CALL GZ_M_W_DEVICE(KKA,KKU,KKL,PSVT(:,:,:,JSV),PDZZ,ZTMP2_DEVICE) CALL MZF_DEVICE( ZTMP2_DEVICE, ZTMP3_DEVICE ) -!$acc kernels +!$acc kernels present_cr(ZTMP2_DEVICE) ZTMP2_DEVICE = ZTMP1_DEVICE*PTKET*ZTMP3_DEVICE !$acc end kernels CALL LES_MEAN_SUBGRID(ZTMP2_DEVICE,X_LES_RES_ddz_Sv_SBG_W2(:,:,:,JSV)) @@ -1629,7 +1632,7 @@ IF (LLES_CALL) THEN ! !* presso-correlations for subgrid Tke are equal to zero. ! -!$acc kernels +!$acc kernels present_cr(ZLEPS) ZLEPS = 0. !ZLEPS is used as a work array (not used anymore) !$acc end kernels CALL LES_MEAN_SUBGRID(ZLEPS,X_LES_SUBGRID_WP) @@ -1769,7 +1772,7 @@ geast = HLBCX(2) /= "CYCL" .AND. LEAST_ll() gsouth = HLBCY(1) /= "CYCL" .AND. LSOUTH_ll() gnorth = HLBCY(2) /= "CYCL" .AND. LNORTH_ll() -!$acc kernels +!$acc kernels present_cr(PUSLOPE,PVSLOPE) IF ( gwest ) THEN PUSLOPE(IIB-1,:)=PUSLOPE(IIB,:) PVSLOPE(IIB-1,:)=PVSLOPE(IIB,:) @@ -1865,7 +1868,7 @@ CALL MNH_MEM_GET( zdrvsatdt, size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) ) ! !* 1.1 Lv/Cph at t ! -!$acc kernels ! present(ZRVSAT,ZDRVSATDT) ! present(PLOCPEXN) ! present ZDRVSATDT) +!$acc kernels present_cr(PLOCPEXN) ! present(ZRVSAT,ZDRVSATDT) ! present(PLOCPEXN) ! present ZDRVSATDT) PLOCPEXN(:,:,:) = ( PLTT + (XCPV-PC) * (PT(:,:,:)-XTT) ) / PCP(:,:,:) ! !* 1.2 Saturation vapor pressure at t @@ -1930,7 +1933,7 @@ ENDDO !$acc end kernels !* 1.7 Lv/Cph/Exner at t-1 ! -!$acc kernels present(PLOCPEXN) +!$acc kernels present_cr(PLOCPEXN) !$acc_nv loop independent collapse(3) DO CONCURRENT(JI=1:JIU,JJ=1:JJU,JK=1:JKU) PLOCPEXN(JI,JJ,JK) = PLOCPEXN(JI,JJ,JK) / PEXN(JI,JJ,JK) @@ -2240,7 +2243,7 @@ GOCEAN = LOCEAN !$acc present( ztmp1_device, ztmp2_device ) IF (ODZ) THEN -!$acc kernels +!$acc kernels present_cr(PLM) ! Dz is take into account in the computation DO JK = KKTB,KKTE ! 1D turbulence scheme PLM(:,:,JK) = PZZ(:,:,JK+KKL) - PZZ(:,:,JK) @@ -2254,7 +2257,7 @@ IF (ODZ) THEN PLM(:,:,:) = SQRT( PLM(:,:,:)*MXF(PDXX(:,:,:)) ) #else CALL MXF_DEVICE( PDXX, ZTMP1_DEVICE ) -!$acc kernels +!$acc kernels present_cr(PLM) PLM(:,:,:) = SQRT( PLM(:,:,:) * ZTMP1_DEVICE(:,:,:) ) !$acc end kernels #endif @@ -2282,7 +2285,7 @@ ENDDO END IF ELSE ! Dz not taken into account in computation to assure invariability with vertical grid mesh -!$acc kernels +!$acc kernels present_cr(PLM) PLM(:,:,:)=1.E10 !$acc end kernels IF ( HTURBDIM /= '1DIM' ) THEN ! 3D turbulence scheme @@ -2523,7 +2526,7 @@ CALL MNH_MEM_GET( ZTMP2_DEVICE, JIU, JJU, JKU ) ! ! initialize the mixing length with the mesh grid -!$acc kernels +!$acc kernels present_cr(PLM) ! 1D turbulence scheme PLM(:,:,KKTB:KKTE) = PZZ(:,:,KKTB+KKL:KKTE+KKL) - PZZ(:,:,KKTB:KKTE) PLM(:,:,KKU) = PLM(:,:,KKE) @@ -2535,7 +2538,7 @@ IF ( HTURBDIM /= '1DIM' ) THEN ! 3D turbulence scheme PLM(:,:,:) = SQRT( PLM(:,:,:)*MXF(PDXX(:,:,:)) ) #else CALL MXF_DEVICE(PDXX,ZTMP1_DEVICE) -!$acc kernels +!$acc kernels present_cr(PLM) PLM(:,:,:) = SQRT( PLM(:,:,:)*ZTMP1_DEVICE ) !$acc end kernels if ( mppdb_initialized ) then @@ -2554,7 +2557,7 @@ IF ( HTURBDIM /= '1DIM' ) THEN ! 3D turbulence scheme #else CALL MXF_DEVICE(PDXX,ZTMP1_DEVICE) CALL MYF_DEVICE(PDYY,ZTMP2_DEVICE) -!$acc kernels +!$acc kernels present_cr(PLM) PLM(:,:,:) = (PLM(:,:,:)*ZTMP1_DEVICE*ZTMP2_DEVICE ) ** (1./3.) !$acc end kernels if ( mppdb_initialized ) then