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

Diff of /trunk/phylmd/physiq.f90

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

trunk/Sources/phylmd/physiq.f revision 223 by guez, Fri Apr 28 13:22:36 2017 UTC trunk/phylmd/physiq.f revision 324 by guez, Wed Feb 6 15:58:03 2019 UTC
# Line 18  contains Line 18  contains
18      USE abort_gcm_m, ONLY: abort_gcm      USE abort_gcm_m, ONLY: abort_gcm
19      use ajsec_m, only: ajsec      use ajsec_m, only: ajsec
20      use calltherm_m, only: calltherm      use calltherm_m, only: calltherm
21      USE clesphys, ONLY: cdhmax, cdmmax, ecrit_ins, ksta, ksta_ter, ok_kzmin, &      USE clesphys, ONLY: cdhmax, cdmmax, ecrit_ins, ok_instan
          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 clmain_m, ONLY: clmain      USE conf_interface_m, ONLY: conf_interface
24        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
27      USE comgeomphy, ONLY: airephy      USE comgeomphy, ONLY: airephy
28      USE concvl_m, ONLY: concvl      USE concvl_m, ONLY: concvl
29      USE conf_gcm_m, ONLY: offline, lmt_pas      USE conf_gcm_m, ONLY: lmt_pas
30      USE conf_phys_m, ONLY: conf_phys      USE conf_phys_m, ONLY: conf_phys
31      use conflx_m, only: conflx      use conflx_m, only: conflx
32      USE ctherm, ONLY: iflag_thermals, nsplit_thermals      USE ctherm_m, ONLY: iflag_thermals, ctherm
33      use diagcld2_m, only: diagcld2      use diagcld2_m, only: diagcld2
34      USE dimens_m, ONLY: llm, nqmx      USE dimensions, ONLY: llm, nqmx
35      USE dimphy, ONLY: klon      USE dimphy, ONLY: klon
36      USE dimsoil, ONLY: nsoilmx      USE dimsoil, ONLY: nsoilmx
37      use drag_noro_m, only: drag_noro      use drag_noro_m, only: drag_noro
38      use dynetat0_m, only: day_ref, annee_ref      use dynetat0_chosen_m, only: day_ref, annee_ref
39      USE fcttre, ONLY: foeew      USE fcttre, ONLY: foeew
40      use fisrtilp_m, only: fisrtilp      use fisrtilp_m, only: fisrtilp
41      USE hgardfou_m, ONLY: hgardfou      USE hgardfou_m, ONLY: hgardfou
# Line 44  contains Line 44  contains
44      USE indicesol, ONLY: clnsurf, epsfra, is_lic, is_oce, is_sic, is_ter, &      USE indicesol, ONLY: clnsurf, epsfra, is_lic, is_oce, is_sic, is_ter, &
45           nbsrf           nbsrf
46      USE ini_histins_m, ONLY: ini_histins, nid_ins      USE ini_histins_m, ONLY: ini_histins, nid_ins
47        use lift_noro_m, only: lift_noro
48      use netcdf95, only: NF95_CLOSE      use netcdf95, only: NF95_CLOSE
49      use newmicro_m, only: newmicro      use newmicro_m, only: newmicro
50      use nr_util, only: assert      use nr_util, only: assert
51      use nuage_m, only: nuage      use nuage_m, only: nuage
52      USE orbite_m, ONLY: orbite      USE orbite_m, ONLY: orbite
53      USE ozonecm_m, ONLY: ozonecm      USE ozonecm_m, ONLY: ozonecm
54      USE phyetat0_m, ONLY: phyetat0, rlat, rlon      USE phyetat0_m, ONLY: phyetat0
55      USE phyredem_m, ONLY: phyredem      USE phyredem_m, ONLY: phyredem
56      USE phyredem0_m, ONLY: phyredem0      USE phyredem0_m, ONLY: phyredem0
     USE phystokenc_m, ONLY: phystokenc  
57      USE phytrac_m, ONLY: phytrac      USE phytrac_m, ONLY: phytrac
58      use radlwsw_m, only: radlwsw      use radlwsw_m, only: radlwsw
59      use yoegwd, only: sugwd      use yoegwd, only: sugwd
# Line 144  contains Line 144  contains
144      ! Radiative transfer computations are made every "radpas" call to      ! Radiative transfer computations are made every "radpas" call to
145      ! "physiq".      ! "physiq".
146    
147      REAL, save:: radsol(klon) ! bilan radiatif au sol calcule par code radiatif      REAL, save:: radsol(klon)
148      REAL, save:: ftsol(klon, nbsrf) ! skin temperature of surface fraction      ! Bilan radiatif net au sol (W/m2), positif vers le bas. Must be
149        ! saved because radlwsw is not called at every time step.
150        
151        REAL, save:: ftsol(klon, nbsrf) ! skin temperature of surface fraction, in K
152    
153      REAL, save:: ftsoil(klon, nsoilmx, nbsrf)      REAL, save:: ftsoil(klon, nsoilmx, nbsrf)
154      ! soil temperature of surface fraction      ! soil temperature of surface fraction
155    
156      REAL, save:: fevap(klon, nbsrf) ! evaporation      REAL fluxlat(klon, nbsrf) ! flux de chaleur latente, en W m-2
     REAL fluxlat(klon, nbsrf)  
157    
158      REAL, save:: fqsurf(klon, nbsrf)      REAL, save:: fqsurf(klon, nbsrf)
159      ! humidite de l'air au contact de la surface      ! humidite de l'air au contact de la surface
# Line 170  contains Line 172  contains
172      REAL, save:: zval(klon) ! Minimum de l'OESM      REAL, save:: zval(klon) ! Minimum de l'OESM
173      REAL, save:: rugoro(klon) ! longueur de rugosite de l'OESM      REAL, save:: rugoro(klon) ! longueur de rugosite de l'OESM
174      REAL zulow(klon), zvlow(klon)      REAL zulow(klon), zvlow(klon)
175      INTEGER igwd, itest(klon)      INTEGER ktest(klon)
176    
177      REAL, save:: agesno(klon, nbsrf) ! age de la neige      REAL, save:: agesno(klon, nbsrf) ! age de la neige
178      REAL, save:: run_off_lic_0(klon)      REAL, save:: run_off_lic_0(klon)
179    
180      ! Variables li\'ees \`a la convection d'Emanuel :      ! Variables li\'ees \`a la convection d'Emanuel :
181      REAL, save:: Ma(klon, llm) ! undilute upward mass flux      REAL, save:: Ma(klon, llm) ! undilute upward mass flux
     REAL, save:: qcondc(klon, llm) ! in-cld water content from convect  
182      REAL, save:: sig1(klon, llm), w01(klon, llm)      REAL, save:: sig1(klon, llm), w01(klon, llm)
183    
184      ! Variables pour la couche limite (Alain Lahellec) :      ! Variables pour la couche limite (Alain Lahellec) :
185      REAL cdragh(klon) ! drag coefficient pour T and Q      REAL cdragh(klon) ! drag coefficient pour T and Q
186      REAL cdragm(klon) ! drag coefficient pour vent      REAL cdragm(klon) ! drag coefficient pour vent
187    
188      ! Pour phytrac :      REAL coefh(klon, 2:llm) ! coef d'echange pour phytrac
     REAL ycoefh(klon, llm) ! coef d'echange pour phytrac  
     REAL yu1(klon) ! vents dans la premiere couche U  
     REAL yv1(klon) ! vents dans la premiere couche V  
189    
190      REAL, save:: ffonte(klon, nbsrf)      REAL, save:: ffonte(klon, nbsrf)
191      ! flux thermique utilise pour fondre la neige      ! flux thermique utilise pour fondre la neige
192    
193      REAL, save:: fqcalving(klon, nbsrf)      REAL fqcalving(klon, nbsrf)
194      ! flux d'eau "perdue" par la surface et necessaire pour limiter la      ! flux d'eau "perdue" par la surface et n\'ecessaire pour limiter
195      ! hauteur de neige, en kg / m2 / s      ! la hauteur de neige, en kg / m2 / s
196    
197      REAL zxffonte(klon), zxfqcalving(klon)      REAL zxffonte(klon)
198    
199      REAL, save:: pfrac_impa(klon, llm)! Produits des coefs lessivage impaction      REAL, save:: pfrac_impa(klon, llm)! Produits des coefs lessivage impaction
200      REAL, save:: pfrac_nucl(klon, llm)! Produits des coefs lessivage nucleation      REAL, save:: pfrac_nucl(klon, llm)! Produits des coefs lessivage nucleation
# Line 216  contains Line 214  contains
214      REAL rain_tiedtke(klon), snow_tiedtke(klon)      REAL rain_tiedtke(klon), snow_tiedtke(klon)
215    
216      REAL evap(klon) ! flux d'\'evaporation au sol      REAL evap(klon) ! flux d'\'evaporation au sol
217      real devap(klon) ! derivative of the evaporation flux at the surface      real dflux_q(klon) ! derivative of the evaporation flux at the surface
218      REAL sens(klon) ! flux de chaleur sensible au sol      REAL sens(klon) ! flux de chaleur sensible au sol
219      real dsens(klon) ! derivee du flux de chaleur sensible au sol      real dflux_t(klon) ! derivee du flux de chaleur sensible au sol
220      REAL, save:: dlw(klon) ! derivative of infra-red flux      REAL, save:: dlw(klon) ! derivative of infra-red flux
221      REAL bils(klon) ! bilan de chaleur au sol      REAL bils(klon) ! bilan de chaleur au sol
222      REAL fder(klon) ! Derive de flux (sensible et latente)      REAL fder(klon) ! Derive de flux (sensible et latente)
# Line 241  contains Line 239  contains
239      real, save:: clwcon(klon, llm), rnebcon(klon, llm)      real, save:: clwcon(klon, llm), rnebcon(klon, llm)
240      real, save:: clwcon0(klon, llm), rnebcon0(klon, llm)      real, save:: clwcon0(klon, llm), rnebcon0(klon, llm)
241    
242      REAL rhcl(klon, llm) ! humiditi relative ciel clair      REAL rhcl(klon, llm) ! humidit\'e relative ciel clair
243      REAL dialiq(klon, llm) ! eau liquide nuageuse      REAL dialiq(klon, llm) ! eau liquide nuageuse
244      REAL diafra(klon, llm) ! fraction nuageuse      REAL diafra(klon, llm) ! fraction nuageuse
245      REAL cldliq(klon, llm) ! eau liquide nuageuse      REAL cldliq(klon, llm) ! eau liquide nuageuse
# Line 250  contains Line 248  contains
248      REAL cldemi(klon, llm) ! emissivite infrarouge      REAL cldemi(klon, llm) ! emissivite infrarouge
249    
250      REAL flux_q(klon, nbsrf) ! flux turbulent d'humidite à la surface      REAL flux_q(klon, nbsrf) ! flux turbulent d'humidite à la surface
251      REAL flux_t(klon, nbsrf) ! flux turbulent de chaleur à la surface  
252      REAL flux_u(klon, nbsrf) ! flux turbulent de vitesse u à la surface      REAL flux_t(klon, nbsrf)
253      REAL flux_v(klon, nbsrf) ! flux turbulent de vitesse v à la surface      ! flux de chaleur sensible (c_p T) (W / m2) (orientation positive
254        ! vers le bas) à la surface
255    
256        REAL flux_u(klon, nbsrf), flux_v(klon, nbsrf)
257        ! tension du vent (flux turbulent de vent) à la surface, en Pa
258    
259      ! Le rayonnement n'est pas calcul\'e tous les pas, il faut donc que      ! Le rayonnement n'est pas calcul\'e tous les pas, il faut donc que
260      ! les variables soient r\'emanentes.      ! les variables soient r\'emanentes.
# Line 261  contains Line 263  contains
263      REAL, save:: cool(klon, llm) ! refroidissement infrarouge      REAL, save:: cool(klon, llm) ! refroidissement infrarouge
264      REAL, save:: cool0(klon, llm) ! refroidissement infrarouge ciel clair      REAL, save:: cool0(klon, llm) ! refroidissement infrarouge ciel clair
265      REAL, save:: topsw(klon), toplw(klon), solsw(klon)      REAL, save:: topsw(klon), toplw(klon), solsw(klon)
266      REAL, save:: sollw(klon) ! rayonnement infrarouge montant \`a la surface  
267        REAL, save:: sollw(klon) ! surface net downward longwave flux, in W m-2
268      real, save:: sollwdown(klon) ! downward LW flux at surface      real, save:: sollwdown(klon) ! downward LW flux at surface
269      REAL, save:: topsw0(klon), toplw0(klon), solsw0(klon), sollw0(klon)      REAL, save:: topsw0(klon), toplw0(klon), solsw0(klon), sollw0(klon)
270      REAL, save:: albpla(klon)      REAL, save:: albpla(klon)
     REAL fsollw(klon, nbsrf) ! bilan flux IR pour chaque sous-surface  
     REAL fsolsw(klon, nbsrf) ! flux solaire absorb\'e pour chaque sous-surface  
271    
272      REAL conv_q(klon, llm) ! convergence de l'humidite (kg / kg / s)      REAL conv_q(klon, llm) ! convergence de l'humidite (kg / kg / s)
273      REAL conv_t(klon, llm) ! convergence of temperature (K / s)      REAL conv_t(klon, llm) ! convergence of temperature (K / s)
# Line 279  contains Line 280  contains
280      real longi      real longi
281      REAL z_avant(klon), z_apres(klon), z_factor(klon)      REAL z_avant(klon), z_apres(klon), z_factor(klon)
282      REAL zb      REAL zb
283      REAL zx_t, zx_qs, zcor      REAL zx_qs, zcor
284      real zqsat(klon, llm)      real zqsat(klon, llm)
285      INTEGER i, k, iq, nsrf      INTEGER i, k, iq, nsrf
286      REAL zphi(klon, llm)      REAL zphi(klon, llm)
# Line 293  contains Line 294  contains
294      REAL, SAVE:: cteiCL(klon, nbsrf) ! cloud top instab. crit. couche limite      REAL, SAVE:: cteiCL(klon, nbsrf) ! cloud top instab. crit. couche limite
295      REAL, SAVE:: pblt(klon, nbsrf) ! T \`a la hauteur de couche limite      REAL, SAVE:: pblt(klon, nbsrf) ! T \`a la hauteur de couche limite
296      REAL, SAVE:: therm(klon, nbsrf)      REAL, SAVE:: therm(klon, nbsrf)
     REAL, SAVE:: trmb1(klon, nbsrf) ! deep_cape  
     REAL, SAVE:: trmb2(klon, nbsrf) ! inhibition  
     REAL, SAVE:: trmb3(klon, nbsrf) ! Point Omega  
297      ! Grandeurs de sorties      ! Grandeurs de sorties
298      REAL s_pblh(klon), s_lcl(klon), s_capCL(klon)      REAL s_pblh(klon), s_lcl(klon), s_capCL(klon)
299      REAL s_oliqCL(klon), s_cteiCL(klon), s_pblt(klon)      REAL s_oliqCL(klon), s_cteiCL(klon), s_pblt(klon)
300      REAL s_therm(klon), s_trmb1(klon), s_trmb2(klon)      REAL s_therm(klon)
     REAL s_trmb3(klon)  
301    
302      ! Variables pour la convection de K. Emanuel :      ! Variables pour la convection de K. Emanuel :
303    
# Line 334  contains Line 331  contains
331      INTEGER, save:: ibas_con(klon), itop_con(klon)      INTEGER, save:: ibas_con(klon), itop_con(klon)
332      real ema_pct(klon) ! Emanuel pressure at cloud top, in Pa      real ema_pct(klon) ! Emanuel pressure at cloud top, in Pa
333    
334      REAL, save:: rain_con(klon)      REAL rain_con(klon)
335      real rain_lsc(klon)      real rain_lsc(klon)
336      REAL, save:: snow_con(klon) ! neige (mm / s)      REAL snow_con(klon) ! neige (mm / s)
337      real snow_lsc(klon)      real snow_lsc(klon)
338      REAL d_ts(klon, nbsrf) ! variation of ftsol      REAL d_ts(klon, nbsrf) ! variation of ftsol
339    
# Line 372  contains Line 369  contains
369    
370      REAL zustrdr(klon), zvstrdr(klon)      REAL zustrdr(klon), zvstrdr(klon)
371      REAL zustrli(klon), zvstrli(klon)      REAL zustrli(klon), zvstrli(klon)
     REAL zustrph(klon), zvstrph(klon)  
372      REAL aam, torsfc      REAL aam, torsfc
373    
374      REAL ve_lay(klon, llm) ! transport meri. de l'energie a chaque niveau vert.      REAL ve_lay(klon, llm) ! transport meri. de l'energie a chaque niveau vert.
# Line 380  contains Line 376  contains
376      REAL ue_lay(klon, llm) ! transport zonal de l'energie a chaque niveau vert.      REAL ue_lay(klon, llm) ! transport zonal de l'energie a chaque niveau vert.
377      REAL uq_lay(klon, llm) ! transport zonal de l'eau a chaque niveau vert.      REAL uq_lay(klon, llm) ! transport zonal de l'eau a chaque niveau vert.
378    
     real date0  
379      REAL tsol(klon)      REAL tsol(klon)
380    
381      REAL d_t_ec(klon, llm)      REAL d_t_ec(klon, llm)
# Line 390  contains Line 385  contains
385      REAL, save:: t2m(klon, nbsrf), q2m(klon, nbsrf)      REAL, save:: t2m(klon, nbsrf), q2m(klon, nbsrf)
386      ! temperature and humidity at 2 m      ! temperature and humidity at 2 m
387    
388      REAL, save:: u10m(klon, nbsrf), v10m(klon, nbsrf) ! vents a 10 m      REAL, save:: u10m_srf(klon, nbsrf), v10m_srf(klon, nbsrf)
389        ! composantes du vent \`a 10 m
390        
391      REAL zt2m(klon), zq2m(klon) ! température, humidité 2 m moyenne sur 1 maille      REAL zt2m(klon), zq2m(klon) ! température, humidité 2 m moyenne sur 1 maille
392      REAL zu10m(klon), zv10m(klon) ! vents a 10 m moyennes sur 1 maille      REAL u10m(klon), v10m(klon) ! vent \`a 10 m moyenn\' sur les sous-surfaces
393    
394      ! Aerosol effects:      ! Aerosol effects:
395    
# Line 410  contains Line 407  contains
407      integer, save:: ncid_startphy      integer, save:: ncid_startphy
408    
409      namelist /physiq_nml/ fact_cldcon, facttemps, ok_newmicro, iflag_cldcon, &      namelist /physiq_nml/ fact_cldcon, facttemps, ok_newmicro, iflag_cldcon, &
410           ratqsbas, ratqshaut, ok_ade, bl95_b0, bl95_b1, iflag_thermals, &           ratqsbas, ratqshaut, ok_ade, bl95_b0, bl95_b1
          nsplit_thermals  
411    
412      !----------------------------------------------------------------      !----------------------------------------------------------------
413    
# Line 420  contains Line 416  contains
416    
417      test_firstcal: IF (firstcal) THEN      test_firstcal: IF (firstcal) THEN
418         ! initialiser         ! initialiser
419         u10m = 0.         u10m_srf = 0.
420         v10m = 0.         v10m_srf = 0.
421         t2m = 0.         t2m = 0.
422         q2m = 0.         q2m = 0.
423         ffonte = 0.         ffonte = 0.
        fqcalving = 0.  
        rain_con = 0.  
        snow_con = 0.  
424         d_u_con = 0.         d_u_con = 0.
425         d_v_con = 0.         d_v_con = 0.
426         rnebcon0 = 0.         rnebcon0 = 0.
# Line 441  contains Line 434  contains
434         cteiCL =0. ! cloud top instab. crit. couche limite         cteiCL =0. ! cloud top instab. crit. couche limite
435         pblt =0.         pblt =0.
436         therm =0.         therm =0.
        trmb1 =0. ! deep_cape  
        trmb2 =0. ! inhibition  
        trmb3 =0. ! Point Omega  
437    
        iflag_thermals = 0  
        nsplit_thermals = 1  
438         print *, "Enter namelist 'physiq_nml'."         print *, "Enter namelist 'physiq_nml'."
439         read(unit=*, nml=physiq_nml)         read(unit=*, nml=physiq_nml)
440         write(unit_nml, nml=physiq_nml)         write(unit_nml, nml=physiq_nml)
441    
442           call ctherm
443         call conf_phys         call conf_phys
444    
445         ! Initialiser les compteurs:         ! Initialiser les compteurs:
446    
447         frugs = 0.         frugs = 0.
448         CALL phyetat0(pctsrf, ftsol, ftsoil, fqsurf, qsol, fsnow, falbe, &         CALL phyetat0(pctsrf, ftsol, ftsoil, fqsurf, qsol, fsnow, falbe, &
449              fevap, rain_fall, snow_fall, solsw, sollw, dlw, radsol, frugs, &              rain_fall, snow_fall, solsw, sollw, dlw, radsol, frugs, agesno, &
450              agesno, zmea, zstd, zsig, zgam, zthe, zpic, zval, t_ancien, &              zmea, zstd, zsig, zgam, zthe, zpic, zval, t_ancien, q_ancien, &
451              q_ancien, ancien_ok, rnebcon, ratqs, clwcon, run_off_lic_0, sig1, &              ancien_ok, rnebcon, ratqs, clwcon, run_off_lic_0, sig1, w01, &
452              w01, ncid_startphy)              ncid_startphy)
453    
454         ! ATTENTION : il faudra a terme relire q2 dans l'etat initial         ! ATTENTION : il faudra a terme relire q2 dans l'etat initial
455         q2 = 1e-8         q2 = 1e-8
# Line 481  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)  
        CALL ymds2ju(annee_ref, 1, day_ref, 0., date0)  
        ! Positionner date0 pour initialisation de ORCHIDEE  
        print *, 'physiq date0: ', date0  
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 556  contains Line 540  contains
540    
541      CALL orbite(REAL(julien), longi, dist)      CALL orbite(REAL(julien), longi, dist)
542      CALL zenang(longi, time, dtphys * radpas, mu0, fract)      CALL zenang(longi, time, dtphys * radpas, mu0, fract)
     albsol = sum(falbe * pctsrf, dim = 2)  
   
     ! R\'epartition sous maille des flux longwave et shortwave  
     ! R\'epartition du longwave par sous-surface lin\'earis\'ee  
543    
544      forall (nsrf = 1: nbsrf)      CALL pbl_surface(pctsrf, t_seri, q_seri, u_seri, v_seri, julien, mu0, &
545         fsollw(:, nsrf) = sollw + 4. * RSIGMA * tsol**3 &           ftsol, cdmmax, cdhmax, ftsoil, qsol, paprs, play, fsnow, fqsurf, &
546              * (tsol - ftsol(:, nsrf))           falbe, fluxlat, rain_fall, snow_fall, frugs, agesno, rugoro, d_t_vdf, &
547         fsolsw(:, nsrf) = solsw * (1. - falbe(:, nsrf)) / (1. - albsol)           d_q_vdf, d_u_vdf, d_v_vdf, d_ts, flux_t, flux_q, flux_u, flux_v, &
548      END forall           cdragh, cdragm, q2, dflux_t, dflux_q, coefh, t2m, q2m, u10m_srf, &
549             v10m_srf, pblh, capCL, oliqCL, cteiCL, pblT, therm, plcl, fqcalving, &
550      CALL clmain(dtphys, pctsrf, t_seri, q_seri, u_seri, v_seri, julien, mu0, &           ffonte, run_off_lic_0, albsol, sollw, solsw, tsol)
          ftsol, cdmmax, cdhmax, ksta, ksta_ter, ok_kzmin, ftsoil, qsol, &  
          paprs, play, fsnow, fqsurf, fevap, falbe, fluxlat, rain_fall, &  
          snow_fall, fsolsw, fsollw, frugs, agesno, rugoro, d_t_vdf, d_q_vdf, &  
          d_u_vdf, d_v_vdf, d_ts, flux_t, flux_q, flux_u, flux_v, cdragh, &  
          cdragm, q2, dsens, devap, ycoefh, yu1, yv1, t2m, q2m, u10m, v10m, &  
          pblh, capCL, oliqCL, cteiCL, pblT, therm, trmb1, trmb2, trmb3, plcl, &  
          fqcalving, ffonte, run_off_lic_0)  
551    
552      ! Incr\'ementation des flux      ! Incr\'ementation des flux
553    
554      sens = - sum(flux_t * pctsrf, dim = 2)      sens = sum(flux_t * pctsrf, dim = 2)
555      evap = - sum(flux_q * pctsrf, dim = 2)      evap = - sum(flux_q * pctsrf, dim = 2)
556      fder = dlw + dsens + devap      fder = dlw + dflux_t + dflux_q
557    
558      DO k = 1, llm      DO k = 1, llm
559         DO i = 1, klon         DO i = 1, klon
# Line 591  contains Line 564  contains
564         ENDDO         ENDDO
565      ENDDO      ENDDO
566    
     ! Update surface temperature:  
   
567      call assert(abs(sum(pctsrf, dim = 2) - 1.) <= EPSFRA, 'physiq: pctsrf')      call assert(abs(sum(pctsrf, dim = 2) - 1.) <= EPSFRA, 'physiq: pctsrf')
568      ftsol = ftsol + d_ts      ftsol = ftsol + d_ts ! update surface temperature
569      tsol = sum(ftsol * pctsrf, dim = 2)      tsol = sum(ftsol * pctsrf, dim = 2)
570      zxfluxlat = sum(fluxlat * pctsrf, dim = 2)      zxfluxlat = sum(fluxlat * pctsrf, dim = 2)
571      zt2m = sum(t2m * pctsrf, dim = 2)      zt2m = sum(t2m * pctsrf, dim = 2)
572      zq2m = sum(q2m * pctsrf, dim = 2)      zq2m = sum(q2m * pctsrf, dim = 2)
573      zu10m = sum(u10m * pctsrf, dim = 2)      u10m = sum(u10m_srf * pctsrf, dim = 2)
574      zv10m = sum(v10m * pctsrf, dim = 2)      v10m = sum(v10m_srf * pctsrf, dim = 2)
575      zxffonte = sum(ffonte * pctsrf, dim = 2)      zxffonte = sum(ffonte * pctsrf, dim = 2)
     zxfqcalving = sum(fqcalving * pctsrf, dim = 2)  
576      s_pblh = sum(pblh * pctsrf, dim = 2)      s_pblh = sum(pblh * pctsrf, dim = 2)
577      s_lcl = sum(plcl * pctsrf, dim = 2)      s_lcl = sum(plcl * pctsrf, dim = 2)
578      s_capCL = sum(capCL * pctsrf, dim = 2)      s_capCL = sum(capCL * pctsrf, dim = 2)
# Line 610  contains Line 580  contains
580      s_cteiCL = sum(cteiCL * pctsrf, dim = 2)      s_cteiCL = sum(cteiCL * pctsrf, dim = 2)
581      s_pblT = sum(pblT * pctsrf, dim = 2)      s_pblT = sum(pblT * pctsrf, dim = 2)
582      s_therm = sum(therm * pctsrf, dim = 2)      s_therm = sum(therm * pctsrf, dim = 2)
     s_trmb1 = sum(trmb1 * pctsrf, dim = 2)  
     s_trmb2 = sum(trmb2 * pctsrf, dim = 2)  
     s_trmb3 = sum(trmb3 * pctsrf, dim = 2)  
583    
584      ! Si une sous-fraction n'existe pas, elle prend la valeur moyenne :      ! Si une sous-fraction n'existe pas, elle prend la valeur moyenne :
585      DO nsrf = 1, nbsrf      DO nsrf = 1, nbsrf
# Line 621  contains Line 588  contains
588               ftsol(i, nsrf) = tsol(i)               ftsol(i, nsrf) = tsol(i)
589               t2m(i, nsrf) = zt2m(i)               t2m(i, nsrf) = zt2m(i)
590               q2m(i, nsrf) = zq2m(i)               q2m(i, nsrf) = zq2m(i)
591               u10m(i, nsrf) = zu10m(i)               u10m_srf(i, nsrf) = u10m(i)
592               v10m(i, nsrf) = zv10m(i)               v10m_srf(i, nsrf) = v10m(i)
593               ffonte(i, nsrf) = zxffonte(i)               ffonte(i, nsrf) = zxffonte(i)
              fqcalving(i, nsrf) = zxfqcalving(i)  
594               pblh(i, nsrf) = s_pblh(i)               pblh(i, nsrf) = s_pblh(i)
595               plcl(i, nsrf) = s_lcl(i)               plcl(i, nsrf) = s_lcl(i)
596               capCL(i, nsrf) = s_capCL(i)               capCL(i, nsrf) = s_capCL(i)
# Line 632  contains Line 598  contains
598               cteiCL(i, nsrf) = s_cteiCL(i)               cteiCL(i, nsrf) = s_cteiCL(i)
599               pblT(i, nsrf) = s_pblT(i)               pblT(i, nsrf) = s_pblT(i)
600               therm(i, nsrf) = s_therm(i)               therm(i, nsrf) = s_therm(i)
              trmb1(i, nsrf) = s_trmb1(i)  
              trmb2(i, nsrf) = s_trmb2(i)  
              trmb3(i, nsrf) = s_trmb3(i)  
601            end IF            end IF
602         ENDDO         ENDDO
603      ENDDO      ENDDO
# Line 646  contains Line 609  contains
609      if (conv_emanuel) then      if (conv_emanuel) then
610         CALL concvl(paprs, play, t_seri, q_seri, u_seri, v_seri, sig1, w01, &         CALL concvl(paprs, play, t_seri, q_seri, u_seri, v_seri, sig1, w01, &
611              d_t_con, d_q_con, d_u_con, d_v_con, rain_con, ibas_con, itop_con, &              d_t_con, d_q_con, d_u_con, d_v_con, rain_con, ibas_con, itop_con, &
612              upwd, dnwd, Ma, cape, iflagctrl, qcondc, pmflxr, da, phi, mp)              upwd, dnwd, Ma, cape, iflagctrl, clwcon0, pmflxr, da, phi, mp)
613         snow_con = 0.         snow_con = 0.
        clwcon0 = qcondc  
614         mfu = upwd + dnwd         mfu = upwd + dnwd
615    
616         zqsat = MIN(0.5, r2es * FOEEW(t_seri, rtt >= t_seri) / play)         zqsat = MIN(0.5, r2es * FOEEW(t_seri, rtt >= t_seri) / play)
# Line 669  contains Line 631  contains
631         conv_q = d_q_dyn + d_q_vdf / dtphys         conv_q = d_q_dyn + d_q_vdf / dtphys
632         conv_t = d_t_dyn + d_t_vdf / dtphys         conv_t = d_t_dyn + d_t_vdf / dtphys
633         z_avant = sum((q_seri + ql_seri) * zmasse, dim=2)         z_avant = sum((q_seri + ql_seri) * zmasse, dim=2)
634         CALL conflx(dtphys, paprs, play, t_seri(:, llm:1:- 1), &         CALL conflx(paprs, play, t_seri(:, llm:1:- 1), q_seri(:, llm:1:- 1), &
635              q_seri(:, llm:1:- 1), conv_t, conv_q, - evap, omega, &              conv_t, conv_q, - evap, omega, d_t_con, d_q_con, rain_con, &
636              d_t_con, d_q_con, rain_con, snow_con, mfu(:, llm:1:- 1), &              snow_con, mfu(:, llm:1:- 1), mfd(:, llm:1:- 1), pen_u, pde_u, &
637              mfd(:, llm:1:- 1), pen_u, pde_u, pen_d, pde_d, kcbot, kctop, &              pen_d, pde_d, kcbot, kctop, kdtop, pmflxr, pmflxs)
             kdtop, pmflxr, pmflxs)  
638         WHERE (rain_con < 0.) rain_con = 0.         WHERE (rain_con < 0.) rain_con = 0.
639         WHERE (snow_con < 0.) snow_con = 0.         WHERE (snow_con < 0.) snow_con = 0.
640         ibas_con = llm + 1 - kcbot         ibas_con = llm + 1 - kcbot
# Line 710  contains Line 671  contains
671      fm_therm = 0.      fm_therm = 0.
672      entr_therm = 0.      entr_therm = 0.
673    
674      if (iflag_thermals == 0) then      if (iflag_thermals) then
675         ! Ajustement sec         call calltherm(play, paprs, pphi, u_seri, v_seri, t_seri, q_seri, &
676                d_u_ajs, d_v_ajs, d_t_ajs, d_q_ajs, fm_therm, entr_therm)
677        else
678         CALL ajsec(paprs, play, t_seri, q_seri, d_t_ajs, d_q_ajs)         CALL ajsec(paprs, play, t_seri, q_seri, d_t_ajs, d_q_ajs)
679         t_seri = t_seri + d_t_ajs         t_seri = t_seri + d_t_ajs
680         q_seri = q_seri + d_q_ajs         q_seri = q_seri + d_q_ajs
     else  
        call calltherm(dtphys, 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)  
681      endif      endif
682    
683      ! Caclul des ratqs      ! Caclul des ratqs
684    
     ! ratqs convectifs \`a l'ancienne en fonction de (q(z = 0) - q) / q  
     ! on \'ecrase le tableau ratqsc calcul\'e par clouds_gno  
685      if (iflag_cldcon == 1) then      if (iflag_cldcon == 1) then
686           ! ratqs convectifs \`a l'ancienne en fonction de (q(z = 0) - q) / q
687           ! on \'ecrase le tableau ratqsc calcul\'e par clouds_gno
688         do k = 1, llm         do k = 1, llm
689            do i = 1, klon            do i = 1, klon
690               if(ptconv(i, k)) then               if(ptconv(i, k)) then
# Line 758  contains Line 718  contains
718         ratqs = ratqss         ratqs = ratqss
719      endif      endif
720    
721      CALL fisrtilp(dtphys, paprs, play, t_seri, q_seri, ptconv, ratqs, &      CALL fisrtilp(paprs, play, t_seri, q_seri, ptconv, ratqs, d_t_lsc, &
722           d_t_lsc, d_q_lsc, d_ql_lsc, rneb, cldliq, rain_lsc, snow_lsc, &           d_q_lsc, d_ql_lsc, rneb, cldliq, rain_lsc, snow_lsc, pfrac_impa, &
723           pfrac_impa, pfrac_nucl, pfrac_1nucl, frac_impa, frac_nucl, prfl, &           pfrac_nucl, pfrac_1nucl, frac_impa, frac_nucl, prfl, psfl, rhcl)
          psfl, rhcl)  
724    
725      WHERE (rain_lsc < 0) rain_lsc = 0.      WHERE (rain_lsc < 0) rain_lsc = 0.
726      WHERE (snow_lsc < 0) snow_lsc = 0.      WHERE (snow_lsc < 0) snow_lsc = 0.
# Line 851  contains Line 810  contains
810      ! Humidit\'e relative pour diagnostic :      ! Humidit\'e relative pour diagnostic :
811      DO k = 1, llm      DO k = 1, llm
812         DO i = 1, klon         DO i = 1, klon
813            zx_t = t_seri(i, k)            zx_qs = r2es * FOEEW(t_seri(i, k), rtt >= t_seri(i, k)) / play(i, k)
           zx_qs = r2es * FOEEW(zx_t, rtt >= zx_t) / play(i, k)  
814            zx_qs = MIN(0.5, zx_qs)            zx_qs = MIN(0.5, zx_qs)
815            zcor = 1. / (1. - retv * zx_qs)            zcor = 1. / (1. - retv * zx_qs)
816            zx_qs = zx_qs * zcor            zx_qs = zx_qs * zcor
# Line 891  contains Line 849  contains
849    
850      ! Calculer le bilan du sol et la d\'erive de temp\'erature (couplage)      ! Calculer le bilan du sol et la d\'erive de temp\'erature (couplage)
851      DO i = 1, klon      DO i = 1, klon
852         bils(i) = radsol(i) - sens(i) + zxfluxlat(i)         bils(i) = radsol(i) + sens(i) + zxfluxlat(i)
853      ENDDO      ENDDO
854    
855      ! Param\'etrisation de l'orographie \`a l'\'echelle sous-maille :      ! Param\'etrisation de l'orographie \`a l'\'echelle sous-maille :
856    
857      IF (ok_orodr) THEN      IF (ok_orodr) THEN
858         ! S\'election des points pour lesquels le sch\'ema est actif :         ! S\'election des points pour lesquels le sch\'ema est actif :
        igwd = 0  
859         DO i = 1, klon         DO i = 1, klon
860            itest(i) = 0            ktest(i) = 0
861            IF (zpic(i) - zmea(i) > 100. .AND. zstd(i) > 10.) THEN            IF (zpic(i) - zmea(i) > 100. .AND. zstd(i) > 10.) THEN
862               itest(i) = 1               ktest(i) = 1
              igwd = igwd + 1  
863            ENDIF            ENDIF
864         ENDDO         ENDDO
865    
866         CALL drag_noro(klon, llm, dtphys, paprs, play, zmea, zstd, zsig, zgam, &         CALL drag_noro(paprs, play, zmea, zstd, zsig, zgam, zthe, zpic, zval, &
867              zthe, zpic, zval, itest, t_seri, u_seri, v_seri, zulow, zvlow, &              ktest, t_seri, u_seri, v_seri, zulow, zvlow, zustrdr, zvstrdr, &
868              zustrdr, zvstrdr, d_t_oro, d_u_oro, d_v_oro)              d_t_oro, d_u_oro, d_v_oro)
869    
870         ! ajout des tendances         ! ajout des tendances
871         DO k = 1, llm         DO k = 1, llm
# Line 923  contains Line 879  contains
879    
880      IF (ok_orolf) THEN      IF (ok_orolf) THEN
881         ! S\'election des points pour lesquels le sch\'ema est actif :         ! S\'election des points pour lesquels le sch\'ema est actif :
        igwd = 0  
882         DO i = 1, klon         DO i = 1, klon
883            itest(i) = 0            ktest(i) = 0
884            IF (zpic(i) - zmea(i) > 100.) THEN            IF (zpic(i) - zmea(i) > 100.) THEN
885               itest(i) = 1               ktest(i) = 1
              igwd = igwd + 1  
886            ENDIF            ENDIF
887         ENDDO         ENDDO
888    
889         CALL lift_noro(klon, llm, dtphys, paprs, play, rlat, zmea, zstd, zpic, &         CALL lift_noro(paprs, play, zmea, zstd, zpic, ktest, t_seri, u_seri, &
890              itest, t_seri, u_seri, v_seri, zulow, zvlow, zustrli, zvstrli, &              v_seri, zulow, zvlow, zustrli, zvstrli, d_t_lif, d_u_lif, d_v_lif)
             d_t_lif, d_u_lif, d_v_lif)  
891    
892         ! Ajout des tendances :         ! Ajout des tendances :
893         DO k = 1, llm         DO k = 1, llm
# Line 946  contains Line 899  contains
899         ENDDO         ENDDO
900      ENDIF      ENDIF
901    
902      ! Stress n\'ecessaires : toute la physique      CALL aaam_bud(rg, romega, pphis, zustrdr, zustrli, &
903             sum((u_seri - u) / dtphys * zmasse, dim = 2), zvstrdr, &
904      DO i = 1, klon           zvstrli, sum((v_seri - v) / dtphys * zmasse, dim = 2), paprs, u, v, &
905         zustrph(i) = 0.           aam, torsfc)
        zvstrph(i) = 0.  
     ENDDO  
     DO k = 1, llm  
        DO i = 1, klon  
           zustrph(i) = zustrph(i) + (u_seri(i, k) - u(i, k)) / dtphys &  
                * zmasse(i, k)  
           zvstrph(i) = zvstrph(i) + (v_seri(i, k) - v(i, k)) / dtphys &  
                * zmasse(i, k)  
        ENDDO  
     ENDDO  
   
     CALL aaam_bud(rg, romega, rlat, rlon, pphis, zustrdr, zustrli, zustrph, &  
          zvstrdr, zvstrli, zvstrph, paprs, u, v, aam, torsfc)  
906    
907      ! Calcul des tendances traceurs      ! Calcul des tendances traceurs
908      call phytrac(julien, time, firstcal, lafin, dtphys, t, paprs, play, mfu, &      call phytrac(julien, time, firstcal, lafin, t, paprs, play, mfu, mfd, &
909           mfd, pde_u, pen_d, ycoefh, fm_therm, entr_therm, yu1, yv1, ftsol, &           pde_u, pen_d, coefh, cdragh, fm_therm, entr_therm, u(:, 1), v(:, 1), &
910           pctsrf, frac_impa, frac_nucl, da, phi, mp, upwd, dnwd, tr_seri, &           ftsol, pctsrf, frac_impa, frac_nucl, da, phi, mp, upwd, dnwd, &
911           zmasse, ncid_startphy)           tr_seri, zmasse, ncid_startphy)
   
     IF (offline) call phystokenc(dtphys, t, mfu, mfd, pen_u, pde_u, pen_d, &  
          pde_d, fm_therm, entr_therm, ycoefh, yu1, yv1, ftsol, pctsrf, &  
          frac_impa, frac_nucl, pphis, airephy)  
912    
913      ! Calculer le transport de l'eau et de l'energie (diagnostique)      ! Calculer le transport de l'eau et de l'energie (diagnostique)
914      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)
915    
916      ! diag. bilKP      ! diag. bilKP
917    
918      CALL transp_lay(paprs, t_seri, q_seri, u_seri, v_seri, zphi, &      CALL transp_lay(paprs, t_seri, q_seri, u_seri, v_seri, zphi, ve_lay, &
919           ve_lay, vq_lay, ue_lay, uq_lay)           vq_lay, ue_lay, uq_lay)
920    
921      ! Accumuler les variables a stocker dans les fichiers histoire:      ! Accumuler les variables a stocker dans les fichiers histoire:
922    
# Line 1041  contains Line 977  contains
977      CALL histwrite_phy("tsol", tsol)      CALL histwrite_phy("tsol", tsol)
978      CALL histwrite_phy("t2m", zt2m)      CALL histwrite_phy("t2m", zt2m)
979      CALL histwrite_phy("q2m", zq2m)      CALL histwrite_phy("q2m", zq2m)
980      CALL histwrite_phy("u10m", zu10m)      CALL histwrite_phy("u10m", u10m)
981      CALL histwrite_phy("v10m", zv10m)      CALL histwrite_phy("v10m", v10m)
982      CALL histwrite_phy("snow", snow_fall)      CALL histwrite_phy("snow", snow_fall)
983      CALL histwrite_phy("cdrm", cdragm)      CALL histwrite_phy("cdrm", cdragm)
984      CALL histwrite_phy("cdrh", cdragh)      CALL histwrite_phy("cdrh", cdragh)
985      CALL histwrite_phy("topl", toplw)      CALL histwrite_phy("topl", toplw)
986      CALL histwrite_phy("evap", evap)      CALL histwrite_phy("evap", evap)
987      CALL histwrite_phy("sols", solsw)      CALL histwrite_phy("sols", solsw)
988      CALL histwrite_phy("soll", sollw)      CALL histwrite_phy("rls", sollw)
989      CALL histwrite_phy("solldown", sollwdown)      CALL histwrite_phy("solldown", sollwdown)
990      CALL histwrite_phy("bils", bils)      CALL histwrite_phy("bils", bils)
991      CALL histwrite_phy("sens", - sens)      CALL histwrite_phy("sens", sens)
992      CALL histwrite_phy("fder", fder)      CALL histwrite_phy("fder", fder)
993      CALL histwrite_phy("dtsvdfo", d_ts(:, is_oce))      CALL histwrite_phy("dtsvdfo", d_ts(:, is_oce))
994      CALL histwrite_phy("dtsvdft", d_ts(:, is_ter))      CALL histwrite_phy("dtsvdft", d_ts(:, is_ter))
995      CALL histwrite_phy("dtsvdfg", d_ts(:, is_lic))      CALL histwrite_phy("dtsvdfg", d_ts(:, is_lic))
996      CALL histwrite_phy("dtsvdfi", d_ts(:, is_sic))      CALL histwrite_phy("dtsvdfi", d_ts(:, is_sic))
997        CALL histwrite_phy("zxfqcalving", sum(fqcalving * pctsrf, dim = 2))
     DO nsrf = 1, nbsrf  
        CALL histwrite_phy("pourc_"//clnsurf(nsrf), pctsrf(:, nsrf) * 100.)  
        CALL histwrite_phy("fract_"//clnsurf(nsrf), pctsrf(:, nsrf))  
        CALL histwrite_phy("sens_"//clnsurf(nsrf), flux_t(:, nsrf))  
        CALL histwrite_phy("lat_"//clnsurf(nsrf), fluxlat(:, nsrf))  
        CALL histwrite_phy("tsol_"//clnsurf(nsrf), ftsol(:, nsrf))  
        CALL histwrite_phy("taux_"//clnsurf(nsrf), flux_u(:, nsrf))  
        CALL histwrite_phy("tauy_"//clnsurf(nsrf), flux_v(:, nsrf))  
        CALL histwrite_phy("rugs_"//clnsurf(nsrf), frugs(:, nsrf))  
        CALL histwrite_phy("albe_"//clnsurf(nsrf), falbe(:, nsrf))  
     END DO  
   
998      CALL histwrite_phy("albs", albsol)      CALL histwrite_phy("albs", albsol)
999      CALL histwrite_phy("tro3", wo * dobson_u * 1e3 / zmasse / rmo3 * md)      CALL histwrite_phy("tro3", wo * dobson_u * 1e3 / zmasse / rmo3 * md)
1000      CALL histwrite_phy("rugs", zxrugs)      CALL histwrite_phy("rugs", zxrugs)
# Line 1081  contains Line 1005  contains
1005      CALL histwrite_phy("s_oliqCL", s_oliqCL)      CALL histwrite_phy("s_oliqCL", s_oliqCL)
1006      CALL histwrite_phy("s_cteiCL", s_cteiCL)      CALL histwrite_phy("s_cteiCL", s_cteiCL)
1007      CALL histwrite_phy("s_therm", s_therm)      CALL histwrite_phy("s_therm", s_therm)
     CALL histwrite_phy("s_trmb1", s_trmb1)  
     CALL histwrite_phy("s_trmb2", s_trmb2)  
     CALL histwrite_phy("s_trmb3", s_trmb3)  
   
     if (conv_emanuel) then  
        CALL histwrite_phy("ptop", ema_pct)  
        CALL histwrite_phy("dnwd0", - mp)  
     end if  
   
1008      CALL histwrite_phy("temp", t_seri)      CALL histwrite_phy("temp", t_seri)
1009      CALL histwrite_phy("vitu", u_seri)      CALL histwrite_phy("vitu", u_seri)
1010      CALL histwrite_phy("vitv", v_seri)      CALL histwrite_phy("vitv", v_seri)
# Line 1103  contains Line 1018  contains
1018      CALL histwrite_phy("dtlw0", - cool0 / 86400.)      CALL histwrite_phy("dtlw0", - cool0 / 86400.)
1019      CALL histwrite_phy("msnow", sum(fsnow * pctsrf, dim = 2))      CALL histwrite_phy("msnow", sum(fsnow * pctsrf, dim = 2))
1020      call histwrite_phy("qsurf", sum(fqsurf * pctsrf, dim = 2))      call histwrite_phy("qsurf", sum(fqsurf * pctsrf, dim = 2))
1021        call histwrite_phy("flat", zxfluxlat)
1022    
1023        DO nsrf = 1, nbsrf
1024           CALL histwrite_phy("fract_"//clnsurf(nsrf), pctsrf(:, nsrf))
1025           CALL histwrite_phy("sens_"//clnsurf(nsrf), flux_t(:, nsrf))
1026           CALL histwrite_phy("lat_"//clnsurf(nsrf), fluxlat(:, nsrf))
1027           CALL histwrite_phy("tsol_"//clnsurf(nsrf), ftsol(:, nsrf))
1028           CALL histwrite_phy("taux_"//clnsurf(nsrf), flux_u(:, nsrf))
1029           CALL histwrite_phy("tauy_"//clnsurf(nsrf), flux_v(:, nsrf))
1030           CALL histwrite_phy("rugs_"//clnsurf(nsrf), frugs(:, nsrf))
1031           CALL histwrite_phy("albe_"//clnsurf(nsrf), falbe(:, nsrf))
1032           CALL histwrite_phy("u10m_"//clnsurf(nsrf), u10m_srf(:, nsrf))
1033           CALL histwrite_phy("v10m_"//clnsurf(nsrf), v10m_srf(:, nsrf))
1034        END DO
1035    
1036        if (conv_emanuel) then
1037           CALL histwrite_phy("ptop", ema_pct)
1038           CALL histwrite_phy("dnwd0", - mp)
1039        end if
1040    
1041      if (ok_instan) call histsync(nid_ins)      if (ok_instan) call histsync(nid_ins)
1042    
1043      IF (lafin) then      IF (lafin) then
1044         call NF95_CLOSE(ncid_startphy)         call NF95_CLOSE(ncid_startphy)
1045         CALL phyredem(pctsrf, ftsol, ftsoil, fqsurf, qsol, &         CALL phyredem(pctsrf, ftsol, ftsoil, fqsurf, qsol, fsnow, falbe, &
1046              fsnow, falbe, fevap, rain_fall, snow_fall, solsw, sollw, dlw, &              rain_fall, snow_fall, solsw, sollw, dlw, radsol, frugs, agesno, &
1047              radsol, frugs, agesno, zmea, zstd, zsig, zgam, zthe, zpic, zval, &              zmea, zstd, zsig, zgam, zthe, zpic, zval, t_ancien, q_ancien, &
1048              t_ancien, q_ancien, rnebcon, ratqs, clwcon, run_off_lic_0, sig1, &              rnebcon, ratqs, clwcon, run_off_lic_0, sig1, w01)
             w01)  
1049      end IF      end IF
1050    
1051      firstcal = .FALSE.      firstcal = .FALSE.

Legend:
Removed from v.223  
changed lines
  Added in v.324

  ViewVC Help
Powered by ViewVC 1.1.21