Skip to content

Commit

Permalink
BF for single precision
Browse files Browse the repository at this point in the history
  • Loading branch information
SebastienRietteMTO committed May 22, 2024
1 parent ff25761 commit 4a8cc97
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 20 deletions.
19 changes: 9 additions & 10 deletions src/common/micro/rain_ice_old.F90
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ SUBROUTINE RAIN_ICE_OLD (D, CST, PARAMI, ICEP, ICED, BUCONF, TLES,
PICENU, PKGN_ACON, PKGN_SBGR, &
PRHT, PRHS, PINPRH, PFPR)

USE PARKIND1, ONLY: JPRB
USE YOMHOOK, ONLY: LHOOK, DR_HOOK, JPHOOK
USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T
USE MODD_CST, ONLY: CST_T
Expand Down Expand Up @@ -574,7 +573,7 @@ SUBROUTINE RAIN_ICE_OLD (D, CST, PARAMI, ICEP, ICED, BUCONF, TLES,
ZCOLF(JL)=1. ! No change from orignal when OCND2 = .FALSE.
ZACRF(JL)=1. ! " " " " "
ZCONCM(JL)=ZCONC3D(I1(JL),I2(JL))*0.000001 ! From m-3 to cm-3
IF (LTIW) ZTIW(JL)=TIWMX_TAB(CST, ICEP%TIWMX, ZPRES(JL),ZZT(JL), ZRVS(JL)*PTSTEP,0._JPRB,ZRSP,ZRSW,0.1_JPRB)
IF (LTIW) ZTIW(JL)=TIWMX_TAB(CST, ICEP%TIWMX, ZPRES(JL),ZZT(JL), ZRVS(JL)*PTSTEP,0.,ZRSP,ZRSW,0.1)
ZZKGN_ACON(JL)=PKGN_ACON(I1(JL))
ZZKGN_SBGR(JL)=PKGN_SBGR(I1(JL))

Expand Down Expand Up @@ -982,33 +981,33 @@ SUBROUTINE RAIN_ICE_OLD (D, CST, PARAMI, ICEP, ICED, BUCONF, TLES,
ZRSTS=ZRIT(JL)+ZRST(JL) +ZRGT(JL) ! total solid timestep t
IF(ZZT(JL)<CST%XTT .AND. ABS(ZRSA*PTSTEP-ZRSTS)> 1.0E-12 .AND. &
& ZESI(JL) < ZPRES(JL)*0.5 )THEN
ZTSP = TIWMX_TAB(CST, ICEP%TIWMX, ZPRES(JL),ZZT(JL), ZRVS(JL)*PTSTEP,1._JPRB,ZRSP,ZRSI,0.1_JPRB)
ZTSP = TIWMX_TAB(CST, ICEP%TIWMX, ZPRES(JL),ZZT(JL), ZRVS(JL)*PTSTEP,1.,ZRSP,ZRSI,0.1)
ZRVSOLD =ZRVS(JL)
ZRISOLD =ZRIS(JL)
ZRSSOLD =ZRSS(JL)
ZRGSOLD =ZRGS(JL)
! Fractions of total solid for cloud ice, snow and graupel
! (hail not concidered yet):
ZRISFRC = 1._JPRB !(Default)
ZRSSFRC = 0._JPRB !(Default)
ZRGSFRC = 0._JPRB !(Default)
IF(ZRSA > 0._JPRB )THEN
ZRISFRC = 1. !(Default)
ZRSSFRC = 0. !(Default)
ZRGSFRC = 0. !(Default)
IF(ZRSA > 0. )THEN
ZRISFRC = ZRISOLD/ZRSA
ZRSSFRC = ZRSSOLD/ZRSA
ZRGSFRC = ZRGSOLD/ZRSA
ENDIF

ZRSDIF =0._JPRB
ZRSDIF =0.
ZRFRAC= ZRVS(JL)*PTSTEP - ZRSA*PTSTEP +ZRSTS
IF(ZRVS(JL)*PTSTEP < ZRSI )THEN ! sub - saturation over ice:
! Avoid drying of ice leading to supersaturation with
! respect to ice

! ZRFRAC should not exceed ZRSP, if so adjust
ZRSDIF = MIN(0._JPRB,ZRSP-ZRFRAC)
ZRSDIF = MIN(0.,ZRSP-ZRFRAC)
ELSE ! super - saturation over ice:
! ZRFRAC should not go below ZRSP, if so adjust
! ZRSDIF = MAX(0._JPRB,ZRSP-ZRFRAC)
! ZRSDIF = MAX(0.,ZRSP-ZRFRAC)
ENDIF
ZRSB = ZRSA*PTSTEP - ZRSDIF
ZRVS(JL) = ZRVS(JL) - (ZRSB/PTSTEP-ZRSA) ! total H2O should not change
Expand Down
7 changes: 3 additions & 4 deletions src/testprogs/rain_ice/main_rain_ice.F90
Original file line number Diff line number Diff line change
Expand Up @@ -137,12 +137,11 @@ PROGRAM MAIN_RAIN_ICE
D0%NKTE = KLEV

ISTSZ=0
ISTSZ(KIND(LLMICRO)/4) = NPROMA * 3 * KLEV
ISTSZ(KIND(PRHODJ)/4) = NPROMA * 30 * KLEV
ISTSZ(KIND(LLMICRO)/4) = NPROMA * 3 * KLEV
ISTSZ(KIND(PRHODJ)/4) = ISTSZ(KIND(PRHODJ)/4) + NPROMA * 30 * KLEV
#ifdef USE_STACK
#if defined(USE_COLCALL) && defined(_OPENACC)
ISTSZ(KIND(LLMICRO)/4) = ISTSZ(KIND(LLMICRO)/4) * NPROMA
ISTSZ(KIND(PRHODJ)/4) = ISTSZ(KIND(PRHODJ)/4) * NPROMA
ISTSZ(:) = ISTSZ(:) * NPROMA
#endif
#else
ISTSZ(2) = ISTSZ(2) + CEILING(ISTSZ(1) / 2.)
Expand Down
7 changes: 3 additions & 4 deletions src/testprogs/rain_ice_old/main_rain_ice_old.F90
Original file line number Diff line number Diff line change
Expand Up @@ -201,12 +201,11 @@ PROGRAM MAIN_RAIN_ICE_OLD
D0%NKTE = KLEV

ISTSZ=0
ISTSZ(KIND(LLMICRO)/4) = NPROMA * 3 * KLEV
ISTSZ(KIND(PRHODJ)/4) = NPROMA * 22 * KLEV
ISTSZ(KIND(LLMICRO)/4) = NPROMA * 3 * KLEV
ISTSZ(KIND(PRHODJ)/4) = ISTSZ(KIND(PRHODJ)/4) + NPROMA * 22 * KLEV
#ifdef USE_STACK
#if defined(USE_COLCALL) && defined(_OPENACC)
ISTSZ(KIND(LLMICRO)/4) = ISTSZ(KIND(LLMICRO)/4) * NPROMA
ISTSZ(KIND(PRHODJ)/4) = ISTSZ(KIND(PRHODJ)/4) * NPROMA
ISTSZ(:) = ISTSZ(:) * NPROMA
#endif
#else
ISTSZ(2) = ISTSZ(2) + CEILING(ISTSZ(1) / 2.)
Expand Down
4 changes: 3 additions & 1 deletion src/testprogs/shallow/main_shallow.F90
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,8 @@ PROGRAM MAIN_SHALLOW
&PTHV_UP_OUT, PW_UP_OUT, &
&PFRAC_UP_OUT, PEMF_OUT, ZDETR_OUT, ZENTR_OUT, IKLCL_OUT, IKETL_OUT, IKCTL_OUT, LLVERBOSE)

KLEV=SIZE(PRHODREF, 2)

IF (LLVERBOSE) PRINT *, " KLEV = ", KLEV, " KRR = ", KRR

PRINT *, " NPROMA = ", NPROMA, " KLEV = ", KLEV, " NGPBLKS = ", NGPBLKS
Expand Down Expand Up @@ -211,7 +213,7 @@ PROGRAM MAIN_SHALLOW

ISTSZ=0
ISTSZ(KIND(IKLCL)/4) = NPROMA * 2 * KLEV
ISTSZ(KIND(PRHODJ)/4) = NPROMA * 39 * KLEV
ISTSZ(KIND(PRHODJ)/4) = ISTSZ(KIND(PRHODJ)/4) + NPROMA * 39 * KLEV
ISTSZ(KIND(PRHODJ)/4) = ISTSZ(KIND(PRHODJ)/4) + NPROMA * 16 !for ZBUF(KLON,16)
#ifndef USE_STACK
ISTSZ(2) = ISTSZ(2) + CEILING(ISTSZ(1) / 2.)
Expand Down
4 changes: 3 additions & 1 deletion src/testprogs/turb_mnh/main_turb.F90
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,8 @@ PROGRAM MAIN_TURB
&PDRUS_TURB_OUT, PDRVS_TURB_OUT, &
&PDRTHLS_TURB_OUT, PDRRTS_TURB_OUT, ZDRSVS_TURB_OUT, LLVERBOSE)

KLEV=SIZE(PRHODJ, 2)

IF (LLVERBOSE) PRINT *, " KLEV = ", KLEV, " KRR = ", KRR

PRINT *, " NPROMA = ", NPROMA, " KLEV = ", KLEV, " NGPBLKS = ", NGPBLKS
Expand Down Expand Up @@ -228,7 +230,7 @@ PROGRAM MAIN_TURB

ISTSZ=0
ISTSZ(KIND(KLEV)/4) = NPROMA * 1 * KLEV
ISTSZ(KIND(PRHODJ)/4) = NPROMA * 91 * KLEV
ISTSZ(KIND(PRHODJ)/4) = ISTSZ(KIND(PRHODJ)/4) + NPROMA * 91 * KLEV
#ifndef USE_STACK
ISTSZ(2) = ISTSZ(2) + CEILING(ISTSZ(1) / 2.)
ISTSZ(1) = 0
Expand Down

1 comment on commit 4a8cc97

@SebastienRietteMTO
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The commit message is incomplete because a correction has also been made to the turb and shallow testprogs. Performance tests are now performed with 120 levels (as for ice_adjust, rain_ice and rain_ice_old).

Please sign in to comment.