source: LMDZ5/trunk/libf/phylmd/phys_output_write_mod.F90 @ 1968

Last change on this file since 1968 was 1943, checked in by idelkadi, 11 years ago

Changes concerinng the Hourdin et al. 2002 version of the thermals and
Ayotte cases

calltherm.F90


call to thermcell_2002 modified :
1) iflag_thermals changed from 1 to >= 1000 ; iflag_thermals-1000
controls sub options.
2) thermals w and fraction in output files.

hbtm.F


Singularity in the 1/heat dependency of the Monin Obukov length L when
heat=0. Since 1/L is used rather than L, it is preferable to compute
directly L. There is a dependency in 1/u* then which is treated with a
threshold value.
(+ some cleaning in the syntax).

lmdz1d.F


If nday<0, -nday is used as the total number of time steps of the
simulation.
The option with imposed wtsurf and wqsurf read in lmdz1d.def was not
active anymore.
< IF(.NOT.ok_flux_surf) THEN
changed to

IF(.NOT.ok_flux_surf.or.max(abs(wtsurf),abs(wqsurf))>0.) THEN

before

fsens=-wtsurf*rcpd*rho(1)
flat=-wqsurf*rlvtt*rho(1)

phys_output_write.F90 et phys_local_var_mod.F90


Removing the d_u_ajsb contribution to duthe (same for dv).
Those tendencies are not computed by the model ...
< zx_tmp_fi3d(1:klon,1:klev)=d_u_ajs(1:klon,1:klev)/pdtphys - &
< d_u_ajsb(1:klon,1:klev)/pdtphys
---

zx_tmp_fi3d(1:klon,1:klev)=d_u_ajs(1:klon,1:klev)/pdtphys

! d_u_ajsb(1:klon,1:klev)/pdtphys

thermcell_dq.F90, thermcell_main.F90


Some cleaning

thermcell_old.F


Control by iflag_thermals >= 1000
wa_moy and fraca in outputs
+ cleaning

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
File size: 55.5 KB
Line 
1!
2! $Header$
3!
4MODULE phys_output_write_mod
5
6  USE phytrac_mod, ONLY : d_tr_cl, d_tr_th, d_tr_cv, d_tr_lessi_impa, &
7       d_tr_lessi_nucl, d_tr_insc, d_tr_bcscav, d_tr_evapls, d_tr_ls,  &
8       d_tr_trsp, d_tr_sscav, d_tr_sat, d_tr_uscav
9
10  ! Author: Abderrahmane IDELKADI (original include file)
11  ! Author: Laurent FAIRHEAD (transformation to module/subroutine)
12  ! Author: Ulysse GERARD (effective implementation)
13
14CONTAINS
15
16  ! ug Routine pour définir (los du premier passageà) ET sortir les variables
17  SUBROUTINE phys_output_write(itap, pdtphys, paprs, pphis, &
18       pplay, lmax_th, aerosol_couple,         &
19       ok_ade, ok_aie, ivap, new_aod, ok_sync, &
20       ptconv, read_climoz, clevSTD, ptconvth, &
21       d_t, qx, d_qx, zmasse, flag_aerosol_strat)
22
23    ! This subroutine does the actual writing of diagnostics that were
24    ! defined and initialised in phys_output_mod.F90
25
26    USE dimphy, only: klon, klev, klevp1
27    USE control_mod, only: day_step, iphysiq
28    USE phys_output_ctrlout_mod, only: o_phis, o_aire, is_ter, is_lic, is_oce, &
29         is_ave, is_sic, o_contfracATM, o_contfracOR, &
30         o_aireTER, o_flat, o_slp, o_tsol, &
31         o_t2m, o_t2m_min, o_t2m_max, &
32         o_q2m, o_ustar, o_u10m, o_v10m, &
33         o_wind10m, o_wind10max, o_sicf, &
34         o_psol, o_mass, o_qsurf, o_qsol, &
35         o_precip, o_ndayrain, o_plul, o_pluc, &
36         o_snow, o_msnow, o_fsnow, o_evap, &
37         o_tops, o_tops0, o_topl, o_topl0, &
38         o_SWupTOA, o_SWupTOAclr, o_SWdnTOA, &
39         o_SWdnTOAclr, o_nettop, o_SWup200, &
40         o_SWup200clr, o_SWdn200, o_SWdn200clr, &
41         o_LWup200, o_LWup200clr, o_LWdn200, &
42         o_LWdn200clr, o_sols, o_sols0, &
43         o_soll, o_radsol, o_soll0, o_SWupSFC, &
44         o_SWupSFCclr, o_SWdnSFC, o_SWdnSFCclr, &
45         o_LWupSFC, o_LWdnSFC, o_LWupSFCclr, &
46         o_LWdnSFCclr, o_bils, o_bils_diss, &
47         o_bils_ec, o_bils_tke, o_bils_kinetic, &
48         o_bils_latent, o_bils_enthalp, o_sens, &
49         o_fder, o_ffonte, o_fqcalving, o_fqfonte, &
50         o_taux, o_tauy, o_snowsrf, o_qsnow, &
51         o_snowhgt, o_toice, o_sissnow, o_runoff, &
52         o_albslw3, o_pourc_srf, o_fract_srf, &
53         o_taux_srf, o_tauy_srf, o_tsol_srf, &
54         o_evappot_srf, o_ustar_srf, o_u10m_srf, &
55         o_v10m_srf, o_t2m_srf, o_evap_srf, &
56         o_sens_srf, o_lat_srf, o_flw_srf, &
57         o_fsw_srf, o_wbils_srf, o_wbilo_srf, &
58         o_tke_srf, o_tke_max_srf, o_wstar, &
59         o_cdrm, o_cdrh, o_cldl, o_cldm, o_cldh, &
60         o_cldt, o_JrNt, o_cldljn, o_cldmjn, &
61         o_cldhjn, o_cldtjn, o_cldq, o_lwp, o_iwp, &
62         o_ue, o_ve, o_uq, o_vq, o_cape, o_pbase, &
63         o_ptop, o_fbase, o_plcl, o_plfc, &
64         o_wbeff, o_cape_max, o_upwd, o_Ma, &
65         o_dnwd, o_dnwd0, o_ftime_con, o_mc, &
66         o_prw, o_s_pblh, o_s_pblt, o_s_lcl, &
67         o_s_therm, o_uSTDlevs, o_vSTDlevs, &
68         o_wSTDlevs, o_zSTDlevs, o_qSTDlevs, &
69         o_tSTDlevs, epsfra, o_t_oce_sic, &
70         o_ale_bl, o_alp_bl, o_ale_wk, o_alp_wk, &
71         o_ale, o_alp, o_cin, o_WAPE, o_wake_h, &
72         o_wake_s, o_wake_deltat, o_wake_deltaq, &
73         o_wake_omg, o_dtwak, o_dqwak, o_Vprecip, &
74         o_ftd, o_fqd, o_wdtrainA, o_wdtrainM, &
75         o_n2, o_s2, o_proba_notrig, &
76         o_random_notrig, o_ale_bl_stat, &
77         o_ale_bl_trig, o_alp_bl_det, &
78         o_alp_bl_fluct_m, o_alp_bl_fluct_tke, &
79         o_alp_bl_conv, o_alp_bl_stat, o_slab_bils, &
80         o_weakinv, o_dthmin, o_cldtau, &
81         o_cldemi, o_pr_con_l, o_pr_con_i, &
82         o_pr_lsc_l, o_pr_lsc_i, o_re, o_fl, &
83         o_rh2m, o_rh2m_min, o_rh2m_max, &
84         o_qsat2m, o_tpot, o_tpote, o_SWnetOR, &
85         o_SWdownOR, o_LWdownOR, o_snowl, &
86         o_solldown, o_dtsvdfo, o_dtsvdft, &
87         o_dtsvdfg, o_dtsvdfi, o_rugs, o_od550aer, &
88         o_od865aer, o_absvisaer, o_od550lt1aer, &
89         o_sconcso4, o_sconcoa, o_sconcbc, &
90         o_sconcss, o_sconcdust, o_concso4, &
91         o_concoa, o_concbc, o_concss, o_concdust, &
92         o_loadso4, o_loadoa, o_loadbc, o_loadss, &
93         o_loaddust, o_tausumaero, o_topswad, &
94         o_topswad0, o_solswad, o_solswad0, &
95         o_swtoaas_nat, o_swsrfas_nat, &
96         o_swtoacs_nat, o_swtoaas_ant, &
97         o_swsrfas_ant, o_swtoacs_ant, &
98         o_swsrfcs_ant, o_swtoacf_nat, &
99         o_swsrfcf_nat, o_swtoacf_ant, &
100         o_swsrfcs_nat, o_swsrfcf_ant, &
101         o_swtoacf_zero, o_swsrfcf_zero, &
102         o_topswai, o_solswai, o_scdnc, &
103         o_cldncl, o_reffclws, o_reffclwc, &
104         o_cldnvi, o_lcc, o_lcc3d, o_lcc3dcon, &
105         o_lcc3dstra, o_reffclwtop, o_ec550aer, &
106         o_lwcon, o_iwcon, o_temp, o_theta, &
107         o_ovapinit, o_ovap, o_oliq, o_geop, &
108         o_vitu, o_vitv, o_vitw, o_pres, o_paprs, &
109         o_zfull, o_zhalf, o_rneb, o_rnebjn, o_rnebcon, &
110         o_rnebls, o_rhum, o_ozone, o_ozone_light, &
111         o_dtphy, o_dqphy, o_albe_srf, o_rugs_srf, &
112         o_ages_srf, o_alb1, o_alb2, o_tke, &
113         o_tke_max, o_kz, o_kz_max, o_clwcon, &
114         o_dtdyn, o_dqdyn, o_dudyn, o_dvdyn, &
115         o_dtcon, o_tntc, o_ducon, o_dvcon, &
116         o_dqcon, o_tnhusc, o_tnhusc, o_dtlsc, &
117         o_dtlschr, o_dqlsc, o_beta_prec, &
118         o_dtlscth, o_dtlscst, o_dqlscth, &
119         o_dqlscst, o_plulth, o_plulst, &
120         o_ptconvth, o_lmaxth, o_dtvdf, &
121         o_dtdis, o_dqvdf, o_dteva, o_dqeva, &
122         o_ptconv, o_ratqs, o_dtthe, &
123         o_duthe, o_dvthe, o_ftime_th, &
124         o_f_th, o_e_th, o_w_th, o_q_th, &
125         o_a_th, o_d_th, o_f0_th, o_zmax_th, &
126         o_dqthe, o_dtajs, o_dqajs, o_dtswr, &
127         o_dtsw0, o_dtlwr, o_dtlw0, o_dtec, &
128         o_duvdf, o_dvvdf, o_duoro, o_dvoro, &
129         o_dtoro, o_dulif, o_dvlif, o_dtlif, &
130         o_duhin, o_dvhin, o_dthin, o_rsu, &
131         o_rsd, o_rlu, o_rld, o_rsucs, o_rsdcs, &
132         o_rlucs, o_rldcs, o_tnt, o_tntr, &
133         o_tntscpbl, o_tnhus, o_tnhusscpbl, &
134         o_evu, o_h2o, o_mcd, o_dmc, o_ref_liq, &
135         o_ref_ice, o_rsut4co2, o_rlut4co2, &
136         o_rsutcs4co2, o_rlutcs4co2, o_rsu4co2, &
137         o_rlu4co2, o_rsucs4co2, o_rlucs4co2, &
138         o_rsd4co2, o_rld4co2, o_rsdcs4co2, &
139         o_rldcs4co2, o_tnondef, o_ta, o_zg, &
140         o_hus, o_hur, o_ua, o_va, o_wap, &
141         o_psbg, o_tro3, o_tro3_daylight, &
142         o_uxv, o_vxq, o_vxT, o_wxq, o_vxphi, &
143         o_wxT, o_uxu, o_vxv, o_TxT, o_trac, &
144         o_dtr_vdf, o_dtr_the, o_dtr_con, &
145         o_dtr_lessi_impa, o_dtr_lessi_nucl, &
146         o_dtr_insc, o_dtr_bcscav, o_dtr_evapls, &
147         o_dtr_ls, o_dtr_trsp, o_dtr_sscav, &
148         o_dtr_sat, o_dtr_uscav, o_trac_cum, o_du_gwd_rando, o_dv_gwd_rando, &
149         o_vstr_gwd_rando
150
151    USE phys_state_var_mod, only: pctsrf, paire_ter, rain_fall, snow_fall, &
152         nday_rain, rain_con, snow_con, &
153         topsw, toplw, toplw0, swup, swdn, &
154         topsw0, swup0, swdn0, SWup200, SWup200clr, &
155         SWdn200, SWdn200clr, LWup200, LWup200clr, &
156         LWdn200, LWdn200clr, solsw, solsw0, sollw, &
157         radsol, sollw0, sollwdown, sollw, &
158         sollwdownclr, lwdn0, ftsol, ustar, u10m, &
159         v10m, pbl_tke, wstar, cape, ema_pcb, ema_pct, &
160         ema_cbmf, Ma, fm_therm, ale_bl, alp_bl, ale, &
161         alp, cin, wake_pe, wake_s, wake_deltat, &
162         wake_deltaq, ftd, fqd, ale_bl_trig, albsol1, &
163         rnebcon, wo, falb1, albsol2, coefh, clwcon0, &
164         ratqs, entr_therm, zqasc, detr_therm, f0, heat, &
165         heat0, cool, cool0, lwup, lwdn, lwup0, coefm, &
166         swupp, lwupp, swup0p, lwup0p, swdnp, lwdnp, &
167         swdn0p, lwdn0p, tnondef, O3sumSTD, uvsumSTD, &
168         vqsumSTD, vTsumSTD, O3daysumSTD, wqsumSTD, &
169         vphisumSTD, wTsumSTD, u2sumSTD, v2sumSTD, &
170         T2sumSTD, nlevSTD, du_gwd_rando, dv_gwd_rando
171
172    USE phys_local_var_mod, only: zxfluxlat, slp, zxtsol, zt2m, &
173         zu10m, zv10m, zq2m, zustar, zxqsurf, qsol, &
174         rain_lsc, snow_lsc, evap, bils, sens, fder, &
175         zxffonte, zxfqcalving, zxfqfonte, fluxu, &
176         fluxv, zxsnow, qsnow, snowhgt, to_ice, &
177         sissnow, runoff, albsol3_lic, evap_pot, &
178         t2m, fevap, fluxt, fluxlat, fsollw, fsolsw, &
179         wfbils, wfbilo, cdragm, cdragh, cldl, cldm, &
180         cldh, cldt, JrNt, cldljn, cldmjn, cldhjn, &
181         cldtjn, cldq, flwp, fiwp, ue, ve, uq, vq, &
182         plcl, plfc, wbeff, upwd, dnwd, dnwd0, prw, &
183         s_pblh, s_pblt, s_lcl, s_therm, uwriteSTD, &
184         vwriteSTD, wwriteSTD, phiwriteSTD, qwriteSTD, &
185         twriteSTD, ale_wake, alp_wake, wake_h, &
186         wake_omg, d_t_wake, d_q_wake, Vprecip, &
187         wdtrainA, wdtrainM, n2, s2, proba_notrig, &
188         random_notrig, ale_bl_stat, &
189         alp_bl_det, alp_bl_fluct_m, alp_bl_conv, &
190         alp_bl_stat, alp_bl_fluct_tke, slab_wfbils, &
191         weak_inversion, dthmin, cldtau, cldemi, &
192         pmflxr, pmflxs, prfl, psfl, re, fl, rh2m, &
193         qsat2m, tpote, tpot, d_ts, zxrugs, od550aer, &
194         od865aer, absvisaer, od550lt1aer, sconcso4, &
195         sconcoa, sconcbc, sconcss, sconcdust, concso4, &
196         concoa, concbc, concss, concdust, loadso4, &
197         loadoa, loadbc, loadss, loaddust, tausum_aero, &
198         topswad_aero, topswad0_aero, solswad_aero, &
199         solswad0_aero, topsw_aero, solsw_aero, &
200         topsw0_aero, solsw0_aero, topswcf_aero, &
201         solswcf_aero, topswai_aero, solswai_aero, &
202         scdnc, cldncl, reffclws, reffclwc, cldnvi, &
203         lcc, lcc3d, lcc3dcon, lcc3dstra, reffclwtop, &
204         ec550aer, flwc, fiwc, t_seri, theta, q_seri, &
205         ql_seri, zphi, u_seri, v_seri, omega, cldfra, &
206         rneb, rnebjn, zx_rh, frugs, agesno, d_t_dyn, d_q_dyn, &
207         d_u_dyn, d_v_dyn, d_t_con, d_t_ajsb, d_t_ajs, &
208         d_u_ajs, d_v_ajs, &
209         d_u_con, d_v_con, d_q_con, d_q_ajs, d_t_lsc, &
210         d_t_eva, d_q_lsc, beta_prec, d_t_lscth, &
211         d_t_lscst, d_q_lscth, d_q_lscst, plul_th, &
212         plul_st, d_t_vdf, d_t_diss, d_q_vdf, d_q_eva, &
213         zw2, fraca, zmax_th, d_q_ajsb, d_t_ec, d_u_vdf, &
214         d_v_vdf, d_u_oro, d_v_oro, d_t_oro, d_u_lif, &
215         d_v_lif, d_t_lif, d_u_hin, d_v_hin, d_t_hin, &
216         pmfd, pmfu, ref_liq, ref_ice, rhwriteSTD
217
218    USE phys_output_var_mod, only: vars_defined, snow_o, zfra_o, bils_diss, &
219         bils_ec, bils_tke, bils_kinetic, bils_latent, bils_enthalp, &
220         itau_con, nfiles, clef_files, nid_files, zvstr_gwd_rando
221    USE indice_sol_mod, only: nbsrf
222    USE infotrac, only: nqtot
223    USE comgeomphy, only: airephy
224    USE surface_data, only: type_ocean, ok_veget, ok_snow
225    USE aero_mod, only: naero_spc
226    USE ioipsl, only: histend, histsync
227    USE iophy, only: set_itau_iophy, histwrite_phy
228    USE netcdf, only: nf90_fill_real
229
230#ifdef CPP_XIOS
231    ! ug Pour les sorties XIOS
232    USE wxios, only: wxios_update_calendar, wxios_closedef
233#endif
234    USE phys_cal_mod, only : mth_len
235
236    IMPLICIT NONE
237
238    INCLUDE "temps.h"
239    INCLUDE "clesphys.h"
240    INCLUDE "thermcell.h"
241    INCLUDE "compbl.h"
242    INCLUDE "YOMCST.h"
243    INCLUDE "dimensions.h"
244    include "iniprint.h"
245
246    ! Input
247    INTEGER :: itap, ivap, read_climoz
248    INTEGER, DIMENSION(klon) :: lmax_th
249    LOGICAL :: aerosol_couple, ok_sync
250    LOGICAL :: ok_ade, ok_aie, new_aod
251    LOGICAL, DIMENSION(klon, klev) :: ptconv, ptconvth
252    REAL :: pdtphys
253    CHARACTER (LEN=4), DIMENSION(nlevSTD) :: clevSTD
254    REAL, DIMENSION(klon) :: pphis
255    REAL, DIMENSION(klon, klev) :: pplay, d_t
256    REAL, DIMENSION(klon, klev+1) :: paprs
257    REAL, DIMENSION(klon,klev,nqtot) :: qx, d_qx
258    REAL, DIMENSION(klon, llm) :: zmasse
259    LOGICAL :: flag_aerosol_strat
260    REAL, DIMENSION(3) :: freq_moyNMC
261
262    ! Local
263    INTEGER, PARAMETER :: jjmp1=jjm+1-1/jjm
264    INTEGER :: itau_w
265    INTEGER :: i, iinit, iinitend=1, iff, iq, nsrf, k, ll, naero
266    REAL, DIMENSION (klon) :: zx_tmp_fi2d
267    REAL, DIMENSION (klon,klev) :: zx_tmp_fi3d, zpt_conv
268    REAL, DIMENSION (klon,klev+1) :: zx_tmp_fi3d1
269    CHARACTER (LEN=4)              :: bb2
270    INTEGER, DIMENSION(iim*jjmp1)  :: ndex2d
271    INTEGER, DIMENSION(iim*jjmp1*klev) :: ndex3d
272    REAL, PARAMETER :: dobson_u = 2.1415e-05 ! Dobson unit, in kg m-2
273    REAL, PARAMETER :: missing_val=nf90_fill_real
274    REAL, PARAMETER :: un_jour=86400.
275
276    ! On calcul le nouveau tau:
277    itau_w = itau_phy + itap + start_time * day_step / iphysiq
278    ! On le donne à iophy pour que les histwrite y aient accès:
279    CALL set_itau_iophy(itau_w)
280
281    IF(.NOT.vars_defined) THEN
282       iinitend = 2
283    ELSE
284       iinitend = 1
285    ENDIF
286
287    ! ug la boucle qui suit ne sert qu'une fois, pour l'initialisation, sinon il n'y a toujours qu'un seul passage:
288    DO iinit=1, iinitend
289#ifdef CPP_XIOS
290       !$OMP MASTER
291       IF (vars_defined) THEN
292          if (prt_level >= 10) then
293             write(lunout,*)"phys_output_write: call wxios_update_calendar, itau_w=",itau_w
294          endif
295          CALL wxios_update_calendar(itau_w)
296       END IF
297       !$OMP END MASTER
298       !$OMP BARRIER
299#endif
300       ! On procède à l'écriture ou à la définition des nombreuses variables:
301!!! Champs 1D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
302       CALL histwrite_phy(o_phis, pphis)
303       CALL histwrite_phy(o_aire, airephy)
304
305       IF (vars_defined) THEN
306          DO i=1, klon
307             zx_tmp_fi2d(i)=pctsrf(i,is_ter)+pctsrf(i,is_lic)
308          ENDDO
309       ENDIF
310
311       CALL histwrite_phy(o_contfracATM, zx_tmp_fi2d)
312       CALL histwrite_phy(o_contfracOR, pctsrf(:,is_ter))
313       CALL histwrite_phy(o_aireTER, paire_ter)
314!!! Champs 2D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
315       CALL histwrite_phy(o_flat, zxfluxlat)
316       CALL histwrite_phy(o_slp, slp)
317       CALL histwrite_phy(o_tsol, zxtsol)
318       CALL histwrite_phy(o_t2m, zt2m)
319       CALL histwrite_phy(o_t2m_min, zt2m)
320       CALL histwrite_phy(o_t2m_max, zt2m)
321
322       IF (vars_defined) THEN
323          DO i=1, klon
324             zx_tmp_fi2d(i)=SQRT(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i))
325          ENDDO
326       ENDIF
327       CALL histwrite_phy(o_wind10m, zx_tmp_fi2d)
328
329       IF (vars_defined) THEN
330          DO i=1, klon
331             zx_tmp_fi2d(i)=SQRT(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i))
332          ENDDO
333       ENDIF
334       CALL histwrite_phy(o_wind10max, zx_tmp_fi2d)
335
336       IF (vars_defined) THEN
337          DO i = 1, klon
338             zx_tmp_fi2d(i) = pctsrf(i,is_sic)
339          ENDDO
340       ENDIF
341       CALL histwrite_phy(o_sicf, zx_tmp_fi2d)
342       CALL histwrite_phy(o_q2m, zq2m)
343       CALL histwrite_phy(o_ustar, zustar)
344       CALL histwrite_phy(o_u10m, zu10m)
345       CALL histwrite_phy(o_v10m, zv10m)
346
347       IF (vars_defined) THEN
348          DO i = 1, klon
349             zx_tmp_fi2d(i) = paprs(i,1)
350          ENDDO
351       ENDIF
352       CALL histwrite_phy(o_psol, zx_tmp_fi2d)
353       CALL histwrite_phy(o_mass, zmasse)
354       CALL histwrite_phy(o_qsurf, zxqsurf)
355
356       IF (.NOT. ok_veget) THEN
357          CALL histwrite_phy(o_qsol, qsol)
358       ENDIF
359
360       IF (vars_defined) THEN
361          DO i = 1, klon
362             zx_tmp_fi2d(i) = rain_fall(i) + snow_fall(i)
363          ENDDO
364       ENDIF
365
366       CALL histwrite_phy(o_precip, zx_tmp_fi2d)
367       CALL histwrite_phy(o_ndayrain, nday_rain)
368
369       IF (vars_defined) THEN
370          DO i = 1, klon
371             zx_tmp_fi2d(i) = rain_lsc(i) + snow_lsc(i)
372          ENDDO
373       ENDIF
374       CALL histwrite_phy(o_plul, zx_tmp_fi2d)
375
376       IF (vars_defined) THEN
377          DO i = 1, klon
378             zx_tmp_fi2d(i) = rain_con(i) + snow_con(i)
379          ENDDO
380       ENDIF
381       CALL histwrite_phy(o_pluc, zx_tmp_fi2d)
382       CALL histwrite_phy(o_snow, snow_fall)
383       CALL histwrite_phy(o_msnow, snow_o)
384       CALL histwrite_phy(o_fsnow, zfra_o)
385       CALL histwrite_phy(o_evap, evap)
386       CALL histwrite_phy(o_tops, topsw)
387       CALL histwrite_phy(o_tops0, topsw0)
388       CALL histwrite_phy(o_topl, toplw)
389       CALL histwrite_phy(o_topl0, toplw0)
390
391       IF (vars_defined) THEN
392          zx_tmp_fi2d(1 : klon) = swup ( 1 : klon, klevp1 )
393       ENDIF
394       CALL histwrite_phy(o_SWupTOA, zx_tmp_fi2d)
395
396       IF (vars_defined) THEN
397          zx_tmp_fi2d(1 : klon) = swup0 ( 1 : klon, klevp1 )
398       ENDIF
399       CALL histwrite_phy(o_SWupTOAclr, zx_tmp_fi2d)
400
401       IF (vars_defined) THEN
402          zx_tmp_fi2d(1 : klon) = swdn ( 1 : klon, klevp1 )
403       ENDIF
404       CALL histwrite_phy(o_SWdnTOA, zx_tmp_fi2d)
405
406       IF (vars_defined) THEN
407          zx_tmp_fi2d(1 : klon) = swdn0 ( 1 : klon, klevp1 )
408       ENDIF
409       CALL histwrite_phy(o_SWdnTOAclr, zx_tmp_fi2d)
410
411       IF (vars_defined) THEN
412          zx_tmp_fi2d(:) = topsw(:)-toplw(:)
413       ENDIF
414       CALL histwrite_phy(o_nettop, zx_tmp_fi2d)
415       CALL histwrite_phy(o_SWup200, SWup200)
416       CALL histwrite_phy(o_SWup200clr, SWup200clr)
417       CALL histwrite_phy(o_SWdn200, SWdn200)
418       CALL histwrite_phy(o_SWdn200clr, SWdn200clr)
419       CALL histwrite_phy(o_LWup200, LWup200)
420       CALL histwrite_phy(o_LWup200clr, LWup200clr)
421       CALL histwrite_phy(o_LWdn200, LWdn200)
422       CALL histwrite_phy(o_LWdn200clr, LWdn200clr)
423       CALL histwrite_phy(o_sols, solsw)
424       CALL histwrite_phy(o_sols0, solsw0)
425       CALL histwrite_phy(o_soll, sollw)
426       CALL histwrite_phy(o_radsol, radsol)
427       CALL histwrite_phy(o_soll0, sollw0)
428
429       IF (vars_defined) THEN
430          zx_tmp_fi2d(1 : klon) = swup ( 1 : klon, 1 )
431       ENDIF
432       CALL histwrite_phy(o_SWupSFC, zx_tmp_fi2d)
433
434       IF (vars_defined) THEN
435          zx_tmp_fi2d(1 : klon) = swup0 ( 1 : klon, 1 )
436       ENDIF
437       CALL histwrite_phy(o_SWupSFCclr, zx_tmp_fi2d)
438
439       IF (vars_defined) THEN
440          zx_tmp_fi2d(1 : klon) = swdn ( 1 : klon, 1 )
441       ENDIF
442       CALL histwrite_phy(o_SWdnSFC, zx_tmp_fi2d)
443
444       IF (vars_defined) THEN
445          zx_tmp_fi2d(1 : klon) = swdn0 ( 1 : klon, 1 )
446       ENDIF
447       CALL histwrite_phy(o_SWdnSFCclr, zx_tmp_fi2d)
448
449       IF (vars_defined) THEN
450          zx_tmp_fi2d(1:klon)=sollwdown(1:klon)-sollw(1:klon)
451       ENDIF
452       CALL histwrite_phy(o_LWupSFC, zx_tmp_fi2d)
453       CALL histwrite_phy(o_LWdnSFC, sollwdown)
454
455       IF (vars_defined) THEN
456          sollwdownclr(1:klon) = -1.*lwdn0(1:klon,1)
457          zx_tmp_fi2d(1:klon)=sollwdownclr(1:klon)-sollw0(1:klon)
458       ENDIF
459       CALL histwrite_phy(o_LWupSFCclr, zx_tmp_fi2d)
460       CALL histwrite_phy(o_LWdnSFCclr, sollwdownclr)
461       CALL histwrite_phy(o_bils, bils)
462       CALL histwrite_phy(o_bils_diss, bils_diss)
463       CALL histwrite_phy(o_bils_ec, bils_ec)
464       CALL histwrite_phy(o_bils_tke, bils_tke)
465       CALL histwrite_phy(o_bils_kinetic, bils_kinetic)
466       CALL histwrite_phy(o_bils_latent, bils_latent)
467       CALL histwrite_phy(o_bils_enthalp, bils_enthalp)
468
469       IF (vars_defined) THEN
470          zx_tmp_fi2d(1:klon)=-1*sens(1:klon)
471       ENDIF
472       CALL histwrite_phy(o_sens, zx_tmp_fi2d)
473       CALL histwrite_phy(o_fder, fder)
474       CALL histwrite_phy(o_ffonte, zxffonte)
475       CALL histwrite_phy(o_fqcalving, zxfqcalving)
476       CALL histwrite_phy(o_fqfonte, zxfqfonte)
477       IF (vars_defined) THEN
478          zx_tmp_fi2d=0.
479          DO nsrf=1,nbsrf
480             zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxu(:,1,nsrf)
481          ENDDO
482       ENDIF
483       CALL histwrite_phy(o_taux, zx_tmp_fi2d)
484
485       IF (vars_defined) THEN
486          zx_tmp_fi2d=0.
487          DO nsrf=1,nbsrf
488             zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxv(:,1,nsrf)
489          ENDDO
490       ENDIF
491       CALL histwrite_phy(o_tauy, zx_tmp_fi2d)
492
493       IF (ok_snow) THEN
494          CALL histwrite_phy(o_snowsrf, zxsnow)
495          CALL histwrite_phy(o_qsnow, qsnow)
496          CALL histwrite_phy(o_snowhgt,snowhgt)
497          CALL histwrite_phy(o_toice,to_ice)
498          CALL histwrite_phy(o_sissnow,sissnow)
499          CALL histwrite_phy(o_runoff,runoff)
500          CALL histwrite_phy(o_albslw3,albsol3_lic)
501       ENDIF
502
503       DO nsrf = 1, nbsrf
504          IF (vars_defined)             zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)*100.
505          CALL histwrite_phy(o_pourc_srf(nsrf), zx_tmp_fi2d)
506          IF (vars_defined)           zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)
507          CALL histwrite_phy(o_fract_srf(nsrf), zx_tmp_fi2d)
508          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxu( 1 : klon, 1, nsrf)
509          CALL histwrite_phy(o_taux_srf(nsrf), zx_tmp_fi2d)
510          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxv( 1 : klon, 1, nsrf)
511          CALL histwrite_phy(o_tauy_srf(nsrf), zx_tmp_fi2d)
512          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = ftsol( 1 : klon, nsrf)
513          CALL histwrite_phy(o_tsol_srf(nsrf), zx_tmp_fi2d)
514          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = evap_pot( 1 : klon, nsrf)
515          CALL histwrite_phy(o_evappot_srf(nsrf), zx_tmp_fi2d)
516          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = ustar(1 : klon, nsrf)
517          CALL histwrite_phy(o_ustar_srf(nsrf), zx_tmp_fi2d)
518          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = u10m(1 : klon, nsrf)
519          CALL histwrite_phy(o_u10m_srf(nsrf), zx_tmp_fi2d)
520          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = v10m(1 : klon, nsrf)
521          CALL histwrite_phy(o_v10m_srf(nsrf), zx_tmp_fi2d)
522          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = t2m(1 : klon, nsrf)
523          CALL histwrite_phy(o_t2m_srf(nsrf), zx_tmp_fi2d)
524          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = fevap(1 : klon, nsrf)
525          CALL histwrite_phy(o_evap_srf(nsrf), zx_tmp_fi2d)
526          IF (vars_defined)        zx_tmp_fi2d(1 : klon) = fluxt( 1 : klon, 1, nsrf)
527          CALL histwrite_phy(o_sens_srf(nsrf), zx_tmp_fi2d)
528          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxlat( 1 : klon, nsrf)
529          CALL histwrite_phy(o_lat_srf(nsrf), zx_tmp_fi2d)
530          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fsollw( 1 : klon, nsrf)
531          CALL histwrite_phy(o_flw_srf(nsrf), zx_tmp_fi2d)
532          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, nsrf)
533          CALL histwrite_phy(o_fsw_srf(nsrf), zx_tmp_fi2d)
534          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfbils( 1 : klon, nsrf)
535          CALL histwrite_phy(o_wbils_srf(nsrf), zx_tmp_fi2d)
536          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfbilo( 1 : klon, nsrf)
537          CALL histwrite_phy(o_wbilo_srf(nsrf), zx_tmp_fi2d)
538
539          IF (iflag_pbl > 1) THEN
540             CALL histwrite_phy(o_tke_srf(nsrf),  pbl_tke(:,1:klev,nsrf))
541             CALL histwrite_phy(o_tke_max_srf(nsrf),  pbl_tke(:,1:klev,nsrf))
542          ENDIF
543
544       ENDDO
545       DO nsrf=1,nbsrf+1
546          CALL histwrite_phy(o_wstar(nsrf), wstar(1 : klon, nsrf))
547       ENDDO
548
549       CALL histwrite_phy(o_cdrm, cdragm)
550       CALL histwrite_phy(o_cdrh, cdragh)
551       CALL histwrite_phy(o_cldl, cldl)
552       CALL histwrite_phy(o_cldm, cldm)
553       CALL histwrite_phy(o_cldh, cldh)
554       CALL histwrite_phy(o_cldt, cldt)
555       CALL histwrite_phy(o_JrNt, JrNt)
556       CALL histwrite_phy(o_cldljn, cldl*JrNt)
557       CALL histwrite_phy(o_cldmjn, cldm*JrNt)
558       CALL histwrite_phy(o_cldhjn, cldh*JrNt)
559       CALL histwrite_phy(o_cldtjn, cldt*JrNt)
560       CALL histwrite_phy(o_cldq, cldq)
561       IF (vars_defined)       zx_tmp_fi2d(1:klon) = flwp(1:klon)
562       CALL histwrite_phy(o_lwp, zx_tmp_fi2d)
563       IF (vars_defined)       zx_tmp_fi2d(1:klon) = fiwp(1:klon)
564       CALL histwrite_phy(o_iwp, zx_tmp_fi2d)
565       CALL histwrite_phy(o_ue, ue)
566       CALL histwrite_phy(o_ve, ve)
567       CALL histwrite_phy(o_uq, uq)
568       CALL histwrite_phy(o_vq, vq)
569       IF(iflag_con.GE.3) THEN ! sb
570          CALL histwrite_phy(o_cape, cape)
571          CALL histwrite_phy(o_pbase, ema_pcb)
572          CALL histwrite_phy(o_ptop, ema_pct)
573          CALL histwrite_phy(o_fbase, ema_cbmf)
574          if (iflag_con /= 30) then
575             CALL histwrite_phy(o_plcl, plcl)
576             CALL histwrite_phy(o_plfc, plfc)
577             CALL histwrite_phy(o_wbeff, wbeff)
578          end if
579
580          CALL histwrite_phy(o_cape_max, cape)
581
582          CALL histwrite_phy(o_upwd, upwd)
583          CALL histwrite_phy(o_Ma, Ma)
584          CALL histwrite_phy(o_dnwd, dnwd)
585          CALL histwrite_phy(o_dnwd0, dnwd0)
586          IF (vars_defined)         zx_tmp_fi2d=float(itau_con)/float(itap)
587          CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
588          IF (vars_defined) THEN
589             IF(iflag_thermals>=1)THEN
590                zx_tmp_fi3d=dnwd+dnwd0+upwd+fm_therm(:,1:klev)
591             ELSE
592                zx_tmp_fi3d=dnwd+dnwd0+upwd
593             ENDIF
594          ENDIF
595          CALL histwrite_phy(o_mc, zx_tmp_fi3d)
596       ENDIF !iflag_con .GE. 3
597       CALL histwrite_phy(o_prw, prw)
598       CALL histwrite_phy(o_s_pblh, s_pblh)
599       CALL histwrite_phy(o_s_pblt, s_pblt)
600       CALL histwrite_phy(o_s_lcl, s_lcl)
601       CALL histwrite_phy(o_s_therm, s_therm)
602       !IM : Les champs suivants (s_capCL, s_oliqCL, s_cteiCL, s_trmb1, s_trmb2, s_trmb3) ne sont pas definis dans HBTM.F
603       !       IF (o_s_capCL%flag(iff)<=lev_files(iff)) THEN
604       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
605       !    $o_s_capCL%name,itau_w,s_capCL)
606       !       ENDIF
607       !       IF (o_s_oliqCL%flag(iff)<=lev_files(iff)) THEN
608       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
609       !    $o_s_oliqCL%name,itau_w,s_oliqCL)
610       !       ENDIF
611       !       IF (o_s_cteiCL%flag(iff)<=lev_files(iff)) THEN
612       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
613       !    $o_s_cteiCL%name,itau_w,s_cteiCL)
614       !       ENDIF
615       !       IF (o_s_trmb1%flag(iff)<=lev_files(iff)) THEN
616       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
617       !    $o_s_trmb1%name,itau_w,s_trmb1)
618       !       ENDIF
619       !       IF (o_s_trmb2%flag(iff)<=lev_files(iff)) THEN
620       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
621       !    $o_s_trmb2%name,itau_w,s_trmb2)
622       !       ENDIF
623       !       IF (o_s_trmb3%flag(iff)<=lev_files(iff)) THEN
624       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
625       !    $o_s_trmb3%name,itau_w,s_trmb3)
626       !       ENDIF
627
628       ! ATTENTION, LES ANCIENS HISTWRITE ONT ETES CONSERVES EN ATTENDANT MIEUX:
629       ! Champs interpolles sur des niveaux de pression
630       DO iff=1, nfiles
631          ll=0
632          DO k=1, nlevSTD
633             bb2=clevSTD(k)
634             IF(bb2.EQ."850".OR.bb2.EQ."700".OR. &
635                  bb2.EQ."500".OR.bb2.EQ."200".OR. &
636                  bb2.EQ."100".OR. &
637                  bb2.EQ."50".OR.bb2.EQ."10") THEN
638
639                ! a refaire correctement !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
640                ll=ll+1
641                CALL histwrite_phy(o_uSTDlevs(ll),uwriteSTD(:,k,iff), iff)
642                CALL histwrite_phy(o_vSTDlevs(ll),vwriteSTD(:,k,iff), iff)
643                CALL histwrite_phy(o_wSTDlevs(ll),wwriteSTD(:,k,iff), iff)
644                CALL histwrite_phy(o_zSTDlevs(ll),phiwriteSTD(:,k,iff), iff)
645                CALL histwrite_phy(o_qSTDlevs(ll),qwriteSTD(:,k,iff), iff)
646                CALL histwrite_phy(o_tSTDlevs(ll),twriteSTD(:,k,iff), iff)
647
648             ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
649          ENDDO
650       ENDDO
651
652       IF (vars_defined) THEN
653          DO i=1, klon
654             IF (pctsrf(i,is_oce).GT.epsfra.OR. &
655                  pctsrf(i,is_sic).GT.epsfra) THEN
656                zx_tmp_fi2d(i) = (ftsol(i, is_oce) * pctsrf(i,is_oce)+ &
657                     ftsol(i, is_sic) * pctsrf(i,is_sic))/ &
658                     (pctsrf(i,is_oce)+pctsrf(i,is_sic))
659             ELSE
660                zx_tmp_fi2d(i) = 273.15
661             ENDIF
662          ENDDO
663       ENDIF
664       CALL histwrite_phy(o_t_oce_sic, zx_tmp_fi2d)
665
666       ! Couplage convection-couche limite
667       IF (iflag_con.GE.3) THEN
668          IF (iflag_coupl>=1) THEN
669             CALL histwrite_phy(o_ale_bl, ale_bl)
670             CALL histwrite_phy(o_alp_bl, alp_bl)
671          ENDIF !iflag_coupl>=1
672       ENDIF !(iflag_con.GE.3)
673       ! Wakes
674       IF (iflag_con.EQ.3) THEN
675          IF (iflag_wake>=1) THEN
676             CALL histwrite_phy(o_ale_wk, ale_wake)
677             CALL histwrite_phy(o_alp_wk, alp_wake)
678             CALL histwrite_phy(o_ale, ale)
679             CALL histwrite_phy(o_alp, alp)
680             CALL histwrite_phy(o_cin, cin)
681             CALL histwrite_phy(o_WAPE, wake_pe)
682             CALL histwrite_phy(o_wake_h, wake_h)
683             CALL histwrite_phy(o_wake_s, wake_s)
684             CALL histwrite_phy(o_wake_deltat, wake_deltat)
685             CALL histwrite_phy(o_wake_deltaq, wake_deltaq)
686             CALL histwrite_phy(o_wake_omg, wake_omg)
687             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_wake(1:klon,1:klev) &
688                  /pdtphys
689             CALL histwrite_phy(o_dtwak, zx_tmp_fi3d)
690             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_wake(1:klon,1:klev)/pdtphys
691             CALL histwrite_phy(o_dqwak, zx_tmp_fi3d)
692          ENDIF ! iflag_wake>=1
693          CALL histwrite_phy(o_Vprecip, Vprecip)
694          CALL histwrite_phy(o_ftd, ftd)
695          CALL histwrite_phy(o_fqd, fqd)
696       ELSEIF (iflag_con.EQ.30) THEN
697          ! sortie RomP convection descente insaturee iflag_con=30
698          CALL histwrite_phy(o_Vprecip, Vprecip)
699          CALL histwrite_phy(o_wdtrainA, wdtrainA)
700          CALL histwrite_phy(o_wdtrainM, wdtrainM)
701       ENDIF !(iflag_con.EQ.3.or.iflag_con.EQ.30)
702!!! nrlmd le 10/04/2012
703       IF (iflag_trig_bl>=1) THEN
704          CALL histwrite_phy(o_n2, n2)
705          CALL histwrite_phy(o_s2, s2)
706          CALL histwrite_phy(o_proba_notrig, proba_notrig)
707          CALL histwrite_phy(o_random_notrig, random_notrig)
708          CALL histwrite_phy(o_ale_bl_stat, ale_bl_stat)
709          CALL histwrite_phy(o_ale_bl_trig, ale_bl_trig)
710       ENDIF  !(iflag_trig_bl>=1)
711       IF (iflag_clos_bl>=1) THEN
712          CALL histwrite_phy(o_alp_bl_det, alp_bl_det)
713          CALL histwrite_phy(o_alp_bl_fluct_m, alp_bl_fluct_m)
714          CALL histwrite_phy(o_alp_bl_fluct_tke,  &
715               alp_bl_fluct_tke)
716          CALL histwrite_phy(o_alp_bl_conv, alp_bl_conv)
717          CALL histwrite_phy(o_alp_bl_stat, alp_bl_stat)
718       ENDIF  !(iflag_clos_bl>=1)
719!!! fin nrlmd le 10/04/2012
720       IF (type_ocean=='slab ') THEN
721          CALL histwrite_phy(o_slab_bils, slab_wfbils)
722       ENDIF !type_ocean == force/slab
723       CALL histwrite_phy(o_weakinv, weak_inversion)
724       CALL histwrite_phy(o_dthmin, dthmin)
725       CALL histwrite_phy(o_cldtau, cldtau)
726       CALL histwrite_phy(o_cldemi, cldemi)
727       CALL histwrite_phy(o_pr_con_l, pmflxr(:,1:klev))
728       CALL histwrite_phy(o_pr_con_i, pmflxs(:,1:klev))
729       CALL histwrite_phy(o_pr_lsc_l, prfl(:,1:klev))
730       CALL histwrite_phy(o_pr_lsc_i, psfl(:,1:klev))
731       CALL histwrite_phy(o_re, re)
732       CALL histwrite_phy(o_fl, fl)
733       IF (vars_defined) THEN
734          DO i=1, klon
735             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
736          ENDDO
737       ENDIF
738       CALL histwrite_phy(o_rh2m, zx_tmp_fi2d)
739
740       IF (vars_defined) THEN
741          DO i=1, klon
742             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
743          ENDDO
744       ENDIF
745       CALL histwrite_phy(o_rh2m_min, zx_tmp_fi2d)
746
747       IF (vars_defined) THEN
748          DO i=1, klon
749             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
750          ENDDO
751       ENDIF
752       CALL histwrite_phy(o_rh2m_max, zx_tmp_fi2d)
753
754       CALL histwrite_phy(o_qsat2m, qsat2m)
755       CALL histwrite_phy(o_tpot, tpot)
756       CALL histwrite_phy(o_tpote, tpote)
757       IF (vars_defined) zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, is_ter)
758       CALL histwrite_phy(o_SWnetOR,  zx_tmp_fi2d)
759       IF (vars_defined) zx_tmp_fi2d(1:klon) = solsw(1:klon)/(1.-albsol1(1:klon))
760       CALL histwrite_phy(o_SWdownOR,  zx_tmp_fi2d)
761       CALL histwrite_phy(o_LWdownOR, sollwdown)
762       CALL histwrite_phy(o_snowl, snow_lsc)
763       CALL histwrite_phy(o_solldown, sollwdown)
764       CALL histwrite_phy(o_dtsvdfo, d_ts(:,is_oce))
765       CALL histwrite_phy(o_dtsvdft, d_ts(:,is_ter))
766       CALL histwrite_phy(o_dtsvdfg,  d_ts(:,is_lic))
767       CALL histwrite_phy(o_dtsvdfi, d_ts(:,is_sic))
768       CALL histwrite_phy(o_rugs, zxrugs)
769       ! OD550 per species
770       IF (new_aod .and. (.not. aerosol_couple)) THEN
771          IF (ok_ade.OR.ok_aie) THEN
772             CALL histwrite_phy(o_od550aer, od550aer)
773             CALL histwrite_phy(o_od865aer, od865aer)
774             CALL histwrite_phy(o_absvisaer, absvisaer)
775             CALL histwrite_phy(o_od550lt1aer, od550lt1aer)
776             CALL histwrite_phy(o_sconcso4, sconcso4)
777             CALL histwrite_phy(o_sconcoa, sconcoa)
778             CALL histwrite_phy(o_sconcbc, sconcbc)
779             CALL histwrite_phy(o_sconcss, sconcss)
780             CALL histwrite_phy(o_sconcdust, sconcdust)
781             CALL histwrite_phy(o_concso4, concso4)
782             CALL histwrite_phy(o_concoa, concoa)
783             CALL histwrite_phy(o_concbc, concbc)
784             CALL histwrite_phy(o_concss, concss)
785             CALL histwrite_phy(o_concdust, concdust)
786             CALL histwrite_phy(o_loadso4, loadso4)
787             CALL histwrite_phy(o_loadoa, loadoa)
788             CALL histwrite_phy(o_loadbc, loadbc)
789             CALL histwrite_phy(o_loadss, loadss)
790             CALL histwrite_phy(o_loaddust, loaddust)
791             !--STRAT AER
792          ENDIF
793          IF (ok_ade.OR.ok_aie.OR.flag_aerosol_strat) THEN
794             DO naero = 1, naero_spc
795                CALL histwrite_phy(o_tausumaero(naero), &
796                     tausum_aero(:,2,naero) )
797             END DO
798          ENDIF
799       ENDIF
800       IF (ok_ade) THEN
801          CALL histwrite_phy(o_topswad, topswad_aero)
802          CALL histwrite_phy(o_topswad0, topswad0_aero)
803          CALL histwrite_phy(o_solswad, solswad_aero)
804          CALL histwrite_phy(o_solswad0, solswad0_aero)
805          !====MS forcing diagnostics
806          if (new_aod) then
807             CALL histwrite_phy(o_swtoaas_nat, topsw_aero(:,1))
808             CALL histwrite_phy(o_swsrfas_nat, solsw_aero(:,1))
809             CALL histwrite_phy(o_swtoacs_nat, topsw0_aero(:,1))
810             CALL histwrite_phy(o_swsrfcs_nat, solsw0_aero(:,1))
811             !ant
812             CALL histwrite_phy(o_swtoaas_ant, topsw_aero(:,2))
813             CALL histwrite_phy(o_swsrfas_ant, solsw_aero(:,2))
814             CALL histwrite_phy(o_swtoacs_ant, topsw0_aero(:,2))
815             CALL histwrite_phy(o_swsrfcs_ant, solsw0_aero(:,2))
816             !cf
817             if (.not. aerosol_couple) then
818                CALL histwrite_phy(o_swtoacf_nat, topswcf_aero(:,1))
819                CALL histwrite_phy(o_swsrfcf_nat, solswcf_aero(:,1))
820                CALL histwrite_phy(o_swtoacf_ant, topswcf_aero(:,2))
821                CALL histwrite_phy(o_swsrfcf_ant, solswcf_aero(:,2))
822                CALL histwrite_phy(o_swtoacf_zero,topswcf_aero(:,3))
823                CALL histwrite_phy(o_swsrfcf_zero,solswcf_aero(:,3))
824             endif
825          endif ! new_aod
826          !====MS forcing diagnostics
827       ENDIF
828       IF (ok_aie) THEN
829          CALL histwrite_phy(o_topswai, topswai_aero)
830          CALL histwrite_phy(o_solswai, solswai_aero)
831          CALL histwrite_phy(o_scdnc, scdnc)
832          CALL histwrite_phy(o_cldncl, cldncl)
833          CALL histwrite_phy(o_reffclws, reffclws)
834          CALL histwrite_phy(o_reffclwc, reffclwc)
835          CALL histwrite_phy(o_cldnvi, cldnvi)
836          CALL histwrite_phy(o_lcc, lcc)
837          CALL histwrite_phy(o_lcc3d, lcc3d)
838          CALL histwrite_phy(o_lcc3dcon, lcc3dcon)
839          CALL histwrite_phy(o_lcc3dstra, lcc3dstra)
840          CALL histwrite_phy(o_reffclwtop, reffclwtop)
841       ENDIF
842       ! Champs 3D:
843       IF (ok_ade .OR. ok_aie) then
844          CALL histwrite_phy(o_ec550aer, ec550aer)
845       ENDIF
846       CALL histwrite_phy(o_lwcon, flwc)
847       CALL histwrite_phy(o_iwcon, fiwc)
848       CALL histwrite_phy(o_temp, t_seri)
849       CALL histwrite_phy(o_theta, theta)
850       CALL histwrite_phy(o_ovapinit, qx(:,:,ivap))
851       CALL histwrite_phy(o_ovap, q_seri)
852       CALL histwrite_phy(o_oliq, ql_seri)
853       CALL histwrite_phy(o_geop, zphi)
854       CALL histwrite_phy(o_vitu, u_seri)
855       CALL histwrite_phy(o_vitv, v_seri)
856       CALL histwrite_phy(o_vitw, omega)
857       CALL histwrite_phy(o_pres, pplay)
858       CALL histwrite_phy(o_paprs, paprs(:,1:klev))
859       IF (vars_defined) THEN
860          DO i=1, klon
861             zx_tmp_fi3d1(i,1)= pphis(i)/RG
862             !020611   zx_tmp_fi3d(i,1)= pphis(i)/RG
863          ENDDO
864          DO k=1, klev
865             !020611        DO k=1, klev-1
866             DO i=1, klon
867                !020611         zx_tmp_fi3d(i,k+1)= zx_tmp_fi3d(i,k) - (t_seri(i,k) *RD *
868                zx_tmp_fi3d1(i,k+1)= zx_tmp_fi3d1(i,k) - (t_seri(i,k) *RD *  &
869                     (paprs(i,k+1) - paprs(i,k))) / ( pplay(i,k) * RG )
870             ENDDO
871          ENDDO
872       ENDIF
873       CALL histwrite_phy(o_zfull,zx_tmp_fi3d1(:,2:klevp1))
874       !020611    $o_zfull%name,itau_w,zx_tmp_fi3d)
875
876       IF (vars_defined)  THEN
877          DO i=1, klon
878             zx_tmp_fi3d(i,1)= pphis(i)/RG - ( &
879                  (t_seri(i,1)+zxtsol(i))/2. *RD * &
880                  (pplay(i,1) - paprs(i,1)))/( (paprs(i,1)+pplay(i,1))/2.* RG)
881          ENDDO
882          DO k=1, klev-1
883             DO i=1, klon
884                zx_tmp_fi3d(i,k+1)= zx_tmp_fi3d(i,k) - ( &
885                     (t_seri(i,k)+t_seri(i,k+1))/2. *RD *  &
886                     (pplay(i,k+1) - pplay(i,k))) / ( paprs(i,k) * RG )
887             ENDDO
888          ENDDO
889       ENDIF
890       CALL histwrite_phy(o_zhalf, zx_tmp_fi3d)
891       CALL histwrite_phy(o_rneb, cldfra)
892       CALL histwrite_phy(o_rnebcon, rnebcon)
893       CALL histwrite_phy(o_rnebls, rneb)
894       IF (vars_defined)  THEN
895          DO k=1, klev
896             DO i=1, klon
897                zx_tmp_fi3d(i,k)=cldfra(i,k)*JrNt(i)
898             ENDDO
899          ENDDO
900       ENDIF
901       CALL histwrite_phy(o_rnebjn, zx_tmp_fi3d)
902       CALL histwrite_phy(o_rhum, zx_rh)
903       CALL histwrite_phy(o_ozone, &
904            wo(:, :, 1) * dobson_u * 1e3 / zmasse / rmo3 * rmd)
905
906       IF (read_climoz == 2) THEN
907          CALL histwrite_phy(o_ozone_light, &
908               wo(:, :, 2) * dobson_u * 1e3 / zmasse / rmo3 * rmd)
909       ENDIF
910
911       CALL histwrite_phy(o_dtphy, d_t)
912       CALL histwrite_phy(o_dqphy,  d_qx(:,:,ivap))
913       DO nsrf=1, nbsrf
914          IF (vars_defined) zx_tmp_fi2d(1 : klon) = falb1( 1 : klon, nsrf)
915          CALL histwrite_phy(o_albe_srf(nsrf), zx_tmp_fi2d)
916          IF (vars_defined) zx_tmp_fi2d(1 : klon) = frugs( 1 : klon, nsrf)
917          CALL histwrite_phy(o_rugs_srf(nsrf), zx_tmp_fi2d)
918          IF (vars_defined) zx_tmp_fi2d(1 : klon) = agesno( 1 : klon, nsrf)
919          CALL histwrite_phy(o_ages_srf(nsrf), zx_tmp_fi2d)
920       ENDDO !nsrf=1, nbsrf
921       CALL histwrite_phy(o_alb1, albsol1)
922       CALL histwrite_phy(o_alb2, albsol2)
923       !FH Sorties pour la couche limite
924       if (iflag_pbl>1) then
925          zx_tmp_fi3d=0.
926          IF (vars_defined) THEN
927             do nsrf=1,nbsrf
928                do k=1,klev
929                   zx_tmp_fi3d(:,k)=zx_tmp_fi3d(:,k) &
930                        +pctsrf(:,nsrf)*pbl_tke(:,k,nsrf)
931                enddo
932             enddo
933          ENDIF
934          CALL histwrite_phy(o_tke, zx_tmp_fi3d)
935
936          CALL histwrite_phy(o_tke_max, zx_tmp_fi3d)
937       ENDIF
938
939       CALL histwrite_phy(o_kz, coefh(:,:,is_ave))
940
941       CALL histwrite_phy(o_kz_max, coefh(:,:,is_ave))
942
943       CALL histwrite_phy(o_clwcon, clwcon0)
944       CALL histwrite_phy(o_dtdyn, d_t_dyn)
945       CALL histwrite_phy(o_dqdyn, d_q_dyn)
946       CALL histwrite_phy(o_dudyn, d_u_dyn)
947       CALL histwrite_phy(o_dvdyn, d_v_dyn)
948
949       IF (vars_defined) THEN
950          zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys
951       ENDIF
952       CALL histwrite_phy(o_dtcon, zx_tmp_fi3d)
953       if(iflag_thermals.eq.1)then
954          IF (vars_defined) THEN
955             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
956                  d_t_ajsb(1:klon,1:klev)/pdtphys
957          ENDIF
958          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
959       else if(iflag_thermals.gt.1.and.iflag_wake.EQ.1)then
960          IF (vars_defined) THEN
961             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
962                  d_t_ajs(1:klon,1:klev)/pdtphys + &
963                  d_t_wake(1:klon,1:klev)/pdtphys
964          ENDIF
965          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
966       endif
967       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_con(1:klon,1:klev)/pdtphys
968       CALL histwrite_phy(o_ducon, zx_tmp_fi3d)
969       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_con(1:klon,1:klev)/pdtphys
970       CALL histwrite_phy(o_dvcon, zx_tmp_fi3d)
971       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
972       CALL histwrite_phy(o_dqcon, zx_tmp_fi3d)
973
974       IF(iflag_thermals.EQ.1) THEN
975          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
976          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
977       ELSE IF(iflag_thermals.GT.1.AND.iflag_wake.EQ.1) THEN
978          IF (vars_defined) THEN
979             zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys + &
980                  d_q_ajs(1:klon,1:klev)/pdtphys + &
981                  d_q_wake(1:klon,1:klev)/pdtphys
982          ENDIF
983          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
984       ENDIF
985
986       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lsc(1:klon,1:klev)/pdtphys
987       CALL histwrite_phy(o_dtlsc, zx_tmp_fi3d)
988       IF (vars_defined) zx_tmp_fi3d(1:klon, 1:klev)=(d_t_lsc(1:klon,1:klev)+ &
989            d_t_eva(1:klon,1:klev))/pdtphys
990       CALL histwrite_phy(o_dtlschr, zx_tmp_fi3d)
991       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys
992       CALL histwrite_phy(o_dqlsc, zx_tmp_fi3d)
993       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=beta_prec(1:klon,1:klev)
994       CALL histwrite_phy(o_beta_prec, zx_tmp_fi3d)
995!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
996       ! Sorties specifiques a la separation thermiques/non thermiques
997       if (iflag_thermals>=1) then
998          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscth(1:klon,1:klev)/pdtphys
999          CALL histwrite_phy(o_dtlscth, zx_tmp_fi3d)
1000          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscst(1:klon,1:klev)/pdtphys
1001          CALL histwrite_phy(o_dtlscst, zx_tmp_fi3d)
1002          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscth(1:klon,1:klev)/pdtphys
1003          CALL histwrite_phy(o_dqlscth, zx_tmp_fi3d)
1004          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscst(1:klon,1:klev)/pdtphys
1005          CALL histwrite_phy(o_dqlscst, zx_tmp_fi3d)
1006          CALL histwrite_phy(o_plulth, plul_th)
1007          CALL histwrite_phy(o_plulst, plul_st)
1008          IF (vars_defined) THEN
1009             do k=1,klev
1010                do i=1,klon
1011                   if (ptconvth(i,k)) then
1012                      zx_tmp_fi3d(i,k)=1.
1013                   else
1014                      zx_tmp_fi3d(i,k)=0.
1015                   endif
1016                enddo
1017             enddo
1018          ENDIF
1019          CALL histwrite_phy(o_ptconvth, zx_tmp_fi3d)
1020          IF (vars_defined) THEN
1021             do i=1,klon
1022                zx_tmp_fi2d(1:klon)=lmax_th(:)
1023             enddo
1024          ENDIF
1025          CALL histwrite_phy(o_lmaxth, zx_tmp_fi2d)
1026       endif ! iflag_thermals>=1
1027!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1028       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf(1:klon,1:klev)/pdtphys
1029       CALL histwrite_phy(o_dtvdf, zx_tmp_fi3d)
1030       IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_diss(1:klon,1:klev)/pdtphys
1031       CALL histwrite_phy(o_dtdis, zx_tmp_fi3d)
1032       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf(1:klon,1:klev)/pdtphys
1033       CALL histwrite_phy(o_dqvdf, zx_tmp_fi3d)
1034       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_eva(1:klon,1:klev)/pdtphys
1035       CALL histwrite_phy(o_dteva, zx_tmp_fi3d)
1036       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_eva(1:klon,1:klev)/pdtphys
1037       CALL histwrite_phy(o_dqeva, zx_tmp_fi3d)
1038       zpt_conv = 0.
1039       WHERE (ptconv) zpt_conv = 1.
1040       CALL histwrite_phy(o_ptconv, zpt_conv)
1041       CALL histwrite_phy(o_ratqs, ratqs)
1042       IF (vars_defined) THEN
1043          zx_tmp_fi3d(1:klon,1:klev)=d_t_ajs(1:klon,1:klev)/pdtphys - &
1044               d_t_ajsb(1:klon,1:klev)/pdtphys
1045       ENDIF
1046       CALL histwrite_phy(o_dtthe, zx_tmp_fi3d)
1047       IF (vars_defined) THEN
1048          zx_tmp_fi3d(1:klon,1:klev)=d_u_ajs(1:klon,1:klev)/pdtphys
1049       ENDIF
1050       CALL histwrite_phy(o_duthe, zx_tmp_fi3d)
1051       IF (vars_defined) THEN
1052          zx_tmp_fi3d(1:klon,1:klev)=d_v_ajs(1:klon,1:klev)/pdtphys
1053       ENDIF
1054       CALL histwrite_phy(o_dvthe, zx_tmp_fi3d)
1055
1056       IF (iflag_thermals>=1) THEN
1057          ! Pour l instant 0 a y reflichir pour les thermiques
1058          zx_tmp_fi2d=0.
1059          CALL histwrite_phy(o_ftime_th, zx_tmp_fi2d)
1060          CALL histwrite_phy(o_f_th, fm_therm)
1061          CALL histwrite_phy(o_e_th, entr_therm)
1062          CALL histwrite_phy(o_w_th, zw2)
1063          CALL histwrite_phy(o_q_th, zqasc)
1064          CALL histwrite_phy(o_a_th, fraca)
1065          CALL histwrite_phy(o_d_th, detr_therm)
1066          CALL histwrite_phy(o_f0_th, f0)
1067          CALL histwrite_phy(o_zmax_th, zmax_th)
1068          IF (vars_defined) THEN
1069             zx_tmp_fi3d(1:klon,1:klev)=d_q_ajs(1:klon,1:klev)/pdtphys - &
1070                  d_q_ajsb(1:klon,1:klev)/pdtphys
1071          ENDIF
1072          CALL histwrite_phy(o_dqthe, zx_tmp_fi3d)
1073       ENDIF !iflag_thermals
1074       IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ajsb(1:klon,1:klev)/pdtphys
1075       CALL histwrite_phy(o_dtajs, zx_tmp_fi3d)
1076       IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_ajsb(1:klon,1:klev)/pdtphys
1077       CALL histwrite_phy(o_dqajs, zx_tmp_fi3d)
1078       IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=heat(1:klon,1:klev)/RDAY
1079       CALL histwrite_phy(o_dtswr, zx_tmp_fi3d)
1080       IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=heat0(1:klon,1:klev)/RDAY
1081       CALL histwrite_phy(o_dtsw0, zx_tmp_fi3d)
1082       IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=-1.*cool(1:klon,1:klev)/RDAY
1083       CALL histwrite_phy(o_dtlwr, zx_tmp_fi3d)
1084       IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=-1.*cool0(1:klon,1:klev)/RDAY
1085       CALL histwrite_phy(o_dtlw0, zx_tmp_fi3d)
1086       IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ec(1:klon,1:klev)/pdtphys
1087       CALL histwrite_phy(o_dtec, zx_tmp_fi3d)
1088       IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_vdf(1:klon,1:klev)/pdtphys
1089       CALL histwrite_phy(o_duvdf, zx_tmp_fi3d)
1090       IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_vdf(1:klon,1:klev)/pdtphys
1091       CALL histwrite_phy(o_dvvdf, zx_tmp_fi3d)
1092       IF (ok_orodr) THEN
1093          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_oro(1:klon,1:klev)/pdtphys
1094          CALL histwrite_phy(o_duoro, zx_tmp_fi3d)
1095          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_oro(1:klon,1:klev)/pdtphys
1096          CALL histwrite_phy(o_dvoro, zx_tmp_fi3d)
1097          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_oro(1:klon,1:klev)/pdtphys
1098          CALL histwrite_phy(o_dtoro, zx_tmp_fi3d)
1099       ENDIF
1100       IF (ok_orolf) THEN
1101          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_lif(1:klon,1:klev)/pdtphys
1102          CALL histwrite_phy(o_dulif, zx_tmp_fi3d)
1103
1104          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_lif(1:klon,1:klev)/pdtphys
1105          CALL histwrite_phy(o_dvlif, zx_tmp_fi3d)
1106
1107          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lif(1:klon,1:klev)/pdtphys
1108          CALL histwrite_phy(o_dtlif, zx_tmp_fi3d)
1109       ENDIF
1110
1111       IF (ok_hines) THEN
1112          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_hin(1:klon,1:klev)/pdtphys
1113          CALL histwrite_phy(o_duhin, zx_tmp_fi3d)
1114          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_hin(1:klon,1:klev)/pdtphys
1115          CALL histwrite_phy(o_dvhin, zx_tmp_fi3d)
1116          IF(vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_hin(1:klon,1:klev)/pdtphys
1117          CALL histwrite_phy(o_dthin, zx_tmp_fi3d)
1118       ENDIF
1119
1120       IF (ok_gwd_rando) then
1121          CALL histwrite_phy(o_du_gwd_rando, du_gwd_rando / pdtphys)
1122          CALL histwrite_phy(o_dv_gwd_rando, dv_gwd_rando / pdtphys)
1123          CALL histwrite_phy(o_vstr_gwd_rando, zvstr_gwd_rando)
1124       end IF
1125
1126       CALL histwrite_phy(o_rsu, swup)
1127       CALL histwrite_phy(o_rsd, swdn)
1128       CALL histwrite_phy(o_rlu, lwup)
1129       CALL histwrite_phy(o_rld, lwdn)
1130       CALL histwrite_phy(o_rsucs, swup0)
1131       CALL histwrite_phy(o_rsdcs, swdn0)
1132       CALL histwrite_phy(o_rlucs, lwup0)
1133       CALL histwrite_phy(o_rldcs, lwdn0)
1134       IF(vars_defined) THEN
1135          zx_tmp_fi3d(1:klon,1:klev)=d_t(1:klon,1:klev)+ &
1136               d_t_dyn(1:klon,1:klev)
1137       ENDIF
1138       CALL histwrite_phy(o_tnt, zx_tmp_fi3d)
1139       IF(vars_defined) THEN
1140          zx_tmp_fi3d(1:klon,1:klev)=heat(1:klon,1:klev)/RDAY - &
1141               cool(1:klon,1:klev)/RDAY
1142       ENDIF
1143       CALL histwrite_phy(o_tntr, zx_tmp_fi3d)
1144       IF(vars_defined) THEN
1145          zx_tmp_fi3d(1:klon,1:klev)= (d_t_lsc(1:klon,1:klev)+ &
1146               d_t_eva(1:klon,1:klev)+ &
1147               d_t_vdf(1:klon,1:klev))/pdtphys
1148       ENDIF
1149       CALL histwrite_phy(o_tntscpbl, zx_tmp_fi3d)
1150       IF(vars_defined) THEN
1151          zx_tmp_fi3d(1:klon,1:klev)=d_qx(1:klon,1:klev,ivap)+ &
1152               d_q_dyn(1:klon,1:klev)
1153       ENDIF
1154       CALL histwrite_phy(o_tnhus, zx_tmp_fi3d)
1155       IF(vars_defined) THEN
1156          zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys+ &
1157               d_q_eva(1:klon,1:klev)/pdtphys
1158       ENDIF
1159       CALL histwrite_phy(o_tnhusscpbl, zx_tmp_fi3d)
1160       CALL histwrite_phy(o_evu, coefm(:,:,is_ave))
1161       IF(vars_defined) THEN
1162          zx_tmp_fi3d(1:klon,1:klev)=q_seri(1:klon,1:klev)+ &
1163               ql_seri(1:klon,1:klev)
1164       ENDIF
1165       CALL histwrite_phy(o_h2o, zx_tmp_fi3d)
1166       if (iflag_con >= 3) then
1167          IF(vars_defined) THEN
1168             zx_tmp_fi3d(1:klon,1:klev)=-1 * (dnwd(1:klon,1:klev)+ &
1169                  dnwd0(1:klon,1:klev))
1170          ENDIF
1171          CALL histwrite_phy(o_mcd, zx_tmp_fi3d)
1172          IF(vars_defined) THEN
1173             zx_tmp_fi3d(1:klon,1:klev)=upwd(1:klon,1:klev) + &
1174                  dnwd(1:klon,1:klev)+ dnwd0(1:klon,1:klev)
1175          ENDIF
1176          CALL histwrite_phy(o_dmc, zx_tmp_fi3d)
1177       else if (iflag_con == 2) then
1178          CALL histwrite_phy(o_mcd,  pmfd)
1179          CALL histwrite_phy(o_dmc,  pmfu + pmfd)
1180       end if
1181       CALL histwrite_phy(o_ref_liq, ref_liq)
1182       CALL histwrite_phy(o_ref_ice, ref_ice)
1183       if (RCO2_per.NE.RCO2_act.OR.RCH4_per.NE.RCH4_act.OR. &
1184            RN2O_per.NE.RN2O_act.OR.RCFC11_per.NE.RCFC11_act.OR. &
1185            RCFC12_per.NE.RCFC12_act) THEN
1186          IF(vars_defined) zx_tmp_fi2d(1 : klon) = swupp ( 1 : klon, klevp1 )
1187          CALL histwrite_phy(o_rsut4co2, zx_tmp_fi2d)
1188          IF(vars_defined) zx_tmp_fi2d(1 : klon) = lwupp ( 1 : klon, klevp1 )
1189          CALL histwrite_phy(o_rlut4co2, zx_tmp_fi2d)
1190          IF(vars_defined) zx_tmp_fi2d(1 : klon) = swup0p ( 1 : klon, klevp1 )
1191          CALL histwrite_phy(o_rsutcs4co2, zx_tmp_fi2d)
1192          IF(vars_defined) zx_tmp_fi2d(1 : klon) = lwup0p ( 1 : klon, klevp1 )
1193          CALL histwrite_phy(o_rlutcs4co2, zx_tmp_fi2d)
1194          CALL histwrite_phy(o_rsu4co2, swupp)
1195          CALL histwrite_phy(o_rlu4co2, lwupp)
1196          CALL histwrite_phy(o_rsucs4co2, swup0p)
1197          CALL histwrite_phy(o_rlucs4co2, lwup0p)
1198          CALL histwrite_phy(o_rsd4co2, swdnp)
1199          CALL histwrite_phy(o_rld4co2, lwdnp)
1200          CALL histwrite_phy(o_rsdcs4co2, swdn0p)
1201          CALL histwrite_phy(o_rldcs4co2, lwdn0p)
1202       ENDIF
1203!!!!!!!!!!!! Sorties niveaux de pression NMC !!!!!!!!!!!!!!!!!!!!
1204       DO iff=7, nfiles
1205
1206          CALL histwrite_phy(o_tnondef,tnondef(:,:,iff-6),iff)
1207          CALL histwrite_phy(o_ta,twriteSTD(:,:,iff-6),iff)
1208          CALL histwrite_phy(o_zg,phiwriteSTD(:,:,iff-6),iff)
1209          CALL histwrite_phy(o_hus,qwriteSTD(:,:,iff-6),iff)
1210          CALL histwrite_phy(o_hur,rhwriteSTD(:,:,iff-6),iff)
1211          CALL histwrite_phy(o_ua,uwriteSTD(:,:,iff-6),iff)
1212          CALL histwrite_phy(o_va,vwriteSTD(:,:,iff-6),iff)
1213          CALL histwrite_phy(o_wap,wwriteSTD(:,:,iff-6),iff)
1214          IF(vars_defined) THEN
1215             DO k=1, nlevSTD
1216                DO i=1, klon
1217                   IF(tnondef(i,k,iff-6).NE.missing_val) THEN
1218                      IF(freq_outNMC(iff-6).LT.0) THEN
1219                         freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
1220                      ELSE
1221                         freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
1222                      ENDIF
1223                      zx_tmp_fi3d(i,k) = (100.*tnondef(i,k,iff-6))/freq_moyNMC(iff-6)
1224                   ELSE
1225                      zx_tmp_fi3d(i,k) = missing_val
1226                   ENDIF
1227                ENDDO
1228             ENDDO
1229          ENDIF
1230          CALL histwrite_phy(o_psbg,zx_tmp_fi3d,iff)
1231          IF(vars_defined) THEN
1232             DO k=1, nlevSTD
1233                DO i=1, klon
1234                   IF(O3sumSTD(i,k,iff-6).NE.missing_val) THEN
1235                      zx_tmp_fi3d(i,k) = O3sumSTD(i,k,iff-6) * 1.e+9
1236                   ELSE
1237                      zx_tmp_fi3d(i,k) = missing_val
1238                   ENDIF
1239                ENDDO
1240             ENDDO !k=1, nlevSTD
1241          ENDIF
1242          CALL histwrite_phy(o_tro3,zx_tmp_fi3d,iff)
1243          if (read_climoz == 2) THEN
1244             IF(vars_defined) THEN
1245                DO k=1, nlevSTD
1246                   DO i=1, klon
1247                      IF(O3daysumSTD(i,k,iff-6).NE.missing_val) THEN
1248                         zx_tmp_fi3d(i,k) = O3daysumSTD(i,k,iff-6) * 1.e+9
1249                      ELSE
1250                         zx_tmp_fi3d(i,k) = missing_val
1251                      ENDIF
1252                   ENDDO
1253                ENDDO !k=1, nlevSTD
1254             ENDIF
1255             CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d,iff)
1256          endif
1257          CALL histwrite_phy(o_uxv,uvsumSTD(:,:,iff-6),iff)
1258          CALL histwrite_phy(o_vxq,vqsumSTD(:,:,iff-6),iff)
1259          CALL histwrite_phy(o_vxT,vTsumSTD(:,:,iff-6),iff)
1260          CALL histwrite_phy(o_wxq,wqsumSTD(:,:,iff-6),iff)
1261          CALL histwrite_phy(o_vxphi,vphisumSTD(:,:,iff-6),iff)
1262          CALL histwrite_phy(o_wxT,wTsumSTD(:,:,iff-6),iff)
1263          CALL histwrite_phy(o_uxu,u2sumSTD(:,:,iff-6),iff)
1264          CALL histwrite_phy(o_vxv,v2sumSTD(:,:,iff-6),iff)
1265          CALL histwrite_phy(o_TxT,T2sumSTD(:,:,iff-6),iff)
1266       ENDDO !nfiles
1267!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1268       IF (nqtot.GE.3) THEN
1269          DO iq=3,nqtot
1270             CALL histwrite_phy(o_trac(iq-2), qx(:,:,iq))
1271             CALL histwrite_phy(o_dtr_vdf(iq-2),d_tr_cl(:,:,iq-2))
1272             CALL histwrite_phy(o_dtr_the(iq-2),d_tr_th(:,:,iq-2))
1273             CALL histwrite_phy(o_dtr_con(iq-2),d_tr_cv(:,:,iq-2))
1274             CALL histwrite_phy(o_dtr_lessi_impa(iq-2),d_tr_lessi_impa(:,:,iq-2))
1275             CALL histwrite_phy(o_dtr_lessi_nucl(iq-2),d_tr_lessi_nucl(:,:,iq-2))
1276             CALL histwrite_phy(o_dtr_insc(iq-2),d_tr_insc(:,:,iq-2))
1277             CALL histwrite_phy(o_dtr_bcscav(iq-2),d_tr_bcscav(:,:,iq-2))
1278             CALL histwrite_phy(o_dtr_evapls(iq-2),d_tr_evapls(:,:,iq-2))
1279             CALL histwrite_phy(o_dtr_ls(iq-2),d_tr_ls(:,:,iq-2))
1280             CALL histwrite_phy(o_dtr_trsp(iq-2),d_tr_trsp(:,:,iq-2))
1281             CALL histwrite_phy(o_dtr_sscav(iq-2),d_tr_sscav(:,:,iq-2))
1282             CALL histwrite_phy(o_dtr_sat(iq-2),d_tr_sat(:,:,iq-2))
1283             CALL histwrite_phy(o_dtr_uscav(iq-2),d_tr_uscav(:,:,iq-2))
1284             zx_tmp_fi2d=0.
1285             IF(vars_defined) THEN
1286                DO k=1,klev
1287                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*qx(:,k,iq)
1288                ENDDO
1289             ENDIF
1290             CALL histwrite_phy(o_trac_cum(iq-2), zx_tmp_fi2d)
1291          ENDDO
1292       ENDIF
1293
1294       IF(.NOT.vars_defined) THEN
1295          !$OMP MASTER
1296#ifndef CPP_NO_IOIPSL
1297          DO iff=1,nfiles
1298             IF (clef_files(iff)) THEN
1299                CALL histend(nid_files(iff))
1300                ndex2d = 0
1301                ndex3d = 0
1302
1303             ENDIF ! clef_files
1304          ENDDO !  iff
1305#endif
1306#ifdef CPP_XIOS
1307          !On finalise l'initialisation:
1308          CALL wxios_closedef()
1309#endif
1310
1311          !$OMP END MASTER
1312          !$OMP BARRIER
1313          vars_defined = .TRUE.
1314
1315       END IF
1316
1317    END DO
1318
1319    IF(vars_defined) THEN
1320       ! On synchronise les fichiers pour IOIPSL
1321#ifndef CPP_NO_IOIPSL
1322       !$OMP MASTER
1323       DO iff=1,nfiles
1324          IF (ok_sync .AND. clef_files(iff)) THEN
1325             CALL histsync(nid_files(iff))
1326          ENDIF
1327       END DO
1328       !$OMP END MASTER
1329#endif
1330    ENDIF
1331
1332  END SUBROUTINE phys_output_write
1333
1334END MODULE phys_output_write_mod
Note: See TracBrowser for help on using the repository browser.