Ignore:
Timestamp:
Dec 23, 2024, 6:12:29 PM (40 hours ago)
Author:
aborella
Message:

First implementation of the contrails parameterisation
Lacks the emission of H2O + the impact on radiative transfer

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/contrails/libf/phylmd/physiq_mod.F90

    r5450 r5452  
    327327       dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, qsatliq, qsatice, &
    328328       !-- 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, &
    331332       !
    332333       cldemi,  &
     
    511512    !
    512513    ! 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)
    515516    !
    516517    !
     
    13561357       icf  = strIdx(tracers(:)%name, addPhase('H2O', 'f'))
    13571358       irvc = strIdx(tracers(:)%name, addPhase('H2O', 'c'))
     1359       ircont = strIdx(tracers(:)%name, addPhase('H2O', 'a'))
    13581360!       CALL init_etat0_limit_unstruct
    13591361!       IF (.NOT. create_etat0_limit) CALL init_limit_read(days_elapsed)
     
    14181420       IF (ok_plane_contrail.AND..NOT.ok_ice_supersat) THEN
    14191421          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.'
    14201429          abort_message='see above'
    14211430          CALL abort_physic(modname,abort_message,1)
     
    18431852   &    RG,RD,RCPD,RKAPPA,RLVTT,RETV)
    18441853       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, &
    18461856                     RCPD,RLSTT,RLVTT,RLMLT,RVTMP2,RTT,RD,RV,RG,RPI,EPS_W)
    18471857       CALL blowing_snow_ini(RCPD, RLSTT, RLVTT, RLMLT, &
     
    24332443          cf_seri(i,k) = 0.
    24342444          rvc_seri(i,k)= 0.
     2445          rcont_seri(i,k)= 0.
    24352446          !CR: ATTENTION, on rajoute la variable glace
    24362447          IF (nqo.EQ.2) THEN             !--vapour and liquid only
     
    24432454               cf_seri(i,k) = qx(i,k,icf)
    24442455               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)
    24452459             ENDIF
    24462460             IF (ok_bs) THEN
     
    25212535       d_cf_dyn(:,:) = (cf_seri(:,:)-cf_ancien(:,:))/phys_tstep
    25222536       d_rvc_dyn(:,:)= (rvc_seri(:,:)-rvc_ancien(:,:))/phys_tstep
     2537       d_rcont_dyn(:,:)= (rcont_seri(:,:)-rcont_ancien(:,:))/phys_tstep
    25232538       CALL water_int(klon,klev,q_seri,zmasse,zx_tmp_fi2d)
    25242539       d_q_dyn2d(:)=(zx_tmp_fi2d(:)-prw_ancien(:))/phys_tstep
     
    25422557       d_cf_dyn(:,:) = 0.0
    25432558       d_rvc_dyn(:,:)= 0.0
     2559       d_rcont_dyn(:,:)= 0.0
    25442560       d_q_dyn2d(:)  = 0.0
    25452561       d_ql_dyn2d(:) = 0.0
     
    38893905         dcf_sub, dcf_con, dcf_mix, dqi_adj, dqi_sub, dqi_con, dqi_mix, &
    38903906         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, &
    38933909         cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv, &
    38943910         qraindiag, qsnowdiag, dqreva, dqssub, dqrauto, dqrcol, dqrmelt, &
     
    56065622             d_qx(i,k,icf) = ( cf_seri(i,k) - qx(i,k,icf) ) / phys_tstep
    56075623             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
    56085627          ENDIF
    56095628
     
    56425661    cf_ancien(:,:) = cf_seri(:,:)
    56435662    rvc_ancien(:,:)= rvc_seri(:,:)
     5663    rcont_ancien(:,:)= rcont_seri(:,:)
    56445664    CALL water_int(klon,klev,q_ancien,zmasse,prw_ancien)
    56455665    CALL water_int(klon,klev,ql_ancien,zmasse,prlw_ancien)
Note: See TracChangeset for help on using the changeset viewer.