Changeset 4898
- Timestamp:
- Apr 11, 2024, 5:50:38 PM (7 months ago)
- Location:
- LMDZ6/trunk/libf/phylmd
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/lmdz_lscp_ini.F90
r4895 r4898 140 140 !$OMP THREADPRIVATE(ok_poprecip) 141 141 142 REAL, SAVE, PROTECTED :: cld_lc_lsc_snow ! snow autoconversion coefficient, stratiform rain142 REAL, SAVE, PROTECTED :: cld_lc_lsc_snow=2.e-5 ! snow autoconversion coefficient, stratiform. default from Chaboureau and PInty 2006 143 143 !$OMP THREADPRIVATE(cld_lc_lsc_snow) 144 144 145 REAL, SAVE, PROTECTED :: cld_lc_con_snow ! snow autoconversion coefficient, convective rain145 REAL, SAVE, PROTECTED :: cld_lc_con_snow=2.e-5 ! snow autoconversion coefficient, convective 146 146 !$OMP THREADPRIVATE(cld_lc_con_snow) 147 147 … … 166 166 REAL, SAVE, PROTECTED :: rho_ice=920. ! A COMMENTER TODO [kg/m3] 167 167 !$OMP THREADPRIVATE(rho_ice) 168 169 REAL, SAVE, PROTECTED :: rho_snow ! A COMMENTER TODO [kg/m3]170 !$OMP THREADPRIVATE(rho_snow)171 168 172 169 REAL, SAVE, PROTECTED :: r_rain=500.E-6 ! A COMMENTER TODO [m] … … 279 276 CALL getin_p('cld_lc_lsc',cld_lc_lsc) 280 277 CALL getin_p('cld_lc_con',cld_lc_con) 281 cld_lc_lsc_snow=cld_lc_lsc282 cld_lc_con_snow=cld_lc_con283 278 CALL getin_p('cld_lc_lsc_snow',cld_lc_lsc_snow) 284 279 CALL getin_p('cld_lc_con_snow',cld_lc_con_snow) … … 393 388 394 389 395 !--Initialisations of constants depending on other constants396 !--rho_snow formula from r_snow (Brandes et al. 2007 - JAMC)397 rho_snow = 1.e3 * 0.178 * (r_snow * 2. * 1000.)**(-0.922)398 399 400 390 !AA Temporary initialisation 401 391 a_tr_sca(1) = -0.5 -
LMDZ6/trunk/libf/phylmd/lmdz_lscp_poprecip.F90
r4895 r4898 63 63 !--Integer for interating over klon 64 64 INTEGER :: i 65 !--dhum_to_dflux: coef to convert a specific quantity to a flux65 !--dhum_to_dflux: coef to convert a specific quantity variation to a flux variation 66 66 REAL, DIMENSION(klon) :: dhum_to_dflux 67 67 !-- … … 139 139 !--dprecip/dz = -beta*(1-qvap/qsat)*(precip**expo_eva) 140 140 !--formula from Sundqvist 1988, Klemp & Wilhemson 1978 141 !--Explicit formulation142 !draineva = - precipfracclr(i) * coef_eva * (1. - qvap(i) / qsatl(i)) * dz(i) &143 ! * ( rainclr(i) / MAX(thresh_precip_frac, precipfracclr(i)) ) ** expo_eva &144 !draineva = MAX( - rainclr(i), draineva)145 141 !--Exact explicit formulation (rainclr is resolved exactly, qvap explicitly) 146 142 !--which does not need a barrier on rainclr, because included in the formula … … 149 145 + ( rainclr(i) / MAX(thresh_precip_frac, precipfracclr(i)) )**( 1. - expo_eva ) & 150 146 ) )**( 1. / ( 1. - expo_eva ) ) - rainclr(i) 147 ! TODO veut on vraiment mettre qvap ici, qui est en fait qtot dans la maille ? 151 148 152 149 !--Evaporation is limited by 0 … … 156 153 !--Sublimation of the solid precipitation coming from above 157 154 !--(same formula as for liquid precip) 158 !--Explicit formulation159 !dsnowsub = - precipfracclr(i) * coef_sub * (1. - qvap(i) / qsatl(i)) * dz(i) &160 ! * ( snowclr(i) / MAX(thresh_precip_frac, precipfracclr(i)) ) ** expo_sub &161 !dsnowsub = MAX( - snowclr(i), dsnowsub)162 155 !--Exact explicit formulation (snowclr is resolved exactly, qvap explicitly) 163 156 !--which does not need a barrier on snowclr, because included in the formula … … 166 159 + ( snowclr(i) / MAX(thresh_precip_frac, precipfracclr(i)) )**( 1. - expo_sub ) & 167 160 ) )**( 1. / ( 1. - expo_sub ) ) - snowclr(i) 161 ! TODO veut on vraiment mettre qvap ici, qui est en fait qtot dans la maille ? 168 162 169 163 !--Sublimation is limited by 0 … … 178 172 !--It is expressed as a max flux dprecip_evasub_max 179 173 174 ! TODO veut on vraiment mettre qvap ici, qui est en fait qtot dans la maille ? 180 175 dprecip_evasub_max = MIN(0., ( qvap(i) - qsat(i) ) * precipfracclr(i)) & 181 176 * dhum_to_dflux(i) … … 261 256 cld_lc_lsc, cld_tau_lsc, cld_expo_lsc, rain_int_min, & 262 257 thresh_precip_frac, gamma_col, gamma_agg, gamma_rim, & 263 rho_rain, r ho_snow, r_rain, r_snow, rho_ice, r_ice,&258 rho_rain, r_rain, r_snow, rho_ice, r_ice, & 264 259 tau_auto_snow_min, tau_auto_snow_max, & 265 260 thresh_precip_frac, eps, & … … 319 314 320 315 INTEGER :: i 316 !--dhum_to_dflux: coef to convert a specific quantity variation to a flux variation 321 317 REAL, DIMENSION(klon) :: dhum_to_dflux 322 REAL, DIMENSION(klon) :: qtot !--includes vap, liq, ice and precip318 REAL, DIMENSION(klon) :: qtot !--includes vap, liq, ice and precip 323 319 324 320 !--Partition of the fluxes … … 333 329 REAL :: coef_col, coef_agg, coef_rim, coef_tmp, qrain_tmp 334 330 REAL :: Eff_rain_liq, Eff_snow_ice, Eff_snow_liq 331 REAL :: rho_snow 335 332 REAL :: dqlcol !--loss of liquid cloud content due to collection by rain [kg/kg/s] 336 333 REAL :: dqiagg !--loss of ice cloud content due to collection by aggregation [kg/kg/s] … … 384 381 dqlrim = 0. 385 382 386 !--dhum_to_dflux: coef to convert a delta in specific quantity to a flux387 383 !-- dhum_to_dflux = rho * dz/dt = 1 / g * dP/dt 388 384 dhum_to_dflux(i) = ( paprsdn(i) - paprsup(i) ) / RG / dtime … … 492 488 493 489 !--If the cloud is big enough, the precipitation processes activate 490 ! TODO met on seuil_neb ici ? 494 491 IF ( cldfra(i) .GE. seuil_neb ) THEN 495 492 … … 518 515 coef_col = gamma_col * 3. / 4. / rho_rain / r_rain * Eff_rain_liq 519 516 IF ( raincld(i) .GT. 0. ) THEN 520 !-- ATTENTION Double implicit version521 !-- BEWARE the formule below is FALSE (because raincld is a flux, not a delta flux)522 !qrain_tmp = raincld(i) / dhum_to_dflux(i)523 !coef_tmp = coef_col * dtime * ( qrain_tmp / precipfraccld(i) + qliq(i) / eff_cldfra )524 !dqlcol = qliq(i) * ( 1. / ( 1. + 0.5 * ( coef_tmp - 1. + SQRT( &525 ! ( 1. - coef_tmp )**2. + 4. * coef_col * dtime * qrain_tmp / precipfraccld(i) ) &526 ! ) ) - 1. )527 !--Barriers so that the processes do not consume more liquid/ice than528 !--available.529 !dqlcol = MAX( - qliq(i), dqlcol )530 517 !--Exact explicit version, which does not need a barrier because of 531 518 !--the exponential decrease … … 544 531 !--it s a product of a collection efficiency and a sticking efficiency 545 532 Eff_snow_ice = 0.05 * EXP( 0.1 * ( temp(i) - RTT ) ) 533 !--rho_snow formula follows Brandes et al. 2007 (JAMC) 534 rho_snow = 1.e3 * 0.178 * ( r_snow * 2. * 1000. )**(-0.922) 546 535 coef_agg = gamma_agg * 3. / 4. / rho_snow / r_snow * Eff_snow_ice 547 536 IF ( snowcld(i) .GT. 0. ) THEN 548 !-- ATTENTION Double implicit version?549 !--Barriers so that the processes do not consume more liquid/ice than550 !--available.551 !dqiagg = MAX( - qice(i), dqiagg )552 537 !--Exact explicit version, which does not need a barrier because of 553 538 !--the exponential decrease … … 612 597 613 598 614 !--Barriers so that we don 599 !--Barriers so that we don't create more rain/snow 615 600 !--than there is liquid/ice 616 601 dqlauto = MAX( - qliq(i), dqlauto ) … … 632 617 !--------------------------------------------------------- 633 618 !--Process which converts liquid droplets in suspension into 634 !--snow (graupel in fact)because of the collision between619 !--snow because of the collision between 635 620 !--those and falling snowflakes. 636 621 !--The formula comes from Muench and Lohmann 2020 … … 640 625 !--assuming a cloud droplet diameter of 20 microns. 641 626 Eff_snow_liq = 0.2 627 !--rho_snow formula follows Brandes et al. 2007 (JAMC) 628 rho_snow = 1.e3 * 0.178 * ( r_snow * 2. * 1000. )**(-0.922) 642 629 coef_rim = gamma_rim * 3. / 4. / rho_snow / r_snow * Eff_snow_liq 643 630 IF ( snowcld(i) .GT. 0. ) THEN 644 !-- ATTENTION Double implicit version?645 !--Barriers so that the processes do not consume more liquid than646 !--available.647 !dqlrim = MAX( - qliq(i), dqlrim )648 631 !--Exact version, which does not need a barrier because of 649 632 !--the exponential decrease … … 682 665 !--NB.: this process needs a temperature adjustment 683 666 684 !--dqsmelt_max : maximum snow melting so that temperature685 !-- stays higher than 273 K [kg/kg]686 !--capa_snowflake : capacitance of a snowflake, equal to687 !-- the radius if the snowflake is a sphere [m]688 !--temp_wetbulb : wet-bulb temperature [K]689 !--snow_fallspeed : snow fall velocity (in clear/cloudy sky) [m/s]690 !--air_thermal_conduct : thermal conductivity of the air [J/m/K/s]691 !--gamma_melt : melting tuning parameter[-]692 !--nb_snowflake : number of snowflakes (in clear/cloudy air) [-]667 !--dqsmelt_max : maximum snow melting so that temperature 668 !-- stays higher than 273 K [kg/kg] 669 !--capa_snowflake : capacitance of a snowflake, equal to 670 !-- the radius if the snowflake is a sphere [m] 671 !--temp_wetbulb : wet-bulb temperature [K] 672 !--snow_fallspeed : snow fall velocity (in clear/cloudy sky) [m/s] 673 !--air_thermal_conduct : thermal conductivity of the air [J/m/K/s] 674 !--gamma_melt : tuning parameter for melting [-] 675 !--nb_snowflake : number of snowflakes (in clear/cloudy air) [-] 693 676 694 677 IF ( ( snowclr(i) + snowcld(i) ) .GT. 0. ) THEN … … 705 688 ! ATTENTION POUR L'INSTANT C'EST UN WBULB SELON FORMULE ECMWF 706 689 ! ATTENTION EST-CE QVAP ????? 690 ! TODO veut on vraiment mettre qvap ici, on pourrait vouloir qvap dans le nuage / clr sky ? 691 ! (a mettre dans les deux IF) 707 692 temp_wetbulb = temp(i) - ( qsat(i) - qvap(i) ) & 708 693 * ( 1329.31 + 0.0074615 * ( pplay(i) - 0.85e5 ) & 709 694 - 40.637 * ( temp(i) - 275. ) ) 710 air_thermal_conduct=(5.69+0.017*(temp(i)-RTT))*1.e-3*4.184 ! thermal conductivity of the air, SI 711 695 696 !--Thermal conductivity of the air, empirical formula from Beard and Pruppacher (1971) 697 air_thermal_conduct = ( 5.69 + 0.017 * ( temp(i) - RTT ) ) * 1.e-3 * 4.184 698 699 !--rho_snow formula follows Brandes et al. 2007 (JAMC) 700 rho_snow = 1.e3 * 0.178 * ( r_snow * 2. * 1000. )**(-0.922) 712 701 713 702 !--In clear air … … 779 768 !--Process through which rain freezes into snow. 780 769 !-- We parameterize it as a 2 step process: 781 !-- 782 !-- 783 !-- 784 !-- 770 !--first: freezing following collision with ice crystals 771 !--second: immersion freezing following (inspired by Bigg 1953) 772 !--the latter is parameterized as an exponential decrease of the rain 773 !--water content with a homemade formulya 785 774 !--This is based on a caracteritic time of freezing, which 786 775 !--exponentially depends on temperature so that it is … … 788 777 !--0 for RTT (=273.15 K). 789 778 !--NB.: this process needs a temperature adjustment 790 !--dqrfreez_max : maximum rain freezing so that temperature779 !--dqrfreez_max : maximum rain freezing so that temperature 791 780 !-- stays lower than 273 K [kg/kg] 792 !--tau_freez : caracteristic time of freezing [s]793 !--gamma_freez : tuning parameter [s-1]794 !--alpha_freez : tuning parameter for the shape of the exponential curve [-]795 !--temp_nowater : temperature below which no liquid water exists [K] (about -40 degC)781 !--tau_freez : caracteristic time of freezing [s] 782 !--gamma_freez : tuning parameter [s-1] 783 !--alpha_freez : tuning parameter for the shape of the exponential curve [-] 784 !--temp_nowater : temperature below which no liquid water exists [K] (about -40 degC) 796 785 797 786 IF ( ( rainclr(i) + raincld(i) ) .GT. 0. ) THEN 798 787 799 788 800 789 !--1st step: freezing following collision with ice crystals 801 790 !--Sub-process of freezing which quantifies the collision between … … 804 793 !--the ice crystal (which acted as an ice nucleating particle). 805 794 !--The formula is adapted from the riming formula. 806 !-- 795 !--it works only in the cloudy part 807 796 808 797 dqifreez = 0. … … 818 807 * ( 1. + RVTMP2 * qtot(i) )) 819 808 820 !--Sub-process of freezing which quantifies the collision between821 !--ice crystals in suspension and falling rain droplets.822 !--The rain droplets freeze, becoming graupel, and carrying823 !--the ice crystal (which acted as an ice nucleating particle).824 !--The formula is adapted from the riming formula.825 809 826 810 !--The collision efficiency is assumed unity … … 832 816 833 817 !--We add the part of rain water that freezes, limited by a temperature barrier 834 !-- this quantity is calculated assuming that the number of drop that freeze correspond to the number818 !--This quantity is calculated assuming that the number of drop that freeze correspond to the number 835 819 !--of crystals collected (and assuming uniform distributions of ice crystals and rain drops) 836 820 !--The ice specific humidity that collide with rain is dqi = dNi 4/3 PI rho_ice r_ice**3 … … 882 866 ENDIF 883 867 884 !--temperature barrie step 2868 !--temperature barrier step 2 885 869 !--It is activated if the total is LOWER than the max 886 870 !--because everything is negative
Note: See TracChangeset
for help on using the changeset viewer.