Skip to content
Snippets Groups Projects
Commit ee75fc8a authored by ESCOBAR MUNOZ Juan's avatar ESCOBAR MUNOZ Juan
Browse files

Juan 21/04/2022:Juan:ZSOLVER/ , Cray Bug/Opt Bypass , use do conccurrent +...

Juan 21/04/2022:Juan:ZSOLVER/ , Cray Bug/Opt Bypass , use do conccurrent + present_cr + acc_nv + dir concurrent
parent 10aff6d9
No related branches found
No related tags found
No related merge requests found
!MNH_LIC Copyright 1996-2021 CNRS, Meteo-France and Universite Paul Sabatier
!MNH_LIC Copyright 1996-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.
......@@ -280,6 +280,20 @@ INTEGER :: IKE ! K index value of the last inner mass point
INTEGER :: JITER,ITERMAX ! iterative loop for first order adjustment
INTEGER :: JI,JJ,JK
!
#ifndef MNH_OPENACC
LOGICAL,DIMENSION(:,:,:), allocatable :: GTEMP
!
REAL, DIMENSION(:,:,:), allocatable :: ZSIGS,ZSRCS
REAL, DIMENSION(:,:,:), allocatable &
:: ZT, & ! adjusted temperature
ZRV, ZRC, ZRI, & ! adjusted state
ZCPH, & ! guess of the CPh for the mixing
ZLV, & ! guess of the Lv at t+1
ZLS, & ! guess of the Ls at t+1
ZW1,ZW2, & ! Work arrays for intermediate fields
ZCRIAUT, & ! Autoconversion thresholds
ZHCF, ZHR
#else
LOGICAL,DIMENSION(:,:,:), POINTER, CONTIGUOUS :: GTEMP
!
REAL, DIMENSION(:,:,:), POINTER, CONTIGUOUS :: ZSIGS,ZSRCS
......@@ -293,9 +307,16 @@ REAL, DIMENSION(:,:,:), POINTER, CONTIGUOUS &
ZCRIAUT, & ! Autoconversion thresholds
ZHCF, ZHR
REAL, DIMENSION(:,:,:), pointer , contiguous :: ZTEMP_BUD
#endif
!
LOGICAL :: GPOUT_RV,GPOUT_RC,GPOUT_RI,GPOUT_TH
!-------------------------------------------------------------------------------
!
GPOUT_RV = PRESENT(POUT_RV)
GPOUT_RC = PRESENT(POUT_RC)
GPOUT_RI = PRESENT(POUT_RI)
GPOUT_TH = PRESENT(POUT_TH)
!
! IN variables
!
!$acc data present( PRHODJ, PEXNREF, PSIGS, PMFCONV, PPABST, PZZ, &
......@@ -434,7 +455,7 @@ DO JITER =1,ITERMAX
!* 2.3 compute the latent heat of vaporization Lv(T*) at t+1
! and the latent heat of sublimation Ls(T*) at t+1
!
!$acc kernels
!$acc kernels present_cr(ZLV,ZLS,ZCPH)
ZLV(:,:,:) = XLVTT + ( XCPV - XCL ) * ( ZT(:,:,:) -XTT )
ZLS(:,:,:) = XLSTT + ( XCPV - XCI ) * ( ZT(:,:,:) -XTT )
!
......@@ -547,13 +568,15 @@ ENDDO
!* 5.2 compute the cloud fraction PCLDFR
!
IF ( .NOT. OSUBG_COND ) THEN
!$acc kernels
GTEMP(:,:,:) = PRCS(:,:,:) + PRIS(:,:,:) > 1.E-12 / PTSTEP
WHERE ( GTEMP(:,:,:) )
PCLDFR(:,:,:) = 1.
ELSEWHERE
PCLDFR(:,:,:) = 0.
ENDWHERE
!$acc kernels present_cr(GTEMP)
DO CONCURRENT (JI=1:IIU,JJ=1:IJU,JK=1:IKU)
GTEMP(JI,JJ,JK) = PRCS(JI,JJ,JK) + PRIS(JI,JJ,JK) > 1.E-12 / PTSTEP
IF ( GTEMP(JI,JJ,JK) )THEN
PCLDFR(JI,JJ,JK) = 1.
ELSE
PCLDFR(JI,JJ,JK) = 0.
ENDIF
ENDDO
IF ( SIZE(PSRCS,3) /= 0 ) THEN
PSRCS(:,:,:) = PCLDFR(:,:,:)
END IF
......@@ -630,8 +653,8 @@ ELSE
PTHS(:,:,:) = PTHS(:,:,:) + &
(ZW1 * ZLV(:,:,:) + ZW2 * ZLS(:,:,:)) / ZCPH(:,:,:) &
/ PEXNREF(:,:,:)
IF(PRESENT(POUT_RV) .OR. PRESENT(POUT_RC) .OR. &
&PRESENT(POUT_RI) .OR. PRESENT(POUT_TH)) THEN
IF(GPOUT_RV .OR. GPOUT_RC .OR. &
&GPOUT_RI .OR. GPOUT_TH) THEN
ZW1(:,:,:)=PRC_MF(:,:,:)
ZW2(:,:,:)=PRI_MF(:,:,:)
GTEMP(:,:,:) = ZW1(:,:,:)+ZW2(:,:,:)>ZRV(:,:,:)
......@@ -648,10 +671,10 @@ ELSE
ENDIF
!
!$acc kernels
IF(PRESENT(POUT_RV)) POUT_RV=ZRV
IF(PRESENT(POUT_RC)) POUT_RC=ZRC
IF(PRESENT(POUT_RI)) POUT_RI=ZRI
IF(PRESENT(POUT_TH)) POUT_TH=ZT / PEXN(:,:,:)
IF(GPOUT_RV) POUT_RV=ZRV
IF(GPOUT_RC) POUT_RC=ZRC
IF(GPOUT_RI) POUT_RI=ZRI
IF(GPOUT_TH) POUT_TH=ZT / PEXN(:,:,:)
!$acc end kernels
!
!
......@@ -701,10 +724,10 @@ CALL MPPDB_CHECK3D(PRIS,"ICE_ADJUST end:PRIS",PRECISION)
!Check all OUT arrays
CALL MPPDB_CHECK3D(PSRCS,"ICE_ADJUST end:PSRCS",PRECISION)
CALL MPPDB_CHECK3D(PCLDFR,"ICE_ADJUST end:PCLDFR",PRECISION)
IF (PRESENT(POUT_RV)) CALL MPPDB_CHECK3D(POUT_RV,"ICE_ADJUST end:POUT_RV")
IF (PRESENT(POUT_RC)) CALL MPPDB_CHECK3D(POUT_RC,"ICE_ADJUST end:POUT_RC")
IF (PRESENT(POUT_RI)) CALL MPPDB_CHECK3D(POUT_RI,"ICE_ADJUST end:POUT_RI")
IF (PRESENT(POUT_TH)) CALL MPPDB_CHECK3D(POUT_TH,"ICE_ADJUST end:POUT_TH")
IF (GPOUT_RV) CALL MPPDB_CHECK3D(POUT_RV,"ICE_ADJUST end:POUT_RV")
IF (GPOUT_RC) CALL MPPDB_CHECK3D(POUT_RC,"ICE_ADJUST end:POUT_RC")
IF (GPOUT_RI) CALL MPPDB_CHECK3D(POUT_RI,"ICE_ADJUST end:POUT_RI")
IF (GPOUT_TH) CALL MPPDB_CHECK3D(POUT_TH,"ICE_ADJUST end:POUT_TH")
IF (PRESENT(PHLC_HRC)) CALL MPPDB_CHECK3D(PHLC_HRC,"ICE_ADJUST end:PHLC_HRC")
IF (PRESENT(PHLC_HCF)) CALL MPPDB_CHECK3D(PHLC_HCF,"ICE_ADJUST end:PHLC_HCF")
IF (PRESENT(PHLI_HRI)) CALL MPPDB_CHECK3D(PHLI_HRI,"ICE_ADJUST end:PHLI_HRI")
......
......@@ -243,11 +243,7 @@ end if
!$acc data present( zt, zexn, zlv, zcph, zls, zcor )
#ifdef MNH_COMPILER_CCE
!$acc kernels present(zexn,zt,zlv)
#else
!$acc kernels
#endif
!$acc kernels present_cr(zexn,zt,zlv)
#ifndef MNH_BITREP
zexn(:, :, :) = ( ppabst(:, :, :) / xp00 ) ** (xrd / xcpd )
#else
......@@ -257,11 +253,7 @@ zt (:, :, :) = ptht(:, :, :) * zexn(:, :, :)
zlv (:, :, :) = xlvtt + ( xcpv - xcl ) * ( zt(:, :, :) - xtt )
!$acc end kernels
if ( hcloud == 'ICE3' .or. hcloud == 'ICE4' .or. hcloud == 'LIMA' ) then
#ifdef MNH_COMPILER_CCE
!$acc kernels present(zls)
#else
!$acc kernels
#endif
!$acc kernels present_cr(zls)
zls(:, :, :) = xlstt + ( xcpv - xci ) * ( zt(:, :, :) - xtt )
!$acc end kernels
end if
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment