Changeset 2496


Ignore:
Timestamp:
Apr 14, 2016, 9:42:23 PM (8 years ago)
Author:
oboucher
Message:

Adding more diagnostics for water conservation
dqlphys, dqldyn, dqsphys, dqsdyn, prlw, prsw

Location:
LMDZ5/trunk/libf/phylmd
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/phys_local_var_mod.F90

    r2481 r2496  
    2121      REAL, SAVE, ALLOCATABLE :: d_t_dyn(:,:), d_q_dyn(:,:)
    2222      !$OMP THREADPRIVATE(d_t_dyn, d_q_dyn)
     23      REAL, SAVE, ALLOCATABLE :: d_ql_dyn(:,:), d_qs_dyn(:,:)
     24      !$OMP THREADPRIVATE(d_ql_dyn, d_qs_dyn)
    2325      REAL, SAVE, ALLOCATABLE :: d_u_dyn(:,:), d_v_dyn(:,:)
    2426      !$OMP THREADPRIVATE(d_u_dyn, d_v_dyn)
     
    255257      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: JrNt
    256258!$OMP THREADPRIVATE(JrNt)
    257       REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: dthmin, evap, fder, plcl, plfc, prw
    258 !$OMP THREADPRIVATE(dthmin, evap, fder, plcl, plfc, prw)
     259      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: dthmin, evap, fder, plcl, plfc, prw, prlw, prsw
     260!$OMP THREADPRIVATE(dthmin, evap, fder, plcl, plfc, prw, prlw, prsw)
    259261      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zustar, zu10m, zv10m, rh2m
    260262!$OMP THREADPRIVATE(zustar, zu10m, zv10m, rh2m)
     
    401403      allocate(tr_seri(klon,klev,nbtr))
    402404      allocate(d_t_dyn(klon,klev),d_q_dyn(klon,klev))
     405      allocate(d_ql_dyn(klon,klev),d_qs_dyn(klon,klev))
    403406      allocate(d_u_dyn(klon,klev),d_v_dyn(klon,klev))
    404407      allocate(d_tr_dyn(klon,klev,nbtr))                   !RomP
     
    521524      ALLOCATE(JrNt(klon))
    522525      ALLOCATE(dthmin(klon), evap(klon), fder(klon), plcl(klon), plfc(klon))
    523       ALLOCATE(prw(klon), zustar(klon), zu10m(klon), zv10m(klon), rh2m(klon))
     526      ALLOCATE(prw(klon), prlw(klon), prsw(klon), zustar(klon), zu10m(klon), zv10m(klon), rh2m(klon))
    524527      ALLOCATE(s_lcl(klon))
    525528      ALLOCATE(s_pblh(klon), s_pblt(klon), s_therm(klon))
     
    615618      deallocate(tr_seri)
    616619      deallocate(d_t_dyn,d_q_dyn)
     620      deallocate(d_ql_dyn,d_qs_dyn)
    617621      deallocate(d_u_dyn,d_v_dyn)
    618622      deallocate(d_tr_dyn)                      !RomP
     
    725729      DEALLOCATE(cldljn, cldmjn, cldhjn, cldtjn, JrNt)
    726730      DEALLOCATE(dthmin, evap, fder, plcl, plfc)
    727       DEALLOCATE(prw, zustar, zu10m, zv10m, rh2m, s_lcl)
     731      DEALLOCATE(prw, prlw, prsw, zustar, zu10m, zv10m, rh2m, s_lcl)
    728732      DEALLOCATE(s_pblh, s_pblt, s_therm)
    729733!
  • LMDZ5/trunk/libf/phylmd/phys_output_ctrlout_mod.F90

    r2486 r2496  
    449449  TYPE(ctrl_out), SAVE :: o_prw = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), &
    450450    'prw', 'Precipitable water', 'kg/m2', (/ ('', i=1, 9) /))
     451  TYPE(ctrl_out), SAVE :: o_prlw = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), &
     452    'prlw', 'Precipitable liquid water', 'kg/m2', (/ ('', i=1, 9) /))
     453  TYPE(ctrl_out), SAVE :: o_prsw = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11 /), &
     454    'prsw', 'Precipitable solid water', 'kg/m2', (/ ('', i=1, 9) /))
    451455  TYPE(ctrl_out), SAVE :: o_s_pblh = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11 /), &
    452456    's_pblh', 'Boundary Layer Height', 'm', (/ ('', i=1, 9) /))
     
    992996  TYPE(ctrl_out), SAVE :: o_dqphy2d = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), &
    993997    'dqphy2d', 'Physics dQ', '(kg/m2)/s', (/ ('', i=1, 9) /))
     998  TYPE(ctrl_out), SAVE :: o_dqlphy = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), &
     999    'dqlphy', 'Physics dQL', '(kg/kg)/s', (/ ('', i=1, 9) /))
     1000  TYPE(ctrl_out), SAVE :: o_dqlphy2d = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), &
     1001    'dqlphy2d', 'Physics dQL', '(kg/m2)/s', (/ ('', i=1, 9) /))
     1002  TYPE(ctrl_out), SAVE :: o_dqsphy = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), &
     1003    'dqsphy', 'Physics dQS', '(kg/kg)/s', (/ ('', i=1, 9) /))
     1004  TYPE(ctrl_out), SAVE :: o_dqsphy2d = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), &
     1005    'dqsphy2d', 'Physics dQS', '(kg/m2)/s', (/ ('', i=1, 9) /))
    9941006  TYPE(ctrl_out), SAVE :: o_pr_con_l = ctrl_out((/ 2, 10, 10, 10, 10, 10, 11, 11, 11 /), &
    9951007    'pr_con_l', 'Convective precipitation lic', ' ', (/ ('', i=1, 9) /))
     
    10711083  TYPE(ctrl_out), SAVE :: o_dqdyn2d = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), &
    10721084    'dqdyn2d', 'Dynamics dQ', '(kg/m2)/s', (/ ('', i=1, 9) /))
     1085  TYPE(ctrl_out), SAVE :: o_dqldyn = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), &
     1086    'dqldyn', 'Dynamics dQL', '(kg/kg)/s', (/ ('', i=1, 9) /))
     1087  TYPE(ctrl_out), SAVE :: o_dqldyn2d = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), &
     1088    'dqldyn2d', 'Dynamics dQL', '(kg/m2)/s', (/ ('', i=1, 9) /))
     1089  TYPE(ctrl_out), SAVE :: o_dqsdyn = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), &
     1090    'dqsdyn', 'Dynamics dQS', '(kg/kg)/s', (/ ('', i=1, 9) /))
     1091  TYPE(ctrl_out), SAVE :: o_dqsdyn2d = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), &
     1092    'dqsdyn2d', 'Dynamics dQS', '(kg/m2)/s', (/ ('', i=1, 9) /))
    10731093  TYPE(ctrl_out), SAVE :: o_dudyn = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11 /), &
    10741094    'dudyn', 'Dynamics dU', 'm/s2', (/ ('', i=1, 9) /))
  • LMDZ5/trunk/libf/phylmd/phys_output_write_mod.F90

    r2486 r2496  
    1717  SUBROUTINE phys_output_write(itap, pdtphys, paprs, pphis, &
    1818       pplay, lmax_th, aerosol_couple,         &
    19        ok_ade, ok_aie, ivap, new_aod, ok_sync, &
     19       ok_ade, ok_aie, ivap, iliq, isol, new_aod, ok_sync, &
    2020       ptconv, read_climoz, clevSTD, ptconvth, &
    2121       d_t, qx, d_qx, zmasse, flag_aerosol, flag_aerosol_strat, ok_cdnc)
     
    6767         o_wbeff, o_cape_max, o_upwd, o_ep,o_epmax_diag, o_Ma, &
    6868         o_dnwd, o_dnwd0, o_ftime_con, o_mc, &
    69          o_prw, o_s_pblh, o_s_pblt, o_s_lcl, &
     69         o_prw, o_prlw, o_prsw, o_s_pblh, o_s_pblt, o_s_lcl, &
    7070         o_s_therm, o_uSTDlevs, o_vSTDlevs, &
    7171         o_wSTDlevs, o_zSTDlevs, o_qSTDlevs, &
     
    120120         o_zfull, o_zhalf, o_rneb, o_rnebjn, o_rnebcon, &
    121121         o_rnebls, o_rhum, o_ozone, o_ozone_light, &
    122          o_dtphy, o_dqphy, o_dqphy2d, o_albe_srf, o_z0m_srf, o_z0h_srf, &
     122         o_dtphy, o_dqphy, o_dqphy2d, o_dqlphy, o_dqlphy2d, &
     123         o_dqsphy, o_dqsphy2d, o_albe_srf, o_z0m_srf, o_z0h_srf, &
    123124         o_ages_srf, o_snow_srf, o_alb1, o_alb2, o_tke, &
    124125         o_tke_max, o_kz, o_kz_max, o_clwcon, &
    125          o_dtdyn, o_dqdyn, o_dqdyn2d, o_dudyn, o_dvdyn, &
     126         o_dtdyn, o_dqdyn, o_dqdyn2d, o_dqldyn, o_dqldyn2d, &
     127         o_dqsdyn, o_dqsdyn2d, o_dudyn, o_dvdyn, &
    126128         o_dtcon, o_tntc, o_ducon, o_dvcon, &
    127129         o_dqcon, o_dqcon2d, o_tnhusc, o_tnhusc, o_dtlsc, &
     
    201203         cldh, cldt, JrNt, cldljn, cldmjn, cldhjn, &
    202204         cldtjn, cldq, flwp, fiwp, ue, ve, uq, vq, &
    203          plcl, plfc, wbeff, upwd, dnwd, dnwd0, prw, &
     205         plcl, plfc, wbeff, upwd, dnwd, dnwd0, prw, prlw, prsw, &
    204206         s_pblh, s_pblt, s_lcl, s_therm, uwriteSTD, &
    205207         vwriteSTD, wwriteSTD, phiwriteSTD, qwriteSTD, &
     
    236238         zphi, u_seri, v_seri, omega, cldfra, &
    237239!>jyg
    238          rneb, rnebjn, zx_rh, d_t_dyn, d_q_dyn, &
     240         rneb, rnebjn, zx_rh, d_t_dyn, d_q_dyn,  &
     241         d_ql_dyn, d_qs_dyn, &
    239242         d_u_dyn, d_v_dyn, d_t_con, d_t_ajsb, d_t_ajs, &
    240243         d_u_ajs, d_v_ajs, &
     
    288291
    289292    ! Input
    290     INTEGER :: itap, ivap, read_climoz
     293    INTEGER :: itap, ivap, iliq, isol, read_climoz
    291294    INTEGER, DIMENSION(klon) :: lmax_th
    292295    LOGICAL :: aerosol_couple, ok_sync
     
    671674       ENDIF !iflag_con .GE. 3
    672675       CALL histwrite_phy(o_prw, prw)
     676       CALL histwrite_phy(o_prlw, prlw)
     677       CALL histwrite_phy(o_prsw, prsw)
    673678       CALL histwrite_phy(o_s_pblh, s_pblh)
    674679       CALL histwrite_phy(o_s_pblt, s_pblt)
     
    10641069
    10651070       CALL histwrite_phy(o_dtphy, d_t)
     1071
    10661072       CALL histwrite_phy(o_dqphy,  d_qx(:,:,ivap))
    10671073       CALL water_int(klon,klev,d_qx(:,:,ivap),zmasse,zx_tmp_fi2d)
    10681074       CALL histwrite_phy(o_dqphy2d,  zx_tmp_fi2d)
     1075
     1076       CALL histwrite_phy(o_dqlphy,  d_qx(:,:,iliq))
     1077       CALL water_int(klon,klev,d_qx(:,:,iliq),zmasse,zx_tmp_fi2d)
     1078       CALL histwrite_phy(o_dqlphy2d,  zx_tmp_fi2d)
     1079
     1080       IF (nqo.EQ.3) THEN
     1081       CALL histwrite_phy(o_dqsphy,  d_qx(:,:,isol))
     1082       CALL water_int(klon,klev,d_qx(:,:,isol),zmasse,zx_tmp_fi2d)
     1083       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
     1084       ELSE
     1085       zx_tmp_fi3d=0.0
     1086       CALL histwrite_phy(o_dqsphy,  zx_tmp_fi3d)
     1087       zx_tmp_fi2d=0.0
     1088       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
     1089       ENDIF
     1090
    10691091       DO nsrf=1, nbsrf
    10701092          IF (vars_defined) zx_tmp_fi2d(1 : klon) = falb1( 1 : klon, nsrf)
     
    11031125       CALL histwrite_phy(o_clwcon, clwcon0)
    11041126       CALL histwrite_phy(o_dtdyn, d_t_dyn)
     1127
    11051128       CALL histwrite_phy(o_dqdyn, d_q_dyn)
    11061129       CALL water_int(klon,klev,d_q_dyn,zmasse,zx_tmp_fi2d)
    11071130       CALL histwrite_phy(o_dqdyn2d,zx_tmp_fi2d)
     1131
     1132       CALL histwrite_phy(o_dqldyn, d_ql_dyn)
     1133       CALL water_int(klon,klev,d_ql_dyn,zmasse,zx_tmp_fi2d)
     1134       CALL histwrite_phy(o_dqldyn2d,zx_tmp_fi2d)
     1135
     1136       CALL histwrite_phy(o_dqsdyn, d_qs_dyn)
     1137       CALL water_int(klon,klev,d_qs_dyn,zmasse,zx_tmp_fi2d)
     1138       CALL histwrite_phy(o_dqsdyn2d,zx_tmp_fi2d)
     1139
    11081140       CALL histwrite_phy(o_dudyn, d_u_dyn)
    11091141       CALL histwrite_phy(o_dvdyn, d_v_dyn)
  • LMDZ5/trunk/libf/phylmd/physiq_mod.F90

    r2489 r2496  
    115115    !! d_t_dyn-input-R-tendance dynamique pour "t" (K/s)
    116116    !! d_q_dyn-input-R-tendance dynamique pour "q" (kg/kg/s)
     117    !! d_ql_dyn-input-R-tendance dynamique pour "ql" (kg/kg/s)
     118    !! d_qs_dyn-input-R-tendance dynamique pour "qs" (kg/kg/s)
    117119    !! flxmass_w -input-R- flux de masse verticale
    118120    !! d_u-----output-R-tendance physique de "u" (m/s/s)
     
    16601662             d_t_dyn(i,k) = (t_seri(i,k)-t_ancien(i,k))/dtime
    16611663             d_q_dyn(i,k) = (q_seri(i,k)-q_ancien(i,k))/dtime
     1664             d_ql_dyn(i,k) = (ql_seri(i,k)-ql_ancien(i,k))/dtime
     1665             d_qs_dyn(i,k) = (qs_seri(i,k)-qs_ancien(i,k))/dtime
    16621666          ENDDO
    16631667       ENDDO
     
    16881692             d_t_dyn(i,k) = 0.0
    16891693             d_q_dyn(i,k) = 0.0
     1694             d_ql_dyn(i,k) = 0.0
     1695             d_qs_dyn(i,k) = 0.0
    16901696          ENDDO
    16911697       ENDDO
     
    42974303    CALL diag_slp(klon,t_seri,paprs,pplay,pphis,ptstar,pt0,slp)
    42984304    !
    4299     !cc prw = eau precipitable
     4305    !cc prw  = eau precipitable
     4306    !   prlw = colonne eau liquide
     4307    !   prlw = colonne eau solide
    43004308    DO i = 1, klon
    43014309       prw(i) = 0.
     4310       prlw(i) = 0.
     4311       prsw(i) = 0.
    43024312       DO k = 1, klev
    43034313          prw(i) = prw(i) + &
    43044314               q_seri(i,k)*(paprs(i,k)-paprs(i,k+1))/RG
     4315          prlw(i) = prlw(i) + &
     4316               ql_seri(i,k)*(paprs(i,k)-paprs(i,k+1))/RG
     4317          prsw(i) = prsw(i) + &
     4318               qs_seri(i,k)*(paprs(i,k)-paprs(i,k+1))/RG
    43054319       ENDDO
    43064320    ENDDO
     
    44054419          t_ancien(i,k) = t_seri(i,k)
    44064420          q_ancien(i,k) = q_seri(i,k)
     4421          ql_ancien(i,k) = ql_seri(i,k)
     4422          qs_ancien(i,k) = qs_seri(i,k)
    44074423       ENDDO
    44084424    ENDDO
     
    45414557    CALL phys_output_write(itap, pdtphys, paprs, pphis,  &
    45424558         pplay, lmax_th, aerosol_couple,                 &
    4543          ok_ade, ok_aie, ivap, new_aod, ok_sync,         &
    4544          ptconv, read_climoz, clevSTD,                   &
     4559         ok_ade, ok_aie, ivap, iliq, isol, new_aod,      &
     4560         ok_sync, ptconv, read_climoz, clevSTD,          &
    45454561         ptconvth, d_t, qx, d_qx, zmasse,                &
    45464562         flag_aerosol, flag_aerosol_strat, ok_cdnc)
Note: See TracChangeset for help on using the changeset viewer.