Skip to content
Snippets Groups Projects
Commit 33a5bdff authored by RODIER Quentin's avatar RODIER Quentin
Browse files

Quentin 02/10/2024: add kernels to ice_adjust

parent 7f45314d
No related branches found
No related tags found
No related merge requests found
...@@ -253,6 +253,8 @@ DO JITER =1,ITERMAX ...@@ -253,6 +253,8 @@ DO JITER =1,ITERMAX
!* 2.3 compute the latent heat of vaporization Lv(T*) at t+1 !* 2.3 compute the latent heat of vaporization Lv(T*) at t+1
! and the latent heat of sublimation Ls(T*) at t+1 ! and the latent heat of sublimation Ls(T*) at t+1
! !
!$acc kernels
!$acc loop independent collapse(2)
DO JK=IKTB,IKTE DO JK=IKTB,IKTE
DO JIJ=IIJB,IIJE DO JIJ=IIJB,IIJE
IF (JITER==1) ZT(JIJ,JK) = PTH(JIJ,JK) * PEXN(JIJ,JK) IF (JITER==1) ZT(JIJ,JK) = PTH(JIJ,JK) * PEXN(JIJ,JK)
...@@ -260,6 +262,7 @@ DO JITER =1,ITERMAX ...@@ -260,6 +262,7 @@ DO JITER =1,ITERMAX
ZLS(JIJ,JK) = CST%XLSTT + ( CST%XCPV - CST%XCI ) * ( ZT(JIJ,JK) -CST%XTT ) ZLS(JIJ,JK) = CST%XLSTT + ( CST%XCPV - CST%XCI ) * ( ZT(JIJ,JK) -CST%XTT )
ENDDO ENDDO
ENDDO ENDDO
!$acc end kernels
! !
!* 2.4 Iterate !* 2.4 Iterate
! !
...@@ -276,6 +279,8 @@ ENDDO ! end of the iterative loop ...@@ -276,6 +279,8 @@ ENDDO ! end of the iterative loop
! ------------------------------------------------- ! -------------------------------------------------
! !
! !
!$acc kernels
!$acc loop independent collapse(2)
DO JK=IKTB,IKTE DO JK=IKTB,IKTE
DO JIJ=IIJB,IIJE DO JIJ=IIJB,IIJE
! !
...@@ -308,10 +313,15 @@ DO JK=IKTB,IKTE ...@@ -308,10 +313,15 @@ DO JK=IKTB,IKTE
PTHS(JIJ,JK) = PTHS(JIJ,JK) + & PTHS(JIJ,JK) = PTHS(JIJ,JK) + &
ZW2 * ZLS(JIJ,JK) / (ZCPH(JIJ,JK) * PEXNREF(JIJ,JK)) ZW2 * ZLS(JIJ,JK) / (ZCPH(JIJ,JK) * PEXNREF(JIJ,JK))
ENDDO ENDDO
ENDDO
!$acc end kernels
! !
!* 5.2 compute the cloud fraction PCLDFR !* 5.2 compute the cloud fraction PCLDFR
! !
IF ( .NOT. TURBN%LSUBG_COND ) THEN IF ( .NOT. TURBN%LSUBG_COND ) THEN
!$acc kernels
!$acc loop independent collapse(2)
DO JK=IKTB,IKTE
DO JIJ=IIJB,IIJE DO JIJ=IIJB,IIJE
IF (PRCS(JIJ,JK) + PRIS(JIJ,JK) > 1.E-12 / PTSTEP) THEN IF (PRCS(JIJ,JK) + PRIS(JIJ,JK) > 1.E-12 / PTSTEP) THEN
PCLDFR(JIJ,JK) = 1. PCLDFR(JIJ,JK) = 1.
...@@ -322,7 +332,12 @@ DO JK=IKTB,IKTE ...@@ -322,7 +332,12 @@ DO JK=IKTB,IKTE
PSRCS(JIJ,JK) = PCLDFR(JIJ,JK) PSRCS(JIJ,JK) = PCLDFR(JIJ,JK)
END IF END IF
ENDDO ENDDO
ENDDO
!$acc end kernels
ELSE !TURBN%LSUBG_COND case ELSE !TURBN%LSUBG_COND case
!$acc kernels
!$acc loop independent collapse(2)
DO JK=IKTB,IKTE
DO JIJ=IIJB,IIJE DO JIJ=IIJB,IIJE
!We limit PRC_MF+PRI_MF to PRVS*PTSTEP to avoid negative humidity !We limit PRC_MF+PRI_MF to PRVS*PTSTEP to avoid negative humidity
ZW1=PRC_MF(JIJ,JK)/PTSTEP ZW1=PRC_MF(JIJ,JK)/PTSTEP
...@@ -409,8 +424,9 @@ DO JK=IKTB,IKTE ...@@ -409,8 +424,9 @@ DO JK=IKTB,IKTE
(ZW1 * ZLV(JIJ,JK) + ZW2 * ZLS(JIJ,JK)) / ZCPH(JIJ,JK) (ZW1 * ZLV(JIJ,JK) + ZW2 * ZLS(JIJ,JK)) / ZCPH(JIJ,JK)
ENDDO ENDDO
ENDIF ENDIF
ENDDO
!$acc end kernels
ENDIF !TURBN%LSUBG_COND ENDIF !TURBN%LSUBG_COND
ENDDO
! !
IF(PRESENT(POUT_RV)) POUT_RV=ZRV IF(PRESENT(POUT_RV)) POUT_RV=ZRV
IF(PRESENT(POUT_RC)) POUT_RC=ZRC IF(PRESENT(POUT_RC)) POUT_RC=ZRC
...@@ -441,6 +457,9 @@ REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) :: PRC_OUT ! Cloud water m.r. to adju ...@@ -441,6 +457,9 @@ REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) :: PRC_OUT ! Cloud water m.r. to adju
REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) :: PRI_OUT ! Cloud ice m.r. to adjust in output REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) :: PRI_OUT ! Cloud ice m.r. to adjust in output
! !
!* 2.4 compute the specific heat for moist air (Cph) at t+1 !* 2.4 compute the specific heat for moist air (Cph) at t+1
!
!$acc kernels
!$acc loop independent collapse(2)
DO JK=IKTB,IKTE DO JK=IKTB,IKTE
DO JIJ=IIJB,IIJE DO JIJ=IIJB,IIJE
SELECT CASE(KRR) SELECT CASE(KRR)
...@@ -465,6 +484,7 @@ DO JK=IKTB,IKTE ...@@ -465,6 +484,7 @@ DO JK=IKTB,IKTE
END SELECT END SELECT
ENDDO ENDDO
ENDDO ENDDO
!$acc end kernels
! !
IF ( TURBN%LSUBG_COND ) THEN IF ( TURBN%LSUBG_COND ) THEN
! !
...@@ -488,8 +508,10 @@ ELSE ...@@ -488,8 +508,10 @@ ELSE
! FOR MIXED-PHASE CLOUD ! FOR MIXED-PHASE CLOUD
! ----------------------------------------------- ! -----------------------------------------------
! !
!$acc kernels
ZSIGS(:,:)=0. ZSIGS(:,:)=0.
ZSIGQSAT(:)=0. ZSIGQSAT(:)=0.
!$acc end kernels
!We use ZSRCS because in Méso-NH, PSRCS can be a zero-length array in this case !We use ZSRCS because in Méso-NH, PSRCS can be a zero-length array in this case
!ZT is INOUT !ZT is INOUT
CALL CONDENSATION(D, CST, ICEP, NEB, TURBN, & CALL CONDENSATION(D, CST, ICEP, NEB, TURBN, &
......
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