Changeset 5634


Ignore:
Timestamp:
Apr 29, 2025, 12:07:04 AM (6 weeks ago)
Author:
aborella
Message:

Small fixes condensation

Location:
LMDZ6/branches/contrails/libf/phylmd
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/contrails/libf/phylmd/lmdz_aviation.f90

    r5623 r5634  
    174174      pdf_loc = rhl_clr - pdf_scale(i) * pdf_gamma(i)
    175175      pdf_x = qcritcont(i) / qsatl(i) * 100.
    176       pdf_y = LOG( MAX( pdf_x - pdf_loc, eps ) / pdf_scale(i) ) * pdf_alpha(i)
     176      pdf_y = LOG( MAX( ( pdf_x - pdf_loc ) / pdf_scale(i), eps) ) * pdf_alpha(i)
    177177      IF ( pdf_y .GT. 10. ) THEN !--Avoid overflows
    178178        pdf_fra_above_qcritcont = 0.
     
    191191   
    192192      pdf_x = qsat(i) / qsatl(i) * 100.
    193       pdf_y = LOG( MAX( pdf_x - pdf_loc, eps ) / pdf_scale(i) ) * pdf_alpha(i)
     193      pdf_y = LOG( MAX( ( pdf_x - pdf_loc ) / pdf_scale(i), eps) ) * pdf_alpha(i)
    194194      IF ( pdf_y .GT. 10. ) THEN !--Avoid overflows
    195195        pdf_fra_above_qsat = 0.
  • LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp_condensation.f90

    r5631 r5634  
    556556              !--the old one, it is comprised between 0 and 1
    557557              tauinv_depsub = qiceincld**(1./3.) * kappa_depsub
    558               qice_ratio = tauinv_depsub * dtime / 1.5 / qiceinmix * ( qsat(i) - qvapincld )
     558              qice_ratio = tauinv_depsub * dtime / 1.5 / qiceincld * ( qsat(i) - qvapincld )
    559559              !--The new vapor in the cloud is increased with the
    560560              !--sublimated ice
     
    683683        pdf_gamma(i) = GAMMA(1. + 1. / pdf_alpha(i))
    684684        !--Barrier to avoid overflows
    685         pdf_scale(i) = MAX(0.01, pdf_std / SQRT( &
    686                                     GAMMA(1. + 2. / pdf_alpha(i)) - pdf_gamma(i)**2 ))
     685        pdf_scale(i) = MAX(eps, MIN(rhl_clr / pdf_gamma(i), pdf_std / SQRT( &
     686                                    GAMMA(1. + 2. / pdf_alpha(i)) - pdf_gamma(i)**2 )))
    687687        pdf_loc = rhl_clr - pdf_scale(i) * pdf_gamma(i)
    688688
     
    692692
    693693        pdf_x = gamma_cond(i) * qsat(i) / qsatl(i) * 100.
    694         pdf_y = LOG( MAX( pdf_x - pdf_loc, eps ) / pdf_scale(i) ) * pdf_alpha(i)
     694        pdf_y = LOG( MAX( ( pdf_x - pdf_loc ) / pdf_scale(i), eps) ) * pdf_alpha(i)
    695695        IF ( pdf_y .GT. 10. ) THEN !--Avoid overflows
    696696          pdf_fra_above_nuc = 0.
     
    747747        pdf_alpha(i) = 1.
    748748        pdf_gamma(i) = 1.
    749         pdf_scale(i) = 0.01
     749        pdf_scale(i) = eps
    750750      ENDIF ! clrfra(i) .GT. eps
    751751
     
    786786        !--are spherical.
    787787        !-- b / a = bovera = MAX(0.1, cldfra)
    788         bovera = MAX(0.1, cldfra(i))
     788        !bovera = MAX(0.1, cldfra(i))
     789        bovera = 0.111111111
    789790        !--P / a is a function of b / a only, that we can calculate
    790791        !-- P / a = RPI * ( 3. * ( 1. + b / a ) - SQRT( (3. + b / a) * (1. + 3. * b / a) ) )
     
    877878
    878879          rhl_clr = qclr(i) / clrfra(i) / qsatl(i) * 100.
     880          pdf_x = qvapinclr_lim / qsatl(i) * 100.
    879881          pdf_loc = rhl_clr - pdf_scale(i) * pdf_gamma(i)
    880           pdf_x = qvapinclr_lim / qsatl(i) * 100.
    881           pdf_y = LOG( MAX( pdf_x - pdf_loc, eps ) / pdf_scale(i) ) * pdf_alpha(i)
     882          pdf_x = qsat(i) / qsatl(i) * 100.
     883          pdf_y = LOG( MAX( ( pdf_x - pdf_loc ) / pdf_scale(i), eps) ) * pdf_alpha(i)
    882884          IF ( pdf_y .GT. 10. ) THEN !--Avoid overflows
    883885            pdf_fra_above_lim = 0.
     
    10341036
    10351037          rhl_clr = qclr(i) / clrfra(i) / qsatl(i) * 100.
     1038          pdf_x = qvapinclr_lim / qsatl(i) * 100.
    10361039          pdf_loc = rhl_clr - pdf_scale(i) * pdf_gamma(i)
    1037           pdf_x = qvapinclr_lim / qsatl(i) * 100.
    1038           pdf_y = LOG( MAX( pdf_x - pdf_loc, eps ) / pdf_scale(i) ) * pdf_alpha(i)
     1040          pdf_x = qsat(i) / qsatl(i) * 100.
     1041          pdf_y = LOG( MAX( ( pdf_x - pdf_loc ) / pdf_scale(i), eps) ) * pdf_alpha(i)
    10391042          IF ( pdf_y .GT. 10. ) THEN !--Avoid overflows
    10401043            pdf_fra_above_lim = 0.
     
    11381141
    11391142          rhl_clr = qclr(i) / clrfra(i) / qsatl(i) * 100.
     1143          pdf_x = qvapinclr_lim / qsatl(i) * 100.
    11401144          pdf_loc = rhl_clr - pdf_scale(i) * pdf_gamma(i)
    1141           pdf_x = qvapinclr_lim / qsatl(i) * 100.
    1142           pdf_y = LOG( MAX( pdf_x - pdf_loc, eps ) / pdf_scale(i) ) * pdf_alpha(i)
     1145          pdf_x = qsat(i) / qsatl(i) * 100.
     1146          pdf_y = LOG( MAX( ( pdf_x - pdf_loc ) / pdf_scale(i), eps) ) * pdf_alpha(i)
    11431147          IF ( pdf_y .GT. 10. ) THEN !--Avoid overflows
    11441148            pdf_fra_above_lim = 0.
     
    11931197        pdf_loc = rhl_clr - pdf_scale(i) * pdf_gamma(i)
    11941198        pdf_x = qsat(i) / qsatl(i) * 100.
    1195         pdf_y = LOG( MAX( pdf_x - pdf_loc, eps ) / pdf_scale(i) ) * pdf_alpha(i)
     1199        pdf_y = LOG( MAX( ( pdf_x - pdf_loc ) / pdf_scale(i), eps) ) * pdf_alpha(i)
    11961200        IF ( pdf_y .GT. 10. ) THEN !--Avoid overflows
    11971201          issrfra(i) = 0.
     
    12061210          issrfra(i) = EXP( - pdf_y ) * clrfra(i)
    12071211          qissr(i) = ( pdf_e3 * clrfra(i) + pdf_loc * issrfra(i) ) * qsatl(i) / 100.
     1212        ENDIF
     1213        IF ( issrfra(i) .LT. eps ) THEN
     1214          issrfra(i) = 0.
     1215          qissr(i) = 0.
    12081216        ENDIF
    12091217      ELSE
Note: See TracChangeset for help on using the changeset viewer.