Changeset 5452 for LMDZ6/branches/contrails/libf
- Timestamp:
- Dec 23, 2024, 6:12:29 PM (5 weeks ago)
- Location:
- LMDZ6/branches/contrails/libf
- Files:
-
- 1 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/contrails/libf/misc/readTracFiles_mod.f90
r5393 r5452 122 122 !--- SOME PARAMETERS THAT ARE NOT LIKELY TO CHANGE OFTEN 123 123 CHARACTER(LEN=maxlen), SAVE :: tran0 = 'air' !--- Default transporting fluid 124 CHARACTER(LEN=maxlen), PARAMETER :: old_phases = 'vlibfc ' !--- Old phases for water (no separator)125 CHARACTER(LEN=maxlen), PARAMETER :: known_phases = 'glsbfc ' !--- Known phases initials124 CHARACTER(LEN=maxlen), PARAMETER :: old_phases = 'vlibfca' !--- Old phases for water (no separator) 125 CHARACTER(LEN=maxlen), PARAMETER :: known_phases = 'glsbfca' !--- Known phases initials 126 126 INTEGER, PARAMETER :: nphases = LEN_TRIM(known_phases) !--- Number of phases 127 127 CHARACTER(LEN=maxlen), SAVE :: phases_names(nphases) & !--- Known phases names 128 = ['gaseous ', 'liquid ', 'solid ','blownSnow', 'fracCloud', 'cldVapRat' ]128 = ['gaseous ', 'liquid ', 'solid ','blownSnow', 'fracCloud', 'cldVapRat', 'aviContRa'] 129 129 CHARACTER(LEN=1), SAVE :: phases_sep = '_' !--- Phase separator 130 130 CHARACTER(LEN=maxlen), SAVE :: isoFile = 'isotopes_params.def'!--- Name of the isotopes parameters file -
LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp.f90
r5450 r5452 24 24 dqi_adj, dqi_sub, dqi_con, dqi_mix, dqvc_adj, & 25 25 dqvc_sub, dqvc_con, dqvc_mix, qsatl, qsati, & 26 Tcontr, qcontr, qcontr2, fcontrN, fcontrP, dcf_avi,& 27 dqi_avi, dqvc_avi, flight_dist, flight_h2o, & 26 rcont_seri, flight_dist, flight_h2o, & 27 Tcritcont, qcritcont, potcontfraP, potcontfraNP, & 28 dcf_avi, dqi_avi, dqvc_avi, & 28 29 cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv, & 29 30 qraindiag, qsnowdiag, dqreva, dqssub, dqrauto, & … … 119 120 USE lmdz_lscp_ini, ONLY : ok_poprecip, ok_bug_phase_lscp 120 121 USE lmdz_lscp_ini, ONLY : ok_ice_supersat, ok_unadjusted_clouds, iflag_icefrac 122 USE lmdz_lscp_ini, ONLY : ok_plane_contrail 121 123 122 124 IMPLICIT NONE … … 172 174 ! INPUT/OUTPUT aviation 173 175 !-------------------------------------------------- 176 REAL, DIMENSION(klon,klev), INTENT(INOUT):: rcont_seri ! ratio of contrails fraction to total cloud fraction [-] 174 177 REAL, DIMENSION(klon,klev), INTENT(IN) :: flight_dist ! Aviation distance flown within the mesh [m/s/mesh] 175 178 REAL, DIMENSION(klon,klev), INTENT(IN) :: flight_h2o ! Aviation H2O emitted within the mesh [kg H2O/s/mesh] … … 229 232 ! for contrails and aviation 230 233 231 REAL, DIMENSION(klon,klev), INTENT(OUT) :: Tcontr !--threshold temperature for contrail formation [K] 232 REAL, DIMENSION(klon,klev), INTENT(OUT) :: qcontr !--threshold humidity for contrail formation [kg/kg] 233 REAL, DIMENSION(klon,klev), INTENT(OUT) :: qcontr2 !--// (2nd expression more consistent with LMDZ expression of q) 234 REAL, DIMENSION(klon,klev), INTENT(OUT) :: fcontrN !--fraction of grid favourable to non-persistent contrails 235 REAL, DIMENSION(klon,klev), INTENT(OUT) :: fcontrP !--fraction of grid favourable to persistent contrails 234 REAL, DIMENSION(klon,klev), INTENT(OUT) :: Tcritcont ! critical temperature for contrail formation [K] 235 REAL, DIMENSION(klon,klev), INTENT(OUT) :: qcritcont ! critical specific humidity for contrail formation [kg/kg] 236 REAL, DIMENSION(klon,klev), INTENT(OUT) :: potcontfraP ! potential persistent contrail fraction [-] 237 REAL, DIMENSION(klon,klev), INTENT(OUT) :: potcontfraNP ! potential non-persistent contrail fraction [-] 236 238 REAL, DIMENSION(klon,klev), INTENT(OUT) :: dcf_avi !--cloud fraction tendency because of aviation [s-1] 237 239 REAL, DIMENSION(klon,klev), INTENT(OUT) :: dqi_avi !--specific ice content tendency because of aviation [kg/kg/s] … … 308 310 REAL, DIMENSION(klon) :: qvc, qvcl, shear 309 311 REAL :: delta_z 310 !--Added for ice supersaturation (ok_ice_supersat) and contrails (ok_plane_contrails) 312 ! for contrails 313 REAL, DIMENSION(klon) :: contfra 314 !--Added for ice supersaturation (ok_ice_supersat) and contrails (ok_plane_contrail) 311 315 ! Constants used for calculating ratios that are advected (using a parent-child 312 316 ! formalism). This is not done in the dynamical core because at this moment, … … 412 416 dqvc_con(:,:) = 0. 413 417 dqvc_mix(:,:) = 0. 414 fcontrN(:,:) = 0. 415 fcontrP(:,:) = 0. 416 Tcontr(:,:) = missing_val 417 qcontr(:,:) = missing_val 418 qcontr2(:,:) = missing_val 418 Tcritcont(:,:) = missing_val 419 qcritcont(:,:) = missing_val 420 potcontfraP(:,:)= missing_val 421 potcontfraNP(:,:)= missing_val 419 422 dcf_avi(:,:) = 0. 420 423 dqi_avi(:,:) = 0. … … 725 728 dqi_adj(:,k), dqi_sub(:,k), dqi_con(:,k), dqi_mix(:,k), & 726 729 dqvc_adj(:,k), dqvc_sub(:,k), dqvc_con(:,k), dqvc_mix(:,k), & 727 Tcontr(:,k), qcontr(:,k), qcontr2(:,k), fcontrN(:,k), fcontrP(:,k), &728 flight_dist(:,k), flight_h2o(:,k), &730 rcont_seri(:,k), flight_dist(:,k), flight_h2o(:,k), contfra, & 731 Tcritcont(:,k), qcritcont(:,k), potcontfraP(:,k), potcontfraNP(:,k), & 729 732 dcf_avi(:,k), dqi_avi(:,k), dqvc_avi(:,k)) 730 733 … … 1070 1073 !--The MAX barrier is a safeguard that should not be activated 1071 1074 rvc_seri(i,k) = MIN(MAX(rvc_seri(i,k), 0.), 1.) 1075 IF ( ok_plane_contrail ) THEN 1076 IF ( rneb(i,k) .GT. min_qParent ) THEN 1077 rcont_seri(i,k) = contfra(i) / rneb(i,k) 1078 ELSE 1079 rcont_seri(i,k) = min_ratio 1080 ENDIF 1081 !--This barrier should never be activated 1082 rcont_seri(i,k) = MIN(MAX(rcont_seri(i,k), 0.), 1.) 1083 ENDIF 1072 1084 1073 1085 !--Diagnostics -
LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp_condensation.f90
r5450 r5452 99 99 cldfra, qincld, qvc, issrfra, qissr, dcf_sub, dcf_con, dcf_mix, & 100 100 dqi_adj, dqi_sub, dqi_con, dqi_mix, dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, & 101 Tcontr, qcontr, qcontr2, fcontrN, fcontrP, flight_dist, flight_h2o, &102 dcf_avi, dqi_avi, dqvc_avi)101 rcont_seri, flight_dist, flight_h2o, contfra, & 102 Tcritcont, qcritcont, potcontfraP, potcontfraNP, dcf_avi, dqi_avi, dqvc_avi) 103 103 104 104 !---------------------------------------------------------------------- … … 119 119 USE lmdz_lscp_ini, ONLY: eps, temp_nowater, ok_weibull_warm_clouds 120 120 USE lmdz_lscp_ini, ONLY: ok_unadjusted_clouds, iflag_cloud_sublim_pdf 121 USE lmdz_lscp_ini, ONLY: lunout121 USE lmdz_lscp_ini, ONLY: ok_plane_contrail 122 122 123 123 USE lmdz_lscp_ini, ONLY: depo_coef_cirrus, capa_cond_cirrus, std_subl_pdf_lscp, & 124 124 mu_subl_pdf_lscp, beta_pdf_lscp, temp_thresh_pdf_lscp, & 125 125 std100_pdf_lscp, k0_pdf_lscp, kappa_pdf_lscp, & 126 coef_mixing_lscp, coef_shear_lscp, & 127 chi_mixing_lscp, rho_ice 126 coef_mixing_lscp, coef_shear_lscp, chi_mixing_lscp 127 128 USE lmdz_aviation, ONLY: contrails_mixing, contrails_formation_evolution 128 129 129 130 IMPLICIT NONE … … 144 145 REAL, INTENT(IN) , DIMENSION(klon) :: qi_seri ! specific ice water content [kg/kg] 145 146 REAL, INTENT(IN) , DIMENSION(klon) :: shear ! vertical shear [s-1] 146 REAL, INTENT(IN) , DIMENSION(klon) :: pbl_eps ! 147 REAL, INTENT(IN) , DIMENSION(klon) :: cell_area ! 147 REAL, INTENT(IN) , DIMENSION(klon) :: pbl_eps ! TKE dissipation [m2/s3] 148 REAL, INTENT(IN) , DIMENSION(klon) :: cell_area ! cell area [m2] 148 149 REAL, INTENT(IN) , DIMENSION(klon) :: temp ! temperature [K] 149 150 REAL, INTENT(IN) , DIMENSION(klon) :: qtot ! total specific humidity (without precip) [kg/kg] … … 155 156 ! Input for aviation 156 157 ! 158 REAL, INTENT(INOUT), DIMENSION(klon) :: rcont_seri ! ratio of contrails fraction to total cloud fraction [-] 157 159 REAL, INTENT(IN), DIMENSION(klon) :: flight_dist ! 158 160 REAL, INTENT(IN), DIMENSION(klon) :: flight_h2o ! … … 189 191 ! NB. idem for the INOUT 190 192 ! 191 REAL, INTENT(INOUT), DIMENSION(klon) :: Tcontr ! critical temperature for contrail formation (T_LM in Schumann 1996, Eq 31 in appendix 2) [K]192 REAL, INTENT(INOUT), DIMENSION(klon) :: qcontr !193 REAL, INTENT(INOUT), DIMENSION(klon) :: qc ontr2 !194 REAL, INTENT(INOUT), DIMENSION(klon) :: fcontrN !195 REAL, INTENT(INOUT), DIMENSION(klon) :: fcontrP !196 REAL, INTENT(INOUT), DIMENSION(klon) :: dcf_avi ! cloud fraction tendency because of aviation [s-1]197 REAL, INTENT(INOUT), DIMENSION(klon) :: dqi_avi ! specific ice content tendency because of aviation [kg/kg/s]198 REAL, INTENT(INOUT), DIMENSION(klon) :: dqvc_avi ! specific cloud water vapor tendency because of aviation [kg/kg/s]193 REAL, INTENT(INOUT), DIMENSION(klon) :: contfra ! contrail fraction [-] 194 REAL, INTENT(INOUT), DIMENSION(klon) :: Tcritcont ! critical temperature for contrail formation [K] 195 REAL, INTENT(INOUT), DIMENSION(klon) :: qcritcont ! critical specific humidity for contrail formation [kg/kg] 196 REAL, INTENT(INOUT), DIMENSION(klon) :: potcontfraP ! potential persistent contrail fraction [-] 197 REAL, INTENT(INOUT), DIMENSION(klon) :: potcontfraNP ! potential non-persistent contrail fraction [-] 198 REAL, INTENT(INOUT), DIMENSION(klon) :: dcf_avi ! cloud fraction tendency because of aviation [s-1] 199 REAL, INTENT(INOUT), DIMENSION(klon) :: dqi_avi ! specific ice content tendency because of aviation [kg/kg/s] 200 REAL, INTENT(INOUT), DIMENSION(klon) :: dqvc_avi ! specific cloud water vapor tendency because of aviation [kg/kg/s] 199 201 ! 200 202 ! Local … … 237 239 ! for cell properties 238 240 REAL :: rho, rhodz, dz 239 !REAL :: V_cell, M_cell 240 ! 241 ! for aviation and cell properties 242 !REAL :: dqt_avi 243 !REAL :: contrail_fra 244 ! 245 ! 246 !--more local variables for diagnostics 247 !--imported from YOMCST.h 248 !--eps_w = 0.622 = ratio of molecular masses of water and dry air (kg H2O kg air -1) 249 !--RCPD = 1004 J kg air−1 K−1 = the isobaric heat capacity of air 250 !--values from Schumann, Meteorol Zeitschrift, 1996 251 !--EiH2O = 1.25 / 2.24 / 8.94 kg H2O / kg fuel for kerosene / methane / dihydrogen 252 !--Qheat = 43. / 50. / 120. MJ / kg fuel for kerosene / methane / dihydrogen 253 !REAL, PARAMETER :: EiH2O=1.25 !--emission index of water vapour for kerosene (kg kg-1) 254 !REAL, PARAMETER :: Qheat=43.E6 !--specific combustion heat for kerosene (J kg-1) 255 !REAL, PARAMETER :: eta=0.3 !--average propulsion efficiency of the aircraft 256 !--Gcontr is the slope of the mean phase trajectory in the turbulent exhaust field on an absolute 257 !--temperature versus water vapor partial pressure diagram. G has the unit of Pa K−1. Rap et al JGR 2010. 258 !REAL :: Gcontr 259 !--Tcontr = critical temperature for contrail formation (T_LM in Schumann 1996, Eq 31 in appendix 2) 260 !--qsatliqcontr = e_L(T_LM) in Schumann 1996 but expressed in specific humidity (kg kg humid air-1) 261 !REAL :: qsatliqcontr 262 263 264 !----------------------------------------------- 265 ! Initialisations 266 !----------------------------------------------- 267 268 ! Ajout des émissions de H2O dues à l'aviation 269 ! q is the specific humidity (kg/kg humid air) hence the complicated equation to update q 270 ! qnew = ( m_humid_air * qold + dm_H2O ) / ( m_humid_air + dm_H2O ) 271 ! = ( m_dry_air * qold + dm_h2O * (1-qold) ) / (m_dry_air + dm_H2O * (1-qold) ) 272 ! The equation is derived by writing m_humid_air = m_dry_air + m_H2O = m_dry_air / (1-q) 273 ! flight_h2O is in kg H2O / s / cell 274 ! 275 !IF (ok_plane_h2o) THEN 276 ! q = ( M_cell*q + flight_h2o(i,k)*dtime*(1.-q) ) / (M_cell + flight_h2o(i,k)*dtime*(1.-q) ) 277 !ENDIF 278 241 REAL :: V_cell, M_cell 279 242 280 243 qzero(:) = 0. … … 338 301 !--and the condensation process is slightly adapted 339 302 !--This can happen only if ok_weibull_warm_clouds = .TRUE. 340 ! AB WARM CLOUD341 !cldfra(i) = 0.342 !qcld(i) = 0.343 !qvc(i) = 0.344 303 cldfra(i) = MAX(0., MIN(1., cf_seri(i))) 345 304 qcld(i) = MAX(0., MIN(qtot(i), ql_seri(i) + qi_seri(i) + rvc_seri(i) * qtot(i))) … … 376 335 dz = rhodz / rho 377 336 !--Cell volume [m3] 378 !V_cell = dz * cell_area(i)337 V_cell = dz * cell_area(i) 379 338 !--Cell dry air mass [kg] 380 !M_cell = rhodz * cell_area(i)339 M_cell = rhodz * cell_area(i) 381 340 382 341 … … 411 370 qiceincld = ( qcld(i) / cldfra(i) - qvapincld ) 412 371 413 ! AB WARM CLOUD414 !IF ( ok_unadjusted_clouds ) THEN415 372 IF ( ok_unadjusted_clouds .AND. .NOT. ok_warm_cloud ) THEN 416 373 CALL deposition_sublimation(qvapincld, qiceincld, temp(i), qsat(i), & … … 572 529 qt_cond = ( pdf_e3 + pdf_loc * cf_cond ) * qsatl(i) / 100. 573 530 574 ! AB WARM CLOUD575 !IF ( ok_warm_cloud ) THEN576 ! !--If the statistical scheme is activated, the calculated increase is equal577 ! !--to the cloud fraction, we assume saturation adjustment, and the578 ! !--condensation process stops579 ! cldfra(i) = cf_cond580 ! qcld(i) = qt_cond581 ! qvc(i) = cldfra(i) * qsat(i)582 583 !ELSEIF ( cf_cond .GT. eps ) THEN584 531 IF ( cf_cond .GT. eps ) THEN 585 532 … … 591 538 dqt_con = MIN(dqt_con, qclr) 592 539 593 594 ! AB WARM CLOUD595 !IF ( ok_unadjusted_clouds ) THEN596 540 IF ( ok_unadjusted_clouds .AND. .NOT. ok_warm_cloud ) THEN 597 541 !--Here, the initial vapor in the cloud is gamma_cond*qsat, and we compute … … 646 590 !--but does not cover the entire mesh. 647 591 ! 648 ! AB WARM CLOUD649 !IF ( ( cldfra(i) .LT. ( 1. - dcf_con(i) - eps ) ) .AND. ( cldfra(i) .GT. eps ) &650 ! .AND. .NOT. ok_warm_cloud ) THEN651 592 IF ( ( cldfra(i) .LT. ( 1. - eps ) ) .AND. ( cldfra(i) .GT. eps ) ) THEN 652 653 593 !--Initialisation 654 594 dcf_mix_sub = 0. … … 658 598 dqt_mix_issr = 0. 659 599 dqvc_mix_issr = 0. 660 661 600 662 601 !-- PART 1 - TURBULENT DIFFUSION … … 760 699 / ( subfra_mix + cldfra_mix * sigma_mix ) 761 700 762 ! AB WARM CLOUD763 !IF ( ok_unadjusted_clouds ) THEN764 701 IF ( ok_unadjusted_clouds .AND. .NOT. ok_warm_cloud ) THEN 765 702 qiceincld = ( qcld(i) - qvc(i) ) * cldfra_mix * sigma_mix / cldfra(i) & … … 801 738 IF ( issrfra(i) .GT. eps ) THEN 802 739 803 ! AB WARM CLOUD804 !IF ( ok_unadjusted_clouds ) THEN805 740 IF ( ok_unadjusted_clouds .AND. .NOT. ok_warm_cloud ) THEN 806 741 qvapinmix = ( qissr(i) * issrfra_mix / issrfra(i) & … … 821 756 ENDIF ! ok_unadjusted_clouds 822 757 823 824 758 ENDIF ! issrfra .GT. eps 825 759 … … 829 763 dqvc_mix(i) = dqvc_mix_sub + dqvc_mix_issr 830 764 dqi_mix(i) = dqt_mix - dqvc_mix(i) 765 766 IF ( ok_plane_contrail .AND. ( rcont_seri(i) .GT. eps ) ) THEN 767 CALL contrails_mixing( & 768 dtime, pplay(i), shear(i), pbl_eps(i), cell_area(i), dz, & 769 temp(i), qtot(i), qsat(i), subfra(i), qsub(i), issrfra(i), qissr(i), & 770 cldfra(i), qcld(i), qvc(i), rcont_seri(i), & 771 dcf_mix(i), dqvc_mix(i), dqi_mix(i), dqt_mix, dcf_mix_issr, dqt_mix_issr) 772 ENDIF 831 773 832 774 !--Add tendencies … … 844 786 !---------------------------------------- 845 787 846 !--Add a source of cirrus from aviation contrails 847 !IF ( ok_plane_contrail ) THEN 848 ! dcf_avi(i) = 0. 849 ! dqi_avi(i) = 0. 850 ! dqvc_avi(i) = 0. 851 ! ! TODO implement ok_unadjusted_clouds 852 ! IF ( issrfra(i) .GT. eps ) THEN 853 ! contrail_fra = MIN(1., flight_m(i,k) * dtime * contrail_cross_section / V_cell) 854 ! dcf_avi(i) = issrfra(i) * contrail_fra 855 ! dqt_avi = dcf_avi(i) * qissr(i) / issrfra(i) 856 ! dqvc_avi(i) = qsat(i) * dcf_avi(i) 857 ! 858 ! !--Add tendencies 859 ! cldfra(i) = cldfra(i) + dcf_avi(i) 860 ! issrfra(i) = issrfra(i) - dcf_avi(i) 861 ! qcld(i) = qcld(i) + dqt_avi 862 ! qvc(i) = qvc(i) + dqvc_avi(i) 863 ! qissr(i) = qissr(i) - dqt_avi 864 865 ! !--Diagnostics 866 ! dqi_avi(i) = dqt_avi - qsat(i) * dcf_avi(i) 867 ! ENDIF 868 ! dcf_avi(i) = dcf_avi(i) / dtime 869 ! dqi_avi(i) = dqi_avi(i) / dtime 870 ! dqvc_avi(i) = dqvc_avi(i) / dtime 871 !ENDIF 872 873 788 IF ( ok_plane_contrail ) THEN 789 CALL contrails_formation_evolution( & 790 dtime, pplay(i), temp(i), qsat(i), qsatl(i), gamma_cond(i), & 791 rcont_seri(i), flight_dist(i), cldfra(i), qvc(i), & 792 V_cell, M_cell, pdf_loc, pdf_scale, pdf_alpha, & 793 Tcritcont(i), qcritcont(i), potcontfraP(i), potcontfraNP(i), contfra(i), & 794 dcf_avi(i), dqvc_avi(i), dqi_avi(i) & 795 ) 796 797 !--Add tendencies 798 issrfra(i) = MAX(0., issrfra(i) - dcf_avi(i)) 799 qissr(i) = MAX(0., qissr(i) - dqvc_avi(i) - dqi_avi(i)) 800 cldfra(i) = MIN(1., cldfra(i) + dcf_avi(i)) 801 qcld(i) = MIN(qtot(i), qcld(i) + dqvc_avi(i) + dqi_avi(i)) 802 qvc(i) = MIN(qcld(i), qvc(i) + dqvc_avi(i)) 803 ENDIF 874 804 875 805 !------------------------------------------- … … 899 829 dqvc_con(i) = dqvc_con(i) / dtime 900 830 dqvc_mix(i) = dqvc_mix(i) / dtime 831 IF ( ok_plane_contrail ) THEN 832 dcf_avi(i) = dcf_avi(i) / dtime 833 dqi_avi(i) = dqi_avi(i) / dtime 834 dqvc_avi(i) = dqvc_avi(i) / dtime 835 ENDIF 901 836 902 837 ENDIF ! ( temp(i) .GT. temp_nowater ) .AND. .NOT. ok_weibull_warm_clouds -
LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp_ini.f90
r5450 r5452 205 205 !--End of the parameters for condensation and ice supersaturation 206 206 207 !--Parameters for aviation 208 209 LOGICAL, SAVE, PROTECTED :: ok_plane_contrail ! activates the contrails parameterisation 210 !$OMP THREADPRIVATE(ok_plane_contrail) 211 212 REAL, SAVE, PROTECTED :: aspect_ratio_contrails=.1 ! [-] aspect ratio of the contrails clouds 213 !$OMP THREADPRIVATE(aspect_ratio_contrails) 214 215 REAL, SAVE, PROTECTED :: coef_mixing_contrails ! [-] tuning coefficient for the contrails mixing process 216 !$OMP THREADPRIVATE(coef_mixing_contrails) 217 218 REAL, SAVE, PROTECTED :: coef_shear_contrails ! [-] additional coefficient for the contrails shearing process (subprocess of the contrails mixing process) 219 !$OMP THREADPRIVATE(coef_shear_contrails) 220 221 REAL, SAVE, PROTECTED :: chi_mixing_contrails ! [-] factor for the macro distribution of ISSRs wrt clouds in a gridbox 222 !$OMP THREADPRIVATE(chi_mixing_contrails) 223 224 REAL, SAVE, PROTECTED :: rm_ice_crystals_contrails=7.5E-6 ! [m] geometric radius of ice crystals in contrails 225 !$OMP THREADPRIVATE(rm_ice_crystals_contrails) 226 227 REAL, SAVE, PROTECTED :: EI_H2O_aviation=1.25 ! [kgH2O/kg] emission index of water vapor for a given fuel type 228 !$OMP THREADPRIVATE(EI_H2O_aviation) 229 230 REAL, SAVE, PROTECTED :: qheat_fuel_aviation=43.2E6 ! [J/kg] specific combustion heat for a given fuel type 231 !$OMP THREADPRIVATE(qheat_fuel_aviation) 232 233 REAL, SAVE, PROTECTED :: prop_efficiency_aviation=.3 ! [-] average propulsion efficiency of aircraft 234 !$OMP THREADPRIVATE(prop_efficiency_aviation) 235 236 REAL, SAVE, PROTECTED :: linear_contrails_lifetime=10800. ! [s] timescale of the lifetime of linear contrails 237 !$OMP THREADPRIVATE(linear_contrails_lifetime) 238 !--End of the parameters for aviation 239 207 240 !--Parameters for poprecip 208 241 LOGICAL, SAVE, PROTECTED :: ok_poprecip=.FALSE. ! use the processes-oriented formulation of precipitations … … 303 336 CONTAINS 304 337 305 SUBROUTINE lscp_ini(dtime,lunout_in,prt_level_in,ok_ice_supersat_in, iflag_ratqs, fl_cor_ebil_in, & 338 SUBROUTINE lscp_ini(dtime, lunout_in, prt_level_in, ok_ice_supersat_in, ok_plane_contrail_in, & 339 iflag_ratqs, fl_cor_ebil_in, & 306 340 RCPD_in, RLSTT_in, RLVTT_in, RLMLT_in, RVTMP2_in, & 307 341 RTT_in, RD_in, RV_in, RG_in, RPI_in, EPS_W_in) … … 313 347 REAL, INTENT(IN) :: dtime 314 348 INTEGER, INTENT(IN) :: lunout_in,prt_level_in,iflag_ratqs,fl_cor_ebil_in 315 LOGICAL, INTENT(IN) :: ok_ice_supersat_in 349 LOGICAL, INTENT(IN) :: ok_ice_supersat_in, ok_plane_contrail_in 316 350 317 351 REAL, INTENT(IN) :: RCPD_in, RLSTT_in, RLVTT_in, RLMLT_in … … 326 360 327 361 ok_ice_supersat=ok_ice_supersat_in 362 ok_plane_contrail=ok_plane_contrail_in 328 363 329 364 RG=RG_in … … 427 462 CALL getin_p('coef_shear_lscp',coef_shear_lscp) 428 463 CALL getin_p('chi_mixing_lscp',chi_mixing_lscp) 464 ! for aviation 465 CALL getin_p('aspect_ratio_contrails',aspect_ratio_contrails) 466 coef_mixing_contrails=coef_mixing_lscp 467 CALL getin_p('coef_mixing_contrails',coef_mixing_contrails) 468 coef_shear_contrails=coef_shear_lscp 469 CALL getin_p('coef_shear_contrails',coef_shear_contrails) 470 chi_mixing_contrails=chi_mixing_lscp 471 CALL getin_p('chi_mixing_contrails',chi_mixing_contrails) 472 CALL getin_p('rm_ice_crystals_contrails',rm_ice_crystals_contrails) 473 CALL getin_p('EI_H2O_aviation',EI_H2O_aviation) 474 CALL getin_p('qheat_fuel_aviation',qheat_fuel_aviation) 475 CALL getin_p('prop_efficiency_aviation',prop_efficiency_aviation) 476 CALL getin_p('linear_contrails_lifetime',linear_contrails_lifetime) 429 477 430 478 … … 508 556 WRITE(lunout,*) 'lscp_ini, coef_shear_lscp:', coef_shear_lscp 509 557 WRITE(lunout,*) 'lscp_ini, chi_mixing_lscp:', chi_mixing_lscp 510 511 558 ! for aviation 559 WRITE(lunout,*) 'lscp_ini, aspect_ratio_contrails:', aspect_ratio_contrails 560 WRITE(lunout,*) 'lscp_ini, coef_mixing_contrails:', coef_mixing_contrails 561 WRITE(lunout,*) 'lscp_ini, coef_shear_contrails:', coef_shear_contrails 562 WRITE(lunout,*) 'lscp_ini, chi_mixing_contrails:', chi_mixing_contrails 563 WRITE(lunout,*) 'lscp_ini, rm_ice_crystals_contrails:', rm_ice_crystals_contrails 564 WRITE(lunout,*) 'lscp_ini, EI_H2O_aviation:', EI_H2O_aviation 565 WRITE(lunout,*) 'lscp_ini, qheat_fuel_aviation:', qheat_fuel_aviation 566 WRITE(lunout,*) 'lscp_ini, prop_efficiency_aviation:', prop_efficiency_aviation 567 WRITE(lunout,*) 'lscp_ini, linear_contrails_lifetime:', linear_contrails_lifetime 512 568 513 569 -
LMDZ6/branches/contrails/libf/phylmd/phyetat0_mod.f90
r5310 r5452 23 23 falb_dir, falb_dif, prw_ancien, prlw_ancien, prsw_ancien, prbsw_ancien, & 24 24 ftsol, pbl_tke, pctsrf, q_ancien, ql_ancien, qs_ancien, qbs_ancien, & 25 cf_ancien, rvc_ancien, r adpas, radsol, rain_fall, ratqs, &25 cf_ancien, rvc_ancien, rcont_ancien, radpas, radsol, rain_fall, ratqs, & 26 26 rnebcon, rugoro, sig1, snow_fall, bs_fall, solaire_etat0, sollw, sollwdown, & 27 27 solsw, solswfdiff, t_ancien, u_ancien, v_ancien, w01, wake_cstar, wake_deltaq, & … … 420 420 ENDIF 421 421 422 ! cas specifique des variables de l'aviation 423 IF ( ok_plane_contrail ) THEN 424 ancien_ok=ancien_ok.AND.phyetat0_get(rcont_ancien,"RCONTANCIEN","RCONTANCIEN",0.) 425 ELSE 426 rcont_ancien(:,:)=0. 427 ENDIF 428 422 429 ! Ehouarn: addtional tests to check if t_ancien, q_ancien contain 423 430 ! dummy values (as is the case when generated by ce0l, … … 443 450 IF ( (maxval(cf_ancien).EQ.minval(cf_ancien)) .OR. & 444 451 (maxval(rvc_ancien).EQ.minval(rvc_ancien)) ) THEN 452 ancien_ok=.false. 453 ENDIF 454 ENDIF 455 456 IF ( ok_plane_contrail ) THEN 457 IF ( maxval(rcont_ancien).EQ.minval(rcont_ancien) ) THEN 445 458 ancien_ok=.false. 446 459 ENDIF -
LMDZ6/branches/contrails/libf/phylmd/phyredem.f90
r5296 r5452 23 23 prw_ancien, prlw_ancien, prsw_ancien, prbsw_ancien, & 24 24 ql_ancien, qs_ancien, qbs_ancien, cf_ancien, & 25 rvc_ancien, u_ancien, v_ancien,&25 rvc_ancien, rcont_ancien, u_ancien, v_ancien,& 26 26 clwcon, rnebcon, ratqs, pbl_tke, & 27 27 wake_delta_pbl_tke, zmax0, f0, sig1, w01, & … … 254 254 CALL put_field(pass,"CFANCIEN", "CFANCIEN", cf_ancien) 255 255 CALL put_field(pass,"RVCANCIEN", "RVCANCIEN", rvc_ancien) 256 ENDIF 257 258 IF ( ok_plane_contrail ) THEN 259 CALL put_field(pass,"RCONTANCIEN", "RCONTANCIEN", rcont_ancien) 256 260 ENDIF 257 261 -
LMDZ6/branches/contrails/libf/phylmd/phys_local_var_mod.F90
r5431 r5452 665 665 666 666 !-- LSCP - aviation and contrails variables 667 REAL, SAVE, ALLOCATABLE :: Tcontr(:,:), qcontr(:,:), qcontr2(:,:) 668 !$OMP THREADPRIVATE(Tcontr, qcontr, qcontr2) 669 REAL, SAVE, ALLOCATABLE :: fcontrN(:,:), fcontrP(:,:) 670 !$OMP THREADPRIVATE(fcontrN, fcontrP) 667 REAL, SAVE, ALLOCATABLE :: rcont_seri(:,:), d_rcont_dyn(:,:) 668 !$OMP THREADPRIVATE(rcont_seri, d_rcont_dyn) 669 REAL, SAVE, ALLOCATABLE :: flight_dist(:,:), flight_h2o(:,:) 670 !$OMP THREADPRIVATE(flight_dist, flight_h2o) 671 REAL, SAVE, ALLOCATABLE :: Tcritcont(:,:), qcritcont(:,:) 672 !$OMP THREADPRIVATE(Tcritcont, qcritcont) 673 REAL, SAVE, ALLOCATABLE :: potcontfraP(:,:), potcontfraNP(:,:) 674 !$OMP THREADPRIVATE(potcontfraP, potcontfraNP) 671 675 REAL, SAVE, ALLOCATABLE :: dcf_avi(:,:), dqi_avi(:,:), dqvc_avi(:,:) 672 676 !$OMP THREADPRIVATE(dcf_avi, dqi_avi, dqvc_avi) 673 REAL, SAVE, ALLOCATABLE :: flight_dist(:,:), flight_h2o(:,:)674 !$OMP THREADPRIVATE(flight_dist, flight_h2o)675 677 676 678 !-- LSCP - mixed phase clouds variables … … 1213 1215 1214 1216 !-- LSCP - aviation and contrails variables 1215 ALLOCATE(Tcontr(klon,klev), qcontr(klon,klev), qcontr2(klon,klev)) 1216 ALLOCATE(fcontrN(klon,klev), fcontrP(klon,klev)) 1217 ALLOCATE(rcont_seri(klon,klev), d_rcont_dyn(klon,klev)) 1218 ALLOCATE(flight_dist(klon,klev), flight_h2o(klon,klev)) 1219 ALLOCATE(Tcritcont(klon,klev), qcritcont(klon,klev)) 1220 ALLOCATE(potcontfraP(klon,klev), potcontfraNP(klon,klev)) 1217 1221 ALLOCATE(dcf_avi(klon,klev), dqi_avi(klon,klev), dqvc_avi(klon,klev)) 1218 ALLOCATE(flight_dist(klon,klev), flight_h2o(klon,klev))1219 1222 1220 1223 !-- LSCP - POPRECIP variables … … 1618 1621 1619 1622 !-- LSCP - aviation and contrails variables 1620 DEALLOCATE( Tcontr, qcontr, qcontr2)1621 DEALLOCATE( fcontrN, fcontrP)1623 DEALLOCATE(rcont_seri, d_rcont_dyn, flight_dist, flight_h2o) 1624 DEALLOCATE(Tcritcont, qcritcont, potcontfraP, potcontfraNP) 1622 1625 DEALLOCATE(dcf_avi, dqi_avi, dqvc_avi) 1623 DEALLOCATE(flight_dist, flight_h2o)1624 1626 1625 1627 !-- LSCP - POPRECIP variables -
LMDZ6/branches/contrails/libf/phylmd/phys_output_ctrlout_mod.F90
r5450 r5452 2168 2168 2169 2169 !-- LSCP - aviation variables 2170 TYPE(ctrl_out), SAVE :: o_Tcontr = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/),& 2171 'Tcontr', 'Temperature threshold for contrail formation', 'K', (/ ('',i=1,10) /)) 2172 TYPE(ctrl_out), SAVE :: o_qcontr = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/),& 2173 'qcontr', 'Specific humidity threshold for contrail formation', 'Pa', (/ ('', i=1, 10) /)) 2174 TYPE(ctrl_out), SAVE :: o_qcontr2 = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/),& 2175 'qcontr2', 'Specific humidity threshold for contrail formation', 'kg/kg', (/ ('', i=1, 10) /)) 2176 TYPE(ctrl_out), SAVE :: o_fcontrN = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/),& 2177 'fcontrN', 'Fraction with non-persistent contrail in clear-sky', '-', (/ ('', i=1,10)/)) 2178 TYPE(ctrl_out), SAVE :: o_fcontrP = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/),& 2179 'fcontrP', 'Fraction with persistent contrail in ISSR', '-', (/ ('', i=1,10)/)) 2170 TYPE(ctrl_out), SAVE :: o_Tcritcont = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/),& 2171 'Tcritcont', 'Temperature threshold for contrail formation', 'K', (/ ('',i=1,10) /)) 2172 TYPE(ctrl_out), SAVE :: o_qcritcont = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/),& 2173 'qcritcont', 'Specific humidity threshold for contrail formation', 'kg/kg', (/ ('', i=1, 10) /)) 2174 TYPE(ctrl_out), SAVE :: o_potcontfraP = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/),& 2175 'potcontfraP', 'Potential persistent contrail fraction', '-', (/ ('', i=1,10)/)) 2176 TYPE(ctrl_out), SAVE :: o_potcontfraNP = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/),& 2177 'potcontfraNP', 'Potential non-persistent contrail fraction', '-', (/ ('', i=1,10)/)) 2180 2178 TYPE(ctrl_out), SAVE :: o_dcfavi = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), & 2181 2179 'dcfavi', 'Aviation cloud fraction tendency', 's-1', (/ ('', i=1, 10) /)) -
LMDZ6/branches/contrails/libf/phylmd/phys_output_write_mod.F90
r5450 r5452 226 226 o_dqvcadj, o_dqvcsub, o_dqvccon, o_dqvcmix, o_qsatl, o_qsati, & 227 227 !-- LSCP - aviation variables 228 o_Tc ontr, o_qcontr, o_qcontr2, o_fcontrN, o_fcontrP, &228 o_Tcritcont, o_qcritcont, o_potcontfraP, o_potcontfraNP, & 229 229 o_dcfavi, o_dqiavi, o_dqvcavi, o_flight_dist, o_flight_h2o, & 230 230 !--interactive CO2 … … 349 349 dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, & 350 350 qsatliq, qsatice, & 351 Tc ontr, qcontr, qcontr2, fcontrN, fcontrP, &351 Tcritcont, qcritcont, potcontfraP, potcontfraNP, & 352 352 dcf_avi, dqi_avi, dqvc_avi, flight_dist, flight_h2o, & 353 353 alp_bl_det, alp_bl_fluct_m, alp_bl_conv, & … … 2123 2123 !-- LSCP - aviation variables 2124 2124 IF (ok_plane_contrail) THEN 2125 CALL histwrite_phy(o_ Tcontr, Tcontr)2126 CALL histwrite_phy(o_ qcontr, qcontr)2127 CALL histwrite_phy(o_qc ontr2, qcontr2)2128 CALL histwrite_phy(o_ fcontrN, fcontrN)2129 CALL histwrite_phy(o_ fcontrP, fcontrP)2125 CALL histwrite_phy(o_flight_dist, flight_dist) 2126 CALL histwrite_phy(o_Tcritcont, Tcritcont) 2127 CALL histwrite_phy(o_qcritcont, qcritcont) 2128 CALL histwrite_phy(o_potcontfraP, potcontfraP) 2129 CALL histwrite_phy(o_potcontfraNP, potcontfraNP) 2130 2130 CALL histwrite_phy(o_dcfavi, dcf_avi) 2131 2131 CALL histwrite_phy(o_dqiavi, dqi_avi) 2132 2132 CALL histwrite_phy(o_dqvcavi, dqvc_avi) 2133 CALL histwrite_phy(o_flight_dist, flight_dist)2134 2133 ENDIF 2135 2134 IF (ok_plane_h2o) THEN -
LMDZ6/branches/contrails/libf/phylmd/phys_state_var_mod.F90
r5394 r5452 92 92 REAL, ALLOCATABLE, SAVE :: u_ancien(:,:), v_ancien(:,:) 93 93 !$OMP THREADPRIVATE(u_ancien, v_ancien) 94 REAL, ALLOCATABLE, SAVE :: cf_ancien(:,:), rvc_ancien(:,:) 95 !$OMP THREADPRIVATE(cf_ancien, rvc_ancien )94 REAL, ALLOCATABLE, SAVE :: cf_ancien(:,:), rvc_ancien(:,:), rcont_ancien(:,:) 95 !$OMP THREADPRIVATE(cf_ancien, rvc_ancien, rcont_ancien) 96 96 !!! RomP >>> 97 97 REAL, ALLOCATABLE, SAVE :: tr_ancien(:,:,:) … … 586 586 ALLOCATE(prw_ancien(klon), prlw_ancien(klon), prsw_ancien(klon), prbsw_ancien(klon)) 587 587 ALLOCATE(u_ancien(klon,klev), v_ancien(klon,klev)) 588 ALLOCATE(cf_ancien(klon,klev), rvc_ancien(klon,klev) )588 ALLOCATE(cf_ancien(klon,klev), rvc_ancien(klon,klev), rcont_ancien(klon,klev)) 589 589 !!! Rom P >>> 590 590 ALLOCATE(tr_ancien(klon,klev,nbtr)) … … 813 813 DEALLOCATE(qtc_cv,sigt_cv,detrain_cv,fm_cv) 814 814 DEALLOCATE(u_ancien, v_ancien) 815 DEALLOCATE(cf_ancien, rvc_ancien )815 DEALLOCATE(cf_ancien, rvc_ancien, rcont_ancien) 816 816 DEALLOCATE(tr_ancien) !RomP 817 817 DEALLOCATE(ratqs, pbl_tke,coefh,coefm) -
LMDZ6/branches/contrails/libf/phylmd/physiq_mod.F90
r5450 r5452 327 327 dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, qsatliq, qsatice, & 328 328 !-- LSCP - aviation and contrails variables 329 Tcontr, qcontr, qcontr2, fcontrN, fcontrP, & 330 dcf_avi, dqi_avi, dqvc_avi, flight_dist, flight_h2o, & 329 rcont_seri, d_rcont_dyn, flight_dist, flight_h2o, & 330 Tcritcont, qcritcont, potcontfraP, potcontfraNP, & 331 dcf_avi, dqi_avi, dqvc_avi, & 331 332 ! 332 333 cldemi, & … … 511 512 ! 512 513 ! indices de traceurs eau vapeur, liquide, glace, fraction nuageuse LS (optional), blowing snow (optional) 513 INTEGER,SAVE :: ivap, iliq, isol, ibs, icf, irvc 514 !$OMP THREADPRIVATE(ivap, iliq, isol, ibs, icf, irvc )514 INTEGER,SAVE :: ivap, iliq, isol, ibs, icf, irvc, ircont 515 !$OMP THREADPRIVATE(ivap, iliq, isol, ibs, icf, irvc, ircont) 515 516 ! 516 517 ! … … 1356 1357 icf = strIdx(tracers(:)%name, addPhase('H2O', 'f')) 1357 1358 irvc = strIdx(tracers(:)%name, addPhase('H2O', 'c')) 1359 ircont = strIdx(tracers(:)%name, addPhase('H2O', 'a')) 1358 1360 ! CALL init_etat0_limit_unstruct 1359 1361 ! IF (.NOT. create_etat0_limit) CALL init_limit_read(days_elapsed) … … 1418 1420 IF (ok_plane_contrail.AND..NOT.ok_ice_supersat) THEN 1419 1421 WRITE (lunout, *) ' ok_plane_contrail=y requires ok_ice_supersat=y ' 1422 abort_message='see above' 1423 CALL abort_physic(modname,abort_message,1) 1424 ENDIF 1425 1426 IF (ok_plane_contrail.AND.(nqo.LT.6)) THEN 1427 WRITE (lunout, *) ' ok_plane_contrail=y requires 6 H2O tracers ', & 1428 '(H2O_g, H2O_l, H2O_s, H2O_f, H2O_c, H2O_a) but nqo=', nqo, '. Might as well stop here.' 1420 1429 abort_message='see above' 1421 1430 CALL abort_physic(modname,abort_message,1) … … 1843 1852 & RG,RD,RCPD,RKAPPA,RLVTT,RETV) 1844 1853 CALL ratqs_ini(klon,klev,iflag_thermals,lunout,nbsrf,is_lic,is_ter,RG,RV,RD,RCPD,RLSTT,RLVTT,RTT) 1845 CALL lscp_ini(pdtphys,lunout,prt_level,ok_ice_supersat,iflag_ratqs,fl_cor_ebil, & 1854 CALL lscp_ini(pdtphys,lunout,prt_level,ok_ice_supersat,& 1855 ok_plane_contrail,iflag_ratqs,fl_cor_ebil, & 1846 1856 RCPD,RLSTT,RLVTT,RLMLT,RVTMP2,RTT,RD,RV,RG,RPI,EPS_W) 1847 1857 CALL blowing_snow_ini(RCPD, RLSTT, RLVTT, RLMLT, & … … 2433 2443 cf_seri(i,k) = 0. 2434 2444 rvc_seri(i,k)= 0. 2445 rcont_seri(i,k)= 0. 2435 2446 !CR: ATTENTION, on rajoute la variable glace 2436 2447 IF (nqo.EQ.2) THEN !--vapour and liquid only … … 2443 2454 cf_seri(i,k) = qx(i,k,icf) 2444 2455 rvc_seri(i,k) = qx(i,k,irvc) 2456 ENDIF 2457 IF (ok_plane_contrail) THEN 2458 rcont_seri(i,k) = qx(i,k,ircont) 2445 2459 ENDIF 2446 2460 IF (ok_bs) THEN … … 2521 2535 d_cf_dyn(:,:) = (cf_seri(:,:)-cf_ancien(:,:))/phys_tstep 2522 2536 d_rvc_dyn(:,:)= (rvc_seri(:,:)-rvc_ancien(:,:))/phys_tstep 2537 d_rcont_dyn(:,:)= (rcont_seri(:,:)-rcont_ancien(:,:))/phys_tstep 2523 2538 CALL water_int(klon,klev,q_seri,zmasse,zx_tmp_fi2d) 2524 2539 d_q_dyn2d(:)=(zx_tmp_fi2d(:)-prw_ancien(:))/phys_tstep … … 2542 2557 d_cf_dyn(:,:) = 0.0 2543 2558 d_rvc_dyn(:,:)= 0.0 2559 d_rcont_dyn(:,:)= 0.0 2544 2560 d_q_dyn2d(:) = 0.0 2545 2561 d_ql_dyn2d(:) = 0.0 … … 3889 3905 dcf_sub, dcf_con, dcf_mix, dqi_adj, dqi_sub, dqi_con, dqi_mix, & 3890 3906 dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, qsatliq, qsatice, & 3891 Tcontr, qcontr, qcontr2, fcontrN, fcontrP, &3892 dcf_avi, dqi_avi, dqvc_avi, flight_dist, flight_h2o, &3907 rcont_seri, flight_dist, flight_h2o, & 3908 Tcritcont, qcritcont, potcontfraP, potcontfraNP, dcf_avi, dqi_avi, dqvc_avi, & 3893 3909 cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv, & 3894 3910 qraindiag, qsnowdiag, dqreva, dqssub, dqrauto, dqrcol, dqrmelt, & … … 5606 5622 d_qx(i,k,icf) = ( cf_seri(i,k) - qx(i,k,icf) ) / phys_tstep 5607 5623 d_qx(i,k,irvc) = ( rvc_seri(i,k) - qx(i,k,irvc) ) / phys_tstep 5624 IF (nqo.ge.6 .and. ok_plane_contrail) THEN 5625 d_qx(i,k,ircont) = ( rcont_seri(i,k) - qx(i,k,ircont) ) / phys_tstep 5626 ENDIF 5608 5627 ENDIF 5609 5628 … … 5642 5661 cf_ancien(:,:) = cf_seri(:,:) 5643 5662 rvc_ancien(:,:)= rvc_seri(:,:) 5663 rcont_ancien(:,:)= rcont_seri(:,:) 5644 5664 CALL water_int(klon,klev,q_ancien,zmasse,prw_ancien) 5645 5665 CALL water_int(klon,klev,ql_ancien,zmasse,prlw_ancien)
Note: See TracChangeset
for help on using the changeset viewer.