diff --git a/src/MNH/contrav.f90 b/src/MNH/contrav.f90 index d5bec7557d2c9e929e2c780ebe2b9ea077ac818c..cf8a2c9b2e59bb11b0c2aea4ecb14ddf92d222fb 100644 --- a/src/MNH/contrav.f90 +++ b/src/MNH/contrav.f90 @@ -678,7 +678,6 @@ ELSE !* 3. Compute the vertical contravariant components (general case) ! ------------------------------------ ! -!$acc kernels ! Z1(:,:,:) = 0. ! Z2(:,:,:) = 0. ! @@ -687,6 +686,7 @@ IF (KADV_ORDER == 2 ) THEN call Print_msg( NVERB_WARNING, 'GEN', 'CONTRAV', 'OpenACC: KADV_ORDER=2 and LFLAT=.TRUE. not yet tested' ) #endif ! +!$acc kernels !$acc loop independent collapse(3) do jk = ikb, ike + 1 do jj = 1, iju @@ -717,8 +717,10 @@ IF (KADV_ORDER == 2 ) THEN end do end do end do +!$acc end kernels ! ELSE IF (KADV_ORDER == 4 ) THEN +!$acc kernels ! !!$ IF (NHALO == 1) THEN IF ( GWEST ) THEN @@ -863,10 +865,12 @@ ELSE IF (KADV_ORDER == 4 ) THEN end do end do end do +!$acc end kernels ! ! END IF ! +!$acc kernels PRWCT(:,:,1) = - PRWCT(:,:,3) ! Mirror hypothesis !$acc end kernels !$acc update self(PRWCT) diff --git a/src/MNH/ice4_warm.f90 b/src/MNH/ice4_warm.f90 index b2ed2b7a561ce9666f4ff893ca9b5ba1d6e0e6ba..95a0c756caada79f2c521d28bd27ce150f42e9b4 100644 --- a/src/MNH/ice4_warm.f90 +++ b/src/MNH/ice4_warm.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. @@ -202,11 +202,13 @@ DO JL=1, ISIZE PA_RC(JL) = PA_RC(JL) - PRCAUTR(JL) PA_RR(JL) = PA_RR(JL) + PRCAUTR(JL) ENDDO +!$acc end kernels ! ! !* 4.3 compute the accretion of r_c for r_r production: RCACCR ! IF (HSUBG_RC_RR_ACCR=='NONE') THEN +!$acc kernels !CLoud water and rain are diluted over the grid box DO JL=1, ISIZE ZMASK(JL)=MAX(0., -SIGN(1., XRTMIN(2)-PRCT(JL))) * & ! PRCT(:)>XRTMIN(2) @@ -231,8 +233,10 @@ IF (HSUBG_RC_RR_ACCR=='NONE') THEN #endif END WHERE ENDIF +!$acc end kernels ELSEIF (HSUBG_RC_RR_ACCR=='PRFR') THEN +!$acc kernels !Cloud water is concentrated over its fraction with possibly to parts with high and low content as set for autoconversion !Rain is concnetrated over its fraction !Rain in high content area fraction: PHLC_HCF @@ -286,17 +290,21 @@ ELSEIF (HSUBG_RC_RR_ACCR=='PRFR') THEN #endif END WHERE ENDIF +!$acc end kernels ELSE CALL PRINT_MSG(NVERB_FATAL,'GEN','ICE4_WARM','wrong HSUBG_RC_RR_ACCR case') ENDIF +!$acc kernels DO JL=1, ISIZE PA_RC(JL) = PA_RC(JL) - PRCACCR(JL) PA_RR(JL) = PA_RR(JL) + PRCACCR(JL) ENDDO +!$acc end kernels ! !* 4.4 compute the evaporation of r_r: RREVAV ! IF (HSUBG_RR_EVAP=='NONE') THEN +!$acc kernels DO JL=1, ISIZE ZMASK(JL)=MAX(0., -SIGN(1., XRTMIN(3)-PRRT(JL))) * & ! PRRT(:)>XRTMIN(3) &MAX(0., SIGN(1., XRTMIN(2)-PRCT(JL))) * & ! PRCT(:)<=XRTMIN(2) @@ -329,8 +337,10 @@ IF (HSUBG_RR_EVAP=='NONE') THEN #endif END WHERE ENDIF +!$acc end kernels ELSEIF (HSUBG_RR_EVAP=='CLFR' .OR. HSUBG_RR_EVAP=='PRFR') THEN +!$acc kernels !Evaporation in clear sky part !With CLFR, rain is diluted over the grid box !With PRFR, rain is concentrated in its fraction @@ -396,10 +406,12 @@ ELSEIF (HSUBG_RR_EVAP=='CLFR' .OR. HSUBG_RR_EVAP=='PRFR') THEN PRREVAV(:) = PRREVAV(:)*(ZZW4(:)-PCF(:)) END WHERE ENDIF +!$acc end kernels ELSE CALL PRINT_MSG(NVERB_FATAL,'GEN','ICE4_WARM','wrong HSUBG_RR_EVAP case') END IF +!$acc kernels DO JL=1, ISIZE PA_RR(JL) = PA_RR(JL) - PRREVAV(JL) PA_RV(JL) = PA_RV(JL) + PRREVAV(JL)