Ignore:
Timestamp:
Sep 24, 2024, 10:47:17 AM (4 months ago)
Author:
abarral
Message:

Merge r5204 r5205
Light lint
Correct missing IOIPSL includes

Location:
LMDZ6/branches/Amaury_dev/libf/phylmdiso
Files:
1 deleted
3 edited
1 copied

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/Amaury_dev/libf/phylmdiso/lmdz_lscp_condensation.f90

    • Property svn:mergeinfo set to (toggle deleted branches)
      /LMDZ6/trunk/libf/phylmdiso/lmdz_lscp_condensation.F90mergedeligible
      /LMDZ4/branches/LMDZ4-dev/libf/phylmdiso/lmdz_lscp_condensation.F901074-1276,​1281-1284
      /LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmdiso/lmdz_lscp_condensation.F901293-1401
      /LMDZ5/branches/LMDZ5V1.0-dev/libf/phylmdiso/lmdz_lscp_condensation.F901436-1453
      /LMDZ5/branches/LMDZ5V2.0-dev/libf/phylmdiso/lmdz_lscp_condensation.F901456-1491
      /LMDZ5/branches/LMDZ_tree_FC/libf/phylmdiso/lmdz_lscp_condensation.F902924-2946
      /LMDZ6/branches/LMDZ_ECRad/libf/phylmdiso/lmdz_lscp_condensation.F904175-4488
      /LMDZ6/branches/LMDZ_cdrag_LSCE/libf/phylmdiso/lmdz_lscp_condensation.F904660-4721
      /LMDZ6/branches/Ocean_skin/libf/phylmdiso/lmdz_lscp_condensation.F903428-4369
      /LMDZ6/branches/blowing_snow/libf/phylmdiso/lmdz_lscp_condensation.F904485-4522
    r5223 r5224  
    1 link ../phylmd/lmdz_lscp_condensation.F90
     1link ../phylmd/lmdz_lscp_condensation.f90
  • LMDZ6/branches/Amaury_dev/libf/phylmdiso/phyetat0_mod.F90

    r5221 r5224  
    1 ! $Id: phyetat0.F90 3890 2021-05-05 15:15:06Z jyg $
    2 
    31MODULE phyetat0_mod
    42  USE lmdz_abort_physic, ONLY: abort_physic
     
    2624       du_gwd_rando, du_gwd_front, entr_therm, f0, fm_therm, &
    2725       falb_dir, falb_dif, prw_ancien, prlw_ancien, prsw_ancien, prbsw_ancien, &
    28        ftsol, pbl_tke, pctsrf, q_ancien, ql_ancien, qs_ancien, qbs_ancien, rneb_ancien, radpas, radsol, rain_fall, ratqs, &
     26       ftsol, pbl_tke, pctsrf, q_ancien, ql_ancien, qs_ancien, qbs_ancien, &
     27       cf_ancien, rvc_ancien, radpas, radsol, rain_fall, ratqs, &
    2928       rnebcon, rugoro, sig1, snow_fall, bs_fall, solaire_etat0, sollw, sollwdown, &
    3029       solsw, solswfdiff, t_ancien, u_ancien, v_ancien, w01, wake_cstar, wake_deltaq, &
     
    421420  ancien_ok=ancien_ok.AND.phyetat0_get(ql_ancien,"QLANCIEN","QLANCIEN",0.)
    422421  ancien_ok=ancien_ok.AND.phyetat0_get(qs_ancien,"QSANCIEN","QSANCIEN",0.)
    423   ancien_ok=ancien_ok.AND.phyetat0_get(rneb_ancien,"RNEBANCIEN","RNEBANCIEN",0.)
    424422  ancien_ok=ancien_ok.AND.phyetat0_get(u_ancien,"UANCIEN","UANCIEN",0.)
    425423  ancien_ok=ancien_ok.AND.phyetat0_get(v_ancien,"VANCIEN","VANCIEN",0.)
     
    437435  ENDIF
    438436
     437  ! cas specifique des variables de la sursaturation par rapport a la glace
     438  IF ( ok_ice_supersat ) THEN
     439    ancien_ok=ancien_ok.AND.phyetat0_get(cf_ancien,"CFANCIEN","CFANCIEN",0.)
     440    ancien_ok=ancien_ok.AND.phyetat0_get(rvc_ancien,"RVCANCIEN","RVCANCIEN",0.)
     441  ELSE
     442    cf_ancien(:,:)=0.
     443    rvc_ancien(:,:)=0.
     444  ENDIF
     445
    439446  ! Ehouarn: addtional tests to check if t_ancien, q_ancien contain
    440447  !          dummy values (as is the case when generated by ce0l,
     
    443450       (maxval(ql_ancien)==minval(ql_ancien))     .OR. &
    444451       (maxval(qs_ancien)==minval(qs_ancien))     .OR. &
    445        (maxval(rneb_ancien)==minval(rneb_ancien)) .OR. &
    446452       (maxval(prw_ancien)==minval(prw_ancien))   .OR. &
    447453       (maxval(prlw_ancien)==minval(prlw_ancien)) .OR. &
     
    456462       ancien_ok=.FALSE.
    457463    ENDIF
     464  ENDIF
     465
     466  IF ( ok_ice_supersat ) THEN
     467    IF ( (maxval(cf_ancien)==minval(cf_ancien))     .OR. &
     468         (maxval(rvc_ancien)==minval(rvc_ancien)) ) THEN
     469       ancien_ok=.false.
     470     ENDIF
    458471  ENDIF
    459472
  • LMDZ6/branches/Amaury_dev/libf/phylmdiso/phyredem.F90

    r5158 r5224  
    1919                                zval, rugoro, t_ancien, q_ancien,            &
    2020                                prw_ancien, prlw_ancien, prsw_ancien, prbsw_ancien,      &
    21                                 ql_ancien, qs_ancien, qbs_ancien,  u_ancien, &
    22                                 v_ancien, clwcon, rnebcon, ratqs, pbl_tke,   &
     21                                ql_ancien, qs_ancien, qbs_ancien, cf_ancien, &
     22                                rvc_ancien, u_ancien, v_ancien,              &
     23                                clwcon, rnebcon, ratqs, pbl_tke,             &
    2324                                wake_delta_pbl_tke, zmax0, f0, sig1, w01,    &
    2425                                wake_deltat, wake_deltaq, wake_s, wake_dens, &
     
    266267       CALL put_field(pass,"QBSANCIEN", "QBSANCIEN", qbs_ancien)
    267268       CALL put_field(pass,"PRBSWANCIEN", "PRBSWANCIEN", prbsw_ancien)
     269    ENDIF
     270
     271    IF ( ok_ice_supersat ) THEN
     272      CALL put_field(pass,"CFANCIEN", "CFANCIEN", cf_ancien)
     273      CALL put_field(pass,"RVCANCIEN", "RVCANCIEN", rvc_ancien)
    268274    ENDIF
    269275
  • LMDZ6/branches/Amaury_dev/libf/phylmdiso/physiq_mod.F90

    r5221 r5224  
    1 
    2 ! $Id: physiq_mod.F90 3908 2021-05-20 07:11:13Z idelkadi $
    3 
    4 !#define IO_DEBUG
    51MODULE physiq_mod
    62
     
    7268    USE tracinca_mod, ONLY: config_inca
    7369    USE tropopause_m,     ONLY: dyn_tropopause
    74     USE ice_sursat_mod,  ONLY: flight_init, airplane
    7570    USE lmdz_vampir
    7671    USE lmdz_writefield_phy
     
    181176       ! [Variables internes non sauvegardees de la physique]
    182177       ! Variables locales pour effectuer les appels en serie
    183        t_seri,q_seri,ql_seri,qs_seri,qbs_seri,u_seri,v_seri,tr_seri,rneb_seri, &
     178       t_seri,q_seri,ql_seri,qs_seri,qbs_seri, &
     179       u_seri,v_seri,cf_seri,rvc_seri,tr_seri, &
     180       rhcl, &
    184181       qx_seri, & ! CR
    185182       rhcl, &       
    186183       ! Dynamic tendencies (diagnostics)
    187        d_t_dyn,d_q_dyn,d_ql_dyn,d_qs_dyn,d_qbs_dyn,d_u_dyn,d_v_dyn,d_tr_dyn,d_rneb_dyn, &
     184       d_t_dyn,d_q_dyn,d_ql_dyn,d_qs_dyn,d_qbs_dyn, &
     185       d_u_dyn,d_v_dyn,d_cf_dyn,d_rvc_dyn,d_tr_dyn, &
    188186       d_q_dyn2d,d_ql_dyn2d,d_qs_dyn2d,d_qbs_dyn2d, &
    189187       ! Physic tendencies
     
    360358       pfraclr, pfracld, cldfraliq, sigma2_icefracturb, mean_icefracturb,  &
    361359       distcltop, temp_cltop,  &
    362        zqsatl, zqsats, &
    363        qclr, qcld, qss, qvc, rnebclr, rnebss, gamma_ss, &
     360       !-- LSCP - condensation and ice supersaturation variables
     361       qsub, qissr, qcld, subfra, issrfra, gamma_cond, ratio_qi_qtot, &
     362       dcf_sub, dcf_con, dcf_mix, dqi_adj, dqi_sub, dqi_con, dqi_mix, &
     363       dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, qsatliq, qsatice, &
     364       !-- LSCP - aviation and contrails variables
    364365       Tcontr, qcontr, qcontr2, fcontrN, fcontrP, &
     366       dcf_avi, dqi_avi, dqvc_avi, flight_dist, flight_h2o, &
     367       !
    365368       cldemi,  &
    366369       cldfra, cldtau, fiwc,  &
     
    578581! reevap -> je commente les 2 lignes au dessus et je laisse la definition
    579582! plutot dans infotrac_phy
    580     INTEGER,SAVE :: irneb, ibs
    581 !$OMP THREADPRIVATE(irneb, ibs)
     583    INTEGER,SAVE :: irneb, ibs, icf,irvc
     584!$OMP THREADPRIVATE(irneb, ibs, icf,irvc)
    582585
    583586
     
    14501453       iliq = strIdx(tracers(:)%name, addPhase('H2O', 'l'))
    14511454       isol = strIdx(tracers(:)%name, addPhase('H2O', 's'))
    1452        irneb= strIdx(tracers(:)%name, addPhase('H2O', 'r'))
    14531455       ibs  = strIdx(tracers(:)%name, addPhase('H2O', 'b'))
     1456       icf  = strIdx(tracers(:)%name, addPhase('H2O', 'f'))
     1457       irvc = strIdx(tracers(:)%name, addPhase('H2O', 'c'))
    14541458!       CALL init_etat0_limit_unstruct
    1455 !       IF (.NOT. create_etat0_limit) CALL init_limit_read(days_elapsed)
     1459       IF (.NOT. create_etat0_limit) CALL init_limit_read(days_elapsed)
    14561460       !CR:nvelles variables convection/poches froides
    14571461
     
    15081512       ENDIF
    15091513
    1510        IF (ok_ice_sursat.AND.(iflag_ice_thermo==0)) THEN
    1511           WRITE (lunout, *) ' ok_ice_sursat=y requires iflag_ice_thermo=1 as well'
     1514       IF (ok_ice_supersat.AND.(iflag_ice_thermo==0)) THEN
     1515          WRITE (lunout, *) ' ok_ice_supersat=y requires iflag_ice_thermo=1 as well'
    15121516          abort_message='see above'
    15131517          CALL abort_physic(modname,abort_message,1)
    15141518       ENDIF
    15151519
    1516        IF (ok_ice_sursat.AND.(nqo<4)) THEN
    1517           WRITE (lunout, *) ' ok_ice_sursat=y requires 4 H2O tracers ', &
    1518                '(H2O_g, H2O_l, H2O_s, H2O_r) but nqo=', nqo, '. Might as well stop here.'
     1520       IF (ok_ice_supersat.AND.(nqo<5)) THEN
     1521          WRITE (lunout, *) ' ok_ice_supersat=y requires 4 H2O tracers ', &
     1522               '(H2O_g, H2O_l, H2O_s, H2O_f, H2O_c) but nqo=', nqo, '. Might as well stop here.'
    15191523          abort_message='see above'
    15201524          CALL abort_physic(modname,abort_message,1)
    15211525       ENDIF
    15221526
    1523        IF (ok_plane_h2o.AND..NOT.ok_ice_sursat) THEN
    1524           WRITE (lunout, *) ' ok_plane_h2o=y requires ok_ice_sursat=y '
     1527       IF (ok_plane_h2o.AND..NOT.ok_ice_supersat) THEN
     1528          WRITE (lunout, *) ' ok_plane_h2o=y requires ok_ice_supersat=y '
    15251529          abort_message='see above'
    15261530          CALL abort_physic(modname,abort_message,1)
    15271531       ENDIF
    15281532
    1529        IF (ok_plane_contrail.AND..NOT.ok_ice_sursat) THEN
    1530           WRITE (lunout, *) ' ok_plane_contrail=y requires ok_ice_sursat=y '
     1533       IF (ok_plane_contrail.AND..NOT.ok_ice_supersat) THEN
     1534          WRITE (lunout, *) ' ok_plane_contrail=y requires ok_ice_supersat=y '
    15311535          abort_message='see above'
    15321536          CALL abort_physic(modname,abort_message,1)
     
    15381542          CALL abort_physic(modname,abort_message, 1)
    15391543#endif
    1540          IF ((ok_ice_sursat.AND.nqo <5).OR.(.NOT.ok_ice_sursat.AND.nqo<4)) THEN
     1544         IF ((ok_ice_supersat.AND.nqo <6).OR.(.NOT.ok_ice_supersat.AND.nqo<4)) THEN
    15411545             WRITE (lunout, *) 'activation of blowing snow needs a specific H2O tracer', &
    15421546                               'but nqo=', nqo
     
    19811985        RG,RD,RCPD,RKAPPA,RLVTT,RETV)
    19821986       CALL ratqs_ini(klon,klev,iflag_thermals,lunout,nbsrf,is_lic,is_ter,RG,RV,RD,RCPD,RLSTT,RLVTT,RTT)
    1983        CALL lscp_ini(pdtphys,lunout,prt_level,ok_ice_sursat,iflag_ratqs,fl_cor_ebil,RCPD,RLSTT,RLVTT,RLMLT,RVTMP2,RTT,RD,RG,RV,RPI)
     1987       CALL lscp_ini(pdtphys,lunout,prt_level,ok_ice_supersat,iflag_ratqs,fl_cor_ebil, &
     1988                     RCPD,RLSTT,RLVTT,RLMLT,RVTMP2,RTT,RD,RV,RG,RPI,EPS_W)
    19841989       CALL blowing_snow_ini(RCPD, RLSTT, RLVTT, RLMLT, &
    19851990                             RVTMP2, RTT,RD,RG, RV, RPI)
     
    24582463                    sollwdown(:))
    24592464
     2465      !--Init for LSCP - condensation
     2466      ratio_qi_qtot(:,:) = 0.
    24602467
    24612468
     
    25652572          q_seri(i,k)  = qx(i,k,ivap)
    25662573          ql_seri(i,k) = qx(i,k,iliq)
    2567           qbs_seri(i,k) = 0.
     2574          qbs_seri(i,k)= 0.
     2575          cf_seri(i,k) = 0.
     2576          rvc_seri(i,k)= 0.
    25682577          !CR: ATTENTION, on rajoute la variable glace
    25692578          IF (nqo==2) THEN             !--vapour and liquid only
    25702579             qs_seri(i,k) = 0.
    2571              rneb_seri(i,k) = 0.
    25722580          ELSE IF (nqo==3) THEN        !--vapour, liquid and ice
    25732581             qs_seri(i,k) = qx(i,k,isol)
    2574              rneb_seri(i,k) = 0.
    2575           ELSE IF (nqo>=4) THEN        !--vapour, liquid, ice and rneb and blowing snow
     2582          ELSE IF (nqo>=4) THEN        !--vapour, liquid, ice, blowing snow, cloud fraction and cloudy water vapor to total water vapor ratio
    25762583             qs_seri(i,k) = qx(i,k,isol)
    2577              IF (ok_ice_sursat) THEN
    2578                rneb_seri(i,k) = qx(i,k,irneb)
     2584             IF (ok_ice_supersat) THEN
     2585               cf_seri(i,k) = qx(i,k,icf)
     2586               rvc_seri(i,k) = qx(i,k,irvc)
    25792587             ENDIF
    25802588             IF (ok_bs) THEN
     
    27482756       d_ql_dyn(:,:) = (ql_seri(:,:)-ql_ancien(:,:))/phys_tstep
    27492757       d_qs_dyn(:,:) = (qs_seri(:,:)-qs_ancien(:,:))/phys_tstep
    2750        d_qbs_dyn(:,:) = (qbs_seri(:,:)-qbs_ancien(:,:))/phys_tstep
     2758       d_qbs_dyn(:,:)= (qbs_seri(:,:)-qbs_ancien(:,:))/phys_tstep
     2759       d_cf_dyn(:,:) = (cf_seri(:,:)-cf_ancien(:,:))/phys_tstep
     2760       d_rvc_dyn(:,:)= (rvc_seri(:,:)-rvc_ancien(:,:))/phys_tstep
    27512761       CALL water_int(klon,klev,q_seri,zmasse,zx_tmp_fi2d)
    27522762       d_q_dyn2d(:)=(zx_tmp_fi2d(:)-prw_ancien(:))/phys_tstep
     
    27602770       IF (nqtot > nqo) d_tr_dyn(:,:,:)=(tr_seri(:,:,:)-tr_ancien(:,:,:))/phys_tstep
    27612771       ! !! RomP <<<
    2762        !!d_rneb_dyn(:,:)=(rneb_seri(:,:)-rneb_ancien(:,:))/phys_tstep
    2763        d_rneb_dyn(:,:)=0.0
    27642772
    27652773#ifdef ISO
     
    28432851       d_ql_dyn(:,:) = 0.0
    28442852       d_qs_dyn(:,:) = 0.0
     2853       d_qbs_dyn(:,:)= 0.0
     2854       d_cf_dyn(:,:) = 0.0
     2855       d_rvc_dyn(:,:)= 0.0
    28452856       d_q_dyn2d(:)  = 0.0
    28462857       d_ql_dyn2d(:) = 0.0
     
    28692880       IF (nqtot > nqo) d_tr_dyn(:,:,:)= 0.0
    28702881       ! !! RomP <<<
    2871        d_rneb_dyn(:,:)=0.0
    2872        d_qbs_dyn(:,:)=0.0
    28732882       ancien_ok = .TRUE.
    28742883#ifdef ISO
     
    29802989          ! "zmasse" changes a little.)
    29812990       ENDIF
     2991    ENDIF
     2992
     2993    !-- Needed for LSCP - condensation and ice supersaturation
     2994    IF (ok_ice_supersat) THEN
     2995      DO k = 1, klev
     2996        DO i = 1, klon
     2997          IF ( ( q_seri(i,k) + ql_seri(i,k) + qs_seri(i,k) ) > 0. ) THEN
     2998            ratio_qi_qtot(i,k) = qs_seri(i,k) / ( q_seri(i,k) + ql_seri(i,k) + qs_seri(i,k) )
     2999            rvc_seri(i,k) = rvc_seri(i,k) * q_seri(i,k) / ( q_seri(i,k) + ql_seri(i,k) + qs_seri(i,k) )
     3000          ELSE
     3001            ratio_qi_qtot(i,k) = 0.
     3002            rvc_seri(i,k) = 0.
     3003          ENDIF
     3004        ENDDO
     3005      ENDDO
    29823006    ENDIF
    29833007
     
    50135037
    50145038    !--mise à jour de flight_m et flight_h2o dans leur module
    5015     IF (ok_plane_h2o .OR. ok_plane_contrail) THEN
    5016       CALL airplane(debut,pphis,pplay,paprs,t_seri)
    5017     ENDIF
     5039    !IF (ok_plane_h2o .OR. ok_plane_contrail) THEN
     5040    !  CALL airplane(debut,pphis,pplay,paprs,t_seri)
     5041    !ENDIF
    50185042
    50195043    CALL lscp(klon,klev,phys_tstep,missing_val,paprs,pplay, &
    50205044         t_seri, q_seri,qs_ini,ptconv,ratqs, &
    5021          d_t_lsc, d_q_lsc, d_ql_lsc, d_qi_lsc, rneb, rneblsvol, rneb_seri, &
     5045         d_t_lsc, d_q_lsc, d_ql_lsc, d_qi_lsc, rneb, rneblsvol, &
    50225046         pfraclr, pfracld, cldfraliq, sigma2_icefracturb, mean_icefracturb,  &
    50235047         radocond, picefra, rain_lsc, snow_lsc, &
     
    50255049         prfl, psfl, rhcl,  &
    50265050         zqasc, fraca,ztv,zpspsk,ztla,zthl,iflag_cld_th, &
    5027          iflag_ice_thermo, ok_ice_sursat, zqsatl, zqsats, distcltop, temp_cltop,  &
    5028          pbl_tke(:,:,is_ave), pbl_eps(:,:,is_ave), qclr, qcld, qss, qvc, rnebclr, rnebss, gamma_ss, &
    5029          Tcontr, qcontr, qcontr2, fcontrN, fcontrP , &
     5051         iflag_ice_thermo, distcltop, temp_cltop, &
     5052         pbl_tke(:,:,is_ave), pbl_eps(:,:,is_ave), &
     5053         cell_area, &
     5054         cf_seri, rvc_seri, u_seri, v_seri, &
     5055         qsub, qissr, qcld, subfra, issrfra, gamma_cond, ratio_qi_qtot, &
     5056         dcf_sub, dcf_con, dcf_mix, dqi_adj, dqi_sub, dqi_con, dqi_mix, &
     5057         dqvc_adj, dqvc_sub, dqvc_con, dqvc_mix, qsatliq, qsatice, &
     5058         Tcontr, qcontr, qcontr2, fcontrN, fcontrP, &
     5059         dcf_avi, dqi_avi, dqvc_avi, flight_dist, flight_h2o, &
    50305060         cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv, &
    50315061         qraindiag, qsnowdiag, dqreva, dqssub, dqrauto, dqrcol, dqrmelt, &
     
    70727102             d_qx(i,k,isol) = ( qs_seri(i,k) - qx(i,k,isol) ) / phys_tstep
    70737103          ENDIF
    7074           !--ice_sursat: nqo=4, on ajoute rneb
    7075           IF (nqo>=4 .AND. ok_ice_sursat) THEN
    7076              d_qx(i,k,irneb) = ( rneb_seri(i,k) - qx(i,k,irneb) ) / phys_tstep
     7104          !--ice_supersat: nqo=5, we add cloud fraction and cloudy water vapor to total water vapor ratio
     7105          IF (nqo>=5 .and. ok_ice_supersat) THEN
     7106            d_qx(i, k, icf) = (cf_seri(i, k) - qx(i, k, icf)) / phys_tstep
     7107            d_qx(i, k, irvc) = (rvc_seri(i, k) - qx(i, k, irvc)) / phys_tstep
    70777108          ENDIF
    70787109
     
    70807111             d_qx(i,k,ibs) = ( qbs_seri(i,k) - qx(i,k,ibs) ) / phys_tstep
    70817112          ENDIF
    7082 
    70837113
    70847114       ENDDO
     
    71267156    ql_ancien(:,:) = ql_seri(:,:)
    71277157    qs_ancien(:,:) = qs_seri(:,:)
    7128     qbs_ancien(:,:) = qbs_seri(:,:)
    7129     rneb_ancien(:,:) = rneb_seri(:,:)
     7158    qbs_ancien(:,:)= qbs_seri(:,:)
     7159    cf_ancien(:,:) = cf_seri(:,:)
     7160    rvc_ancien(:,:)= rvc_seri(:,:)
    71307161#ifdef ISO
    71317162    xt_ancien(:,:,:)=xt_seri(:,:,:)
Note: See TracChangeset for help on using the changeset viewer.