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

Quentin 26/09/2024: add missing kernels around mnh_expand

parent e8d84f06
No related branches found
No related tags found
No related merge requests found
......@@ -196,6 +196,7 @@ IF(.NOT. LDSOFT) THEN
&IGDRY, &
&ICEP%XKER_SDRYG(:,:), ZZW(:))
IF(IGDRY>0)THEN
!$acc kernels
!$mnh_expand_where(JL=1:KSIZE)
WHERE(GDRY(1:KSIZE))
PRG_TEND(1:KSIZE, IRSWETG)=ICEP%XFSDRYG*ZZW(1:KSIZE) & ! RSDRYG
......@@ -213,6 +214,7 @@ IF(.NOT. LDSOFT) THEN
PRG_TEND(1:KSIZE, IRSDRYG)=PRG_TEND(1:KSIZE, IRSWETG)*ICEP%XCOLSG*EXP(ICEP%XCOLEXSG*(PT(1:KSIZE)-CST%XTT))
END WHERE
!$mnh_end_expand_where(JL=1:KSIZE)
!$acc end kernels
ENDIF
ENDIF
!
......@@ -237,6 +239,7 @@ IF(.NOT. LDSOFT) THEN
&IGDRY, &
&ICEP%XKER_RDRYG(:,:), ZZW(:))
IF(IGDRY>0) THEN
!$acc kernels
!$mnh_expand_where(JL=1:KSIZE)
WHERE(GDRY(1:KSIZE))
PRG_TEND(1:KSIZE, IRRDRYG) = ICEP%XFRDRYG*ZZW(1:KSIZE) & ! RRDRYG
......@@ -247,6 +250,7 @@ IF(.NOT. LDSOFT) THEN
ICEP%XLBRDRYG3/( PLBDAR(1:KSIZE)**2) )
END WHERE
!$mnh_end_expand_where(JL=1:KSIZE)
!$acc end kernels
ENDIF
ENDIF
......@@ -316,6 +320,7 @@ ENDDO
! Graupel can be produced by other processes instantaneously (inducing a mixing ratio change, PRGSI_MR) or
! as a tendency (PRWETGH)
IF(KRR==7) THEN
!$acc kernels
!$mnh_expand_where(JL=1:KSIZE)
WHERE(LDWETG(1:KSIZE))
!assume a linear percent of conversion of produced graupel into hail
......@@ -327,6 +332,7 @@ IF(KRR==7) THEN
PRWETGH_MR(1:KSIZE)=0.
END WHERE
!$mnh_end_expand_where(JL=1:KSIZE)
!$acc end kernels
ELSE
!$acc kernels
PRWETGH(:)=0.
......
......@@ -155,6 +155,7 @@ IF(.NOT. LDSOFT) THEN
&IGWET, &
&ICEP%XKER_SWETH(:,:), ZZW(:))
IF(IGWET>0)THEN
!$acc kernels
!$mnh_expand_where(JL=1:KSIZE)
WHERE(GWET(1:KSIZE))
#ifdef REPRO48
......@@ -175,6 +176,7 @@ IF(.NOT. LDSOFT) THEN
PRH_TEND(1:KSIZE, IRSDRYH)=PRH_TEND(1:KSIZE, IRSWETH)*(ICEP%XCOLSH*EXP(ICEP%XCOLEXSH*(PT(1:KSIZE)-CST%XTT)))
END WHERE
!$mnh_end_expand_where(JL=1:KSIZE)
!$acc end kernels
ENDIF
ENDIF
!
......@@ -199,6 +201,7 @@ IF(.NOT. LDSOFT) THEN
&IGWET, &
&ICEP%XKER_GWETH(:,:), ZZW(:))
IF(IGWET>0)THEN
!$acc kernels
!$mnh_expand_where(JL=1:KSIZE)
WHERE(GWET(1:KSIZE))
PRH_TEND(1:KSIZE, IRGWETH)=ICEP%XFGWETH*ZZW(1:KSIZE) & ! RGWETH
......@@ -214,6 +217,7 @@ IF(.NOT. LDSOFT) THEN
PRH_TEND(1:KSIZE, IRGDRYH)=PRH_TEND(1:KSIZE, IRGDRYH)*(ICEP%XCOLGH*EXP(ICEP%XCOLEXGH*(PT(1:KSIZE)-CST%XTT)))
END WHERE
!$mnh_end_expand_where(JL=1:KSIZE)
!$acc end kernels
END IF
ENDIF
!
......@@ -237,6 +241,7 @@ IF(.NOT. LDSOFT) THEN
&IGWET, &
&ICEP%XKER_RWETH(:,:), ZZW(:))
IF(IGWET>0)THEN
!$acc kernels
!$mnh_expand_where(JL=1:KSIZE)
WHERE(GWET(1:KSIZE))
PRH_TEND(1:KSIZE, IRRWETH) = ICEP%XFRWETH*ZZW(1:KSIZE) & ! RRWETH
......@@ -247,6 +252,7 @@ IF(.NOT. LDSOFT) THEN
ICEP%XLBRWETH3/( PLBDAR(1:KSIZE)**2) )
END WHERE
!$mnh_end_expand_where(JL=1:KSIZE)
!$acc end kernels
ENDIF
ENDIF
!
......@@ -314,6 +320,7 @@ ENDDO
!$acc end kernels
IF(PARAMI%LCONVHG)THEN
!$acc kernels
!$mnh_expand_where(JL=1:KSIZE)
WHERE(LLDRYH(1:KSIZE))
ZRDRYHG(1:KSIZE)=ZRDRYH_INIT(1:KSIZE)*ZRWETH_INIT(1:KSIZE)/(ZRDRYH_INIT(1:KSIZE)+ZRWETH_INIT(1:KSIZE))
......@@ -321,6 +328,7 @@ IF(PARAMI%LCONVHG)THEN
ZRDRYHG(1:KSIZE)=0.
END WHERE
!$mnh_end_expand_where(JL=1:KSIZE)
!$acc end kernels
ELSE
!$acc kernels
ZRDRYHG(:)=0.
......
......@@ -170,6 +170,7 @@ IF(.NOT. LDSOFT) THEN
!
! 5.1.4 riming of the small sized aggregates
!
!$acc kernels
!$mnh_expand_where(JL=1:KSIZE)
WHERE (GRIM(1:KSIZE))
#ifdef REPRO48
......@@ -185,10 +186,12 @@ IF(.NOT. LDSOFT) THEN
#endif
END WHERE
!$mnh_end_expand_where(JL=1:KSIZE)
!$acc end kernels
!
! 5.1.6 riming-conversion of the large sized aggregates into graupeln
!
!
!$acc kernels
!$mnh_expand_where(JL=1:KSIZE)
WHERE(GRIM(1:KSIZE))
#ifdef REPRO48
......@@ -204,9 +207,10 @@ IF(.NOT. LDSOFT) THEN
#endif
END WHERE
!$mnh_end_expand_where(JL=1:KSIZE)
!$acc end kernels
IF(PARAMI%CSNOWRIMING=='M90 ')THEN
!Murakami 1990
!$acc kernels
!$mnh_expand_where(JL=1:KSIZE)
WHERE(GRIM(1:KSIZE))
ZZW(1:KSIZE) = PRS_TEND(1:KSIZE, IRCRIMS) - PRS_TEND(1:KSIZE, IRCRIMSS) ! RCRIMSG
......@@ -230,6 +234,7 @@ IF(.NOT. LDSOFT) THEN
#endif
END WHERE
!$mnh_end_expand_where(JL=1:KSIZE)
!$acc end kernels
ELSE
!$acc kernels
PRS_TEND(:, IRSRIMCG)=0.
......@@ -289,6 +294,7 @@ IF(.NOT. LDSOFT) THEN
IF(IGACC>0)THEN
! 5.2.4 raindrop accretion on the small sized aggregates
!
!$acc kernels
!$mnh_expand_where(JL=1:KSIZE)
WHERE(GACC(1:KSIZE))
#ifdef REPRO48
......@@ -307,16 +313,20 @@ IF(.NOT. LDSOFT) THEN
PRS_TEND(1:KSIZE, IRRACCSS) =ZZW1(1:KSIZE)*ZZW(1:KSIZE)
END WHERE
!$mnh_end_expand_where(JL=1:KSIZE)
!$acc end kernels
!
!$acc kernels
!$mnh_expand_where(JL=1:KSIZE)
WHERE(GACC(1:KSIZE))
PRS_TEND(1:KSIZE, IRRACCS) = ZZW2(1:KSIZE)*ZZW(1:KSIZE)
END WHERE
!$mnh_end_expand_where(JL=1:KSIZE)
!$acc end kernels
!
! 5.2.6 raindrop accretion-conversion of the large sized aggregates
! into graupeln
!
!$acc kernels
!$mnh_expand_where(JL=1:KSIZE)
WHERE(GACC(1:KSIZE))
#ifdef REPRO48
......@@ -334,6 +344,7 @@ IF(.NOT. LDSOFT) THEN
#endif
END WHERE
!$mnh_end_expand_where(JL=1:KSIZE)
!$acc end kernels
ENDIF
ENDIF
!
......
......@@ -68,6 +68,7 @@ INTEGER :: JI
!
IF (LHOOK) CALL DR_HOOK('ICE4_NUCLEATION', 0, ZHOOK_HANDLE)!
!
!$acc kernels
!$mnh_expand_where(JI=1:KSIZE)
WHERE(ODCOMPUTE(:))
GNEGT(:)=PT(:)<CST%XTT .AND. PRVT(:)>ICED%XRTMIN(1)
......@@ -75,11 +76,13 @@ ELSEWHERE
GNEGT(:)=.FALSE.
ENDWHERE
!$mnh_end_expand_where(JI=1:KSIZE)
!$acc end kernels
!$acc kernels
ZUSW(:)=0.
ZZW(:)=0.
!$acc end kernels
!$acc kernels
!$mnh_expand_where(JI=1:KSIZE)
WHERE(GNEGT(:))
ZZW(:)=ALOG(PT(:))
......@@ -87,9 +90,11 @@ WHERE(GNEGT(:))
ZZW(:)=EXP(CST%XALPI - CST%XBETAI/PT(:) - CST%XGAMI*ZZW(:)) ! es_i
END WHERE
!$mnh_end_expand_where(JI=1:KSIZE)
!$acc end kernels
!$acc kernels
ZSSI(:)=0.
!$acc end kernels
!$acc kernels
!$mnh_expand_where(JI=1:KSIZE)
WHERE(GNEGT(:))
ZZW(:)=MIN(PPABST(:)/2., ZZW(:)) ! safety limitation
......@@ -106,6 +111,7 @@ WHERE(GNEGT(:))
ZSSI(:)=MIN(ZSSI(:), ZUSW(:)) ! limitation of SSi according to SSw=0
END WHERE
!$mnh_end_expand_where(JI=1:KSIZE)
!$acc end kernels
!$acc kernels
ZZW(:)=0.
......@@ -121,15 +127,18 @@ DO JI=1,KSIZE
ENDIF
ENDDO
!$acc end kernels
!$acc kernels
!$mnh_expand_where(JI=1:KSIZE)
WHERE(GNEGT(:))
ZZW(:)=ZZW(:)-PCIT(:)
ZZW(:)=MIN(ZZW(:), 50.E3) ! limitation provisoire a 50 l^-1
END WHERE
!$mnh_end_expand_where(JI=1:KSIZE)
!$acc end kernels
!$acc kernels
PRVHENI_MR(:)=0.
!$acc end kernels
!$acc kernels
!$mnh_expand_where(JI=1:KSIZE)
WHERE(GNEGT(:))
!
......@@ -139,11 +148,13 @@ WHERE(GNEGT(:))
PRVHENI_MR(:)=MIN(PRVT(:), PRVHENI_MR(:))
END WHERE
!$mnh_end_expand_where(JI=1:KSIZE)
!$acc end kernels
!Limitation due to 0 crossing of temperature
IF(PARAMI%LFEEDBACKT) THEN
!$acc kernels
ZW(:)=0.
!$acc end kernels
!$acc kernels
!$mnh_expand_where(JI=1:KSIZE)
WHERE(GNEGT(:))
ZW(:)=MIN(PRVHENI_MR(:), &
......@@ -153,12 +164,15 @@ IF(PARAMI%LFEEDBACKT) THEN
PRVHENI_MR(:)=PRVHENI_MR(:)*ZW(:)
ZZW(:)=ZZW(:)*ZW(:)
!$mnh_end_expand_where(JI=1:KSIZE)
!$acc end kernels
ENDIF
!$acc kernels
!$mnh_expand_where(JI=1:KSIZE)
WHERE(GNEGT(:))
PCIT(:)=MAX(ZZW(:)+PCIT(:), PCIT(:))
END WHERE
!$mnh_end_expand_where(JI=1:KSIZE)
!$acc end kernels
!
IF (LHOOK) CALL DR_HOOK('ICE4_NUCLEATION', 1, ZHOOK_HANDLE)
END SUBROUTINE ICE4_NUCLEATION
......
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