diff --git a/src/MNH/ini_cst.f90 b/src/MNH/ini_cst.f90 index b8f02fcb146d37fb7d608df74cea1a91c06f02d9..edcf044c1fce18dec672b40811573fd4e2e536e9 100644 --- a/src/MNH/ini_cst.f90 +++ b/src/MNH/ini_cst.f90 @@ -67,6 +67,7 @@ END MODULE MODI_INI_CST !! C. Mari 31/10/00 add NDAYSEC !! V. Masson 01/03/03 add XCONDI !! J. Escobar 28/03/2014 for pb with emissivity/aerosol reset XMNH_TINY=1.0e-80 in real8 case +!! J.Escobar : 10/2017 : for real*4 , add XMNH_HUGE_12_LOG !! !------------------------------------------------------------------------------- ! @@ -160,6 +161,7 @@ XALPI = LOG(XESTT) + (XBETAI /XTT) + (XGAMI *LOG(XTT)) XMNH_EPSILON = EPSILON (XMNH_EPSILON ) XMNH_HUGE = HUGE (XMNH_HUGE ) +XMNH_HUGE_12_LOG = LOG ( SQRT(XMNH_HUGE) ) #ifdef MNH_MPI_DOUBLE_PRECISION XMNH_TINY = 1.0e-80 diff --git a/src/MNH/modd_cst.f90 b/src/MNH/modd_cst.f90 index a0c5f441a54e314a268f1f7ea5d8340047780136..0becaf15d7402f8c460d16f69a05b4630bfb6301 100644 --- a/src/MNH/modd_cst.f90 +++ b/src/MNH/modd_cst.f90 @@ -41,6 +41,7 @@ !! V. Masson 05/10/98 add XRHOLI !! C. Mari 31/10/00 add NDAYSEC !! V. Masson 01/03/03 add conductivity of ice +!! J.Escobar : 10/2017 : for real*4 , add XMNH_HUGE_12_LOG !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -93,7 +94,8 @@ INTEGER, SAVE :: NDAYSEC ! Number of seconds in a day REAL,SAVE :: XMNH_TINY ! minimum real on this machine REAL,SAVE :: XMNH_TINY_12 ! sqrt(minimum real on this machine) REAL,SAVE :: XMNH_EPSILON ! minimum space with 1.0 -REAL,SAVE :: XMNH_HUGE ! minimum real on this machine +REAL,SAVE :: XMNH_HUGE ! maximum real on this machine +REAL,SAVE :: XMNH_HUGE_12_LOG ! maximum log(sqrt(real)) on this machine REAL,SAVE :: XEPS_DT ! default value for DT test REAL,SAVE :: XRES_FLAT_CART ! default flat&cart residual tolerance diff --git a/src/MNH/rain_ice.f90 b/src/MNH/rain_ice.f90 index 042241980ad4ca50bcc2a62d5742f8d097362f91..a427235c565dac0698da4a99d3dc1334933e5297 100644 --- a/src/MNH/rain_ice.f90 +++ b/src/MNH/rain_ice.f90 @@ -240,6 +240,7 @@ END MODULE MODI_RAIN_ICE !! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 !! C.Lac : 10/2016 : add droplet deposition !! C.Lac : 01/2017 : correction on droplet deposition +!! J.Escobar : 10/2017 : for real*4 , limit exp() in RAIN_ICE_SLOW with XMNH_HUGE_12_LOG !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -1867,6 +1868,7 @@ IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'HENU_BU_RRI') ! !* 0. DECLARATIONS ! ------------ +USE MODD_CST, ONLY : XMNH_HUGE_12_LOG ! IMPLICIT NONE ! @@ -1878,7 +1880,7 @@ IMPLICIT NONE ZZW(:) = 0.0 WHERE( (ZZT(:)<XTT-35.0) .AND. (ZRCT(:)>XRTMIN(2)) .AND. (ZRCS(:)>0.) ) ZZW(:) = MIN( ZRCS(:),XHON*ZRHODREF(:)*ZRCT(:) & - *EXP( XALPHA3*(ZZT(:)-XTT)-XBETA3 ) ) + *EXP( MIN(XMNH_HUGE_12_LOG,XALPHA3*(ZZT(:)-XTT)-XBETA3) ) ) ZRIS(:) = ZRIS(:) + ZZW(:) ZRCS(:) = ZRCS(:) - ZZW(:) ZTHS(:) = ZTHS(:) + ZZW(:)*(ZLSFACT(:)-ZLVFACT(:)) ! f(L_f*(RCHONI)) diff --git a/src/MNH/rain_ice_elec.f90 b/src/MNH/rain_ice_elec.f90 index 0e20f19928d306f883cc026a99be481c9ad835b5..3ad69bcde00a36d24cdaca41ed741532ba95d81c 100644 --- a/src/MNH/rain_ice_elec.f90 +++ b/src/MNH/rain_ice_elec.f90 @@ -228,6 +228,7 @@ END MODULE MODI_RAIN_ICE_ELEC !! M. Chong 15/11/13 Bug in the computation of RGWETH (wrong sign) !! J-P Pinty 25/04/14 Many bugs with ZWQ1(:,...) = 0.0 !! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 +!! J.Escobar : 10/2017 : for real*4 , limit exp() in RAIN_ICE_ELEC_SLOW with XMNH_HUGE_12_LOG !! !------------------------------------------------------------------------------- ! @@ -2500,6 +2501,7 @@ IF (LBUDGET_RI) CALL BUDGET (PRIS(:,:,:)*PRHODJ(:,:,:),9,'HENU_BU_RRI') ! !* 0. DECLARATIONS ! ------------ +USE MODD_CST, ONLY : XMNH_HUGE_12_LOG ! IMPLICIT NONE ! @@ -2517,7 +2519,7 @@ IMPLICIT NONE ! WHERE( (ZZT(:)<XTT-35.0) .AND. (ZRCT(:)>XRTMIN(2)) .AND. (ZRCS(:)>0.) ) ZZW(:) = MIN( ZRCS(:),XHON*ZRHODREF(:)*ZRCT(:) & - *EXP( XALPHA3*(ZZT(:)-XTT)-XBETA3 ) ) + *EXP( MIN(XMNH_HUGE_12_LOG,XALPHA3*(ZZT(:)-XTT)-XBETA3) ) ) ZRIS(:) = ZRIS(:) + ZZW(:) ZRCS(:) = ZRCS(:) - ZZW(:) ZTHS(:) = ZTHS(:) + ZZW(:)*(ZLSFACT(:)-ZLVFACT(:)) ! f(L_f*(RCHONI))