Skip to content
Snippets Groups Projects
Commit 733f1011 authored by RIETTE Sébastien's avatar RIETTE Sébastien
Browse files

S. Riette 12/04/2022 Correction in compute_pdf and ice4_slow

Original code contained a bug (autoconversion ri->rs was not set
to 0 if ldsoft when ri content gets lower than the threshold).
Introducing REPRO48 in ice4_slow allows to suppress the one
introduced in compute_pdf to compensate.
parent c908e8a9
No related branches found
No related tags found
No related merge requests found
......@@ -42,19 +42,16 @@ Pb identifiés à corriger plus tard:
sont relatifs à la boucle IMICRO et que les calculs faits en debut de routine ne
concernent qu'une partie des points
=> à corriger
- seules quelques options sont testées avec les cas test (par exemple, il faudrait tester RMC01 mais
l'option n'est pas remontée en namelist)
- les options CMF_CLOUD='STAT' et LOSIGAMS=.FALSE. semblent cassées en 48 original
- arome/ini_cmfshall devrait s'appeler ini_param_mfshall
- th_r_from_thl_rt appelée partout, il faudrait limiter à OTEST
- la recompilation complète d'AROME n'est pas testée
- il faudrait inclure un cas test plus conséquent en taille au moins sur belenos
- doute sur le codage de MODD_PRECISION
- appel à abort à travers print_msg non testé
- lignes vides ajoutées après les macros mnh_expand
- indentation inorrecte dans les blocs mnh_expand
- sedimentation momentum non branchée (et à trasformer comme sedim_stat)
- si possible, modifier ice4_sedimentation_split* dans le même esprit que stat
- seules quelques options sont testées avec les cas test (par exemple, il faudrait tester RMC01 mais
l'option n'est pas remontée en namelist)
- les options CMF_CLOUD='STAT' et LOSIGAMS=.FALSE. semblent cassées en 48 original
- arome/ini_cmfshall devrait s'appeler ini_param_mfshall
- th_r_from_thl_rt appelée partout, il faudrait limiter à OTEST
- doute sur le codage de MODD_PRECISION
- appel à abort à travers print_msg non testé
- indentation inorrecte dans les blocs mnh_expand
- sedimentation momentum non branchée (et à trasformer comme sedim_stat)
- si possible, modifier ice4_sedimentation_split* dans le même esprit que stat
Répertoire arome/ext et mesonh/ext contiennent les codes non PHYEX qu'il faut modifier dans le pack pour qu'il puisse être compilé.
Ce répertoire devra être vidé à la fin du phasage, les modifications nécessaires ayadevront avoir été fournies par ailleurs
......
......@@ -248,17 +248,6 @@ ENDIF
!Ice water split between high and low content part is done according to autoconversion option
ZCRIAUTI(:)=MIN(XCRIAUTI,10**(XACRIAUTI*(PT(:)-XTT)+XBCRIAUTI)) ! Autoconversion ri threshold
IF(HSUBG_AUCV_RI=='NONE') THEN
!La raison de la non reproduction n'est pas comprise avec certitude
!Il faudra vérifier que le code fait toujours ce qui est attendu
!une fois tous les éléments assemblés
#ifdef REPRO48
PHLI_HCF(:)=1.
PHLI_LCF(:)=0.
PHLI_HRI(:)=PRIT(:)
PHLI_LRI(:)=0.
#else
!Cloud water is entirely in low or high part
WHERE(PRIT(:)>ZCRIAUTI(:))
PHLI_HCF(:)=1.
......@@ -276,7 +265,6 @@ IF(HSUBG_AUCV_RI=='NONE') THEN
PHLI_HRI(:)=0.
PHLI_LRI(:)=0.
END WHERE
#endif
ELSEIF(HSUBG_AUCV_RI=='CLFR') THEN
!Cloud water is only in the cloudy part and entirely in low or high part
WHERE(PCF(:)>0. .AND. PRIT(:)>ZCRIAUTI(:)*PCF(:))
......
......@@ -167,9 +167,15 @@ ENDIF
!* 3.4.5 compute the autoconversion of r_i for r_s production: RIAUTS
!
DO JL=1, KSIZE
#ifdef REPRO48
!This was wrong because, with this formulation and in the LDSOFT case, PRIAUTS
!was not set to 0 when ri is inferior to the autoconversion threshold
ZMASK(JL)=MAX(0., -SIGN(1., XRTMIN(4)-PRIT(JL))) * & ! PRIT(:)>XRTMIN(4)
&PCOMPUTE(JL)
#else
ZMASK(JL)=MAX(0., -SIGN(1., XRTMIN(4)-PHLI_HRI(JL))) * & ! PHLI_HRI(:)>XRTMIN(4)
&MAX(0., -SIGN(1., 1.E-20-PHLI_HCF(JL))) * & ! PHLI_HCF(:) .GT. 1.E-20
&PCOMPUTE(JL)
#endif
ENDDO
IF(LDSOFT) THEN
DO JL=1, KSIZE
......@@ -181,8 +187,7 @@ ELSE
ZCRIAUTI(:)=MIN(XCRIAUTI,10**(XACRIAUTI*(PT(:)-XTT)+XBCRIAUTI))
WHERE(ZMASK(:)==1.)
PRIAUTS(:) = XTIMAUTI * EXP( XTEXAUTI*(PT(:)-XTT) ) &
* MAX( PHLI_HRI(:)/PHLI_HCF(:)-ZCRIAUTI(:),0.0 )
PRIAUTS(:) = PHLI_HCF(:)*PRIAUTS(:)
* MAX(PHLI_HRI(:)-ZCRIAUTI(:)*PHLI_HCF(:), 0.)
END WHERE
ENDIF
!
......
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