--- trunk/phylmd/physiq.f 2018/09/27 14:58:10 309 +++ trunk/phylmd/physiq.f 2019/02/06 15:58:03 324 @@ -29,13 +29,13 @@ USE conf_gcm_m, ONLY: lmt_pas USE conf_phys_m, ONLY: conf_phys use conflx_m, only: conflx - USE ctherm, ONLY: iflag_thermals, nsplit_thermals + USE ctherm_m, ONLY: iflag_thermals, ctherm use diagcld2_m, only: diagcld2 USE dimensions, ONLY: llm, nqmx USE dimphy, ONLY: klon USE dimsoil, ONLY: nsoilmx use drag_noro_m, only: drag_noro - use dynetat0_m, only: day_ref, annee_ref + use dynetat0_chosen_m, only: day_ref, annee_ref USE fcttre, ONLY: foeew use fisrtilp_m, only: fisrtilp USE hgardfou_m, ONLY: hgardfou @@ -145,14 +145,15 @@ ! "physiq". REAL, save:: radsol(klon) - ! bilan radiatif net au sol (W/m2), positif vers le bas + ! Bilan radiatif net au sol (W/m2), positif vers le bas. Must be + ! saved because radlwsw is not called at every time step. - REAL, save:: ftsol(klon, nbsrf) ! skin temperature of surface fraction + REAL, save:: ftsol(klon, nbsrf) ! skin temperature of surface fraction, in K REAL, save:: ftsoil(klon, nsoilmx, nbsrf) ! soil temperature of surface fraction - REAL fluxlat(klon, nbsrf) + REAL fluxlat(klon, nbsrf) ! flux de chaleur latente, en W m-2 REAL, save:: fqsurf(klon, nbsrf) ! humidite de l'air au contact de la surface @@ -279,7 +280,7 @@ real longi REAL z_avant(klon), z_apres(klon), z_factor(klon) REAL zb - REAL zx_t, zx_qs, zcor + REAL zx_qs, zcor real zqsat(klon, llm) INTEGER i, k, iq, nsrf REAL zphi(klon, llm) @@ -406,8 +407,7 @@ integer, save:: ncid_startphy namelist /physiq_nml/ fact_cldcon, facttemps, ok_newmicro, iflag_cldcon, & - ratqsbas, ratqshaut, ok_ade, bl95_b0, bl95_b1, iflag_thermals, & - nsplit_thermals + ratqsbas, ratqshaut, ok_ade, bl95_b0, bl95_b1 !---------------------------------------------------------------- @@ -435,12 +435,11 @@ pblt =0. therm =0. - iflag_thermals = 0 - nsplit_thermals = 1 print *, "Enter namelist 'physiq_nml'." read(unit=*, nml=physiq_nml) write(unit_nml, nml=physiq_nml) + call ctherm call conf_phys ! Initialiser les compteurs: @@ -672,14 +671,13 @@ fm_therm = 0. entr_therm = 0. - if (iflag_thermals == 0) then - ! Ajustement sec + if (iflag_thermals) then + call calltherm(play, paprs, pphi, u_seri, v_seri, t_seri, q_seri, & + d_u_ajs, d_v_ajs, d_t_ajs, d_q_ajs, fm_therm, entr_therm) + else CALL ajsec(paprs, play, t_seri, q_seri, d_t_ajs, d_q_ajs) t_seri = t_seri + d_t_ajs q_seri = q_seri + d_q_ajs - else - call calltherm(play, paprs, pphi, u_seri, v_seri, t_seri, q_seri, & - d_u_ajs, d_v_ajs, d_t_ajs, d_q_ajs, fm_therm, entr_therm) endif ! Caclul des ratqs @@ -812,8 +810,7 @@ ! Humidit\'e relative pour diagnostic : DO k = 1, llm DO i = 1, klon - zx_t = t_seri(i, k) - zx_qs = r2es * FOEEW(zx_t, rtt >= zx_t) / play(i, k) + zx_qs = r2es * FOEEW(t_seri(i, k), rtt >= t_seri(i, k)) / play(i, k) zx_qs = MIN(0.5, zx_qs) zcor = 1. / (1. - retv * zx_qs) zx_qs = zx_qs * zcor @@ -918,8 +915,8 @@ ! diag. bilKP - CALL transp_lay(paprs, t_seri, q_seri, u_seri, v_seri, zphi, & - ve_lay, vq_lay, ue_lay, uq_lay) + CALL transp_lay(paprs, t_seri, q_seri, u_seri, v_seri, zphi, ve_lay, & + vq_lay, ue_lay, uq_lay) ! Accumuler les variables a stocker dans les fichiers histoire: