Changeset 5779 for LMDZ6/branches
- Timestamp:
- Jul 16, 2025, 3:40:25 PM (11 days ago)
- Location:
- LMDZ6/branches/contrails
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/contrails/DefLists/context_input_lmdz.xml
r5717 r5779 409 409 <file id="aviation_file" name="aviation" enabled="false" mode="read" output_freq="1mo" type="one_file" time_counter_name="toto" > 410 410 411 <field id="KMFLOWN_id" name="seg_length_ km" operation="instant" grid_ref="aviation_grid" freq_offset="1ts" />411 <field id="KMFLOWN_id" name="seg_length_m" operation="instant" grid_ref="aviation_grid" freq_offset="1ts" /> 412 412 <field id="levaviation_id" name="pressure_Pa" axis_ref="aviation_lev" operation="instant" freq_offset="1ts" /> 413 413 <field id="timeaviation_id" name="time" axis_ref="aviation_time" operation="instant" freq_offset="1ts" /> -
LMDZ6/branches/contrails/DefLists/field_def_lmdz.xml
r5728 r5779 904 904 <field id="dcfmix" long_name="Cloud mixing cloud fraction tendency" unit="s-1" /> 905 905 <field id="dcfsed" long_name="Sedimentation cloud fraction tendency" unit="s-1" /> 906 <field id="dcfauto" long_name="Autoconversion cloud fraction tendency" unit="s-1" /> 906 907 <field id="dqiadj" long_name="Temperature adjustment ice tendency" unit="kg/kg/s" /> 907 908 <field id="dqisub" long_name="Sublimation ice tendency" unit="kg/kg/s" /> … … 909 910 <field id="dqimix" long_name="Cloud mixing ice tendency" unit="kg/kg/s" /> 910 911 <field id="dqised" long_name="Sedimentation ice tendency" unit="kg/kg/s" /> 912 <field id="dqiauto" long_name="Autoconversion ice tendency" unit="kg/kg/s" /> 911 913 <field id="dqvcadj" long_name="Temperature adjustment cloudy water vapor tendency" unit="kg/kg/s" /> 912 914 <field id="dqvcsub" long_name="Sublimation cloudy water vapor tendency" unit="kg/kg/s" /> … … 914 916 <field id="dqvcmix" long_name="Cloud mixing cloudy water vapor tendency" unit="kg/kg/s" /> 915 917 <field id="dqvcsed" long_name="Sedimentation cloudy water vapor tendency" unit="kg/kg/s" /> 918 <field id="dqvcauto" long_name="Autoconversion cloudy water vapor tendency" unit="kg/kg/s" /> 916 919 <field id="qsatl" long_name="Saturation with respect to liquid" unit="kg/kg" /> 917 920 <field id="qsati" long_name="Saturation with respect to ice" unit="kg/kg" /> … … 945 948 <field id="dqilsed" long_name="Ice sedimentation linear contrail ice specific humidity tendency" unit="kg/kg/s" /> 946 949 <field id="dqtlsed" long_name="Ice sedimentation linear contrail total specific humidity tendency" unit="kg/kg/s" /> 950 <field id="dcflauto" long_name="Ice autoconversion linear contrail fraction tendency" unit="s-1" /> 951 <field id="dqilauto" long_name="Ice autoconversion linear contrail ice specific humidity tendency" unit="kg/kg/s" /> 952 <field id="dqtlauto" long_name="Ice autoconversion linear contrail total specific humidity tendency" unit="kg/kg/s" /> 947 953 <field id="dcfcsub" long_name="Sublimation contrail cirrus fraction tendency" unit="s-1" /> 948 954 <field id="dqicsub" long_name="Sublimation contrail cirrus ice specific humidity tendency" unit="kg/kg/s" /> … … 954 960 <field id="dqicsed" long_name="Ice sedimentation contrail cirrus ice specific humidity tendency" unit="kg/kg/s" /> 955 961 <field id="dqtcsed" long_name="Ice sedimentation contrail cirrus total specific humidity tendency" unit="kg/kg/s" /> 962 <field id="dcfcauto" long_name="Ice autoconversion contrail cirrus fraction tendency" unit="s-1" /> 963 <field id="dqicauto" long_name="Ice autoconversion contrail cirrus ice specific humidity tendency" unit="kg/kg/s" /> 964 <field id="dqtcauto" long_name="Ice autoconversion contrail cirrus total specific humidity tendency" unit="kg/kg/s" /> 956 965 <field id="flightdist" long_name="Aviation flown distance concentration" unit="m/s/m3" /> 957 966 <field id="flighth2o" long_name="Aviation emitted H2O concentration" unit="kg H2O/s/m3" /> -
LMDZ6/branches/contrails/libf/phylmd/lmdz_aviation.f90
r5684 r5779 134 134 DO i = 1, klon 135 135 IF ( keepgoing(i) ) THEN 136 Tcritcont(i) = 0.137 136 qcritcont(i) = 0. 138 137 potcontfraP(i) = 0. … … 162 161 163 162 DO i = 1, klon 164 IF ( keepgoing(i) .AND. pt_pron_clds(i) .AND. ( temp(i) .LE. temp_nowater )) THEN163 IF ( keepgoing(i) .AND. pt_pron_clds(i) ) THEN 165 164 166 165 psatl_crit = qsatl_crit(i) / ( EPS_W + ( 1. - EPS_W ) * qsatl_crit(i) ) * pplay(i) -
LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp_condensation.f90
r5728 r5779 101 101 dzsed_circont_abv, flsed_circont_abv, cfsed_circont_abv, & 102 102 dzsed, flsed, cfsed, dzsed_lincont, flsed_lincont, cfsed_lincont, & 103 dzsed_circont, flsed_circont, cfsed_circont, &104 cldfra, qincld, qvc, issrfra, qissr, dcf_sub, dcf_con, dcf_mix, dcf_sed, &105 dqi_adj, dqi_sub, dqi_con, dqi_mix, dqi_sed, &106 dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, dqvc_sed, &103 dzsed_circont, flsed_circont, cfsed_circont, flauto, & 104 cldfra, qincld, qvc, issrfra, qissr, dcf_sub, dcf_con, dcf_mix, dcf_sed, dcf_auto, & 105 dqi_adj, dqi_sub, dqi_con, dqi_mix, dqi_sed, dqi_auto, & 106 dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, dqvc_sed, dqvc_auto, & 107 107 lincontfra_in, circontfra_in, qtl_in, qtc_in, flight_dist, flight_h2o, & 108 108 lincontfra, circontfra, qlincont, qcircont, & … … 110 110 dcfl_ini, dqil_ini, dqtl_ini, dcfl_sub, dqil_sub, dqtl_sub, & 111 111 dcfl_cir, dqtl_cir, dcfl_mix, dqil_mix, dqtl_mix, & 112 dcfl_sed, dqtl_sed, dqil_sed, dcfc_sed, dqtc_sed, dqic_sed, & 113 dcfc_sub, dqic_sub, dqtc_sub, dcfc_mix, dqic_mix, dqtc_mix) 112 dcfl_sed, dqil_sed, dqtl_sed, dcfl_auto, dqil_auto, dqtl_auto, & 113 dcfc_sub, dqic_sub, dqtc_sub, dcfc_mix, dqic_mix, dqtc_mix, & 114 dcfc_sed, dqic_sed, dqtc_sed, dcfc_auto, dqic_auto, dqtc_auto) 114 115 115 116 !---------------------------------------------------------------------- … … 189 190 REAL, INTENT(INOUT), DIMENSION(klon) :: flsed_circont ! sedimentated ice flux in contrails cirrus [kg/s/m2] 190 191 REAL, INTENT(INOUT), DIMENSION(klon) :: cfsed_circont ! sedimentated contrails cirrus fraction [-] 192 REAL, INTENT(INOUT), DIMENSION(klon) :: flauto ! autoconverted ice flux [kg/s/m2] 191 193 ! 192 194 ! Input for aviation … … 219 221 REAL, INTENT(INOUT), DIMENSION(klon) :: dcf_mix ! cloud fraction tendency because of cloud mixing [s-1] 220 222 REAL, INTENT(INOUT), DIMENSION(klon) :: dcf_sed ! cloud fraction tendency because of sedimentation [s-1] 223 REAL, INTENT(INOUT), DIMENSION(klon) :: dcf_auto ! cloud fraction tendency because of autoconversion [s-1] 221 224 REAL, INTENT(INOUT), DIMENSION(klon) :: dqi_adj ! specific ice content tendency because of temperature adjustment [kg/kg/s] 222 225 REAL, INTENT(INOUT), DIMENSION(klon) :: dqi_sub ! specific ice content tendency because of sublimation [kg/kg/s] … … 224 227 REAL, INTENT(INOUT), DIMENSION(klon) :: dqi_mix ! specific ice content tendency because of cloud mixing [kg/kg/s] 225 228 REAL, INTENT(INOUT), DIMENSION(klon) :: dqi_sed ! specific ice content tendency because of sedimentation [kg/kg/s] 229 REAL, INTENT(INOUT), DIMENSION(klon) :: dqi_auto ! specific ice content tendency because of autoconversion [kg/kg/s] 226 230 REAL, INTENT(INOUT), DIMENSION(klon) :: dqvc_adj ! specific cloud water vapor tendency because of temperature adjustment [kg/kg/s] 227 231 REAL, INTENT(INOUT), DIMENSION(klon) :: dqvc_sub ! specific cloud water vapor tendency because of sublimation [kg/kg/s] … … 229 233 REAL, INTENT(INOUT), DIMENSION(klon) :: dqvc_mix ! specific cloud water vapor tendency because of cloud mixing [kg/kg/s] 230 234 REAL, INTENT(INOUT), DIMENSION(klon) :: dqvc_sed ! specific cloud water vapor tendency because of sedimentation [kg/kg/s] 235 REAL, INTENT(INOUT), DIMENSION(klon) :: dqvc_auto! specific cloud water vapor tendency because of autoconversion [kg/kg/s] 231 236 ! 232 237 ! Diagnostics for aviation … … 255 260 REAL, INTENT(INOUT), DIMENSION(klon) :: dqil_sed ! linear contrails ice specific humidity tendency because of ice sedimentation [kg/kg/s] 256 261 REAL, INTENT(INOUT), DIMENSION(klon) :: dqtl_sed ! linear contrails total specific humidity tendency because of ice sedimentation [kg/kg/s] 262 REAL, INTENT(INOUT), DIMENSION(klon) :: dcfl_auto ! linear contrails cloud fraction tendency because of ice autoconversion [s-1] 263 REAL, INTENT(INOUT), DIMENSION(klon) :: dqil_auto ! linear contrails ice specific humidity tendency because of ice autoconversion [kg/kg/s] 264 REAL, INTENT(INOUT), DIMENSION(klon) :: dqtl_auto ! linear contrails total specific humidity tendency because of ice autoconversion [kg/kg/s] 257 265 REAL, INTENT(INOUT), DIMENSION(klon) :: dcfc_sub ! contrail cirrus cloud fraction tendency because of sublimation [s-1] 258 266 REAL, INTENT(INOUT), DIMENSION(klon) :: dqic_sub ! contrail cirrus ice specific humidity tendency because of sublimation [kg/kg/s] … … 264 272 REAL, INTENT(INOUT), DIMENSION(klon) :: dqic_sed ! contrail cirrus ice specific humidity tendency because of ice sedimentation [kg/kg/s] 265 273 REAL, INTENT(INOUT), DIMENSION(klon) :: dqtc_sed ! contrail cirrus total specific humidity tendency because of ice sedimentation [kg/kg/s] 274 REAL, INTENT(INOUT), DIMENSION(klon) :: dcfc_auto ! contrail cirrus cloud fraction tendency because of ice autoconversion [s-1] 275 REAL, INTENT(INOUT), DIMENSION(klon) :: dqic_auto ! contrail cirrus ice specific humidity tendency because of ice autoconversion [kg/kg/s] 276 REAL, INTENT(INOUT), DIMENSION(klon) :: dqtc_auto ! contrail cirrus total specific humidity tendency because of ice autoconversion [kg/kg/s] 266 277 ! 267 278 ! Local … … 295 306 REAL :: dqt_con 296 307 ! 297 ! for sedimentation 308 ! for sedimentation and autoconversion 298 309 REAL, DIMENSION(klon) :: qised_abv 299 REAL :: iwc, icefall_velo, qice_sedim310 REAL :: iwc, icefall_velo, coef_sed, qice_sedim 300 311 REAL :: sedfra_abv, sedfra1, sedfra2, sedfra3, sedfra_tmp 301 312 REAL :: dcf_sed1, dcf_sed2, dqvc_sed1, dqvc_sed2, dqi_sed1, dqi_sed2 313 REAL :: dz_auto, coef_auto, qice_auto 302 314 ! 303 315 ! for mixing … … 319 331 REAL :: dcfl_sed1, dcfl_sed2, dqtl_sed1, dqtl_sed2, dqil_sed1, dqil_sed2 320 332 REAL :: dcfc_sed1, dcfc_sed2, dqtc_sed1, dqtc_sed2, dqic_sed1, dqic_sed2 333 REAL :: dz_auto_lincont, dz_auto_circont 321 334 322 335 qzero(:) = 0. … … 341 354 !--formed elsewhere) 342 355 IF (keepgoing(i)) THEN 356 357 !--Initialisation 358 issrfra(i) = 0. 359 qissr(i) = 0. 360 IF ( ok_ice_sedim ) THEN 361 flauto(i) = 0. 362 flsed(i) = 0. 363 dzsed(i) = 0. 364 cfsed(i) = 0. 365 ENDIF 366 IF ( ok_plane_contrail ) THEN 367 lincontfra(i) = 0. 368 circontfra(i) = 0. 369 qlincont(i) = 0. 370 qcircont(i) = 0. 371 IF ( ok_ice_sedim ) THEN 372 flsed_lincont(i) = 0. 373 flsed_circont(i) = 0. 374 dzsed_lincont(i) = 0. 375 dzsed_circont(i) = 0. 376 cfsed_lincont(i) = 0. 377 cfsed_circont(i) = 0. 378 ENDIF 379 ENDIF 343 380 344 381 !--If the temperature is higher than the threshold below which … … 415 452 !--to the total water vapor in the precipitation routine. Here we remove it 416 453 !--(it will be reincluded later) 417 qised_abv(i) = flsed_abv(i) / ( paprsdn(i) - paprsup(i) ) * RG * dtime 454 !--The barrier is needed because although the sedimented ice was vaporised, 455 !--inacurracies in the advection scheme might lead to considering this water 456 !--to be cloudy (hence not in the clear sky region) 457 qised_abv(i) = MIN(qclr(i), flsed_abv(i) / ( paprsdn(i) - paprsup(i) ) * RG * dtime) 418 458 qclr(i) = qclr(i) - qised_abv(i) 419 459 ENDIF … … 528 568 !--to the total water vapor in the precipitation routine. Here we remove it 529 569 !--(it will be reincluded later) 530 qised_lincont_abv(i) = flsed_lincont_abv(i) / ( paprsdn(i) - paprsup(i) ) * RG * dtime 570 !--The barrier is needed because although the sedimented ice was vaporised, 571 !--inacurracies in the advection scheme might lead to considering this water 572 !--to be cloudy (hence not in the clear sky region) 573 qised_lincont_abv(i) = MIN(qclr(i), flsed_lincont_abv(i) & 574 / ( paprsdn(i) - paprsup(i) ) * RG * dtime) 531 575 qclr(i) = qclr(i) - qised_lincont_abv(i) 532 576 ENDIF … … 537 581 !--to the total water vapor in the precipitation routine. Here we remove it 538 582 !--(it will be reincluded later) 539 qised_circont_abv(i) = flsed_circont_abv(i) / ( paprsdn(i) - paprsup(i) ) * RG * dtime 583 !--The barrier is needed because although the sedimented ice was vaporised, 584 !--inacurracies in the advection scheme might lead to considering this water 585 !--to be cloudy (hence not in the clear sky region) 586 qised_circont_abv(i) = MIN(qclr(i), flsed_circont_abv(i) & 587 / ( paprsdn(i) - paprsup(i) ) * RG * dtime) 540 588 qclr(i) = qclr(i) - qised_circont_abv(i) 541 589 ENDIF … … 578 626 !--If there is a linear contrail 579 627 IF ( lincontfra(i) .GT. eps ) THEN 580 !--The contrail is always adjusted to saturation581 qiceincld = ( qlincont(i) / lincontfra(i) - qsat(i) )582 !--If the ice water content is too low, the cloud is purely sublimated583 IF ( qiceincld .LT. qiceincld_min(i) ) THEN584 dcfl_sub(i) = - lincontfra(i)585 dqil_sub(i) = - qiceincld * lincontfra(i)586 dqtl_sub(i) = - qlincont(i)587 lincontfra(i) = 0.588 qlincont(i) = 0.589 clrfra(i) = MIN(totfra_in(i), clrfra(i) - dcfl_sub(i))590 qclr(i) = qclr(i) - dqtl_sub(i)591 ENDIF ! qiceincld .LT. eps592 628 !--We remove contrails from the main class 593 629 cldfra(i) = MAX(0., cldfra(i) - lincontfra(i)) 594 630 qcld(i) = MAX(0., qcld(i) - qlincont(i)) 595 631 qvc(i) = MAX(0., MIN(qcld(i), qvc(i) - qsat(i) * lincontfra(i))) 632 633 !--The contrail is always adjusted to saturation 634 qiceincld = ( qlincont(i) / lincontfra(i) - qsat(i) ) 635 636 !--If the ice water content is too low, the cloud is purely sublimated 637 IF ( qiceincld .LT. eps ) THEN 638 dcfl_sub(i) = - lincontfra(i) 639 dqil_sub(i) = - qiceincld * lincontfra(i) 640 dqtl_sub(i) = - qlincont(i) 641 642 !--Only a part of the contrail is sublimated 643 ELSE 644 !--Gamma distribution starting at qvapincld (everything that is below qiceincld_min) 645 pdf_shape = nu_iwc_pdf_lscp / qiceincld 646 pdf_y = pdf_shape * qiceincld_min(i) 647 pdf_e1 = GAMMAINC ( nu_iwc_pdf_lscp , pdf_y ) 648 pdf_e2 = GAMMAINC ( nu_iwc_pdf_lscp + 1. , pdf_y ) 649 650 !--Tendencies and diagnostics 651 dcfl_sub(i) = - lincontfra(i) * pdf_e1 652 dqil_sub(i) = - lincontfra(i) * pdf_e2 / pdf_shape 653 dqtl_sub(i) = dqil_sub(i) + dcfl_sub(i) * qsat(i) 654 ENDIF ! qiceincld .LT. eps 655 656 !--Add tendencies 657 lincontfra(i) = lincontfra(i) + dcfl_sub(i) 658 qlincont(i) = qlincont(i) + dqtl_sub(i) 659 clrfra(i) = clrfra(i) - dcfl_sub(i) 660 qclr(i) = qclr(i) - dqtl_sub(i) 596 661 ENDIF ! lincontfra(i) .GT. eps 597 662 598 663 !--If there is a contrail cirrus 599 664 IF ( circontfra(i) .GT. eps ) THEN 600 !--The contrail is always adjusted to saturation601 qiceincld = ( qcircont(i) / circontfra(i) - qsat(i) )602 !--If the ice water content is too low, the cloud is purely sublimated603 IF ( qiceincld .LT. qiceincld_min(i) ) THEN604 dcfc_sub(i) = - circontfra(i)605 dqic_sub(i) = - qiceincld * circontfra(i)606 dqtc_sub(i) = - qcircont(i)607 circontfra(i) = 0.608 qcircont(i) = 0.609 clrfra(i) = MIN(totfra_in(i), clrfra(i) - dcfc_sub(i))610 qclr(i) = qclr(i) - dqtc_sub(i)611 ENDIF ! qiceincld .LT. eps612 665 !--We remove contrails from the main class 613 666 cldfra(i) = MAX(0., cldfra(i) - circontfra(i)) 614 667 qcld(i) = MAX(0., qcld(i) - qcircont(i)) 615 668 qvc(i) = MAX(0., MIN(qcld(i), qvc(i) - qsat(i) * circontfra(i))) 669 670 !--The contrail is always adjusted to saturation 671 qiceincld = ( qcircont(i) / circontfra(i) - qsat(i) ) 672 673 !--If the ice water content is too low, the cloud is purely sublimated 674 IF ( qiceincld .LT. eps ) THEN 675 dcfc_sub(i) = - circontfra(i) 676 dqic_sub(i) = - qiceincld * circontfra(i) 677 dqtc_sub(i) = - qcircont(i) 678 679 !--Only a part of the contrail is sublimated 680 ELSE 681 !--Gamma distribution starting at qvapincld (everything that is below qiceincld_min) 682 pdf_shape = nu_iwc_pdf_lscp / qiceincld 683 pdf_y = pdf_shape * qiceincld_min(i) 684 pdf_e1 = GAMMAINC ( nu_iwc_pdf_lscp , pdf_y ) 685 pdf_e2 = GAMMAINC ( nu_iwc_pdf_lscp + 1. , pdf_y ) 686 687 !--Tendencies and diagnostics 688 dcfc_sub(i) = - circontfra(i) * pdf_e1 689 dqic_sub(i) = - circontfra(i) * pdf_e2 / pdf_shape 690 dqtc_sub(i) = dqic_sub(i) + dcfc_sub(i) * qsat(i) 691 ENDIF ! qiceincld .LT. eps 692 693 !--Add tendencies 694 circontfra(i) = circontfra(i) + dcfc_sub(i) 695 qcircont(i) = qcircont(i) + dqtc_sub(i) 696 clrfra(i) = clrfra(i) - dcfc_sub(i) 697 qclr(i) = qclr(i) - dqtc_sub(i) 616 698 ENDIF ! circontfra(i) .GT. eps 617 699 … … 789 871 pdf_scale(i) = MAX(eps, MIN(rhl_clr / pdf_gamma(i), pdf_std / SQRT( & 790 872 GAMMA(1. + 2. / pdf_alpha(i)) - pdf_gamma(i)**2 ))) 873 !--rhl_clr is not bounded for the location parameter 874 rhl_clr = qclr(i) / clrfra(i) / qsatl(i) * 100. 791 875 pdf_loc = rhl_clr - pdf_scale(i) * pdf_gamma(i) 792 876 … … 1131 1215 !--If the linear contrail increases in size, the increment is considered 1132 1216 !--to be a contrail cirrus 1133 dcf c_mix(i) = dcfc_mix(i) + clrfra_mix1134 dqt c_mix(i) = dqtc_mix(i) + clrfra_mix * qclr(i) / clrfra(i)1135 dqi c_mix(i) = dqic_mix(i) + clrfra_mix * ( qclr(i) / clrfra(i) - qsat(i) )1217 dcfl_mix(i) = dcfl_mix(i) + clrfra_mix 1218 dqtl_mix(i) = dqtl_mix(i) + clrfra_mix * qclr(i) / clrfra(i) 1219 dqil_mix(i) = dqil_mix(i) + clrfra_mix * ( qclr(i) / clrfra(i) - qsat(i) ) 1136 1220 ELSE 1137 1221 !--We then calculate the clear sky part where the humidity is lower than … … 1176 1260 1177 1261 IF ( pdf_fra_above_lim .GT. eps ) THEN 1262 dcfl_mix(i) = dcfl_mix(i) + clrfra_mix * sigma_mix 1263 dqtl_mix(i) = dqtl_mix(i) + clrfra_mix * sigma_mix & 1264 * pdf_q_above_lim / pdf_fra_above_lim 1265 dqil_mix(i) = dqil_mix(i) + clrfra_mix * sigma_mix & 1266 * ( pdf_q_above_lim / pdf_fra_above_lim - qsat(i) ) 1178 1267 !--If the linear contrail increases in size, the increment is considered 1179 1268 !--to be a contrail cirrus 1180 qvapinmix = ( pdf_q_above_lim / pdf_fra_above_lim * clrfra_mix &1181 + qlincont(i) / lincontfra(i) * cldfra_mix ) &1182 / ( clrfra_mix + cldfra_mix )1183 qiceinmix = ( qlincont(i) / lincontfra(i) - qsat(i) ) * cldfra_mix &1184 / ( clrfra_mix + cldfra_mix )1185 dcfc_mix(i) = dcfc_mix(i) + clrfra_mix * sigma_mix1186 dqtc_mix(i) = dqtc_mix(i) + clrfra_mix * sigma_mix * qvapinmix1187 dqtl_mix(i) = dqtl_mix(i) - cldfra_mix * sigma_mix &1188 * ( qlincont(i) / lincontfra(i) - qvapinmix )1189 dqic_mix(i) = dqic_mix(i) + clrfra_mix * sigma_mix * qiceinmix1190 dqil_mix(i) = dqil_mix(i) - cldfra_mix * sigma_mix &1191 * ( qlincont(i) / lincontfra(i) - qsat(i) - qiceinmix )1269 !qvapinmix = ( pdf_q_above_lim / pdf_fra_above_lim * clrfra_mix & 1270 ! + qlincont(i) / lincontfra(i) * cldfra_mix ) & 1271 ! / ( clrfra_mix + cldfra_mix ) 1272 !qiceinmix = ( qlincont(i) / lincontfra(i) - qsat(i) ) * cldfra_mix & 1273 ! / ( clrfra_mix + cldfra_mix ) 1274 !dcfc_mix(i) = dcfc_mix(i) + clrfra_mix * sigma_mix 1275 !dqtc_mix(i) = dqtc_mix(i) + clrfra_mix * sigma_mix * qvapinmix 1276 !dqtl_mix(i) = dqtl_mix(i) - cldfra_mix * sigma_mix & 1277 ! * ( qlincont(i) / lincontfra(i) - qvapinmix ) 1278 !dqic_mix(i) = dqic_mix(i) + clrfra_mix * sigma_mix * qiceinmix 1279 !dqil_mix(i) = dqil_mix(i) - cldfra_mix * sigma_mix & 1280 ! * ( qlincont(i) / lincontfra(i) - qsat(i) - qiceinmix ) 1192 1281 ENDIF 1193 1282 … … 1399 1488 IF ( ok_ice_sedim ) THEN 1400 1489 !--Initialisation 1490 dz_auto = 0. 1491 dz_auto_lincont = 0. 1492 dz_auto_circont = 0. 1401 1493 dcf_sed1 = 0. 1402 1494 dqvc_sed1 = 0. … … 1428 1520 IF ( cldfra(i) .GT. eps ) THEN 1429 1521 iwc = rho * ( qcld(i) - qvc(i) ) / cldfra(i) 1430 icefall_velo = fallice_sedim * cice_velo * iwc**dice_velo 1431 dzsed(i) = icefall_velo * dtime * MAX(0., MIN(1., (2. - icefall_velo * dtime / dz))) 1522 icefall_velo = fallice_sedim * cice_velo * MAX(0., iwc)**dice_velo 1523 1524 !--Sedimentation 1525 coef_sed = MAX(0., MIN(1., 2. - icefall_velo * dtime / dz)) 1526 dzsed(i) = MIN(dz, icefall_velo * dtime) * coef_sed 1432 1527 cfsed(i) = cldfra(i) 1433 1528 qice_sedim = ( qcld(i) - qvc(i) ) * dzsed(i) / dz … … 1438 1533 !--Convert to flux 1439 1534 flsed(i) = qice_sedim * ( paprsdn(i) - paprsup(i) ) / RG / dtime 1535 1536 !--Autoconversion 1537 coef_auto = MAX(0., MIN(1., icefall_velo * dtime / dz - 1.)) 1538 dz_auto = MIN(dz, icefall_velo * dtime) * coef_auto 1539 qice_auto = ( qcld(i) - qvc(i) ) * dz_auto / dz 1540 !--Tendencies 1541 dcf_auto(i) = - cldfra(i) * dz_auto / dz 1542 dqi_auto(i) = - qice_auto 1543 dqvc_auto(i) = - qvc(i) * dz_auto / dz 1544 !--Convert to flux 1545 flauto(i) = flauto(i) + qice_auto * ( paprsdn(i) - paprsup(i) ) / RG / dtime 1546 1440 1547 !--Save the vapor in the cloud (will be needed later) 1441 1548 qvapincld = qvc(i) / cldfra(i) 1442 1549 !--Add tendencies 1443 cldfra(i) = cldfra(i) + dcf_sed1 1444 qcld(i) = qcld(i) + dqvc_sed1 + dqi_sed1 1445 qvc(i) = qvc(i) + dqvc_sed1 1446 clrfra(i) = clrfra(i) - dcf_sed1 1447 qclr(i) = qclr(i) - dqvc_sed1 - dqi_sed1 1550 cldfra(i) = cldfra(i) + dcf_sed1 + dcf_auto(i) 1551 qcld(i) = qcld(i) + dqvc_sed1 + dqi_sed1 + dqvc_auto(i) + dqi_auto(i) 1552 qvc(i) = qvc(i) + dqvc_sed1 + dqvc_auto(i) 1553 clrfra(i) = clrfra(i) - dcf_sed1 - dcf_auto(i) 1554 qclr(i) = qclr(i) - dqvc_sed1 - dqi_sed1 - dqvc_auto(i) - dqi_auto(i) 1448 1555 ENDIF 1449 1556 ! 1450 1557 IF ( lincontfra(i) .GT. eps ) THEN 1451 1558 icefall_velo = fallice_linear_contrails 1452 dzsed_lincont(i) = icefall_velo * dtime * MAX(0., MIN(1., (2. - icefall_velo * dtime / dz))) 1559 1560 !--Sedimentation 1561 coef_sed = MAX(0., MIN(1., 2. - icefall_velo * dtime / dz)) 1562 dzsed_lincont(i) = MIN(dz, icefall_velo * dtime) * coef_sed 1453 1563 cfsed_lincont(i) = lincontfra(i) 1454 qice_sedim = ( qlincont(i) - qsat(i) ) * dzsed_lincont(i) / dz1564 qice_sedim = ( qlincont(i) - qsat(i) * lincontfra(i) ) * dzsed_lincont(i) / dz 1455 1565 !--Tendencies 1456 1566 dcfl_sed1 = - lincontfra(i) * dzsed_lincont(i) / dz … … 1459 1569 !--Convert to flux 1460 1570 flsed_lincont(i) = qice_sedim * ( paprsdn(i) - paprsup(i) ) / RG / dtime 1571 1572 !--Autoconversion 1573 coef_auto = MAX(0., MIN(1., icefall_velo * dtime / dz - 1.)) 1574 dz_auto_lincont = MIN(dz, icefall_velo * dtime) * coef_auto 1575 qice_auto = ( qlincont(i) - qsat(i) * lincontfra(i) ) * dz_auto_lincont / dz 1576 !--Tendencies 1577 dcfl_auto(i) = - lincontfra(i) * dz_auto_lincont / dz 1578 dqil_auto(i) = - qice_auto 1579 dqtl_auto(i) = - qlincont(i) * dz_auto_lincont / dz 1580 !--Convert to flux 1581 flauto(i) = flauto(i) + qice_auto * ( paprsdn(i) - paprsup(i) ) / RG / dtime 1582 1461 1583 !--Add tendencies 1462 lincontfra(i) = lincontfra(i) + dcfl_sed1 1463 qlincont(i) = qlincont(i) + dqtl_sed1 1464 clrfra(i) = clrfra(i) - dcfl_sed1 1465 qclr(i) = qclr(i) - dqtl_sed1 1584 lincontfra(i) = lincontfra(i) + dcfl_sed1 + dcfl_auto(i) 1585 qlincont(i) = qlincont(i) + dqtl_sed1 + dqtl_auto(i) 1586 clrfra(i) = clrfra(i) - dcfl_sed1 - dcfl_auto(i) 1587 qclr(i) = qclr(i) - dqtl_sed1 - dqtl_auto(i) 1466 1588 ENDIF 1467 1589 ! 1468 1590 IF ( circontfra(i) .GT. eps ) THEN 1469 icefall_velo = fallice_cirrus_contrails 1470 dzsed_circont(i) = icefall_velo * dtime * MAX(0., MIN(1., (2. - icefall_velo * dtime / dz))) 1591 !icefall_velo = fallice_cirrus_contrails 1592 iwc = rho * ( qcircont(i) / circontfra(i) - qsat(i) ) 1593 icefall_velo = fallice_sedim * cice_velo * MAX(0., iwc)**dice_velo 1594 1595 !--Sedimentation 1596 coef_sed = MAX(0., MIN(1., 2. - icefall_velo * dtime / dz)) 1597 dzsed_circont(i) = MIN(dz, icefall_velo) * dtime * coef_sed 1471 1598 cfsed_circont(i) = circontfra(i) 1472 qice_sedim = ( qcircont(i) - qsat(i) ) * dzsed_circont(i) / dz1599 qice_sedim = ( qcircont(i) - qsat(i) * circontfra(i) ) * dzsed_circont(i) / dz 1473 1600 !--Tendencies 1474 1601 dcfc_sed1 = - circontfra(i) * dzsed_circont(i) / dz … … 1477 1604 !--Convert to flux 1478 1605 flsed_circont(i) = qice_sedim * ( paprsdn(i) - paprsup(i) ) / RG / dtime 1606 1607 !--Autoconversion 1608 coef_auto = MAX(0., MIN(1., icefall_velo * dtime / dz - 1.)) 1609 dz_auto_circont = MIN(dz, icefall_velo * dtime) * coef_auto 1610 qice_auto = ( qcircont(i) - qsat(i) * circontfra(i) ) * dz_auto_circont / dz 1611 !--Tendencies 1612 dcfc_auto(i) = - circontfra(i) * dz_auto_circont / dz 1613 dqic_auto(i) = - qice_auto 1614 dqtc_auto(i) = - qcircont(i) * dz_auto_circont / dz 1615 !--Convert to flux 1616 flauto(i) = flauto(i) + qice_auto * ( paprsdn(i) - paprsup(i) ) / RG / dtime 1617 1479 1618 !--Add tendencies 1480 circontfra(i) = circontfra(i) + dcfc_sed1 1481 qcircont(i) = qcircont(i) + dqtc_sed1 1482 clrfra(i) = clrfra(i) - dcfc_sed1 1483 qclr(i) = qclr(i) - dqtc_sed1 1619 circontfra(i) = circontfra(i) + dcfc_sed1 + dcfc_auto(i) 1620 qcircont(i) = qcircont(i) + dqtc_sed1 + dqtc_auto(i) 1621 clrfra(i) = clrfra(i) - dcfc_sed1 - dcfc_auto(i) 1622 qclr(i) = qclr(i) - dqtc_sed1 - dqtc_auto(i) 1484 1623 ENDIF 1485 1624 ! … … 1507 1646 !--background vapor 1508 1647 sedfra2 = MIN(cfsed(i), cfsed_abv(i)) & 1509 * MAX(0., MIN(dz, dzsed_abv(i)) - dzsed(i) ) / dz1648 * MAX(0., MIN(dz, dzsed_abv(i)) - dzsed(i) - dz_auto) / dz 1510 1649 sedfra3 = MIN(cfsed(i), cfsed_abv(i)) & 1511 * MIN(MIN(dz, dzsed_abv(i)), dzsed(i) ) / dz1650 * MIN(MIN(dz, dzsed_abv(i)), dzsed(i) + dz_auto) / dz 1512 1651 sedfra1 = sedfra_abv - sedfra3 - sedfra2 1513 1652 … … 1606 1745 !--background vapor 1607 1746 sedfra2 = MIN(cfsed_lincont(i), cfsed_lincont_abv(i)) & 1608 * MAX(0., MIN(dz, dzsed_lincont_abv(i)) - dzsed_lincont(i)) / dz 1747 * MAX(0., MIN(dz, dzsed_lincont_abv(i)) & 1748 - dzsed_lincont(i) - dz_auto_lincont) / dz 1609 1749 sedfra3 = MIN(cfsed_lincont(i), cfsed_lincont_abv(i)) & 1610 * MIN(MIN(dz, dzsed_lincont_abv(i)), dzsed_lincont(i)) / dz 1750 * MIN(MIN(dz, dzsed_lincont_abv(i)), & 1751 dzsed_lincont(i) + dz_auto_lincont) / dz 1611 1752 sedfra1 = sedfra_abv - sedfra3 - sedfra2 1612 1753 … … 1650 1791 IF ( pdf_fra_above_lim .GT. eps ) THEN 1651 1792 dcfl_sed2 = dcfl_sed2 + sedfra_tmp 1652 dqtl_sed2 = dqtl_sed2 + sedfra_tmp * qsat(i) 1793 dqtl_sed2 = dqtl_sed2 + sedfra_tmp & 1794 * (qiceincld + pdf_q_above_lim / pdf_fra_above_lim) 1653 1795 dqil_sed2 = dqil_sed2 + sedfra_tmp & 1654 1796 * (qiceincld + pdf_q_above_lim / pdf_fra_above_lim - qsat(i)) … … 1694 1836 !--background vapor 1695 1837 sedfra2 = MIN(cfsed_circont(i), cfsed_circont_abv(i)) & 1696 * MAX(0., MIN(dz, dzsed_circont_abv(i)) - dzsed_circont(i)) / dz 1838 * MAX(0., MIN(dz, dzsed_circont_abv(i)) & 1839 - dzsed_circont(i) - dz_auto_circont) / dz 1697 1840 sedfra3 = MIN(cfsed_circont(i), cfsed_circont_abv(i)) & 1698 * MIN(MIN(dz, dzsed_circont_abv(i)), dzsed_circont(i)) / dz 1841 * MIN(MIN(dz, dzsed_circont_abv(i)), & 1842 dzsed_circont(i) + dz_auto_circont) / dz 1699 1843 sedfra1 = sedfra_abv - sedfra3 - sedfra2 1700 1844 … … 1738 1882 IF ( pdf_fra_above_lim .GT. eps ) THEN 1739 1883 dcfc_sed2 = dcfc_sed2 + sedfra_tmp 1740 dqtc_sed2 = dqtc_sed2 + sedfra_tmp * qsat(i) 1884 dqtc_sed2 = dqtc_sed2 + sedfra_tmp & 1885 * (qiceincld + pdf_q_above_lim / pdf_fra_above_lim) 1741 1886 dqic_sed2 = dqic_sed2 + sedfra_tmp & 1742 1887 * (qiceincld + pdf_q_above_lim / pdf_fra_above_lim - qsat(i)) … … 1871 2016 dcf_mix(i) = dcf_mix(i) / dtime 1872 2017 dcf_sed(i) = dcf_sed(i) / dtime 2018 dcf_auto(i) = dcf_auto(i) / dtime 1873 2019 dqi_adj(i) = dqi_adj(i) / dtime 1874 2020 dqi_sub(i) = dqi_sub(i) / dtime … … 1876 2022 dqi_mix(i) = dqi_mix(i) / dtime 1877 2023 dqi_sed(i) = dqi_sed(i) / dtime 2024 dqi_auto(i) = dqi_auto(i) / dtime 1878 2025 dqvc_adj(i) = dqvc_adj(i) / dtime 1879 2026 dqvc_sub(i) = dqvc_sub(i) / dtime … … 1881 2028 dqvc_mix(i) = dqvc_mix(i) / dtime 1882 2029 dqvc_sed(i) = dqvc_sed(i) / dtime 2030 dqvc_auto(i) = dqvc_auto(i) / dtime 1883 2031 1884 2032 ENDIF ! pt_pron_clds(i) … … 1987 2135 dqil_mix(i) = dqil_mix(i) / dtime 1988 2136 dqtl_mix(i) = dqtl_mix(i) / dtime 2137 dcfl_sed(i) = dcfl_sed(i) / dtime 2138 dqil_sed(i) = dqil_sed(i) / dtime 2139 dqtl_sed(i) = dqtl_sed(i) / dtime 2140 dcfl_auto(i) = dcfl_auto(i) / dtime 2141 dqil_auto(i) = dqil_auto(i) / dtime 2142 dqtl_auto(i) = dqtl_auto(i) / dtime 1989 2143 dcfc_sub(i) = dcfc_sub(i) / dtime 1990 2144 dqic_sub(i) = dqic_sub(i) / dtime … … 1993 2147 dqic_mix(i) = dqic_mix(i) / dtime 1994 2148 dqtc_mix(i) = dqtc_mix(i) / dtime 2149 dcfc_sed(i) = dcfc_sed(i) / dtime 2150 dqic_sed(i) = dqic_sed(i) / dtime 2151 dqtc_sed(i) = dqtc_sed(i) / dtime 2152 dcfc_auto(i) = dcfc_auto(i) / dtime 2153 dqic_auto(i) = dqic_auto(i) / dtime 2154 dqtc_auto(i) = dqtc_auto(i) / dtime 1995 2155 1996 2156 ENDIF ! keepgoing -
LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp_ini.f90
r5717 r5779 232 232 !$OMP THREADPRIVATE(ok_plane_contrail) 233 233 234 LOGICAL, SAVE, PROTECTED :: ok_precip_contrails=.TRUE. ! if True, contrails can be autoconverted to snow 235 !$OMP THREADPRIVATE(ok_precip_contrails) 234 LOGICAL, SAVE, PROTECTED :: ok_precip_lincontrails=.TRUE. ! if True, linear contrails can be autoconverted to snow 235 !$OMP THREADPRIVATE(ok_precip_lincontrails) 236 237 LOGICAL, SAVE, PROTECTED :: ok_precip_circontrails=.FALSE. ! if True, cirrus contrails can be autoconverted to snow 238 !$OMP THREADPRIVATE(ok_precip_circontrails) 236 239 237 240 REAL, SAVE, PROTECTED :: aspect_ratio_lincontrails=.1 ! [-] aspect ratio of linear contrails … … 565 568 CALL getin_p('chi_mixing',chi_mixing) 566 569 ! for aviation 567 CALL getin_p('ok_precip_contrails',ok_precip_contrails) 570 CALL getin_p('ok_precip_lincontrails',ok_precip_lincontrails) 571 CALL getin_p('ok_precip_circontrails',ok_precip_circontrails) 568 572 CALL getin_p('aspect_ratio_lincontrails',aspect_ratio_lincontrails) 569 573 coef_mixing_lincontrails=coef_mixing_lscp … … 685 689 WRITE(lunout,*) 'lscp_ini, chi_mixing:', chi_mixing 686 690 ! for aviation 687 WRITE(lunout,*) 'lscp_ini, ok_precip_contrails:', ok_precip_contrails 691 WRITE(lunout,*) 'lscp_ini, ok_precip_lincontrails:', ok_precip_lincontrails 692 WRITE(lunout,*) 'lscp_ini, ok_precip_circontrails:', ok_precip_circontrails 688 693 WRITE(lunout,*) 'lscp_ini, aspect_ratio_lincontrails:', aspect_ratio_lincontrails 689 694 WRITE(lunout,*) 'lscp_ini, coef_mixing_lincontrails:', coef_mixing_lincontrails … … 746 751 ENDIF 747 752 753 IF ( ok_ice_sedim .AND. ffallv_issr .NE. 0. ) THEN 754 abort_message = 'in lscp, ok_ice_sedim=y needs ffallv_issr=0.' 755 CALL abort_physic (modname,abort_message,1) 756 ENDIF 757 748 758 IF ( (iflag_icefrac .GE. 1) .AND. (.NOT. ok_poprecip .AND. (iflag_evap_prec .LT. 4)) ) THEN 749 759 abort_message = 'in lscp, icefracturb works with poprecip or with precip evap option >=4' -
LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp_main.f90
r5728 r5779 25 25 cf_seri, qvc_seri, u_seri, v_seri, & 26 26 qsub, qissr, qcld, subfra, issrfra, gamma_cond, & 27 dcf_sub, dcf_con, dcf_mix, dqised, dcfsed, dqvcsed,& 27 dcf_sub, dcf_con, dcf_mix, & 28 dqi_sed, dcf_sed, dqvc_sed, & 28 29 dqi_adj, dqi_sub, dqi_con, dqi_mix, dqvc_adj, & 29 30 dqvc_sub, dqvc_con, dqvc_mix, qsatl, qsati, & … … 126 127 USE lmdz_lscp_ini, ONLY : ok_poprecip, ok_bug_phase_lscp 127 128 USE lmdz_lscp_ini, ONLY : ok_ice_supersat, ok_unadjusted_clouds, iflag_icefrac 128 USE lmdz_lscp_ini, ONLY : ok_weibull_warm_clouds, ok_no_issr_strato 129 USE lmdz_lscp_ini, ONLY : ok_plane_contrail, ok_precip_ contrails, ok_ice_sedim129 USE lmdz_lscp_ini, ONLY : ok_weibull_warm_clouds, ok_no_issr_strato, ok_ice_sedim 130 USE lmdz_lscp_ini, ONLY : ok_plane_contrail, ok_precip_lincontrails, ok_precip_circontrails 130 131 USE lmdz_lscp_ini, ONLY : ok_nodeep_lscp, ok_nodeep_lscp_rad 131 132 USE lmdz_lscp_ini, ONLY : ok_lscp_mergecond, gamma_mixth … … 138 139 USE phys_local_var_mod, ONLY : dcfc_sub, dqic_sub, dqtc_sub, dcfc_mix, dqic_mix, dqtc_mix 139 140 USE phys_local_var_mod, ONLY : dcfl_sed, dqil_sed, dqtl_sed, dcfc_sed, dqic_sed, dqtc_sed 141 USE phys_local_var_mod, ONLY : dcfl_auto, dqil_auto, dqtl_auto, dcfc_auto, dqic_auto, dqtc_auto 142 USE phys_local_var_mod, ONLY : dcf_auto, dqi_auto, dqvc_auto 140 143 USE geometry_mod, ONLY: longitude_deg, latitude_deg 141 144 … … 268 271 REAL, DIMENSION(klon,klev), INTENT(OUT) :: dqvc_con !--specific cloud water vapor tendency because of condensation [kg/kg/s] 269 272 REAL, DIMENSION(klon,klev), INTENT(OUT) :: dqvc_mix !--specific cloud water vapor tendency because of cloud mixing [kg/kg/s] 270 REAL, DIMENSION(klon,klev), INTENT(OUT) :: dqi sed!--ice water content tendency due to sedmentation of ice crystals [kg/kg/s]271 REAL, DIMENSION(klon,klev), INTENT(OUT) :: dcf sed!--cloud fraction tendency due to sedimentation of ice crystals [kg/kg/s]272 REAL, DIMENSION(klon,klev), INTENT(OUT) :: dqvc sed!--cloud water vapor tendency due to sedimentation of ice crystals [kg/kg/s]273 REAL, DIMENSION(klon,klev), INTENT(OUT) :: dqi_sed !--ice water content tendency due to sedmentation of ice crystals [kg/kg/s] 274 REAL, DIMENSION(klon,klev), INTENT(OUT) :: dcf_sed !--cloud fraction tendency due to sedimentation of ice crystals [kg/kg/s] 275 REAL, DIMENSION(klon,klev), INTENT(OUT) :: dqvc_sed !--cloud water vapor tendency due to sedimentation of ice crystals [kg/kg/s] 273 276 REAL, DIMENSION(klon,klev), INTENT(OUT) :: qsatl !--saturation specific humidity wrt liquid [kg/kg] 274 277 REAL, DIMENSION(klon,klev), INTENT(OUT) :: qsati !--saturation specific humidity wrt ice [kg/kg] … … 348 351 REAL, DIMENSION(klon) :: dzsed, flsed, cfsed 349 352 REAL, DIMENSION(klon) :: dzsed_abv, flsed_abv, cfsed_abv 353 REAL, DIMENSION(klon) :: flauto 350 354 REAL :: qice_sedim 351 355 … … 365 369 REAL, DIMENSION(klon) :: dzsed_lincont_abv, flsed_lincont_abv, cfsed_lincont_abv 366 370 REAL, DIMENSION(klon) :: dzsed_circont_abv, flsed_circont_abv, cfsed_circont_abv 367 REAL :: qice_cont368 371 !--for Lamquin et al 2012 diagnostics 369 372 REAL, DIMENSION(klon) :: issrfra100to150UP, issrfra150to200UP, issrfra200to250UP … … 451 454 dcf_con(:,:) = 0. 452 455 dcf_mix(:,:) = 0. 453 dcfsed(:,:) = 0. 456 dcf_sed(:,:) = 0. 457 dcf_auto(:,:) = 0. 454 458 dqi_adj(:,:) = 0. 455 459 dqi_sub(:,:) = 0. 456 460 dqi_con(:,:) = 0. 457 461 dqi_mix(:,:) = 0. 458 dqised(:,:) = 0. 462 dqi_sed(:,:) = 0. 463 dqi_auto(:,:) = 0. 459 464 dqvc_adj(:,:) = 0. 460 465 dqvc_sub(:,:) = 0. 461 466 dqvc_con(:,:) = 0. 462 467 dqvc_mix(:,:) = 0. 463 dqvcsed(:,:) = 0. 468 dqvc_sed(:,:) = 0. 469 dqvc_auto(:,:) = 0. 464 470 qvc(:) = 0. 465 471 shear(:) = 0. 466 472 flsed(:) = 0. 473 flauto(:) = 0. 467 474 flsed_lincont(:)= 0. 468 475 flsed_circont(:)= 0. … … 725 732 cfsed_circont_abv(:) = cfsed_circont(:) 726 733 ENDIF 727 dzsed_lincont(:) = 0.728 flsed_lincont(:) = 0.729 cfsed_lincont(:) = 0.730 dzsed_circont(:) = 0.731 flsed_circont(:) = 0.732 cfsed_circont(:) = 0.733 734 lincontfra(:) = 0. 734 735 circontfra(:) = 0. … … 746 747 cfsed_abv(:) = cfsed(:) 747 748 ENDIF 748 dzsed(:) = 0.749 flsed(:) = 0.750 cfsed(:) = 0.751 749 752 750 DO i = 1, klon … … 787 785 qvc_in(i) = qvc_in(i) + qvcon_old(i,k) * ( cfcon_old(i,k) - cfcon(i,k) ) 788 786 qice_in(i) = qice_in(i) + qccon_old(i,k) * ( cfcon_old(i,k) - cfcon(i,k) ) 789 ELSE 787 ELSEIF ( cldfra_in(i) .GT. eps ) THEN 790 788 !--Else if deep convection is strengthening, it consumes the existing cloud 791 789 !--fraction (which does not at this moment represent deep convection) 792 deepconv_coef = 1. - ( cfcon(i,k) - cfcon_old(i,k) ) / ( 1. - cfcon_old(i,k) ) 790 !deepconv_coef = 1. - ( cfcon(i,k) - cfcon_old(i,k) ) / ( 1. - cfcon_old(i,k) ) 791 deepconv_coef = MAX(0., 1. - ( cfcon(i,k) - cfcon_old(i,k) ) / cldfra_in(i) ) 793 792 cldfra_in(i) = cldfra_in(i) * deepconv_coef 794 793 qvc_in(i) = qvc_in(i) * deepconv_coef … … 930 929 dzsed_circont_abv, flsed_circont_abv, cfsed_circont_abv, & 931 930 dzsed, flsed, cfsed, dzsed_lincont, flsed_lincont, cfsed_lincont, & 932 dzsed_circont, flsed_circont, cfsed_circont, &931 dzsed_circont, flsed_circont, cfsed_circont, flauto, & 933 932 rneb(:,k), zqn, qvc, issrfra(:,k), qissr(:,k), & 934 dcf_sub(:,k), dcf_con(:,k), dcf_mix(:,k), dcfsed(:,k), & 935 dqi_adj(:,k), dqi_sub(:,k), dqi_con(:,k), dqi_mix(:,k), dqised(:,k), & 936 dqvc_adj(:,k), dqvc_sub(:,k), dqvc_con(:,k), dqvc_mix(:,k), dqvcsed(:,k), & 933 dcf_sub(:,k), dcf_con(:,k), dcf_mix(:,k), & 934 dcf_sed(:,k), dcf_auto(:,k), & 935 dqi_adj(:,k), dqi_sub(:,k), dqi_con(:,k), dqi_mix(:,k), & 936 dqi_sed(:,k), dqi_auto(:,k), & 937 dqvc_adj(:,k), dqvc_sub(:,k), dqvc_con(:,k), dqvc_mix(:,k), & 938 dqvc_sed(:,k), dqvc_auto(:,k), & 937 939 cfl_seri(:,k), cfc_seri(:,k), qtl_seri(:,k), qtc_seri(:,k), & 938 940 flight_dist(:,k), flight_h2o(:,k), & … … 944 946 dcfl_mix(:,k), dqil_mix(:,k), dqtl_mix(:,k), & 945 947 dcfl_sed(:,k), dqil_sed(:,k), dqtl_sed(:,k), & 948 dcfl_auto(:,k), dqil_auto(:,k), dqtl_auto(:,k), & 949 dcfc_sub(:,k), dqic_sub(:,k), dqtc_sub(:,k), & 950 dcfc_mix(:,k), dqic_mix(:,k), dqtc_mix(:,k), & 946 951 dcfc_sed(:,k), dqic_sed(:,k), dqtc_sed(:,k), & 947 dcfc_sub(:,k), dqic_sub(:,k), dqtc_sub(:,k), & 948 dcfc_mix(:,k), dqic_mix(:,k), dqtc_mix(:,k)) 952 dcfc_auto(:,k), dqic_auto(:,k), dqtc_auto(:,k)) 949 953 950 954 IF ( ok_nodeep_lscp ) THEN … … 1105 1109 1106 1110 IF ( ok_ice_sedim ) THEN 1107 qice_sedim = (fl sed(i) + flsed_lincont(i) + flsed_circont(i)) &1108 / ( paprs(i,k) - paprs(i,k+1) ) * RG * dtime1111 qice_sedim = (flauto(i) + flsed(i) + flsed_lincont(i) & 1112 + flsed_circont(i)) / ( paprs(i,k) - paprs(i,k+1) ) * RG * dtime 1109 1113 ! Add the ice that was sedimented, as it is not included in zqn 1110 1114 qlibef(i) = qlibef(i) + qice_sedim … … 1186 1190 1187 1191 IF ( ok_ice_sedim ) THEN 1188 qice_sedim = (fl sed(i) + flsed_lincont(i) + flsed_circont(i)) &1192 qice_sedim = (flauto(i) + flsed(i) + flsed_lincont(i) + flsed_circont(i)) & 1189 1193 / ( paprs(i,k) - paprs(i,k+1) ) * RG * dtime 1190 1194 ! Remove the ice that was sedimented. As it is not included in zqn, … … 1227 1231 !--between natural clouds and contrails 1228 1232 !--NB. we use qlincont / qcircont as a temporary variable to save this partition 1229 IF ( ok_precip_ contrails ) THEN1233 IF ( ok_precip_lincontrails ) THEN 1230 1234 DO i = 1, klon 1231 1235 IF ( zoliqi(i) .GT. 0. ) THEN 1232 1236 qlincont(i) = qice_lincont(i,k) / zoliqi(i) 1233 qcircont(i) = qice_circont(i,k) / zoliqi(i)1234 1237 ELSE 1235 1238 qlincont(i) = 0. 1236 qcircont(i) = 0.1237 1239 ENDIF 1238 1240 ENDDO … … 1241 1243 !--the cloud variables 1242 1244 DO i = 1, klon 1243 qice_cont = qice_lincont(i,k) + qice_circont(i,k) 1244 rneb(i,k) = rneb(i,k) - ( lincontfra(i) + circontfra(i) ) 1245 zoliq(i) = zoliq(i) - qice_cont 1246 zoliqi(i) = zoliqi(i) - qice_cont 1245 rneb(i,k) = rneb(i,k) - lincontfra(i) 1246 zoliq(i) = zoliq(i) - qice_lincont(i,k) 1247 zoliqi(i) = zoliqi(i) - qice_lincont(i,k) 1248 ENDDO 1249 ENDIF 1250 IF ( ok_precip_circontrails ) THEN 1251 DO i = 1, klon 1252 IF ( zoliqi(i) .GT. 0. ) THEN 1253 qcircont(i) = qice_circont(i,k) / zoliqi(i) 1254 ELSE 1255 qcircont(i) = 0. 1256 ENDIF 1257 ENDDO 1258 ELSE 1259 !--If contrails cirrus do not precipitate, they are removed temporarily from 1260 !--the cloud variables 1261 DO i = 1, klon 1262 rneb(i,k) = rneb(i,k) - circontfra(i) 1263 zoliq(i) = zoliq(i) - qice_circont(i,k) 1264 zoliqi(i) = zoliqi(i) - qice_circont(i,k) 1247 1265 ENDDO 1248 1266 ENDIF … … 1262 1280 dqrcol(:,k), dqrmelt(:,k), dqrfreez(:,k), & 1263 1281 dqsauto(:,k), dqsagg(:,k), dqsrim(:,k), & 1264 dqsmelt(:,k), dqsfreez(:,k) , dqised(:,k)&1282 dqsmelt(:,k), dqsfreez(:,k) & 1265 1283 ) 1266 1284 DO i = 1, klon … … 1277 1295 zneb, tot_zneb, zrho_up, zvelo_up, & 1278 1296 zrfl, zrflclr, zrflcld, zifl, ziflclr, ziflcld, & 1279 zradocond, zradoice, dqrauto(:,k), dqsauto(:,k) , dqised(:,k)&1297 zradocond, zradoice, dqrauto(:,k), dqsauto(:,k) & 1280 1298 ) 1281 1299 1282 1300 ENDIF ! ok_poprecip 1301 1302 IF ( ok_ice_sedim ) THEN 1303 zifl(:) = zifl(:) + flauto(:) 1304 ziflcld(:) = ziflcld(:) + flauto(:) 1305 ENDIF 1283 1306 1284 1307 IF ( ok_plane_contrail ) THEN … … 1286 1309 !--We alse compute the ice content that will be seen by radiation 1287 1310 !--(qradice_lincont/circont) 1288 IF ( ok_precip_c ontrails ) THEN1311 IF ( ok_precip_circontrails ) THEN 1289 1312 DO i = 1, klon 1290 1313 IF ( zoliqi(i) .GT. 0. ) THEN 1291 qradice_lincont(i,k) = zradocond(i) * qlincont(i)1292 qlincont(i) = zqs(i) * lincontfra(i) + zoliqi(i) * qlincont(i)1293 1314 qradice_circont(i,k) = zradocond(i) * qcircont(i) 1294 1315 qcircont(i) = zqs(i) * circontfra(i) + zoliqi(i) * qcircont(i) 1295 1316 ELSE 1296 qradice_lincont(i,k) = 0.1297 lincontfra(i) = 0.1298 qlincont(i) = 0.1299 1317 qradice_circont(i,k) = 0. 1300 1318 circontfra(i) = 0. … … 1306 1324 !--the cloud variables 1307 1325 DO i = 1, klon 1308 rneb(i,k) = rneb(i,k) + ( lincontfra(i) + circontfra(i) ) 1309 qice_cont = qice_lincont(i,k) + qice_circont(i,k) 1310 zoliq(i) = zoliq(i) + qice_cont 1311 zoliqi(i) = zoliqi(i) + qice_cont 1312 zradocond(i) = zradocond(i) + qice_cont 1313 zradoice(i) = zradoice(i) + qice_cont 1326 rneb(i,k) = rneb(i,k) + circontfra(i) 1327 zoliq(i) = zoliq(i) + qice_circont(i,k) 1328 zoliqi(i) = zoliqi(i) + qice_circont(i,k) 1329 zradocond(i) = zradocond(i) + qice_circont(i,k) 1330 zradoice(i) = zradoice(i) + qice_circont(i,k) 1331 qradice_circont(i,k) = qice_circont(i,k) 1332 ENDDO 1333 ENDIF 1334 IF ( ok_precip_lincontrails ) THEN 1335 DO i = 1, klon 1336 IF ( zoliqi(i) .GT. 0. ) THEN 1337 qradice_lincont(i,k) = zradocond(i) * qlincont(i) 1338 qlincont(i) = zqs(i) * lincontfra(i) + zoliqi(i) * qlincont(i) 1339 ELSE 1340 qradice_lincont(i,k) = 0. 1341 lincontfra(i) = 0. 1342 qlincont(i) = 0. 1343 ENDIF 1344 ENDDO 1345 ELSE 1346 !--If contrails do not precipitate, they are put back into 1347 !--the cloud variables 1348 DO i = 1, klon 1349 rneb(i,k) = rneb(i,k) + lincontfra(i) 1350 zoliq(i) = zoliq(i) + qice_lincont(i,k) 1351 zoliqi(i) = zoliqi(i) + qice_lincont(i,k) 1352 zradocond(i) = zradocond(i) + qice_lincont(i,k) 1353 zradoice(i) = zradoice(i) + qice_lincont(i,k) 1314 1354 qradice_lincont(i,k) = qice_lincont(i,k) 1315 qradice_circont(i,k) = qice_circont(i,k)1316 1355 ENDDO 1317 1356 ENDIF -
LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp_precip.f90
r5728 r5779 345 345 rneb, znebprecipclr, znebprecipcld, zneb, tot_zneb, zrho_up, zvelo_up, & 346 346 zrfl, zrflclr, zrflcld, zifl, ziflclr, ziflcld, & 347 zradocond, zradoice, dqrauto, dqsauto , dqised&347 zradocond, zradoice, dqrauto, dqsauto & 348 348 ) 349 349 … … 402 402 REAL, INTENT(OUT), DIMENSION(klon) :: dqrauto !--rain tendency due to autoconversion of cloud liquid [kg/kg/s] 403 403 REAL, INTENT(OUT), DIMENSION(klon) :: dqsauto !--snow tendency due to autoconversion of cloud ice [kg/kg/s] 404 REAL, INTENT(INOUT), DIMENSION(klon) :: dqised !--ice water content tendency due to sedimentation of ice crystals [kg/kg/s]405 404 406 405 … … 1376 1375 rain, rainclr, raincld, snow, snowclr, snowcld, & 1377 1376 qraindiag, qsnowdiag, dqrauto, dqrcol, dqrmelt, dqrfreez, & 1378 dqsauto, dqsagg, dqsrim, dqsmelt, dqsfreez , dqised)1377 dqsauto, dqsagg, dqsrim, dqsmelt, dqsfreez) 1379 1378 1380 1379 USE lmdz_lscp_ini, ONLY : prt_level, lunout … … 1439 1438 REAL, INTENT(OUT), DIMENSION(klon) :: dqsfreez !--snow tendency due to freezing [kg/kg/s] 1440 1439 REAL, INTENT(OUT), DIMENSION(klon) :: dqrfreez !--rain tendency due to freezing [kg/kg/s] 1441 REAL, INTENT(INOUT), DIMENSION(klon) :: dqised !--ice water content tendency due to sedimentation of ice crystals [kg/kg/s]1442 1440 1443 1441 -
LMDZ6/branches/contrails/libf/phylmd/phys_local_var_mod.F90
r5728 r5779 671 671 REAL, SAVE, ALLOCATABLE :: dqvc_adj(:,:), dqvc_sub(:,:), dqvc_con(:,:), dqvc_mix(:,:) 672 672 !$OMP THREADPRIVATE(dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix) 673 REAL, SAVE, ALLOCATABLE :: dqi_sed(:,:), dcf_sed(:,:), dqvc_sed(:,:) 674 !$OMP THREADPRIVATE(dqi_sed, dcf_sed, dqvc_sed) 675 REAL, SAVE, ALLOCATABLE :: dqi_auto(:,:), dcf_auto(:,:), dqvc_auto(:,:) 676 !$OMP THREADPRIVATE(dqi_auto, dcf_auto, dqvc_auto) 673 677 REAL, SAVE, ALLOCATABLE :: qsatliq(:,:), qsatice(:,:) 674 678 !$OMP THREADPRIVATE(qsatliq, qsatice) … … 711 715 REAL, SAVE, ALLOCATABLE :: dcfc_sed(:,:), dqic_sed(:,:), dqtc_sed(:,:) 712 716 !$OMP THREADPRIVATE(dcfc_sed, dqic_sed, dqtc_sed) 717 REAL, SAVE, ALLOCATABLE :: dcfl_auto(:,:), dqil_auto(:,:), dqtl_auto(:,:) 718 !$OMP THREADPRIVATE(dcfl_auto, dqil_auto, dqtl_auto) 719 REAL, SAVE, ALLOCATABLE :: dcfc_auto(:,:), dqic_auto(:,:), dqtc_auto(:,:) 720 !$OMP THREADPRIVATE(dcfc_auto, dqic_auto, dqtc_auto) 713 721 REAL, SAVE, ALLOCATABLE :: dcfc_sub(:,:), dqic_sub(:,:), dqtc_sub(:,:) 714 722 !$OMP THREADPRIVATE(dcfc_sub, dqic_sub, dqtc_sub) … … 763 771 REAL, SAVE, ALLOCATABLE :: dqsfreez(:,:) 764 772 !$OMP THREADPRIVATE(dqsfreez) 765 REAL, SAVE, ALLOCATABLE :: dqised(:,:)766 !$OMP THREADPRIVATE(dqised)767 REAL, SAVE, ALLOCATABLE :: dcfsed(:,:)768 !$OMP THREADPRIVATE(dcfsed)769 REAL, SAVE, ALLOCATABLE :: dqvcsed(:,:)770 !$OMP THREADPRIVATE(dqvcsed)771 773 772 774 ! variables for stratospheric aerosol … … 1289 1291 ALLOCATE(dqi_adj(klon,klev), dqi_sub(klon,klev), dqi_con(klon,klev), dqi_mix(klon,klev)) 1290 1292 ALLOCATE(dqvc_adj(klon,klev), dqvc_sub(klon,klev), dqvc_con(klon,klev), dqvc_mix(klon,klev)) 1293 ALLOCATE(dqi_sed(klon,klev), dcf_sed(klon,klev), dqvc_sed(klon,klev)) 1294 ALLOCATE(dqi_auto(klon,klev), dcf_auto(klon,klev), dqvc_auto(klon,klev)) 1291 1295 ALLOCATE(qsatliq(klon,klev), qsatice(klon,klev)) 1292 1296 ALLOCATE(issrfra100to150(klon), issrfra150to200(klon), issrfra200to250(klon)) … … 1309 1313 ALLOCATE(dcfl_mix(klon,klev), dqil_mix(klon,klev), dqtl_mix(klon,klev)) 1310 1314 ALLOCATE(dcfl_sed(klon,klev), dqil_sed(klon,klev), dqtl_sed(klon,klev)) 1315 ALLOCATE(dcfl_auto(klon,klev), dqil_auto(klon,klev), dqtl_auto(klon,klev)) 1311 1316 ALLOCATE(dcfc_sub(klon,klev), dqic_sub(klon,klev), dqtc_sub(klon,klev)) 1312 1317 ALLOCATE(dcfc_mix(klon,klev), dqic_mix(klon,klev), dqtc_mix(klon,klev)) 1313 1318 ALLOCATE(dcfc_sed(klon,klev), dqic_sed(klon,klev), dqtc_sed(klon,klev)) 1319 ALLOCATE(dcfc_auto(klon,klev), dqic_auto(klon,klev), dqtc_auto(klon,klev)) 1314 1320 ALLOCATE(cldfra_nocont(klon,klev), cldtau_nocont(klon,klev), cldemi_nocont(klon,klev)) 1315 1321 ALLOCATE(cldh_nocont(klon), contcov(klon), conttau(klon,klev), contemi(klon,klev)) … … 1325 1331 ALLOCATE(dqrauto(klon,klev), dqrcol(klon,klev), dqrmelt(klon,klev), dqrfreez(klon,klev)) 1326 1332 ALLOCATE(dqsauto(klon,klev), dqsagg(klon,klev), dqsrim(klon,klev), dqsmelt(klon,klev), dqsfreez(klon,klev)) 1327 ALLOCATE(dqised(klon,klev), dcfsed(klon,klev), dqvcsed(klon,klev))1328 1333 1329 1334 IF (CPPKEY_STRATAER) THEN … … 1729 1734 DEALLOCATE(dqi_adj, dqi_sub, dqi_con, dqi_mix) 1730 1735 DEALLOCATE(dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix) 1736 DEALLOCATE(dqi_sed, dcf_sed, dqvc_sed) 1737 DEALLOCATE(dqi_auto, dcf_auto, dqvc_auto) 1731 1738 DEALLOCATE(qsatliq, qsatice) 1732 1739 DEALLOCATE(issrfra100to150, issrfra150to200, issrfra200to250) … … 1743 1750 DEALLOCATE(dcfc_sub, dqic_sub, dqtc_sub, dcfc_mix, dqic_mix, dqtc_mix) 1744 1751 DEALLOCATE(dcfl_sed, dqil_sed, dqtl_sed, dcfc_sed, dqic_sed, dqtc_sed) 1752 DEALLOCATE(dcfl_auto, dqil_auto, dqtl_auto, dcfc_auto, dqic_auto, dqtc_auto) 1745 1753 DEALLOCATE(cldfra_nocont, cldtau_nocont, cldemi_nocont, conttau, contemi) 1746 1754 DEALLOCATE(cldh_nocont, contcov, fiwp_nocont, fiwc_nocont, ref_ice_nocont) … … 1755 1763 DEALLOCATE(dqrauto, dqrcol, dqrmelt, dqrfreez) 1756 1764 DEALLOCATE(dqsauto, dqsagg, dqsrim, dqsmelt, dqsfreez) 1757 DEALLOCATE(dqised, dcfsed, dqvcsed)1758 1765 1759 1766 IF (CPPKEY_STRATAER) THEN -
LMDZ6/branches/contrails/libf/phylmd/phys_output_ctrlout_mod.F90
r5728 r5779 1931 1931 TYPE(ctrl_out), SAVE :: o_dqsfreez = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), & 1932 1932 'dqsfreez', 'LS snow tendency due to freezing', 'kg/kg/s', (/ ('', i=1, 10) /)) 1933 TYPE(ctrl_out), SAVE :: o_dqised = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &1934 'dqised', 'Ice water content tendency due to sedimentation', 'kg/kg/s', (/ ('', i=1, 10) /))1935 TYPE(ctrl_out), SAVE :: o_dcfsed = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &1936 'dcfsed', 'Cloud fraction tendency due to sedimentation', 's-1', (/ ('', i=1, 10) /))1937 TYPE(ctrl_out), SAVE :: o_dqvcsed = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &1938 'dqvcsed', 'Cloud water vapor tendency due to sedimentation', 'kg/kg/s', (/ ('', i=1, 10) /))1939 1933 TYPE(ctrl_out), SAVE :: o_rhum = ctrl_out((/ 2, 5, 10, 10, 10, 10, 11, 11, 11, 11/), & 1940 1934 'rhum', 'Relative humidity', '-', (/ ('', i=1, 10) /)) … … 2489 2483 TYPE(ctrl_out), SAVE :: o_dqvcmix = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), & 2490 2484 'dqvcmix', 'Cloud mixing cloudy water vapor tendency', 'kg/kg/s', (/ ('', i=1, 10) /)) 2485 TYPE(ctrl_out), SAVE :: o_dqised = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), & 2486 'dqised', 'Ice water content tendency due to sedimentation', 'kg/kg/s', (/ ('', i=1, 10) /)) 2487 TYPE(ctrl_out), SAVE :: o_dcfsed = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), & 2488 'dcfsed', 'Cloud fraction tendency due to sedimentation', 's-1', (/ ('', i=1, 10) /)) 2489 TYPE(ctrl_out), SAVE :: o_dqvcsed = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), & 2490 'dqvcsed', 'Cloud water vapor tendency due to sedimentation', 'kg/kg/s', (/ ('', i=1, 10) /)) 2491 TYPE(ctrl_out), SAVE :: o_dqiauto = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), & 2492 'dqiauto', 'Ice water content tendency due to autoconversion', 'kg/kg/s', (/ ('', i=1, 10) /)) 2493 TYPE(ctrl_out), SAVE :: o_dcfauto = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), & 2494 'dcfauto', 'Cloud fraction tendency due to autoconversion', 's-1', (/ ('', i=1, 10) /)) 2495 TYPE(ctrl_out), SAVE :: o_dqvcauto = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), & 2496 'dqvcauto', 'Cloud water vapor tendency due to autoconversion', 'kg/kg/s', (/ ('', i=1, 10) /)) 2491 2497 TYPE(ctrl_out), SAVE :: o_qsatl = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), & 2492 2498 'qsatl', 'Saturation with respect to liquid', 'kg/kg', (/ ('', i=1, 10) /)) … … 2571 2577 TYPE(ctrl_out), SAVE :: o_dqtcsed = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), & 2572 2578 'dqtcsed', 'Ice sedimentation contrail cirrus total specific humidity tendency', 'kg/kg/s', (/ ('', i=1, 10) /)) 2579 TYPE(ctrl_out), SAVE :: o_dcflauto = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), & 2580 'dcflauto', 'Ice autoconversion linear contrail fraction tendency', 's-1', (/ ('', i=1, 10) /)) 2581 TYPE(ctrl_out), SAVE :: o_dqilauto = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), & 2582 'dqilauto', 'Ice autoconversion linear contrail ice specific humidity tendency', 'kg/kg/s', (/ ('', i=1, 10) /)) 2583 TYPE(ctrl_out), SAVE :: o_dqtlauto = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), & 2584 'dqtlauto', 'Ice autoconversion linear contrail total specific humidity tendency', 'kg/kg/s', (/ ('', i=1, 10) /)) 2585 TYPE(ctrl_out), SAVE :: o_dcfcauto = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), & 2586 'dcfcauto', 'Ice autoconversion contrail cirrus fraction tendency', 's-1', (/ ('', i=1, 10) /)) 2587 TYPE(ctrl_out), SAVE :: o_dqicauto = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), & 2588 'dqicauto', 'Ice autoconversion contrail cirrus ice specific humidity tendency', 'kg/kg/s', (/ ('', i=1, 10) /)) 2589 TYPE(ctrl_out), SAVE :: o_dqtcauto = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), & 2590 'dqtcauto', 'Ice autoconversion contrail cirrus total specific humidity tendency', 'kg/kg/s', (/ ('', i=1, 10) /)) 2573 2591 TYPE(ctrl_out), SAVE :: o_dcfcsub = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), & 2574 2592 'dcfcsub', 'Sublimation contrail cirrus fraction tendency', 's-1', (/ ('', i=1, 10) /)) -
LMDZ6/branches/contrails/libf/phylmd/phys_output_write_mod.F90
r5728 r5779 150 150 o_qrainlsc, o_qsnowlsc, o_dqreva, o_dqrauto, o_dqrcol, o_dqrmelt, o_dqrfreez, & 151 151 o_dqssub, o_dqsauto, o_dqsagg, o_dqsrim, o_dqsmelt, o_dqsfreez, & 152 o_dqised, o_dcfsed, o_dqvcsed, &153 152 o_duphy, o_dtphy, o_dqphy, o_dqphy2d, o_dqlphy, o_dqlphy2d, & 154 153 o_dqsphy, o_dqsphy2d, o_dqbsphy, o_dqbsphy2d, o_albe_srf, o_z0m_srf, o_z0h_srf, & … … 235 234 o_qsub, o_qissr, o_qcld, o_subfra, o_issrfra, o_gammacond, & 236 235 o_dcfsub, o_dcfcon, o_dcfmix, o_dqiadj, o_dqisub, o_dqicon, o_dqimix, & 236 o_dqised, o_dcfsed, o_dqvcsed, o_dqiauto, o_dcfauto, o_dqvcauto, & 237 237 o_dqvcadj, o_dqvcsub, o_dqvccon, o_dqvcmix, o_qsatl, o_qsati, & 238 238 o_issrfra100to150, o_issrfra150to200, o_issrfra200to250, & … … 246 246 o_dcflmix, o_dqilmix, o_dqtlmix, & 247 247 o_dcflsed, o_dqilsed, o_dqtlsed, o_dcfcsed, o_dqicsed, o_dqtcsed, & 248 o_dcflauto, o_dqilauto, o_dqtlauto, o_dcfcauto, o_dqicauto, o_dqtcauto, & 248 249 o_dcfcsub, o_dqicsub, o_dqtcsub, o_dcfcmix, o_dqicmix, o_dqtcmix, & 249 250 o_cldfra_nocont, o_cldtau_nocont, o_cldemi_nocont, o_cldh_nocont, & … … 374 375 dqi_adj, dqi_sub, dqi_con, dqi_mix, & 375 376 dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, & 377 dqi_sed, dcf_sed, dqvc_sed, dqi_auto, dcf_auto, dqvc_auto, & 376 378 qsatliq, qsatice, & 377 379 issrfra100to150, issrfra150to200, issrfra200to250, & … … 384 386 dcfl_mix, dqil_mix, dqtl_mix, & 385 387 dcfl_sed, dqil_sed, dqtl_sed, dcfc_sed, dqic_sed, dqtc_sed, & 388 dcfl_auto, dqil_auto, dqtl_auto, dcfc_auto, dqic_auto, dqtc_auto, & 386 389 dcfc_sub, dqic_sub, dqtc_sub, dcfc_mix, dqic_mix, dqtc_mix, & 387 390 cldfra_nocont, cldtau_nocont, cldemi_nocont, cldh_nocont, & … … 415 418 dqrauto,dqrcol,dqrmelt,dqrfreez, & 416 419 dqsauto,dqsagg,dqsrim,dqsmelt,dqsfreez, & 417 dqised, dcfsed, dqvcsed, &418 420 d_t_dyn, & 419 421 d_q_dyn, d_ql_dyn, d_qs_dyn, d_qbs_dyn, & … … 2225 2227 CALL histwrite_phy(o_issrfra400to500, issrfra400to500) 2226 2228 IF ( ok_ice_sedim ) THEN 2227 CALL histwrite_phy(o_dqised, dqised) 2228 CALL histwrite_phy(o_dcfsed, dcfsed) 2229 CALL histwrite_phy(o_dqvcsed, dqvcsed) 2229 CALL histwrite_phy(o_dqised, dqi_sed) 2230 CALL histwrite_phy(o_dcfsed, dcf_sed) 2231 CALL histwrite_phy(o_dqvcsed, dqvc_sed) 2232 CALL histwrite_phy(o_dqiauto, dqi_auto) 2233 CALL histwrite_phy(o_dcfauto, dcf_auto) 2234 CALL histwrite_phy(o_dqvcauto, dqvc_auto) 2230 2235 ENDIF 2231 2236 ENDIF … … 2261 2266 CALL histwrite_phy(o_dqilsed, dqil_sed) 2262 2267 CALL histwrite_phy(o_dqtlsed, dqtl_sed) 2268 CALL histwrite_phy(o_dcflauto, dcfl_auto) 2269 CALL histwrite_phy(o_dqilauto, dqil_auto) 2270 CALL histwrite_phy(o_dqtlauto, dqtl_auto) 2263 2271 CALL histwrite_phy(o_dcfcsub, dcfc_sub) 2264 2272 CALL histwrite_phy(o_dqicsub, dqic_sub) … … 2270 2278 CALL histwrite_phy(o_dqicsed, dqic_sed) 2271 2279 CALL histwrite_phy(o_dqtcsed, dqtc_sed) 2280 CALL histwrite_phy(o_dcfcauto, dcfc_auto) 2281 CALL histwrite_phy(o_dqicauto, dqic_auto) 2282 CALL histwrite_phy(o_dqtcauto, dqtc_auto) 2272 2283 CALL histwrite_phy(o_cldfra_nocont, cldfra_nocont) 2273 2284 CALL histwrite_phy(o_cldtau_nocont, cldtau_nocont) -
LMDZ6/branches/contrails/libf/phylmd/physiq_mod.F90
r5717 r5779 192 192 ! proprecip 193 193 qraindiag, qsnowdiag, & 194 dqreva, dqssub, dqised, dcfsed, dqvcsed,&194 dqreva, dqssub, & 195 195 dqrauto,dqrcol,dqrmelt,dqrfreez, & 196 196 dqsauto,dqsagg,dqsrim,dqsmelt,dqsfreez, & … … 334 334 ql_seri_lscp, qi_seri_lscp, & 335 335 dcf_sub, dcf_con, dcf_mix, dqi_adj, dqi_sub, dqi_con, dqi_mix, & 336 dqi_sed, dcf_sed, dqvc_sed, & 336 337 dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, qsatliq, qsatice, & 337 338 !-- LSCP - aviation and contrails variables … … 4010 4011 cf_seri, qvc_seri, u_seri, v_seri, & 4011 4012 qsub, qissr, qcld, subfra, issrfra, gamma_cond, & 4012 dcf_sub, dcf_con, dcf_mix, dqi sed, dcfsed, dqvcsed, &4013 dcf_sub, dcf_con, dcf_mix, dqi_sed, dcf_sed, dqvc_sed, & 4013 4014 dqi_adj, dqi_sub, dqi_con, dqi_mix, & 4014 4015 dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, qsatliq, qsatice, &
Note: See TracChangeset
for help on using the changeset viewer.