/[lmdze]/trunk/phylmd/physiq.f
ViewVC logotype

Diff of /trunk/phylmd/physiq.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 175 by guez, Fri Feb 5 16:02:34 2016 UTC revision 182 by guez, Wed Mar 16 11:11:27 2016 UTC
# Line 19  contains Line 19  contains
19      use aeropt_m, only: aeropt      use aeropt_m, only: aeropt
20      use ajsec_m, only: ajsec      use ajsec_m, only: ajsec
21      use calltherm_m, only: calltherm      use calltherm_m, only: calltherm
22      USE clesphys, ONLY: cdhmax, cdmmax, co2_ppm, ecrit_hf, ecrit_ins, &      USE clesphys, ONLY: cdhmax, cdmmax, ecrit_hf, ecrit_ins, ecrit_mth, &
23           ecrit_mth, ecrit_reg, ecrit_tra, ksta, ksta_ter, ok_kzmin           ecrit_reg, ecrit_tra, ksta, ksta_ter, ok_kzmin
24      USE clesphys2, ONLY: cycle_diurne, iflag_con, nbapp_rad, new_oliq, &      USE clesphys2, ONLY: cycle_diurne, conv_emanuel, nbapp_rad, new_oliq, &
25           ok_orodr, ok_orolf           ok_orodr, ok_orolf
26      USE clmain_m, ONLY: clmain      USE clmain_m, ONLY: clmain
27      use clouds_gno_m, only: clouds_gno      use clouds_gno_m, only: clouds_gno
# Line 63  contains Line 63  contains
63      use yoegwd, only: sugwd      use yoegwd, only: sugwd
64      USE suphec_m, ONLY: rcpd, retv, rg, rlvtt, romega, rsigma, rtt      USE suphec_m, ONLY: rcpd, retv, rg, rlvtt, romega, rsigma, rtt
65      use transp_m, only: transp      use transp_m, only: transp
66        use transp_lay_m, only: transp_lay
67      use unit_nml_m, only: unit_nml      use unit_nml_m, only: unit_nml
68      USE ymds2ju_m, ONLY: ymds2ju      USE ymds2ju_m, ONLY: ymds2ju
69      USE yoethf_m, ONLY: r2es, rvtmp2      USE yoethf_m, ONLY: r2es, rvtmp2
# Line 204  contains Line 205  contains
205      REAL, save:: zpic(klon) ! Maximum de l'OESM      REAL, save:: zpic(klon) ! Maximum de l'OESM
206      REAL, save:: zval(klon) ! Minimum de l'OESM      REAL, save:: zval(klon) ! Minimum de l'OESM
207      REAL, save:: rugoro(klon) ! longueur de rugosite de l'OESM      REAL, save:: rugoro(klon) ! longueur de rugosite de l'OESM
   
208      REAL zulow(klon), zvlow(klon)      REAL zulow(klon), zvlow(klon)
209        INTEGER igwd, itest(klon)
     INTEGER igwd, idx(klon), itest(klon)  
210    
211      REAL agesno(klon, nbsrf)      REAL agesno(klon, nbsrf)
212      SAVE agesno ! age de la neige      SAVE agesno ! age de la neige
# Line 384  contains Line 383  contains
383      INTEGER, save:: ibas_con(klon), itop_con(klon)      INTEGER, save:: ibas_con(klon), itop_con(klon)
384    
385      REAL rain_con(klon), rain_lsc(klon)      REAL rain_con(klon), rain_lsc(klon)
386      REAL snow_con(klon), snow_lsc(klon)      REAL, save:: snow_con(klon)
387        real snow_lsc(klon)
388      REAL d_ts(klon, nbsrf)      REAL d_ts(klon, nbsrf)
389    
390      REAL d_u_vdf(klon, llm), d_v_vdf(klon, llm)      REAL d_u_vdf(klon, llm), d_v_vdf(klon, llm)
# Line 487  contains Line 487  contains
487      SAVE ffonte      SAVE ffonte
488      SAVE fqcalving      SAVE fqcalving
489      SAVE rain_con      SAVE rain_con
     SAVE snow_con  
490      SAVE topswai      SAVE topswai
491      SAVE topswad      SAVE topswad
492      SAVE solswai      SAVE solswai
# Line 580  contains Line 579  contains
579         CALL printflag(radpas, ok_journe, ok_instan, ok_region)         CALL printflag(radpas, ok_journe, ok_instan, ok_region)
580    
581         ! Initialisation pour le sch\'ema de convection d'Emanuel :         ! Initialisation pour le sch\'ema de convection d'Emanuel :
582         IF (iflag_con >= 3) THEN         IF (conv_emanuel) THEN
583            ibas_con = 1            ibas_con = 1
584            itop_con = 1            itop_con = 1
585         ENDIF         ENDIF
# Line 719  contains Line 718  contains
718      ! Couche limite:      ! Couche limite:
719    
720      CALL clmain(dtphys, itap, pctsrf, pctsrf_new, t_seri, q_seri, u_seri, &      CALL clmain(dtphys, itap, pctsrf, pctsrf_new, t_seri, q_seri, u_seri, &
721           v_seri, julien, mu0, co2_ppm, ftsol, cdmmax, cdhmax, ksta, ksta_ter, &           v_seri, julien, mu0, ftsol, cdmmax, cdhmax, ksta, ksta_ter, &
722           ok_kzmin, ftsoil, qsol, paprs, play, fsnow, fqsurf, fevap, falbe, &           ok_kzmin, ftsoil, qsol, paprs, play, fsnow, fqsurf, fevap, falbe, &
723           fluxlat, rain_fall, snow_fall, fsolsw, fsollw, fder, rlat, frugs, &           fluxlat, rain_fall, snow_fall, fsolsw, fsollw, fder, rlat, frugs, &
724           firstcal, agesno, rugoro, d_t_vdf, d_q_vdf, d_u_vdf, d_v_vdf, d_ts, &           firstcal, agesno, rugoro, d_t_vdf, d_q_vdf, d_u_vdf, d_v_vdf, d_ts, &
# Line 857  contains Line 856  contains
856    
857      ! Appeler la convection (au choix)      ! Appeler la convection (au choix)
858    
859      if (iflag_con == 2) then      if (conv_emanuel) then
        conv_q = d_q_dyn + d_q_vdf / dtphys  
        conv_t = d_t_dyn + d_t_vdf / dtphys  
        z_avant = sum((q_seri + ql_seri) * zmasse, dim=2)  
        CALL conflx(dtphys, paprs, play, t_seri(:, llm:1:- 1), &  
             q_seri(:, llm:1:- 1), conv_t, conv_q, zxfluxq(:, 1), omega, &  
             d_t_con, d_q_con, rain_con, snow_con, mfu(:, llm:1:- 1), &  
             mfd(:, llm:1:- 1), pen_u, pde_u, pen_d, pde_d, kcbot, kctop, &  
             kdtop, pmflxr, pmflxs)  
        WHERE (rain_con < 0.) rain_con = 0.  
        WHERE (snow_con < 0.) snow_con = 0.  
        ibas_con = llm + 1 - kcbot  
        itop_con = llm + 1 - kctop  
     else  
        ! iflag_con >= 3  
   
860         da = 0.         da = 0.
861         mp = 0.         mp = 0.
862         phi = 0.         phi = 0.
863         CALL concvl(dtphys, paprs, play, t_seri, q_seri, u_seri, v_seri, sig1, &         CALL concvl(dtphys, paprs, play, t_seri, q_seri, u_seri, v_seri, sig1, &
864              w01, d_t_con, d_q_con, d_u_con, d_v_con, rain_con, snow_con, &              w01, d_t_con, d_q_con, d_u_con, d_v_con, rain_con, snow_con, &
865              ibas_con, itop_con, upwd, dnwd, dnwd0, Ma, cape, iflagctrl, &              ibas_con, itop_con, upwd, dnwd, dnwd0, Ma, cape, iflagctrl, &
866              qcondc, wd, pmflxr, pmflxs, da, phi, mp)              qcondc, wd, pmflxr, da, phi, mp)
867         clwcon0 = qcondc         clwcon0 = qcondc
868         mfu = upwd + dnwd         mfu = upwd + dnwd
869         IF (.NOT. ok_gust) wd = 0.         IF (.NOT. ok_gust) wd = 0.
# Line 901  contains Line 885  contains
885         pen_d = 0.         pen_d = 0.
886         pde_d = 0.         pde_d = 0.
887         pde_u = 0.         pde_u = 0.
888        else
889           conv_q = d_q_dyn + d_q_vdf / dtphys
890           conv_t = d_t_dyn + d_t_vdf / dtphys
891           z_avant = sum((q_seri + ql_seri) * zmasse, dim=2)
892           CALL conflx(dtphys, paprs, play, t_seri(:, llm:1:- 1), &
893                q_seri(:, llm:1:- 1), conv_t, conv_q, zxfluxq(:, 1), omega, &
894                d_t_con, d_q_con, rain_con, snow_con, mfu(:, llm:1:- 1), &
895                mfd(:, llm:1:- 1), pen_u, pde_u, pen_d, pde_d, kcbot, kctop, &
896                kdtop, pmflxr, pmflxs)
897           WHERE (rain_con < 0.) rain_con = 0.
898           WHERE (snow_con < 0.) snow_con = 0.
899           ibas_con = llm + 1 - kcbot
900           itop_con = llm + 1 - kctop
901      END if      END if
902    
903      DO k = 1, llm      DO k = 1, llm
# Line 934  contains Line 931  contains
931         print *, "Precip = ", zx_t         print *, "Precip = ", zx_t
932      ENDIF      ENDIF
933    
934      IF (iflag_con == 2) THEN      IF (.not. conv_emanuel) THEN
935         z_apres = sum((q_seri + ql_seri) * zmasse, dim=2)         z_apres = sum((q_seri + ql_seri) * zmasse, dim=2)
936         z_factor = (z_avant - (rain_con + snow_con) * dtphys) / z_apres         z_factor = (z_avant - (rain_con + snow_con) * dtphys) / z_apres
937         DO k = 1, llm         DO k = 1, llm
# Line 1230  contains Line 1227  contains
1227            IF (zpic(i) - zmea(i) > 100. .AND. zstd(i) > 10.) THEN            IF (zpic(i) - zmea(i) > 100. .AND. zstd(i) > 10.) THEN
1228               itest(i) = 1               itest(i) = 1
1229               igwd = igwd + 1               igwd = igwd + 1
              idx(igwd) = i  
1230            ENDIF            ENDIF
1231         ENDDO         ENDDO
1232    
# Line 1256  contains Line 1252  contains
1252            IF (zpic(i) - zmea(i) > 100.) THEN            IF (zpic(i) - zmea(i) > 100.) THEN
1253               itest(i) = 1               itest(i) = 1
1254               igwd = igwd + 1               igwd = igwd + 1
              idx(igwd) = i  
1255            ENDIF            ENDIF
1256         ENDDO         ENDDO
1257    
# Line 1311  contains Line 1306  contains
1306    
1307      ! diag. bilKP      ! diag. bilKP
1308    
1309      CALL transp_lay(paprs, zxtsol, t_seri, q_seri, u_seri, v_seri, zphi, &      CALL transp_lay(paprs, t_seri, q_seri, u_seri, v_seri, zphi, &
1310           ve_lay, vq_lay, ue_lay, uq_lay)           ve_lay, vq_lay, ue_lay, uq_lay)
1311    
1312      ! Accumuler les variables a stocker dans les fichiers histoire:      ! Accumuler les variables a stocker dans les fichiers histoire:
# Line 1614  contains Line 1609  contains
1609           CALL gr_fi_ecrit(llm, klon, iim, jjm + 1, d_q_vdf, zx_tmp_3d)           CALL gr_fi_ecrit(llm, klon, iim, jjm + 1, d_q_vdf, zx_tmp_3d)
1610           CALL histwrite(nid_ins, "dqvdf", itau_w, zx_tmp_3d)           CALL histwrite(nid_ins, "dqvdf", itau_w, zx_tmp_3d)
1611    
1612             CALL gr_fi_ecrit(llm, klon, iim, jjm + 1, zx_rh, zx_tmp_3d)
1613             CALL histwrite(nid_ins, "rhum", itau_w, zx_tmp_3d)
1614    
1615           call histsync(nid_ins)           call histsync(nid_ins)
1616        ENDIF        ENDIF
1617    

Legend:
Removed from v.175  
changed lines
  Added in v.182

  ViewVC Help
Powered by ViewVC 1.1.21