/[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 267 by guez, Thu May 3 16:14:08 2018 UTC revision 301 by guez, Thu Aug 2 17:23:07 2018 UTC
# Line 20  contains Line 20  contains
20      use calltherm_m, only: calltherm      use calltherm_m, only: calltherm
21      USE clesphys, ONLY: cdhmax, cdmmax, ecrit_ins, ok_instan      USE clesphys, ONLY: cdhmax, cdmmax, ecrit_ins, ok_instan
22      USE clesphys2, ONLY: conv_emanuel, nbapp_rad, new_oliq, ok_orodr, ok_orolf      USE clesphys2, ONLY: conv_emanuel, nbapp_rad, new_oliq, ok_orodr, ok_orolf
23        USE conf_interface_m, ONLY: conf_interface
24      USE pbl_surface_m, ONLY: pbl_surface      USE pbl_surface_m, ONLY: pbl_surface
25      use clouds_gno_m, only: clouds_gno      use clouds_gno_m, only: clouds_gno
26      use comconst, only: dtphys      use comconst, only: dtphys
# Line 187  contains Line 188  contains
188      REAL, save:: ffonte(klon, nbsrf)      REAL, save:: ffonte(klon, nbsrf)
189      ! flux thermique utilise pour fondre la neige      ! flux thermique utilise pour fondre la neige
190    
191      REAL, save:: fqcalving(klon, nbsrf)      REAL fqcalving(klon, nbsrf)
192      ! flux d'eau "perdue" par la surface et necessaire pour limiter la      ! flux d'eau "perdue" par la surface et n\'ecessaire pour limiter
193      ! hauteur de neige, en kg / m2 / s      ! la hauteur de neige, en kg / m2 / s
194    
195      REAL zxffonte(klon), zxfqcalving(klon)      REAL zxffonte(klon)
196    
197      REAL, save:: pfrac_impa(klon, llm)! Produits des coefs lessivage impaction      REAL, save:: pfrac_impa(klon, llm)! Produits des coefs lessivage impaction
198      REAL, save:: pfrac_nucl(klon, llm)! Produits des coefs lessivage nucleation      REAL, save:: pfrac_nucl(klon, llm)! Produits des coefs lessivage nucleation
# Line 417  contains Line 418  contains
418         t2m = 0.         t2m = 0.
419         q2m = 0.         q2m = 0.
420         ffonte = 0.         ffonte = 0.
        fqcalving = 0.  
421         rain_con = 0.         rain_con = 0.
422         snow_con = 0.         snow_con = 0.
423         d_u_con = 0.         d_u_con = 0.
# Line 470  contains Line 470  contains
470            rugoro = 0.            rugoro = 0.
471         ENDIF         ENDIF
472    
        ecrit_ins = NINT(ecrit_ins / dtphys)  
   
473         ! Initialisation des sorties         ! Initialisation des sorties
474           call ini_histins(ok_newmicro)
        call ini_histins(dtphys, ok_newmicro)  
475         CALL phyredem0         CALL phyredem0
476           call conf_interface
477      ENDIF test_firstcal      ENDIF test_firstcal
478    
479      ! We will modify variables *_seri and we will not touch variables      ! We will modify variables *_seri and we will not touch variables
# Line 553  contains Line 551  contains
551         fsolsw(:, nsrf) = solsw * (1. - falbe(:, nsrf)) / (1. - albsol)         fsolsw(:, nsrf) = solsw * (1. - falbe(:, nsrf)) / (1. - albsol)
552      END forall      END forall
553    
554      CALL pbl_surface(dtphys, pctsrf, t_seri, q_seri, u_seri, v_seri, julien, &      CALL pbl_surface(pctsrf, t_seri, q_seri, u_seri, v_seri, julien, mu0, &
555           mu0, ftsol, cdmmax, cdhmax, ftsoil, qsol, paprs, play, fsnow, fqsurf, &           ftsol, cdmmax, cdhmax, ftsoil, qsol, paprs, play, fsnow, fqsurf, &
556           fevap, falbe, fluxlat, rain_fall, snow_fall, fsolsw, fsollw, frugs, &           fevap, falbe, fluxlat, rain_fall, snow_fall, fsolsw, fsollw, frugs, &
557           agesno, rugoro, d_t_vdf, d_q_vdf, d_u_vdf, d_v_vdf, d_ts, flux_t, &           agesno, rugoro, d_t_vdf, d_q_vdf, d_u_vdf, d_v_vdf, d_ts, flux_t, &
558           flux_q, flux_u, flux_v, cdragh, cdragm, q2, dsens, devap, coefh, t2m, &           flux_q, flux_u, flux_v, cdragh, cdragm, q2, dsens, devap, coefh, t2m, &
# Line 587  contains Line 585  contains
585      u10m = sum(u10m_srf * pctsrf, dim = 2)      u10m = sum(u10m_srf * pctsrf, dim = 2)
586      v10m = sum(v10m_srf * pctsrf, dim = 2)      v10m = sum(v10m_srf * pctsrf, dim = 2)
587      zxffonte = sum(ffonte * pctsrf, dim = 2)      zxffonte = sum(ffonte * pctsrf, dim = 2)
     zxfqcalving = sum(fqcalving * pctsrf, dim = 2)  
588      s_pblh = sum(pblh * pctsrf, dim = 2)      s_pblh = sum(pblh * pctsrf, dim = 2)
589      s_lcl = sum(plcl * pctsrf, dim = 2)      s_lcl = sum(plcl * pctsrf, dim = 2)
590      s_capCL = sum(capCL * pctsrf, dim = 2)      s_capCL = sum(capCL * pctsrf, dim = 2)
# Line 606  contains Line 603  contains
603               u10m_srf(i, nsrf) = u10m(i)               u10m_srf(i, nsrf) = u10m(i)
604               v10m_srf(i, nsrf) = v10m(i)               v10m_srf(i, nsrf) = v10m(i)
605               ffonte(i, nsrf) = zxffonte(i)               ffonte(i, nsrf) = zxffonte(i)
              fqcalving(i, nsrf) = zxfqcalving(i)  
606               pblh(i, nsrf) = s_pblh(i)               pblh(i, nsrf) = s_pblh(i)
607               plcl(i, nsrf) = s_lcl(i)               plcl(i, nsrf) = s_lcl(i)
608               capCL(i, nsrf) = s_capCL(i)               capCL(i, nsrf) = s_capCL(i)
# Line 647  contains Line 643  contains
643         conv_q = d_q_dyn + d_q_vdf / dtphys         conv_q = d_q_dyn + d_q_vdf / dtphys
644         conv_t = d_t_dyn + d_t_vdf / dtphys         conv_t = d_t_dyn + d_t_vdf / dtphys
645         z_avant = sum((q_seri + ql_seri) * zmasse, dim=2)         z_avant = sum((q_seri + ql_seri) * zmasse, dim=2)
646         CALL conflx(dtphys, paprs, play, t_seri(:, llm:1:- 1), &         CALL conflx(paprs, play, t_seri(:, llm:1:- 1), q_seri(:, llm:1:- 1), &
647              q_seri(:, llm:1:- 1), conv_t, conv_q, - evap, omega, d_t_con, &              conv_t, conv_q, - evap, omega, d_t_con, d_q_con, rain_con, &
648              d_q_con, rain_con, snow_con, mfu(:, llm:1:- 1), mfd(:, llm:1:- 1), &              snow_con, mfu(:, llm:1:- 1), mfd(:, llm:1:- 1), pen_u, pde_u, &
649              pen_u, pde_u, pen_d, pde_d, kcbot, kctop, kdtop, pmflxr, pmflxs)              pen_d, pde_d, kcbot, kctop, kdtop, pmflxr, pmflxs)
650         WHERE (rain_con < 0.) rain_con = 0.         WHERE (rain_con < 0.) rain_con = 0.
651         WHERE (snow_con < 0.) snow_con = 0.         WHERE (snow_con < 0.) snow_con = 0.
652         ibas_con = llm + 1 - kcbot         ibas_con = llm + 1 - kcbot
# Line 693  contains Line 689  contains
689         t_seri = t_seri + d_t_ajs         t_seri = t_seri + d_t_ajs
690         q_seri = q_seri + d_q_ajs         q_seri = q_seri + d_q_ajs
691      else      else
692         call calltherm(dtphys, play, paprs, pphi, u_seri, v_seri, t_seri, &         call calltherm(play, paprs, pphi, u_seri, v_seri, t_seri, q_seri, &
693              q_seri, d_u_ajs, d_v_ajs, d_t_ajs, d_q_ajs, fm_therm, entr_therm)              d_u_ajs, d_v_ajs, d_t_ajs, d_q_ajs, fm_therm, entr_therm)
694      endif      endif
695    
696      ! Caclul des ratqs      ! Caclul des ratqs
# Line 735  contains Line 731  contains
731         ratqs = ratqss         ratqs = ratqss
732      endif      endif
733    
734      CALL fisrtilp(dtphys, paprs, play, t_seri, q_seri, ptconv, ratqs, d_t_lsc, &      CALL fisrtilp(paprs, play, t_seri, q_seri, ptconv, ratqs, d_t_lsc, &
735           d_q_lsc, d_ql_lsc, rneb, cldliq, rain_lsc, snow_lsc, pfrac_impa, &           d_q_lsc, d_ql_lsc, rneb, cldliq, rain_lsc, snow_lsc, pfrac_impa, &
736           pfrac_nucl, pfrac_1nucl, frac_impa, frac_nucl, prfl, psfl, rhcl)           pfrac_nucl, pfrac_1nucl, frac_impa, frac_nucl, prfl, psfl, rhcl)
737    
# Line 881  contains Line 877  contains
877            ENDIF            ENDIF
878         ENDDO         ENDDO
879    
880         CALL drag_noro(dtphys, paprs, play, zmea, zstd, zsig, zgam, zthe, &         CALL drag_noro(paprs, play, zmea, zstd, zsig, zgam, zthe, zpic, zval, &
881              zpic, zval, ktest, t_seri, u_seri, v_seri, zulow, zvlow, zustrdr, &              ktest, t_seri, u_seri, v_seri, zulow, zvlow, zustrdr, zvstrdr, &
882              zvstrdr, d_t_oro, d_u_oro, d_v_oro)              d_t_oro, d_u_oro, d_v_oro)
883    
884         ! ajout des tendances         ! ajout des tendances
885         DO k = 1, llm         DO k = 1, llm
# Line 904  contains Line 900  contains
900            ENDIF            ENDIF
901         ENDDO         ENDDO
902    
903         CALL lift_noro(dtphys, paprs, play, zmea, zstd, zpic, ktest, t_seri, &         CALL lift_noro(paprs, play, zmea, zstd, zpic, ktest, t_seri, u_seri, &
904              u_seri, v_seri, zulow, zvlow, zustrli, zvstrli, d_t_lif, &              v_seri, zulow, zvlow, zustrli, zvstrli, d_t_lif, d_u_lif, d_v_lif)
             d_u_lif, d_v_lif)  
905    
906         ! Ajout des tendances :         ! Ajout des tendances :
907         DO k = 1, llm         DO k = 1, llm
# Line 924  contains Line 919  contains
919           aam, torsfc)           aam, torsfc)
920    
921      ! Calcul des tendances traceurs      ! Calcul des tendances traceurs
922      call phytrac(julien, time, firstcal, lafin, dtphys, t, paprs, play, mfu, &      call phytrac(julien, time, firstcal, lafin, t, paprs, play, mfu, mfd, &
923           mfd, pde_u, pen_d, coefh, cdragh, fm_therm, entr_therm, u(:, 1), &           pde_u, pen_d, coefh, cdragh, fm_therm, entr_therm, u(:, 1), v(:, 1), &
924           v(:, 1), ftsol, pctsrf, frac_impa, frac_nucl, da, phi, mp, upwd, &           ftsol, pctsrf, frac_impa, frac_nucl, da, phi, mp, upwd, dnwd, &
925           dnwd, tr_seri, zmasse, ncid_startphy)           tr_seri, zmasse, ncid_startphy)
926    
927      ! Calculer le transport de l'eau et de l'energie (diagnostique)      ! Calculer le transport de l'eau et de l'energie (diagnostique)
928      CALL transp(paprs, t_seri, q_seri, u_seri, v_seri, zphi, ve, vq, ue, uq)      CALL transp(paprs, t_seri, q_seri, u_seri, v_seri, zphi, ve, vq, ue, uq)
# Line 1013  contains Line 1008  contains
1008      CALL histwrite_phy("dtsvdft", d_ts(:, is_ter))      CALL histwrite_phy("dtsvdft", d_ts(:, is_ter))
1009      CALL histwrite_phy("dtsvdfg", d_ts(:, is_lic))      CALL histwrite_phy("dtsvdfg", d_ts(:, is_lic))
1010      CALL histwrite_phy("dtsvdfi", d_ts(:, is_sic))      CALL histwrite_phy("dtsvdfi", d_ts(:, is_sic))
1011        CALL histwrite_phy("zxfqcalving", sum(fqcalving * pctsrf, dim = 2))
1012    
1013      DO nsrf = 1, nbsrf      DO nsrf = 1, nbsrf
1014         CALL histwrite_phy("pourc_"//clnsurf(nsrf), pctsrf(:, nsrf) * 100.)         CALL histwrite_phy("pourc_"//clnsurf(nsrf), pctsrf(:, nsrf) * 100.)

Legend:
Removed from v.267  
changed lines
  Added in v.301

  ViewVC Help
Powered by ViewVC 1.1.21