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

Last change on this file since 2401 was 2393, checked in by jyg, 10 years ago

Add various intializations of arrays in lmdz1d.F90
and in the convection scheme. Add output variables
for boundary layer splitting.

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