source: LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90 @ 3888

Last change on this file since 3888 was 3888, checked in by jyg, 3 years ago

New provisional version of the splitting of the
diffusive boundary layer into inwake and offwake
PBLs. The splitting of the diffuse BL should NOT
be activated yet for general purpose simulations.

The splitting is activated by:
mod(iflag_pbl_split,10)=1 for the option with
fixed surface temperature and
mod(iflag_pbl_split,10)=2 for the option with
coupled surface temperature.

iflag_pbl_split=0 ==> no splittingat all.
iflag_pbl_split=10 ==> splitting of thermals.
iflag_pbl_split=11 ==> splitting of thermals and
of vertical diffusion (fixed surf. temp.).
iflag_pbl_split=12 ==> splitting of thermals and
of vertical diffusion (coupled surf. temp.).

  • 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: 104.4 KB
Line 
1!
2! $Id: phys_output_write_mod.F90 3888 2021-05-05 10:50:37Z jyg $
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, flux_tr_dry
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 (lors 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, ok_volcan, ivap, iliq, isol, ok_sync, &
20       ptconv, read_climoz, clevSTD, ptconvth, &
21       d_u, 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
27    USE infotrac_phy, ONLY: nbtr
28    USE mod_phys_lmdz_para, ONLY: is_north_pole_phy,is_south_pole_phy
29    USE mod_grid_phy_lmdz, ONLY : nbp_lon, nbp_lat
30    USE time_phylmdz_mod, ONLY: day_step_phy, start_time, itau_phy
31    USE vertical_layers_mod, ONLY : ap, bp, aps, bps
32    USE phys_output_ctrlout_mod, ONLY: o_phis, o_aire, is_ter, is_lic, is_oce, &
33         o_longitude, o_latitude, &
34         o_Ahyb, o_Bhyb,o_Ahyb_bounds, o_Bhyb_bounds, &
35         o_Ahyb_mid, o_Bhyb_mid,o_Ahyb_mid_bounds, o_Bhyb_mid_bounds, &
36         is_ave, is_sic, o_contfracATM, o_contfracOR, &
37         o_aireTER, o_flat, o_slp, o_ptstar, o_pt0, o_tsol, &
38         o_t2m, o_t2m_min, o_t2m_max, &
39         o_t2m_min_mon, o_t2m_max_mon, &
40         o_nt2mout, o_nt2moutfg, &
41         o_nq2mout, o_nq2moutfg, &
42         o_nu2mout, o_nu2moutfg, &
43         o_q2m, o_ustar, o_u10m, o_v10m, &
44         o_wind10m, o_wind10max, o_wind100m, o_gusts, o_sicf, &
45         o_loadfactor_wind_onshore, o_loadfactor_wind_offshore, &
46         o_psol, o_mass, o_qsurf, o_qsol, &
47         o_precip, o_rain_fall, o_rain_con, o_ndayrain, o_plul, o_pluc, o_plun, &
48         o_snow, o_msnow, o_fsnow, o_evap, o_ep,o_epmax_diag, & ! epmax_cape
49         o_tops, o_tops0, o_topl, o_topl0, &
50         o_SWupTOA, o_SWupTOAclr, o_SWupTOAcleanclr, o_SWdnTOA, o_fdiffSWdnSFC, &
51         o_SWdnTOAclr, o_nettop, o_SWup200, &
52         o_SWup200clr, o_SWdn200, o_SWdn200clr, &
53         o_LWup200, o_LWup200clr, o_LWdn200, &
54         o_LWdn200clr, o_sols, o_sols0, &
55         o_soll, o_radsol, o_soll0, o_SWupSFC, &
56         o_SWupSFCclr, o_SWupSFCcleanclr, o_SWdnSFC, o_SWdnSFCclr, o_SWdnSFCcleanclr, &
57         o_LWupSFC, o_LWdnSFC, o_LWupSFCclr, &
58         o_LWdnSFCclr, o_LWupTOAcleanclr, o_LWdnSFCcleanclr, o_bils, o_bils_diss, &
59         o_bils_ec,o_bils_ech, o_bils_tke, o_bils_kinetic, &
60         o_bils_latent, o_bils_enthalp, o_sens, &
61         o_fder, o_ffonte, o_fqcalving, o_fqfonte, o_mrroli, o_runofflic, &
62         o_taux, o_tauy, o_snowsrf, o_qsnow, &
63         o_snowhgt, o_toice, o_sissnow, o_runoff, &
64         o_albslw3, o_pourc_srf, o_fract_srf, &
65         o_taux_srf, o_tauy_srf, o_tsol_srf, &
66         o_evappot_srf, o_ustar_srf, o_u10m_srf, &
67         o_v10m_srf, o_t2m_srf, o_evap_srf, &
68         o_sens_srf, o_lat_srf, o_flw_srf, &
69         o_fsw_srf, o_wbils_srf, o_wbilo_srf, &
70         o_wevap_srf, o_wrain_srf, o_wsnow_srf, &
71         o_tke_srf, o_tke_max_srf,o_dltpbltke_srf, o_wstar, &
72         o_l_mixmin,o_l_mix, &
73         o_cdrm, o_cdrh, o_cldl, o_cldm, o_cldh, &
74         o_cldt, o_JrNt, o_cldljn, o_cldmjn, &
75         o_cldhjn, o_cldtjn, o_cldq, o_lwp, o_iwp, &
76         o_ue, o_ve, o_uq, o_vq, o_cape, o_pbase, &
77         o_uwat, o_vwat, &
78         o_ptop, o_fbase, o_plcl, o_plfc, &
79         o_wbeff, o_convoccur, o_cape_max, o_upwd, o_ep,o_epmax_diag, &
80         o_Mipsh, o_Ma, &
81         o_dnwd, o_dnwd0, o_ftime_deepcv, o_ftime_con, o_mc, &
82         o_prw, o_prlw, o_prsw, o_s_pblh, o_s_pblt, o_s_lcl, &
83         o_s_therm, o_uSTDlevs, o_vSTDlevs, &
84         o_wSTDlevs, o_zSTDlevs, o_qSTDlevs, &
85         o_tSTDlevs, epsfra, o_t_oce_sic, &
86         o_ale_bl, o_alp_bl, o_ale_wk, o_alp_wk, &
87         o_dtvdf_x    , o_dtvdf_w    , o_dqvdf_x    , o_dqvdf_w    , &
88         o_sens_x     , o_sens_w     , o_flat_x     , o_flat_w     , &
89         o_delta_tsurf, o_delta_tsurf_srf, &
90         o_cdragh_x   , o_cdragh_w   , o_cdragm_x   , o_cdragm_w   , &
91         o_kh         , o_kh_x       , o_kh_w       , &
92         o_ale, o_alp, o_cin, o_WAPE, o_wake_h, o_cv_gen, o_wake_dens, &
93         o_wake_s, o_wake_deltat, o_wake_deltaq, &
94         o_wake_omg, o_dtwak, o_dqwak, o_dqwak2d, o_Vprecip, &
95         o_qtaa, o_Clwaa, &
96         o_ftd, o_fqd, o_wdtrainA, o_wdtrainS, o_wdtrainM, &
97         o_n2, o_s2, o_proba_notrig, &
98         o_random_notrig, o_ale_bl_stat, &
99         o_ale_bl_trig, o_alp_bl_det, &
100         o_alp_bl_fluct_m, o_alp_bl_fluct_tke, &
101         o_alp_bl_conv, o_alp_bl_stat, &
102         o_slab_qflux, o_tslab, o_slab_bils, &
103         o_slab_bilg, o_slab_sic, o_slab_tice, &
104         o_slab_hdiff, o_slab_ekman, o_slab_gm,  &
105         o_weakinv, o_dthmin, o_cldtau, &
106         o_cldemi, o_pr_con_l, o_pr_con_i, &
107         o_pr_lsc_l, o_pr_lsc_i, o_re, o_fl, &
108         o_rh2m, &
109         o_qsat2m, o_tpot, o_tpote, o_SWnetOR, &
110         o_LWdownOR, o_snowl, &
111         o_solldown, o_dtsvdfo, o_dtsvdft, &
112         o_dtsvdfg, o_dtsvdfi, o_z0m, o_z0h,  o_od443aer, o_od550aer, &
113         o_dryod550aer, o_od865aer, o_abs550aer, o_od550lt1aer, &
114         o_sconcso4, o_sconcno3, o_sconcoa, o_sconcbc, &
115         o_sconcss, o_sconcdust, o_concso4, o_concno3, &
116         o_concoa, o_concbc, o_concss, o_concdust, &
117         o_loadso4, o_loadoa, o_loadbc, o_loadss, &
118         o_loaddust, o_loadno3, o_tausumaero, &
119         o_drytausumaero, o_tausumaero_lw, &
120         o_topswad, o_topswad0, o_solswad, o_solswad0, &
121         o_toplwad, o_toplwad0, o_sollwad, o_sollwad0, &
122         o_swtoaas_nat, o_swsrfas_nat, &
123         o_swtoacs_nat, o_swtoaas_ant, &
124         o_swsrfas_ant, o_swtoacs_ant, &
125         o_swsrfcs_ant, o_swtoacf_nat, &
126         o_swsrfcf_nat, o_swtoacf_ant, &
127         o_swsrfcs_nat, o_swsrfcf_ant, &
128         o_swtoacf_zero, o_swsrfcf_zero, &
129         o_topswai, o_solswai, o_toplwai, o_sollwai, o_scdnc, &
130         o_cldncl, o_reffclws, o_reffclwc, o_solbnd, o_stratomask,&
131         o_cldnvi, o_lcc, o_lcc3d, o_lcc3dcon, &
132         o_lcc3dstra, o_icc3dcon, o_icc3dstra, &
133         o_cldicemxrat, o_cldwatmxrat, o_reffclwtop, o_ec550aer, &
134         o_lwcon, o_iwcon, o_temp, o_theta, &
135         o_ovapinit, o_ovap, o_oliq, o_ocond, o_geop, &
136         o_vitu, o_vitv, o_vitw, o_pres, o_paprs, &
137         o_zfull, o_zhalf, o_rneb, o_rnebjn, o_rnebcon, &
138         o_rnebls, o_rneblsvol, o_rhum, o_rhl, o_rhi, o_ozone, o_ozone_light, &
139         o_duphy, o_dtphy, o_dqphy, o_dqphy2d, o_dqlphy, o_dqlphy2d, &
140         o_dqsphy, o_dqsphy2d, o_albe_srf, o_z0m_srf, o_z0h_srf, &
141         o_ages_srf, o_snow_srf, o_alb1, o_alb2, o_tke, o_tke_dissip, &
142         o_tke_max, o_kz, o_kz_max, o_clwcon, &
143         o_dtdyn, o_dqdyn, o_dqdyn2d, o_dqldyn, o_dqldyn2d, &
144         o_dqsdyn, o_dqsdyn2d, o_dudyn, o_dvdyn, &
145         o_dtcon, o_tntc, o_ducon, o_dvcon, &
146         o_dqcon, o_dqcon2d, o_tnhusc, o_tnhusc, o_dtlsc, &
147         o_dtlschr, o_dqlsc, o_dqlsc2d, o_beta_prec, &
148         o_dtlscth, o_dtlscst, o_dqlscth, o_dqlscth2d, &
149         o_dqlscst, o_dqlscst2d, o_plulth, o_plulst, &
150         o_ptconvth, o_lmaxth, o_dtvdf, &
151         o_dtdis, o_dqvdf, o_dqvdf2d, o_dteva, o_dqeva, o_dqeva2d, &
152         o_ptconv, o_ratqs, o_dtthe, &
153         o_duthe, o_dvthe, o_ftime_th, &
154         o_f_th, o_e_th, o_w_th, o_q_th, &
155         o_a_th, o_cloudth_sth, o_cloudth_senv, &
156         o_cloudth_sigmath, o_cloudth_sigmaenv, &
157         o_d_th, o_f0_th, o_zmax_th, &
158         o_dqthe, o_dqthe2d, o_dtajs, o_dqajs, o_dqajs2d, o_dtswr, &
159         o_dtsw0, o_dtlwr, o_dtlw0, o_dtec, &
160         o_duvdf, o_dvvdf, o_duoro, o_dvoro, &
161         o_dtoro, o_dulif, o_dvlif, o_dtlif, &
162         o_du_gwd_hines, o_dv_gwd_hines, o_dthin, o_dqch4, o_rsu, &
163         o_du_gwd_front, o_dv_gwd_front, &
164         o_east_gwstress, o_west_gwstress, &
165         o_rsd, o_rlu, o_rld, o_rsucs, o_rsdcs, o_rsucsaf, o_rsdcsaf, &
166         o_rlucs, o_rldcs, o_tnt, o_tntr, &
167         o_tntscpbl, o_tnhus, o_tnhusscpbl, &
168         o_evu, o_h2o, o_mcd, o_dmc, o_ref_liq, &
169         o_ref_ice, o_rsut4co2, o_rlut4co2, &
170         o_rsutcs4co2, o_rlutcs4co2, o_rsu4co2, &
171         o_rlu4co2, o_rsucs4co2, o_rlucs4co2, &
172         o_rsd4co2, o_rld4co2, o_rsdcs4co2, &
173         o_rldcs4co2, o_tnondef, o_ta, o_zg, &
174         o_hus, o_hur, o_ua, o_va, o_wap, &
175         o_psbg, o_tro3, o_tro3_daylight, &
176         o_uxv, o_vxq, o_vxT, o_wxq, o_vxphi, &
177         o_wxT, o_uxu, o_vxv, o_TxT, o_trac, &
178         o_dtr_vdf, o_dtr_the, o_dtr_con, &
179         o_dtr_lessi_impa, o_dtr_lessi_nucl, &
180         o_dtr_insc, o_dtr_bcscav, o_dtr_evapls, &
181         o_dtr_ls, o_dtr_trsp, o_dtr_sscav, o_dtr_dry, &
182         o_dtr_sat, o_dtr_uscav, o_trac_cum, o_du_gwd_rando, o_dv_gwd_rando, &
183         o_ustr_gwd_hines,o_vstr_gwd_hines,o_ustr_gwd_rando,o_vstr_gwd_rando, &
184         o_ustr_gwd_front,o_vstr_gwd_front, &
185         o_sens_prec_liq_oce, o_sens_prec_liq_sic, &
186         o_sens_prec_sol_oce, o_sens_prec_sol_sic, &
187         o_lat_prec_liq_oce, o_lat_prec_liq_sic, &
188         o_lat_prec_sol_oce, o_lat_prec_sol_sic, &
189         o_sza, &
190! Marine
191         o_map_prop_hc, o_map_prop_hist, o_map_emis_hc, o_map_iwp_hc, &
192         o_map_deltaz_hc, o_map_pcld_hc, o_map_tcld_hc, &
193         o_map_emis_hist, o_map_iwp_hist, o_map_deltaz_hist, &
194         o_map_rad_hist, &
195         o_map_emis_Cb, o_map_pcld_Cb, o_map_tcld_Cb, &
196         o_map_emis_ThCi, o_map_pcld_ThCi, o_map_tcld_ThCi, &
197         o_map_emis_Anv, o_map_pcld_Anv, o_map_tcld_Anv, &
198         o_map_ntot, o_map_hc,o_map_hist,o_map_Cb,o_map_ThCi,o_map_Anv, &
199         o_alt_tropo, &
200! Tropopause
201         o_p_tropopause, o_z_tropopause, o_t_tropopause,  &
202         o_col_O3_strato, o_col_O3_tropo,                 &
203!--interactive CO2
204         o_flx_co2_ocean, o_flx_co2_ocean_cor, &
205         o_flx_co2_land, o_flx_co2_land_cor, &
206         o_flx_co2_ff, o_flx_co2_bb, &
207         o_delta_sst, o_delta_sal, o_ds_ns, o_dt_ns, o_dter, o_dser, o_tkt, &
208         o_tks, o_taur, o_sss
209
210#ifdef CPP_StratAer
211    USE phys_output_ctrlout_mod, ONLY:  &
212         o_budg_3D_nucl, o_budg_3D_cond_evap, o_budg_3D_ocs_to_so2, o_budg_3D_so2_to_h2so4, &
213         o_budg_sed_part, o_R2SO4, o_OCS_lifetime, o_SO2_lifetime, &
214         o_budg_3D_backgr_ocs, o_budg_3D_backgr_so2, &
215         o_budg_dep_dry_ocs, o_budg_dep_wet_ocs, &
216         o_budg_dep_dry_so2, o_budg_dep_wet_so2, &
217         o_budg_dep_dry_h2so4, o_budg_dep_wet_h2so4, &
218         o_budg_dep_dry_part, o_budg_dep_wet_part, &
219         o_budg_emi_ocs, o_budg_emi_so2, o_budg_emi_h2so4, o_budg_emi_part, &
220         o_budg_ocs_to_so2, o_budg_so2_to_h2so4, o_budg_h2so4_to_part, &
221         o_surf_PM25_sulf, o_ext_strat_550, o_tau_strat_550, &
222         o_vsed_aer, o_tau_strat_1020, o_ext_strat_1020, o_f_r_wet
223#endif
224   
225    USE phys_output_ctrlout_mod, ONLY: o_heat_volc, o_cool_volc !NL
226    USE phys_state_var_mod, ONLY: heat_volc, cool_volc !NL
227
228    USE phys_state_var_mod, ONLY: pctsrf, rain_fall, snow_fall, &
229         qsol, z0m, z0h, fevap, agesno, &
230         nday_rain, rain_con, snow_con, &
231         topsw, toplw, toplw0, swup, swdn, solswfdiff, &
232         topsw0, swupc0, swdnc0, swup0, swdn0, SWup200, SWup200clr, &
233         SWdn200, SWdn200clr, LWup200, LWup200clr, &
234         LWdn200, LWdn200clr, solsw, solsw0, sollw, &
235         radsol, swradcorr, sollw0, sollwdown, sollw, gustiness, &
236         sollwdownclr, lwdnc0, lwdn0, ftsol, ustar, u10m, &
237         v10m, pbl_tke, wake_delta_pbl_TKE, &
238         delta_tsurf, &
239         wstar, cape, ema_pcb, ema_pct, &
240         ema_cbmf, Mipsh, Ma, fm_therm, ale_bl, alp_bl, ale, &
241         alp, cin, wake_pe, wake_dens, wake_s, wake_deltat, &
242         wake_deltaq, ftd, fqd, ale_bl_trig, albsol1, &
243         ale_wake, ale_bl_stat, &
244         rnebcon, wo, falb1, albsol2, coefh, clwcon0, &
245         ratqs, entr_therm, zqasc, detr_therm, f0, &
246         lwup, lwdn, lwupc0, lwup0, coefm, &
247         swupp, lwupp, swupc0p, swup0p, lwupc0p, lwup0p, swdnp, lwdnp, &
248         swdnc0p, swdn0p, lwdnc0p, lwdn0p, tnondef, O3sumSTD, uvsumSTD, &
249         vqsumSTD, vTsumSTD, O3daysumSTD, wqsumSTD, &
250         vphisumSTD, wTsumSTD, u2sumSTD, v2sumSTD, &
251         T2sumSTD, nlevSTD, du_gwd_rando, du_gwd_front, &
252         ulevSTD, vlevSTD, wlevSTD, philevSTD, qlevSTD, tlevSTD, &
253         rhlevSTD, O3STD, O3daySTD, uvSTD, vqSTD, vTSTD, wqSTD, vphiSTD, &
254         wTSTD, u2STD, v2STD, T2STD, missing_val_nf90, delta_sal, ds_ns, &
255         dt_ns, delta_sst
256
257    USE phys_local_var_mod, ONLY: zxfluxlat, slp, ptstar, pt0, zxtsol, zt2m, &
258         zn2mout, t2m_min_mon, t2m_max_mon, evap, &
259         l_mixmin,l_mix, tke_dissip, &
260         zu10m, zv10m, zq2m, zustar, zxqsurf, &
261         rain_lsc, rain_num, snow_lsc, bils, sens, fder, &
262         zxffonte, zxfqcalving, zxfqfonte, zxrunofflic, fluxu, &
263         fluxv, zxsnow, qsnow, snowhgt, to_ice, &
264         sissnow, runoff, albsol3_lic, evap_pot, &
265         t2m, fluxt, fluxlat, fsollw, fsolsw, &
266         wfbils, wfbilo, wfevap, wfrain, wfsnow, &
267         cdragm, cdragh, cldl, cldm, &
268         cldh, cldt, JrNt,   & ! only output names: cldljn,cldmjn,cldhjn,cldtjn
269         cldq, flwp, fiwp, ue, ve, uq, vq, &
270         uwat, vwat, &
271         plcl, plfc, wbeff, convoccur, upwd, dnwd, dnwd0, prw, prlw, prsw, &
272         s_pblh, s_pblt, s_lcl, s_therm, uwriteSTD, &
273         vwriteSTD, wwriteSTD, phiwriteSTD, qwriteSTD, &
274         twriteSTD, alp_wake, &
275!!         dtvdf_x    ,dtvdf_w    ,dqvdf_x    ,dqvdf_w    , &
276         d_t_vdf_x    ,d_t_vdf_w    ,d_q_vdf_x    ,d_q_vdf_w    , &
277         sens_x     ,sens_w     ,zxfluxlat_x,zxfluxlat_w, &
278         cdragh_x   ,cdragh_w   ,cdragm_x   ,cdragm_w   , &
279         kh         ,kh_x       ,kh_w       , &
280         cv_gen, wake_h, &
281         wake_omg, d_t_wake, d_q_wake, Vprecip, qtaa, Clw, &
282         wdtrainA, wdtrainS, wdtrainM, n2, s2, proba_notrig, &
283         random_notrig, &
284         alp_bl_det, alp_bl_fluct_m, alp_bl_conv, &
285         alp_bl_stat, alp_bl_fluct_tke, slab_wfbils, &
286         weak_inversion, dthmin, cldtau, cldemi, &
287         pmflxr, pmflxs, prfl, psfl, re, fl, rh2m, &
288         qsat2m, tpote, tpot, d_ts, od443aer, od550aer, dryod550aer, &
289         od865aer, abs550aer, od550lt1aer, sconcso4, sconcno3, &
290         sconcoa, sconcbc, sconcss, sconcdust, concso4, concno3, &
291         concoa, concbc, concss, concdust, loadso4, &
292         loadoa, loadbc, loadss, loaddust, loadno3, tausum_aero, drytausum_aero, &
293         topswad_aero, topswad0_aero, solswad_aero, &
294         solswad0_aero, topsw_aero, solsw_aero, &
295         topsw0_aero, solsw0_aero, topswcf_aero, &
296         solswcf_aero, topswai_aero, solswai_aero, &
297         toplwad_aero, toplwad0_aero, sollwad_aero, &
298         sollwad0_aero, toplwai_aero, sollwai_aero, &
299         scdnc, cldncl, reffclws, reffclwc, cldnvi, stratomask,&
300         lcc, lcc3d, lcc3dcon, lcc3dstra, &
301         icc3dcon, icc3dstra, zfice, reffclwtop, &
302         ec550aer, flwc, fiwc, t_seri, theta, q_seri, &
303         ql_seri, qs_seri, tr_seri, &
304         zphi, u_seri, v_seri, omega, cldfra, &
305         rneb, rnebjn, rneblsvol, zx_rh, zx_rhl, zx_rhi, d_t_dyn,  &
306         d_q_dyn,  d_ql_dyn, d_qs_dyn, &
307         d_q_dyn2d,  d_ql_dyn2d, d_qs_dyn2d, &
308         d_u_dyn, d_v_dyn, d_t_con, d_t_ajsb, d_t_ajs, &
309         d_u_ajs, d_v_ajs, &
310         d_u_con, d_v_con, d_q_con, d_q_ajs, d_t_lsc, &
311         d_t_lwr,d_t_lw0,d_t_swr,d_t_sw0, &
312         d_t_eva, d_q_lsc, beta_prec, d_t_lscth, &
313         d_t_lscst, d_q_lscth, d_q_lscst, plul_th, &
314         plul_st, d_t_vdf, d_t_diss, d_q_vdf, d_q_eva, &
315         zw2, fraca, zmax_th, d_q_ajsb, d_t_ec, d_u_vdf, &
316         d_v_vdf, d_u_oro, d_v_oro, d_t_oro, d_u_lif, &
317         d_v_lif, d_t_lif, du_gwd_hines, dv_gwd_hines, d_t_hin, &
318         dv_gwd_rando, dv_gwd_front, &
319         east_gwstress, west_gwstress, &
320         d_q_ch4, pmfd, pmfu, ref_liq, ref_ice, rhwriteSTD, &
321         ep, epmax_diag, &  ! epmax_cape
322         p_tropopause, t_tropopause, z_tropopause
323
324#ifdef CPP_StratAer
325    USE phys_local_var_mod, ONLY:  &
326         budg_3D_nucl, budg_3D_cond_evap, budg_3D_ocs_to_so2, budg_3D_so2_to_h2so4, &
327         budg_sed_part, R2SO4, OCS_lifetime, SO2_lifetime, &
328         budg_3D_backgr_ocs, budg_3D_backgr_so2, &
329         budg_dep_dry_ocs, budg_dep_wet_ocs, &
330         budg_dep_dry_so2, budg_dep_wet_so2, &
331         budg_dep_dry_h2so4, budg_dep_wet_h2so4, &
332         budg_dep_dry_part, budg_dep_wet_part, &
333         budg_emi_ocs, budg_emi_so2, budg_emi_h2so4, budg_emi_part, &
334         budg_ocs_to_so2, budg_so2_to_h2so4, budg_h2so4_to_part, &
335         surf_PM25_sulf, tau_strat_550, tausum_strat, &
336         vsed_aer, tau_strat_1020, f_r_wet
337#endif
338
339    USE carbon_cycle_mod, ONLY: fco2_ff, fco2_bb, fco2_land, fco2_ocean
340    USE carbon_cycle_mod, ONLY: fco2_ocean_cor, fco2_land_cor
341
342    USE phys_output_var_mod, ONLY: vars_defined, snow_o, zfra_o, bils_diss, &
343         bils_ec,bils_ech, bils_tke, bils_kinetic, bils_latent, bils_enthalp, &
344         itau_con, nfiles, clef_files, nid_files, dryaod_diag, &
345         zustr_gwd_hines, zvstr_gwd_hines,zustr_gwd_rando, zvstr_gwd_rando, &
346         zustr_gwd_front, zvstr_gwd_front, sza_o,    &
347         sens_prec_liq_o, sens_prec_sol_o, lat_prec_liq_o, lat_prec_sol_o, &
348         cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv, &
349! Marine
350         map_prop_hc, map_prop_hist, &
351         map_emis_hc,map_iwp_hc,map_deltaz_hc,&
352         map_pcld_hc,map_tcld_hc,&
353         map_emis_hist,map_iwp_hist,map_deltaz_hist,&
354         map_rad_hist,&
355         map_ntot,map_hc,map_hist,&
356         map_Cb,map_ThCi,map_Anv,&
357         map_emis_Cb,map_pcld_Cb,map_tcld_Cb,&
358         map_emis_ThCi,map_pcld_ThCi,map_tcld_ThCi,&
359         map_emis_Anv,map_pcld_Anv,map_tcld_Anv, &
360         alt_tropo, &
361!Ionela
362         ok_4xCO2atm, dter, dser, tkt, tks, taur, sss
363
364    USE ocean_slab_mod, ONLY: nslay, tslab, slab_bilg, tice, seaice, &
365        slab_ekman,slab_hdiff,slab_gm,dt_ekman, dt_hdiff, dt_gm, dt_qflux
366    USE pbl_surface_mod, ONLY: snow
367    USE indice_sol_mod, ONLY: nbsrf
368    USE infotrac_phy, ONLY: nqtot, nqo, type_trac, tname, niadv
369    USE geometry_mod, ONLY: cell_area, latitude_deg, longitude_deg
370    USE surface_data, ONLY: type_ocean, version_ocean, ok_veget, landice_opt
371    USE aero_mod, ONLY: naero_tot, id_STRAT_phy
372    USE ioipsl, ONLY: histend, histsync
373    USE iophy, ONLY: set_itau_iophy, histwrite_phy
374    USE netcdf, ONLY: nf90_fill_real
375    USE print_control_mod, ONLY: prt_level,lunout
376
377
378#ifdef CPP_XIOS
379    ! ug Pour les sorties XIOS
380    USE xios
381    USE wxios, ONLY: wxios_closedef, missing_val, wxios_set_context
382#endif
383    USE phys_cal_mod, ONLY : mth_len
384
385#ifdef CPP_RRTM
386    USE YOESW, ONLY : RSUN
387#endif
388    USE tracinca_mod, ONLY: config_inca
389    use config_ocean_skin_m, only: activate_ocean_skin
390
391    USE vertical_layers_mod, ONLY: presnivs
392
393    IMPLICIT NONE
394
395    INCLUDE "clesphys.h"
396    INCLUDE "thermcell.h"
397    INCLUDE "compbl.h"
398    INCLUDE "YOMCST.h"
399
400    ! Input
401    INTEGER :: itap, ivap, iliq, isol, read_climoz
402    INTEGER, DIMENSION(klon) :: lmax_th
403    LOGICAL :: aerosol_couple, ok_sync
404    LOGICAL :: ok_ade, ok_aie, ok_volcan
405    LOGICAL, DIMENSION(klon, klev) :: ptconv, ptconvth
406    REAL :: pdtphys
407    CHARACTER (LEN=4), DIMENSION(nlevSTD) :: clevSTD
408    REAL, DIMENSION(klon,nlevSTD) :: zx_tmp_fi3d_STD
409    REAL, DIMENSION(klon) :: pphis
410    REAL, DIMENSION(klon, klev) :: pplay, d_u, d_t
411    REAL, DIMENSION(klon, klev+1) :: paprs
412    REAL, DIMENSION(klon,klev,nqtot) :: qx, d_qx
413    REAL, DIMENSION(klon, klev) :: zmasse
414    INTEGER :: flag_aerosol_strat
415    INTEGER :: flag_aerosol
416    LOGICAL :: ok_cdnc
417    REAL, DIMENSION(3) :: freq_moyNMC
418
419    ! Local
420    INTEGER :: itau_w
421    INTEGER :: i, iinit, iinitend=1, iff, iq, iiq, nsrf, k, ll, naero
422    REAL, DIMENSION (klon) :: zx_tmp_fi2d, zpt_conv2d, wind100m
423    REAL, DIMENSION (klon,klev) :: zx_tmp_fi3d, zpt_conv
424    REAL, DIMENSION (klon,klev+1) :: zx_tmp_fi3d1
425    REAL, DIMENSION (klon,NSW) :: zx_tmp_fi3dsp
426    CHARACTER (LEN=4)              :: bb2
427    INTEGER, DIMENSION(nbp_lon*nbp_lat)  :: ndex2d
428    INTEGER, DIMENSION(nbp_lon*nbp_lat*klev) :: ndex3d
429    REAL, PARAMETER :: dobson_u = 2.1415e-05 ! Dobson unit, in kg m-2
430!   REAL, PARAMETER :: missing_val=nf90_fill_real
431    REAL, DIMENSION(klev+1,2) :: Ahyb_bounds, Bhyb_bounds
432    REAL, DIMENSION(klev,2) :: Ahyb_mid_bounds, Bhyb_mid_bounds
433    INTEGER :: ilev
434    INTEGER, SAVE :: kmax_100m
435!$OMP THREADPRIVATE(kmax_100m)
436    REAL :: x
437#ifndef CPP_XIOS
438    REAL :: missing_val
439#endif
440    REAL, PARAMETER :: un_jour=86400.
441    INTEGER ISW
442    CHARACTER*1 ch1
443    CHARACTER*20 varname
444
445#ifdef CPP_XIOS
446    TYPE(xios_fieldgroup) :: group_handle
447    TYPE(xios_field) :: child
448#endif
449#ifdef CPP_StratAer
450    LOGICAL, PARAMETER :: debug_strataer=.FALSE.
451#endif
452    REAL,DIMENSION(klon,klev) :: z, dz
453    REAL,DIMENSION(klon)      :: zrho, zt
454
455    INTEGER :: nqup
456
457    ! On calcul le nouveau tau:
458    itau_w = itau_phy + itap
459    ! On le donne à iophy pour que les histwrite y aient accès:
460    CALL set_itau_iophy(itau_w)
461
462 !   IF (.NOT.vars_defined) THEN
463       iinitend = 1
464 !   ELSE
465 !      iinitend = 1
466 !   ENDIF
467
468#ifdef CPP_XIOS
469    CALL wxios_set_context
470#endif
471
472#ifndef CPP_XIOS
473    missing_val=missing_val_nf90
474#endif
475
476    IF (.NOT.vars_defined) THEN
477      kmax_100m=1
478      DO k=1, klev-1
479        IF (presnivs(k).GT.0.97*101325.) kmax_100m = k !--finding out max level for 100 m with a good margin
480      ENDDO
481    ENDIF
482
483    Ahyb_bounds(1,1) = 0.
484    Ahyb_bounds(1,2) = aps(1)
485    Bhyb_bounds(1,1) = 1.
486    Bhyb_bounds(1,2) = bps(1)   
487    DO ilev=2,klev
488      Ahyb_bounds(ilev,1) = aps(ilev-1)
489      Ahyb_bounds(ilev,2) = aps(ilev)
490      Bhyb_bounds(ilev,1) = bps(ilev-1)
491      Bhyb_bounds(ilev,2) = bps(ilev)
492    ENDDO
493     Ahyb_bounds(klev+1,1) = aps(klev)
494     Ahyb_bounds(klev+1,2) = 0.
495     Bhyb_bounds(klev+1,1) = bps(klev)
496     Bhyb_bounds(klev+1,2) = 0.
497
498    DO ilev=1, klev
499      Ahyb_mid_bounds(ilev,1) = ap(ilev)
500      Ahyb_mid_bounds(ilev,2) = ap(ilev+1)
501      Bhyb_mid_bounds(ilev,1) = bp(ilev)
502      Bhyb_mid_bounds(ilev,2) = bp(ilev+1)
503    END DO
504
505#ifdef CPP_XIOS
506#ifdef CPP_StratAer
507!$OMP MASTER
508   IF (.NOT.vars_defined) THEN
509          !On ajoute les variables 3D traceurs par l interface fortran
510          CALL xios_get_handle("fields_strataer_trac_3D", group_handle)
511          ! On boucle sur les traceurs pour les ajouter au groupe puis fixer les attributs
512          DO iq=nqo+1, nqtot
513            iiq=niadv(iq)
514            varname=trim(tname(iiq))
515            WRITE (lunout,*) 'XIOS var=', nqo, iq, nqtot, varname
516            CALL xios_add_child(group_handle, child, varname)
517            CALL xios_set_attr(child, name=varname, unit="kg kg-1")
518            varname='d'//trim(tname(iiq))//'_vdf'
519            CALL xios_add_child(group_handle, child, varname)
520            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
521            varname='d'//trim(tname(iiq))//'_the'
522            CALL xios_add_child(group_handle, child, varname)
523            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
524            varname='d'//trim(tname(iiq))//'_con'
525            CALL xios_add_child(group_handle, child, varname)
526            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
527            varname='d'//trim(tname(iiq))//'_lessi_impa'
528            CALL xios_add_child(group_handle, child, varname)
529            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
530            varname='d'//trim(tname(iiq))//'_lessi_nucl'
531            CALL xios_add_child(group_handle, child, varname)
532            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
533            varname='d'//trim(tname(iiq))//'_insc'
534            CALL xios_add_child(group_handle, child, varname)
535            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
536            varname='d'//trim(tname(iiq))//'_bcscav'
537            CALL xios_add_child(group_handle, child, varname)
538            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
539            varname='d'//trim(tname(iiq))//'_evapls'
540            CALL xios_add_child(group_handle, child, varname)
541            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
542            varname='d'//trim(tname(iiq))//'_ls'
543            CALL xios_add_child(group_handle, child, varname)
544            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
545            varname='d'//trim(tname(iiq))//'_trsp'
546            CALL xios_add_child(group_handle, child, varname)
547            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
548            varname='d'//trim(tname(iiq))//'_sscav'
549            CALL xios_add_child(group_handle, child, varname)
550            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
551            varname='d'//trim(tname(iiq))//'_sat'
552            CALL xios_add_child(group_handle, child, varname)
553            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
554            varname='d'//trim(tname(iiq))//'_uscav'
555            CALL xios_add_child(group_handle, child, varname)
556            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
557          ENDDO
558          !On ajoute les variables 2D traceurs par l interface fortran
559          CALL xios_get_handle("fields_strataer_trac_2D", group_handle)
560          ! On boucle sur les traceurs pour les ajouter au groupe puis fixer les attributs
561          DO iq=nqo+1, nqtot
562            iiq=niadv(iq)
563            varname='cum'//trim(tname(iiq))
564            WRITE (lunout,*) 'XIOS var=', iq, nqtot, varname
565            CALL xios_add_child(group_handle, child, varname)
566            CALL xios_set_attr(child, name=varname, unit="kg m-2")
567            varname='cumd'//trim(tname(iiq))//'_dry'
568            CALL xios_add_child(group_handle, child, varname)
569            CALL xios_set_attr(child, name=varname, unit="kg m-2 s-1")
570          ENDDO
571    ENDIF
572!$OMP END MASTER
573#endif
574#endif
575    ! ug la boucle qui suit ne sert qu'une fois, pour l'initialisation, sinon il n'y a toujours qu'un seul passage:
576    DO iinit=1, iinitend
577!      print *,'IFF iinit=', iinit, iinitend
578#ifdef CPP_XIOS
579       !$OMP MASTER
580       IF (vars_defined) THEN
581          IF (prt_level >= 10) then
582             write(lunout,*)"phys_output_write: call xios_update_calendar, itau_w=",itau_w
583          ENDIF
584!          CALL xios_update_calendar(itau_w)
585          CALL xios_update_calendar(itap)
586       ENDIF
587       !$OMP END MASTER
588       !$OMP BARRIER
589#endif
590       ! On procède à l'écriture ou à la définition des nombreuses variables:
591!!! Champs 1D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
592       CALL histwrite_phy(o_phis, pphis)
593
594       zx_tmp_fi2d = cell_area
595       IF (is_north_pole_phy) then
596         zx_tmp_fi2d(1) = cell_area(1)/nbp_lon
597       ENDIF
598       IF (is_south_pole_phy) then
599         zx_tmp_fi2d(klon) = cell_area(klon)/nbp_lon
600       ENDIf
601       CALL histwrite_phy(o_aire, zx_tmp_fi2d)
602
603       IF (vars_defined) THEN
604          DO i=1, klon
605             zx_tmp_fi2d(i)=pctsrf(i,is_ter)+pctsrf(i,is_lic)
606          ENDDO
607       ENDIF
608
609       CALL histwrite_phy(o_contfracATM, zx_tmp_fi2d)
610       CALL histwrite_phy(o_contfracOR, pctsrf(:,is_ter))
611!
612#ifdef CPP_XIOS
613       CALL histwrite_phy("R_ecc",R_ecc)
614       CALL histwrite_phy("R_peri",R_peri)
615       CALL histwrite_phy("R_incl",R_incl)
616       CALL histwrite_phy("solaire",solaire)
617       CALL histwrite_phy(o_Ahyb, ap)
618       CALL histwrite_phy(o_Bhyb, bp)
619       CALL histwrite_phy(o_Ahyb_bounds, Ahyb_bounds)
620       CALL histwrite_phy(o_Bhyb_bounds, Bhyb_bounds)
621       CALL histwrite_phy(o_Ahyb_mid, aps)
622       CALL histwrite_phy(o_Bhyb_mid, bps)
623       CALL histwrite_phy(o_Ahyb_mid_bounds, Ahyb_mid_bounds)
624       CALL histwrite_phy(o_Bhyb_mid_bounds, Bhyb_mid_bounds)
625       CALL histwrite_phy(o_longitude, longitude_deg)
626       CALL histwrite_phy(o_latitude, latitude_deg)
627!
628#ifdef CPP_RRTM
629      IF (iflag_rrtm.EQ.1) THEN
630        DO ISW=1, NSW
631          WRITE(ch1,'(i1)') ISW
632!         zx_tmp_0d=RSUN(ISW)
633!         CALL histwrite_phy("rsun"//ch1,zx_tmp_0d)
634          CALL histwrite_phy("rsun"//ch1,RSUN(ISW))
635        ENDDO
636      ENDIF
637#endif
638!
639       CALL histwrite_phy("co2_ppm",co2_ppm)
640       CALL histwrite_phy("CH4_ppb",CH4_ppb)
641       CALL histwrite_phy("N2O_ppb",N2O_ppb)
642       CALL histwrite_phy("CFC11_ppt",CFC11_ppt)
643       CALL histwrite_phy("CFC12_ppt",CFC12_ppt)
644!
645#endif
646
647!!! Champs 2D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
648! Simulateur AIRS
649     IF (ok_airs) then
650      CALL histwrite_phy(o_alt_tropo,alt_tropo)
651 
652      CALL histwrite_phy(o_map_prop_hc,map_prop_hc)
653      CALL histwrite_phy(o_map_prop_hist,map_prop_hist)
654
655      CALL histwrite_phy(o_map_emis_hc,map_emis_hc)
656      CALL histwrite_phy(o_map_iwp_hc,map_iwp_hc)
657      CALL histwrite_phy(o_map_deltaz_hc,map_deltaz_hc)
658      CALL histwrite_phy(o_map_pcld_hc,map_pcld_hc)
659      CALL histwrite_phy(o_map_tcld_hc,map_tcld_hc)
660
661      CALL histwrite_phy(o_map_emis_hist,map_emis_hist)
662      CALL histwrite_phy(o_map_iwp_hist,map_iwp_hist)
663      CALL histwrite_phy(o_map_deltaz_hist,map_deltaz_hist)
664
665      CALL histwrite_phy(o_map_ntot,map_ntot)
666      CALL histwrite_phy(o_map_hc,map_hc)
667      CALL histwrite_phy(o_map_hist,map_hist)
668
669      CALL histwrite_phy(o_map_Cb,map_Cb)
670      CALL histwrite_phy(o_map_ThCi,map_ThCi)
671      CALL histwrite_phy(o_map_Anv,map_Anv)
672
673      CALL histwrite_phy(o_map_emis_Cb,map_emis_Cb)
674      CALL histwrite_phy(o_map_pcld_Cb,map_pcld_Cb)
675      CALL histwrite_phy(o_map_tcld_Cb,map_tcld_Cb)
676
677      CALL histwrite_phy(o_map_emis_ThCi,map_emis_ThCi)
678      CALL histwrite_phy(o_map_pcld_ThCi,map_pcld_ThCi)
679      CALL histwrite_phy(o_map_tcld_ThCi,map_tcld_ThCi)
680
681      CALL histwrite_phy(o_map_emis_Anv,map_emis_Anv)
682      CALL histwrite_phy(o_map_pcld_Anv,map_pcld_Anv)
683      CALL histwrite_phy(o_map_tcld_Anv,map_tcld_Anv)
684     ENDIF
685
686       CALL histwrite_phy(o_sza, sza_o)
687       CALL histwrite_phy(o_flat, zxfluxlat)
688       CALL histwrite_phy(o_ptstar, ptstar)
689       CALL histwrite_phy(o_pt0, pt0)
690       CALL histwrite_phy(o_slp, slp)
691       CALL histwrite_phy(o_tsol, zxtsol)
692       CALL histwrite_phy(o_t2m, zt2m)
693       CALL histwrite_phy(o_t2m_min, zt2m)
694       CALL histwrite_phy(o_t2m_max, zt2m)
695       CALL histwrite_phy(o_t2m_max_mon, t2m_max_mon)
696       CALL histwrite_phy(o_t2m_min_mon, t2m_min_mon)
697
698       IF (vars_defined) THEN
699          DO i=1, klon
700             zx_tmp_fi2d(i)=real(zn2mout(i,1))
701          ENDDO
702       ENDIF
703       CALL histwrite_phy(o_nt2mout, zx_tmp_fi2d)
704
705       IF (vars_defined) THEN
706          DO i=1, klon
707             zx_tmp_fi2d(i)=real(zn2mout(i,2))
708          ENDDO
709       ENDIF
710       CALL histwrite_phy(o_nt2moutfg, zx_tmp_fi2d)
711
712       IF (vars_defined) THEN
713          DO i=1, klon
714             zx_tmp_fi2d(i)=real(zn2mout(i,3))
715          ENDDO
716       ENDIF
717       CALL histwrite_phy(o_nq2mout, zx_tmp_fi2d)
718
719       IF (vars_defined) THEN
720          DO i=1, klon
721             zx_tmp_fi2d(i)=real(zn2mout(i,4))
722          ENDDO
723       ENDIF
724       CALL histwrite_phy(o_nq2moutfg, zx_tmp_fi2d)
725
726       IF (vars_defined) THEN
727          DO i=1, klon
728             zx_tmp_fi2d(i)=real(zn2mout(i,5))
729          ENDDO
730       ENDIF
731       CALL histwrite_phy(o_nu2mout, zx_tmp_fi2d)
732
733       IF (vars_defined) THEN
734          DO i=1, klon
735             zx_tmp_fi2d(i)=real(zn2mout(i,6))
736          ENDDO
737       ENDIF
738       CALL histwrite_phy(o_nu2moutfg, zx_tmp_fi2d)
739
740       IF (vars_defined) THEN
741          DO i=1, klon
742             zx_tmp_fi2d(i)=SQRT(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i))
743          ENDDO
744       ENDIF
745       CALL histwrite_phy(o_wind10m, zx_tmp_fi2d)
746
747       IF (vars_defined) THEN
748          DO i=1, klon
749             zx_tmp_fi2d(i)=SQRT(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i))
750          ENDDO
751       ENDIF
752       CALL histwrite_phy(o_wind10max, zx_tmp_fi2d)
753
754       CALL histwrite_phy(o_gusts, gustiness)
755
756       IF (vars_defined) THEN
757          DO k = 1, kmax_100m                                      !--we could stop much lower
758            zrho(:) = pplay(:,k)/t_seri(:,k)/RD                    ! air density in kg/m3
759            dz(:,k) = (paprs(:,k)-paprs(:,k+1))/zrho(:)/RG         ! layer thickness in m
760            IF (k==1) THEN
761              z(:,1) = (paprs(:,1)-pplay(:,1))/zrho(:)/RG          ! altitude middle of first layer in m
762              zt(:)  = dz(:,1)                                     ! altitude top of first layer in m
763            ELSE
764              z(:,k) = zt(:) + (paprs(:,k)-pplay(:,k))/zrho(:)/RG  ! altitude middle of layer k in m
765              zt(:)  = zt(:) + dz(:,k)                             ! altitude top of layer k in m
766            ENDIF
767          ENDDO
768          wind100m(:)=missing_val
769          DO k=1, kmax_100m-1                                      !--we could stop much lower
770            DO i=1,klon
771              IF (z(i,k).LT.100..AND.z(i,k+1).GE.100.) THEN
772                wind100m(i)=SQRT( (u_seri(i,k)+(100.-z(i,k))/(z(i,k+1)-z(i,k))*(u_seri(i,k+1)-u_seri(i,k)))**2.0 + &
773                                  (v_seri(i,k)+(100.-z(i,k))/(z(i,k+1)-z(i,k))*(v_seri(i,k+1)-v_seri(i,k)))**2.0 )
774              ENDIF
775            ENDDO
776          ENDDO
777       ENDIF
778       CALL histwrite_phy(o_wind100m, wind100m)
779
780       IF (vars_defined) THEN
781         !--polynomial fit for 14,Vestas,1074,V136/3450 kW windmill - Olivier
782         DO i=1,klon
783           IF (pctsrf(i,is_ter).GT.0.05 .AND. wind100m(i).NE.missing_val) THEN
784             x=wind100m(i)
785             IF (x.LE.3.0 .OR. x.GE.22.5) THEN
786               zx_tmp_fi2d(i)=0.0
787             ELSE IF (x.GE.10.0) THEN
788               zx_tmp_fi2d(i)=1.0
789             ELSE
790               zx_tmp_fi2d(i)= 10.73 + x*(-14.69 + x*(8.339 + x*(-2.59 + x*(0.4893 + x*(-0.05898 + x*(0.004627 + &
791                               x*(-0.0002352 + x*(7.478e-06 + x*(-1.351e-07 + x*(1.059e-09))))))))))
792               zx_tmp_fi2d(i)=MIN(MAX(zx_tmp_fi2d(i),0.0),1.0)
793             ENDIF
794           ELSE
795             zx_tmp_fi2d(i)=missing_val
796           ENDIF
797         ENDDO
798       ENDIF
799       CALL histwrite_phy(o_loadfactor_wind_onshore, zx_tmp_fi2d)
800
801       IF (vars_defined) THEN
802         !--polynomial fit for 14,Vestas,867,V164/8000 kW - Olivier
803         DO i=1,klon
804           IF (pctsrf(i,is_oce).GT.0.05 .AND. wind100m(i).NE.missing_val) THEN
805             x=wind100m(i)
806             IF (x.LE.3.0 .OR. x.GE.25.5) THEN
807               zx_tmp_fi2d(i)=0.0
808             ELSE IF (x.GE.12.5) THEN
809               zx_tmp_fi2d(i)=1.0
810             ELSE
811               zx_tmp_fi2d(i)= 20.59 + x*(-22.39 + x*(10.25 + x*(-2.601 + x*(0.4065 + x*(-0.04099 + x*(0.002716 + &
812                               x*(-0.0001175 + x*(3.195e-06 + x*(-4.959e-08 + x*(3.352e-10))))))))))
813               zx_tmp_fi2d(i)=MIN(MAX(zx_tmp_fi2d(i),0.0),1.0)
814             ENDIF
815           ELSE
816             zx_tmp_fi2d(i)=missing_val
817           ENDIF
818         ENDDO
819       ENDIF
820       CALL histwrite_phy(o_loadfactor_wind_offshore, zx_tmp_fi2d)
821
822       IF (vars_defined) THEN
823          DO i = 1, klon
824             zx_tmp_fi2d(i) = pctsrf(i,is_sic)
825          ENDDO
826       ENDIF
827       CALL histwrite_phy(o_sicf, zx_tmp_fi2d)
828       CALL histwrite_phy(o_q2m, zq2m)
829       IF (vars_defined) zx_tmp_fi2d = zustar
830       CALL histwrite_phy(o_ustar, zx_tmp_fi2d)
831       CALL histwrite_phy(o_u10m, zu10m)
832       CALL histwrite_phy(o_v10m, zv10m)
833
834       IF (vars_defined) THEN
835          DO i = 1, klon
836             zx_tmp_fi2d(i) = paprs(i,1)
837          ENDDO
838       ENDIF
839       CALL histwrite_phy(o_psol, zx_tmp_fi2d)
840       CALL histwrite_phy(o_mass, zmasse)
841       CALL histwrite_phy(o_qsurf, zxqsurf)
842
843       IF (.NOT. ok_veget) THEN
844          CALL histwrite_phy(o_qsol, qsol)
845       ENDIF
846
847       IF (vars_defined) THEN
848          DO i = 1, klon
849             zx_tmp_fi2d(i) = rain_fall(i) + snow_fall(i)
850          ENDDO
851       ENDIF
852
853       CALL histwrite_phy(o_precip, zx_tmp_fi2d)
854       CALL histwrite_phy(o_rain_fall, rain_fall)
855       CALL histwrite_phy(o_ndayrain, nday_rain)
856
857       ! epmax_cape:
858!       CALL histwrite_phy(o_epmax_diag, epmax_diag)
859       CALL histwrite_phy(o_ep, ep)
860
861       IF (vars_defined) THEN
862          DO i = 1, klon
863             zx_tmp_fi2d(i) = rain_lsc(i) + snow_lsc(i)
864          ENDDO
865       ENDIF
866       CALL histwrite_phy(o_plul, zx_tmp_fi2d)
867       CALL histwrite_phy(o_plun, rain_num)
868
869       IF (vars_defined) THEN
870          DO i = 1, klon
871             zx_tmp_fi2d(i) = rain_con(i) + snow_con(i)
872          ENDDO
873       ENDIF
874       CALL histwrite_phy(o_pluc, zx_tmp_fi2d)
875       CALL histwrite_phy(o_rain_con, rain_con)
876       CALL histwrite_phy(o_snow, snow_fall)
877       CALL histwrite_phy(o_msnow, zxsnow)
878       CALL histwrite_phy(o_fsnow, zfra_o)
879       CALL histwrite_phy(o_evap, evap)
880
881       IF (vars_defined) THEN
882         zx_tmp_fi2d = topsw*swradcorr
883       ENDIF
884       CALL histwrite_phy(o_tops, zx_tmp_fi2d)
885
886       IF (vars_defined) THEN
887         zx_tmp_fi2d = topsw0*swradcorr
888       ENDIF
889       CALL histwrite_phy(o_tops0, zx_tmp_fi2d)
890
891       CALL histwrite_phy(o_topl, toplw)
892       CALL histwrite_phy(o_topl0, toplw0)
893
894       IF (vars_defined) THEN
895          zx_tmp_fi2d(:) = swup(:,klevp1)*swradcorr(:)
896       ENDIF
897       CALL histwrite_phy(o_SWupTOA, zx_tmp_fi2d)
898
899       IF (vars_defined) THEN
900          zx_tmp_fi2d(:) = swup0(:,klevp1)*swradcorr(:)
901       ENDIF
902       CALL histwrite_phy(o_SWupTOAclr, zx_tmp_fi2d)
903
904       IF (vars_defined) THEN
905          zx_tmp_fi2d(:) = swupc0(:,klevp1)*swradcorr(:)
906       ENDIF
907       CALL histwrite_phy(o_SWupTOAcleanclr, zx_tmp_fi2d)
908
909       IF (vars_defined) THEN
910          zx_tmp_fi2d(:) = swdn(:,klevp1)*swradcorr(:)
911       ENDIF
912       CALL histwrite_phy(o_SWdnTOA, zx_tmp_fi2d)
913
914       IF (vars_defined) THEN
915          zx_tmp_fi2d(:) = swdn0(:,klevp1)*swradcorr(:)
916       ENDIF
917       CALL histwrite_phy(o_SWdnTOAclr, zx_tmp_fi2d)
918
919       IF (vars_defined) THEN
920          zx_tmp_fi2d(:) = topsw(:)*swradcorr(:)-toplw(:)
921       ENDIF
922       CALL histwrite_phy(o_nettop, zx_tmp_fi2d)
923       
924       IF (vars_defined) THEN
925          zx_tmp_fi2d = SWup200*swradcorr
926       ENDIF
927       CALL histwrite_phy(o_SWup200, zx_tmp_fi2d)
928       
929       IF (vars_defined) THEN
930          zx_tmp_fi2d = SWup200clr*swradcorr
931       ENDIF
932       CALL histwrite_phy(o_SWup200clr, zx_tmp_fi2d)
933       
934       IF (vars_defined) THEN
935          zx_tmp_fi2d = SWdn200*swradcorr
936       ENDIF
937       CALL histwrite_phy(o_SWdn200, zx_tmp_fi2d)
938       
939       
940       IF (vars_defined) THEN
941          zx_tmp_fi2d = SWdn200clr*swradcorr
942       ENDIF
943       CALL histwrite_phy(o_SWdn200clr, zx_tmp_fi2d)
944       
945       CALL histwrite_phy(o_LWup200, LWup200)
946       CALL histwrite_phy(o_LWup200clr, LWup200clr)
947       CALL histwrite_phy(o_LWdn200, LWdn200)
948       CALL histwrite_phy(o_LWdn200clr, LWdn200clr)
949       
950       IF (vars_defined) THEN
951          zx_tmp_fi2d = solsw*swradcorr
952       ENDIF
953       CALL histwrite_phy(o_sols, zx_tmp_fi2d)
954       
955       
956       IF (vars_defined) THEN
957          zx_tmp_fi2d = solsw0*swradcorr
958       ENDIF
959       CALL histwrite_phy(o_sols0, zx_tmp_fi2d)
960       CALL histwrite_phy(o_soll, sollw)
961       CALL histwrite_phy(o_soll0, sollw0)
962       CALL histwrite_phy(o_radsol, radsol)
963
964       IF (vars_defined) THEN
965          zx_tmp_fi2d(:) = swup(:,1)*swradcorr(:)
966       ENDIF
967       CALL histwrite_phy(o_SWupSFC, zx_tmp_fi2d)
968
969       IF (vars_defined) THEN
970          zx_tmp_fi2d(:) = swup0(:,1)*swradcorr(:)
971       ENDIF
972       CALL histwrite_phy(o_SWupSFCclr, zx_tmp_fi2d)
973
974       IF (vars_defined) THEN
975          zx_tmp_fi2d(:) = swupc0(:,1)*swradcorr(:)
976       ENDIF
977       CALL histwrite_phy(o_SWupSFCcleanclr, zx_tmp_fi2d)
978
979       IF (vars_defined) THEN
980          zx_tmp_fi2d(:) = swdn(:,1)*swradcorr(:)
981       ENDIF
982       CALL histwrite_phy(o_SWdnSFC, zx_tmp_fi2d)
983
984       IF (vars_defined) THEN
985          zx_tmp_fi2d(:) = swdn0(:,1)*swradcorr(:)
986       ENDIF
987       CALL histwrite_phy(o_SWdnSFCclr, zx_tmp_fi2d)
988
989       IF (vars_defined) THEN
990          zx_tmp_fi2d(:) = swdnc0(:,1)*swradcorr(:)
991       ENDIF
992       CALL histwrite_phy(o_SWdnSFCcleanclr, zx_tmp_fi2d)
993
994       CALL histwrite_phy(o_fdiffSWdnSFC, solswfdiff)
995
996       IF (vars_defined) THEN
997          zx_tmp_fi2d(:)=sollwdown(:)-sollw(:)
998       ENDIF
999       CALL histwrite_phy(o_LWupSFC, zx_tmp_fi2d)
1000       CALL histwrite_phy(o_LWdnSFC, sollwdown)
1001
1002       IF (vars_defined) THEN
1003          sollwdownclr(1:klon) = -1.*lwdn0(1:klon,1)
1004          zx_tmp_fi2d(1:klon)=sollwdownclr(1:klon)-sollw0(1:klon)
1005       ENDIF
1006       CALL histwrite_phy(o_LWupSFCclr, zx_tmp_fi2d)
1007       CALL histwrite_phy(o_LWdnSFCclr, sollwdownclr)
1008
1009       IF (vars_defined) THEN
1010          zx_tmp_fi2d(:) = lwupc0(:,klevp1)
1011       ENDIF
1012       CALL histwrite_phy(o_LWupTOAcleanclr, zx_tmp_fi2d)
1013       IF (vars_defined) THEN
1014          zx_tmp_fi2d(:) = -1.*lwdnc0(:,1)
1015       ENDIF
1016       CALL histwrite_phy(o_LWdnSFCcleanclr, zx_tmp_fi2d)
1017
1018       CALL histwrite_phy(o_bils, bils)
1019       CALL histwrite_phy(o_bils_diss, bils_diss)
1020       CALL histwrite_phy(o_bils_ec, bils_ec)
1021       CALL histwrite_phy(o_bils_ech, bils_ech)
1022       CALL histwrite_phy(o_bils_tke, bils_tke)
1023       CALL histwrite_phy(o_bils_kinetic, bils_kinetic)
1024       CALL histwrite_phy(o_bils_latent, bils_latent)
1025       CALL histwrite_phy(o_bils_enthalp, bils_enthalp)
1026
1027       IF (vars_defined) THEN
1028          zx_tmp_fi2d(1:klon)=-1*sens(1:klon)
1029       ENDIF
1030       CALL histwrite_phy(o_sens, zx_tmp_fi2d)
1031       CALL histwrite_phy(o_fder, fder)
1032       CALL histwrite_phy(o_ffonte, zxffonte)
1033       CALL histwrite_phy(o_fqcalving, zxfqcalving)
1034       CALL histwrite_phy(o_fqfonte, zxfqfonte)
1035       IF (vars_defined) THEN
1036          zx_tmp_fi2d(1:klon)=(zxfqfonte(1:klon)+rain_fall(1:klon))*pctsrf(1:klon,is_lic)
1037       ENDIF
1038       CALL histwrite_phy(o_mrroli, zx_tmp_fi2d)
1039       CALL histwrite_phy(o_runofflic, zxrunofflic)
1040       IF (vars_defined) THEN
1041          zx_tmp_fi2d=0.
1042          DO nsrf=1,nbsrf
1043             zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxu(:,1,nsrf)
1044          ENDDO
1045       ENDIF
1046       CALL histwrite_phy(o_taux, zx_tmp_fi2d)
1047
1048       IF (vars_defined) THEN
1049          zx_tmp_fi2d=0.
1050          DO nsrf=1,nbsrf
1051             zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxv(:,1,nsrf)
1052          ENDDO
1053       ENDIF
1054       CALL histwrite_phy(o_tauy, zx_tmp_fi2d)
1055
1056       IF (landice_opt .GE. 1) THEN
1057          CALL histwrite_phy(o_snowsrf, snow_o)
1058          CALL histwrite_phy(o_qsnow, qsnow)
1059          CALL histwrite_phy(o_snowhgt,snowhgt)
1060          CALL histwrite_phy(o_toice,to_ice)
1061          CALL histwrite_phy(o_sissnow,sissnow)
1062          CALL histwrite_phy(o_runoff,runoff)
1063          CALL histwrite_phy(o_albslw3,albsol3_lic)
1064       ENDIF
1065
1066       DO nsrf = 1, nbsrf
1067
1068          IF (vars_defined)             zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)*100.
1069          CALL histwrite_phy(o_pourc_srf(nsrf), zx_tmp_fi2d)
1070          IF (vars_defined)           zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)
1071          CALL histwrite_phy(o_fract_srf(nsrf), zx_tmp_fi2d)
1072          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxu( 1 : klon, 1, nsrf)
1073          CALL histwrite_phy(o_taux_srf(nsrf), zx_tmp_fi2d)
1074          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxv( 1 : klon, 1, nsrf)
1075          CALL histwrite_phy(o_tauy_srf(nsrf), zx_tmp_fi2d)
1076          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = ftsol( 1 : klon, nsrf)
1077          CALL histwrite_phy(o_tsol_srf(nsrf), zx_tmp_fi2d)
1078          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = evap_pot( 1 : klon, nsrf)
1079          CALL histwrite_phy(o_evappot_srf(nsrf), zx_tmp_fi2d)
1080          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = ustar(1 : klon, nsrf)
1081          CALL histwrite_phy(o_ustar_srf(nsrf), zx_tmp_fi2d)
1082          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = u10m(1 : klon, nsrf)
1083          CALL histwrite_phy(o_u10m_srf(nsrf), zx_tmp_fi2d)
1084          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = v10m(1 : klon, nsrf)
1085          CALL histwrite_phy(o_v10m_srf(nsrf), zx_tmp_fi2d)
1086          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = t2m(1 : klon, nsrf)
1087          CALL histwrite_phy(o_t2m_srf(nsrf), zx_tmp_fi2d)
1088          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = fevap(1 : klon, nsrf)
1089          CALL histwrite_phy(o_evap_srf(nsrf), zx_tmp_fi2d)
1090          IF (vars_defined)        zx_tmp_fi2d(1 : klon) = fluxt( 1 : klon, 1, nsrf)
1091          CALL histwrite_phy(o_sens_srf(nsrf), zx_tmp_fi2d)
1092          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxlat( 1 : klon, nsrf)
1093          CALL histwrite_phy(o_lat_srf(nsrf), zx_tmp_fi2d)
1094          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fsollw( 1 : klon, nsrf)
1095          CALL histwrite_phy(o_flw_srf(nsrf), zx_tmp_fi2d)
1096          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, nsrf)
1097          CALL histwrite_phy(o_fsw_srf(nsrf), zx_tmp_fi2d)
1098          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfbils( 1 : klon, nsrf)
1099          CALL histwrite_phy(o_wbils_srf(nsrf), zx_tmp_fi2d)
1100          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfbilo( 1 : klon, nsrf)
1101          CALL histwrite_phy(o_wbilo_srf(nsrf), zx_tmp_fi2d)
1102          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfevap( 1 : klon, nsrf)
1103          CALL histwrite_phy(o_wevap_srf(nsrf), zx_tmp_fi2d)
1104          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfrain( 1 : klon, nsrf)
1105          CALL histwrite_phy(o_wrain_srf(nsrf), zx_tmp_fi2d)
1106          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfsnow( 1 : klon, nsrf)
1107          CALL histwrite_phy(o_wsnow_srf(nsrf), zx_tmp_fi2d)
1108
1109          IF (iflag_pbl > 1) THEN
1110             CALL histwrite_phy(o_tke_srf(nsrf),  pbl_tke(:,1:klev,nsrf))
1111             !CALL histwrite_phy(o_l_mix(nsrf),  l_mix(:,1:klev,nsrf))
1112             CALL histwrite_phy(o_l_mixmin(nsrf),  l_mixmin(:,1:klev,nsrf))
1113             CALL histwrite_phy(o_tke_max_srf(nsrf),  pbl_tke(:,1:klev,nsrf))
1114
1115                         
1116          ENDIF
1117!jyg<
1118          IF (iflag_pbl > 1 .AND. iflag_wake>=1  .AND. iflag_pbl_split >=1) THEN
1119             CALL histwrite_phy(o_dltpbltke_srf(nsrf), wake_delta_pbl_TKE(:,1:klev,nsrf))
1120          ENDIF
1121!>jyg
1122!          IF (iflag_pbl > 1 .AND. ifl_pbltree  >=1 ) THEN
1123!       CALL histwrite_phy(o_treedrg_srf(nsrf), treedrg(:,1:klev,nsrf))
1124!            ENDIF
1125
1126       ENDDO
1127       
1128               
1129        IF (iflag_pbl > 1) THEN
1130          zx_tmp_fi3d=0.
1131          IF (vars_defined) THEN
1132             DO nsrf=1,nbsrf
1133                DO k=1,klev
1134                   zx_tmp_fi3d(:,k)=zx_tmp_fi3d(:,k) &
1135                        +pctsrf(:,nsrf)*tke_dissip(:,k,nsrf)
1136                ENDDO
1137             ENDDO
1138          ENDIF
1139         
1140          CALL histwrite_phy(o_tke_dissip, zx_tmp_fi3d)   
1141       ENDIF
1142
1143       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_liq_o(1 : klon, 1)
1144       CALL histwrite_phy(o_sens_prec_liq_oce, zx_tmp_fi2d)       
1145       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_liq_o(1 : klon, 2)
1146       CALL histwrite_phy(o_sens_prec_liq_sic, zx_tmp_fi2d)       
1147       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_sol_o(1 : klon, 1)
1148       CALL histwrite_phy(o_sens_prec_sol_oce, zx_tmp_fi2d)       
1149       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_sol_o(1 : klon, 2)
1150       CALL histwrite_phy(o_sens_prec_sol_sic, zx_tmp_fi2d)       
1151
1152       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_liq_o(1 : klon, 1)
1153       CALL histwrite_phy(o_lat_prec_liq_oce, zx_tmp_fi2d)       
1154       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_liq_o(1 : klon, 2)
1155       CALL histwrite_phy(o_lat_prec_liq_sic, zx_tmp_fi2d)       
1156       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_sol_o(1 : klon, 1)
1157       CALL histwrite_phy(o_lat_prec_sol_oce, zx_tmp_fi2d)       
1158       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_sol_o(1 : klon, 2)
1159       CALL histwrite_phy(o_lat_prec_sol_sic, zx_tmp_fi2d)       
1160
1161       DO nsrf=1,nbsrf+1
1162          CALL histwrite_phy(o_wstar(nsrf), wstar(1 : klon, nsrf))
1163       ENDDO
1164
1165       CALL histwrite_phy(o_cdrm, cdragm)
1166       CALL histwrite_phy(o_cdrh, cdragh)
1167       CALL histwrite_phy(o_cldl, cldl)
1168       CALL histwrite_phy(o_cldm, cldm)
1169       CALL histwrite_phy(o_cldh, cldh)
1170       CALL histwrite_phy(o_cldt, cldt)
1171       CALL histwrite_phy(o_JrNt, JrNt)
1172       
1173       IF (vars_defined)  zx_tmp_fi2d=cldl*JrNt     
1174       CALL histwrite_phy(o_cldljn, zx_tmp_fi2d)
1175       
1176       IF (vars_defined)  zx_tmp_fi2d=cldm*JrNt     
1177       CALL histwrite_phy(o_cldmjn, zx_tmp_fi2d)
1178       
1179       IF (vars_defined)  zx_tmp_fi2d=cldh*JrNt
1180       CALL histwrite_phy(o_cldhjn, zx_tmp_fi2d)
1181       
1182       IF (vars_defined)  zx_tmp_fi2d=cldt*JrNt
1183       CALL histwrite_phy(o_cldtjn, zx_tmp_fi2d)
1184       
1185       CALL histwrite_phy(o_cldq, cldq)
1186       IF (vars_defined)       zx_tmp_fi2d(1:klon) = flwp(1:klon)
1187       CALL histwrite_phy(o_lwp, zx_tmp_fi2d)
1188       IF (vars_defined)       zx_tmp_fi2d(1:klon) = fiwp(1:klon)
1189       CALL histwrite_phy(o_iwp, zx_tmp_fi2d)
1190       CALL histwrite_phy(o_ue, ue)
1191       CALL histwrite_phy(o_ve, ve)
1192       CALL histwrite_phy(o_uq, uq)
1193       CALL histwrite_phy(o_vq, vq)
1194       CALL histwrite_phy(o_uwat, uwat)
1195       CALL histwrite_phy(o_vwat, vwat)
1196       IF (iflag_con.GE.3) THEN ! sb
1197          CALL histwrite_phy(o_cape, cape)
1198          CALL histwrite_phy(o_pbase, ema_pcb)
1199          CALL histwrite_phy(o_ptop, ema_pct)
1200          CALL histwrite_phy(o_fbase, ema_cbmf)
1201          IF (iflag_con /= 30) THEN
1202             CALL histwrite_phy(o_plcl, plcl)
1203             CALL histwrite_phy(o_plfc, plfc)
1204             CALL histwrite_phy(o_wbeff, wbeff)
1205             CALL histwrite_phy(o_convoccur, convoccur)
1206          ENDIF
1207
1208          CALL histwrite_phy(o_cape_max, cape)
1209
1210          CALL histwrite_phy(o_upwd, upwd)
1211          CALL histwrite_phy(o_Ma, Ma)
1212          CALL histwrite_phy(o_dnwd, dnwd)
1213          CALL histwrite_phy(o_dnwd0, dnwd0)
1214          !! The part relative to the frequency of occurence of convection
1215          !! is now grouped with the part relative to thermals and shallow
1216          !! convection (output of the 3 fields: ftime_deepcv, ftime_th and
1217          !!  ftime_con).
1218          IF (vars_defined) THEN
1219             IF (iflag_thermals>=1)THEN
1220                zx_tmp_fi3d=-dnwd+dnwd0+upwd+fm_therm(:,1:klev)
1221             ELSE
1222                zx_tmp_fi3d=-dnwd+dnwd0+upwd
1223             ENDIF
1224          ENDIF
1225          CALL histwrite_phy(o_mc, zx_tmp_fi3d)
1226       ENDIF !iflag_con .GE. 3
1227       CALL histwrite_phy(o_prw, prw)
1228       CALL histwrite_phy(o_prlw, prlw)
1229       CALL histwrite_phy(o_prsw, prsw)
1230       CALL histwrite_phy(o_s_pblh, s_pblh)
1231       CALL histwrite_phy(o_s_pblt, s_pblt)
1232       CALL histwrite_phy(o_s_lcl, s_lcl)
1233       CALL histwrite_phy(o_s_therm, s_therm)
1234       !IM : Les champs suivants (s_capCL, s_oliqCL, s_cteiCL, s_trmb1, s_trmb2, s_trmb3) ne sont pas definis dans HBTM.F
1235       !       IF (o_s_capCL%flag(iff)<=lev_files(iff)) THEN
1236       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1237       !    $o_s_capCL%name,itau_w,s_capCL)
1238       !       ENDIF
1239       !       IF (o_s_oliqCL%flag(iff)<=lev_files(iff)) THEN
1240       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1241       !    $o_s_oliqCL%name,itau_w,s_oliqCL)
1242       !       ENDIF
1243       !       IF (o_s_cteiCL%flag(iff)<=lev_files(iff)) THEN
1244       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1245       !    $o_s_cteiCL%name,itau_w,s_cteiCL)
1246       !       ENDIF
1247       !       IF (o_s_trmb1%flag(iff)<=lev_files(iff)) THEN
1248       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1249       !    $o_s_trmb1%name,itau_w,s_trmb1)
1250       !       ENDIF
1251       !       IF (o_s_trmb2%flag(iff)<=lev_files(iff)) THEN
1252       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1253       !    $o_s_trmb2%name,itau_w,s_trmb2)
1254       !       ENDIF
1255       !       IF (o_s_trmb3%flag(iff)<=lev_files(iff)) THEN
1256       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1257       !    $o_s_trmb3%name,itau_w,s_trmb3)
1258       !       ENDIF
1259
1260#ifdef CPP_IOIPSL
1261#ifndef CPP_XIOS
1262  IF (.NOT.ok_all_xml) THEN
1263       ! ATTENTION, LES ANCIENS HISTWRITE ONT ETES CONSERVES EN ATTENDANT MIEUX:
1264       ! Champs interpolles sur des niveaux de pression
1265       DO iff=1, nfiles
1266          ll=0
1267          DO k=1, nlevSTD
1268             bb2=clevSTD(k)
1269             IF (bb2.EQ."850".OR.bb2.EQ."700".OR. &
1270                  bb2.EQ."500".OR.bb2.EQ."200".OR. &
1271                  bb2.EQ."100".OR. &
1272                  bb2.EQ."50".OR.bb2.EQ."10") THEN
1273
1274                ! a refaire correctement !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1275                ll=ll+1
1276                CALL histwrite_phy(o_uSTDlevs(ll),uwriteSTD(:,k,iff), iff)
1277                CALL histwrite_phy(o_vSTDlevs(ll),vwriteSTD(:,k,iff), iff)
1278                CALL histwrite_phy(o_wSTDlevs(ll),wwriteSTD(:,k,iff), iff)
1279                CALL histwrite_phy(o_zSTDlevs(ll),phiwriteSTD(:,k,iff), iff)
1280                CALL histwrite_phy(o_qSTDlevs(ll),qwriteSTD(:,k,iff), iff)
1281                CALL histwrite_phy(o_tSTDlevs(ll),twriteSTD(:,k,iff), iff)
1282
1283             ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
1284          ENDDO
1285       ENDDO
1286  ENDIF
1287#endif
1288#endif
1289#ifdef CPP_XIOS
1290  IF (ok_all_xml) THEN
1291!XIOS  CALL xios_get_field_attr("u850",default_value=missing_val)
1292!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1293          ll=0
1294          DO k=1, nlevSTD
1295             bb2=clevSTD(k)
1296             IF (bb2.EQ."850".OR.bb2.EQ."700".OR. &
1297                bb2.EQ."500".OR.bb2.EQ."200".OR. &
1298                bb2.EQ."100".OR. &
1299                bb2.EQ."50".OR.bb2.EQ."10") THEN
1300                ll=ll+1
1301                CALL histwrite_phy(o_uSTDlevs(ll),ulevSTD(:,k))
1302                CALL histwrite_phy(o_vSTDlevs(ll),vlevSTD(:,k))
1303                CALL histwrite_phy(o_wSTDlevs(ll),wlevSTD(:,k))
1304                CALL histwrite_phy(o_zSTDlevs(ll),philevSTD(:,k))
1305                CALL histwrite_phy(o_qSTDlevs(ll),qlevSTD(:,k))
1306                CALL histwrite_phy(o_tSTDlevs(ll),tlevSTD(:,k))
1307             ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
1308          ENDDO
1309  ENDIF
1310#endif
1311       IF (vars_defined) THEN
1312          DO i=1, klon
1313             IF (pctsrf(i,is_oce).GT.epsfra.OR. &
1314                  pctsrf(i,is_sic).GT.epsfra) THEN
1315                zx_tmp_fi2d(i) = (ftsol(i, is_oce) * pctsrf(i,is_oce)+ &
1316                     ftsol(i, is_sic) * pctsrf(i,is_sic))/ &
1317                     (pctsrf(i,is_oce)+pctsrf(i,is_sic))
1318             ELSE
1319                zx_tmp_fi2d(i) = 273.15
1320             ENDIF
1321          ENDDO
1322       ENDIF
1323       CALL histwrite_phy(o_t_oce_sic, zx_tmp_fi2d)
1324
1325       ! Couplage convection-couche limite
1326       IF (iflag_con.GE.3) THEN
1327          IF (iflag_coupl>=1) THEN
1328             CALL histwrite_phy(o_ale_bl, ale_bl)
1329             CALL histwrite_phy(o_alp_bl, alp_bl)
1330          ENDIF !iflag_coupl>=1
1331       ENDIF !(iflag_con.GE.3)
1332       ! Wakes
1333       IF (iflag_con.EQ.3) THEN
1334          CALL histwrite_phy(o_Mipsh, Mipsh)
1335          IF (iflag_wake>=1) THEN
1336             CALL histwrite_phy(o_ale_wk, ale_wake)
1337             CALL histwrite_phy(o_alp_wk, alp_wake)
1338             IF (iflag_pbl_split>=1) THEN
1339!!               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dtvdf_x(1:klon,1:klev)/pdtphys
1340!!               CALL histwrite_phy(o_dtvdf_x    ,zx_tmp_fi3d)
1341!!               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dtvdf_w(1:klon,1:klev)/pdtphys
1342!!               CALL histwrite_phy(o_dtvdf_w    ,zx_tmp_fi3d)
1343!!               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dqvdf_x(1:klon,1:klev)/pdtphys
1344!!               CALL histwrite_phy(o_dqvdf_x    ,zx_tmp_fi3d)
1345!!               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dqvdf_w(1:klon,1:klev)/pdtphys
1346!
1347               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf_x(1:klon,1:klev)/pdtphys
1348               CALL histwrite_phy(o_dtvdf_x    ,zx_tmp_fi3d)
1349               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf_w(1:klon,1:klev)/pdtphys
1350               CALL histwrite_phy(o_dtvdf_w    ,zx_tmp_fi3d)
1351               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf_x(1:klon,1:klev)/pdtphys
1352               CALL histwrite_phy(o_dqvdf_x    ,zx_tmp_fi3d)
1353               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf_w(1:klon,1:klev)/pdtphys
1354!
1355               CALL histwrite_phy(o_dqvdf_w    ,zx_tmp_fi3d)
1356       IF (vars_defined)  zx_tmp_fi2d(1:klon)=-1*sens_x(1:klon)
1357               CALL histwrite_phy(o_sens_x     ,zx_tmp_fi2d)
1358       IF (vars_defined)  zx_tmp_fi2d(1:klon)=-1*sens_w(1:klon)
1359               CALL histwrite_phy(o_sens_w     ,zx_tmp_fi2d)
1360               CALL histwrite_phy(o_flat_x     ,zxfluxlat_x)
1361               CALL histwrite_phy(o_flat_w     ,zxfluxlat_w)
1362          zx_tmp_fi2d=0.
1363          IF (vars_defined) THEN
1364             DO nsrf=1,nbsrf
1365                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:) &
1366                        +pctsrf(:,nsrf)*delta_tsurf(:,nsrf)
1367             ENDDO
1368          ENDIF
1369               CALL histwrite_phy(o_delta_tsurf,zx_tmp_fi2d)
1370               CALL histwrite_phy(o_cdragh_x   ,cdragh_x   )
1371               CALL histwrite_phy(o_cdragh_w   ,cdragh_w   )
1372               CALL histwrite_phy(o_cdragm_x   ,cdragm_x   )
1373               CALL histwrite_phy(o_cdragm_w   ,cdragm_w   )
1374               CALL histwrite_phy(o_kh         ,kh         )
1375               CALL histwrite_phy(o_kh_x       ,kh_x       )
1376               CALL histwrite_phy(o_kh_w       ,kh_w       )
1377             ENDIF   ! (iflag_pbl_split>=1)
1378             CALL histwrite_phy(o_ale, ale)
1379             CALL histwrite_phy(o_alp, alp)
1380             CALL histwrite_phy(o_cin, cin)
1381             CALL histwrite_phy(o_WAPE, wake_pe)
1382             CALL histwrite_phy(o_cv_gen, cv_gen)
1383             CALL histwrite_phy(o_wake_h, wake_h)
1384             CALL histwrite_phy(o_wake_dens, wake_dens)
1385             CALL histwrite_phy(o_wake_s, wake_s)
1386             CALL histwrite_phy(o_wake_deltat, wake_deltat)
1387             CALL histwrite_phy(o_wake_deltaq, wake_deltaq)
1388             CALL histwrite_phy(o_wake_omg, wake_omg)
1389             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_wake(1:klon,1:klev) &
1390                  /pdtphys
1391             CALL histwrite_phy(o_dtwak, zx_tmp_fi3d)
1392             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_wake(1:klon,1:klev)/pdtphys
1393             CALL histwrite_phy(o_dqwak, zx_tmp_fi3d)
1394             IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1395             CALL histwrite_phy(o_dqwak2d, zx_tmp_fi2d)
1396          ENDIF ! iflag_wake>=1
1397          CALL histwrite_phy(o_ftd, ftd)
1398          CALL histwrite_phy(o_fqd, fqd)
1399       ENDIF !(iflag_con.EQ.3)
1400       IF (iflag_con.EQ.3.OR.iflag_con.EQ.30) THEN
1401          ! sortie RomP convection descente insaturee iflag_con=30
1402          ! etendue a iflag_con=3 (jyg)
1403          CALL histwrite_phy(o_Vprecip, Vprecip)
1404          CALL histwrite_phy(o_qtaa, qtaa)
1405          CALL histwrite_phy(o_clwaa, clw)
1406          CALL histwrite_phy(o_wdtrainA, wdtrainA)
1407          CALL histwrite_phy(o_wdtrainS, wdtrainS)
1408          CALL histwrite_phy(o_wdtrainM, wdtrainM)
1409       ENDIF !(iflag_con.EQ.3.or.iflag_con.EQ.30)
1410!!! nrlmd le 10/04/2012
1411       IF (iflag_trig_bl>=1) THEN
1412          CALL histwrite_phy(o_n2, n2)
1413          CALL histwrite_phy(o_s2, s2)
1414          CALL histwrite_phy(o_proba_notrig, proba_notrig)
1415          CALL histwrite_phy(o_random_notrig, random_notrig)
1416          CALL histwrite_phy(o_ale_bl_stat, ale_bl_stat)
1417          CALL histwrite_phy(o_ale_bl_trig, ale_bl_trig)
1418       ENDIF  !(iflag_trig_bl>=1)
1419       IF (iflag_clos_bl>=1) THEN
1420          CALL histwrite_phy(o_alp_bl_det, alp_bl_det)
1421          CALL histwrite_phy(o_alp_bl_fluct_m, alp_bl_fluct_m)
1422          CALL histwrite_phy(o_alp_bl_fluct_tke,  &
1423               alp_bl_fluct_tke)
1424          CALL histwrite_phy(o_alp_bl_conv, alp_bl_conv)
1425          CALL histwrite_phy(o_alp_bl_stat, alp_bl_stat)
1426       ENDIF  !(iflag_clos_bl>=1)
1427!!! fin nrlmd le 10/04/2012
1428       ! Output of slab ocean variables
1429       IF (type_ocean=='slab ') THEN
1430          CALL histwrite_phy(o_slab_bils, slab_wfbils)
1431          IF (nslay.EQ.1) THEN
1432              zx_tmp_fi2d(:)=tslab(:,1)
1433              CALL histwrite_phy(o_tslab, zx_tmp_fi2d)
1434              zx_tmp_fi2d(:)=dt_qflux(:,1)
1435              CALL histwrite_phy(o_slab_qflux, zx_tmp_fi2d)
1436          ELSE
1437              CALL histwrite_phy(o_tslab, tslab(:,1:nslay))
1438              CALL histwrite_phy(o_slab_qflux, dt_qflux(:,1:nslay))
1439          ENDIF
1440          IF (version_ocean=='sicINT') THEN
1441              CALL histwrite_phy(o_slab_bilg, slab_bilg)
1442              CALL histwrite_phy(o_slab_tice, tice)
1443              CALL histwrite_phy(o_slab_sic, seaice)
1444          ENDIF
1445          IF (slab_gm) THEN
1446             CALL histwrite_phy(o_slab_gm, dt_gm(:,1:nslay))
1447          ENDIF
1448          IF (slab_hdiff) THEN
1449            IF (nslay.EQ.1) THEN
1450                zx_tmp_fi2d(:)=dt_hdiff(:,1)
1451                CALL histwrite_phy(o_slab_hdiff, zx_tmp_fi2d)
1452            ELSE
1453                CALL histwrite_phy(o_slab_hdiff, dt_hdiff(:,1:nslay))
1454            ENDIF
1455          ENDIF
1456          IF (slab_ekman.GT.0) THEN
1457            IF (nslay.EQ.1) THEN
1458                zx_tmp_fi2d(:)=dt_ekman(:,1)
1459                CALL histwrite_phy(o_slab_ekman, zx_tmp_fi2d)
1460            ELSE
1461                CALL histwrite_phy(o_slab_ekman, dt_ekman(:,1:nslay))
1462            ENDIF
1463          ENDIF
1464       ENDIF !type_ocean == force/slab
1465       CALL histwrite_phy(o_weakinv, weak_inversion)
1466       CALL histwrite_phy(o_dthmin, dthmin)
1467       CALL histwrite_phy(o_cldtau, cldtau)
1468       CALL histwrite_phy(o_cldemi, cldemi)
1469       CALL histwrite_phy(o_pr_con_l, pmflxr(:,1:klev))
1470       CALL histwrite_phy(o_pr_con_i, pmflxs(:,1:klev))
1471       CALL histwrite_phy(o_pr_lsc_l, prfl(:,1:klev))
1472       CALL histwrite_phy(o_pr_lsc_i, psfl(:,1:klev))
1473       CALL histwrite_phy(o_re, re)
1474       CALL histwrite_phy(o_fl, fl)
1475       IF (vars_defined) THEN
1476          DO i=1, klon
1477             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1478          ENDDO
1479       ENDIF
1480       CALL histwrite_phy(o_rh2m, zx_tmp_fi2d)
1481
1482!       IF (vars_defined) THEN
1483!          DO i=1, klon
1484!             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1485!          ENDDO
1486!       ENDIF
1487!       CALL histwrite_phy(o_rh2m_min, zx_tmp_fi2d)
1488
1489!       IF (vars_defined) THEN
1490!          DO i=1, klon
1491!             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1492!          ENDDO
1493!       ENDIF
1494!       CALL histwrite_phy(o_rh2m_max, zx_tmp_fi2d)
1495
1496       CALL histwrite_phy(o_qsat2m, qsat2m)
1497       CALL histwrite_phy(o_tpot, tpot)
1498       CALL histwrite_phy(o_tpote, tpote)
1499       IF (vars_defined) zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, is_ter)
1500       CALL histwrite_phy(o_SWnetOR,  zx_tmp_fi2d)
1501       CALL histwrite_phy(o_LWdownOR, sollwdown)
1502       CALL histwrite_phy(o_snowl, snow_lsc)
1503       CALL histwrite_phy(o_solldown, sollwdown)
1504       CALL histwrite_phy(o_dtsvdfo, d_ts(:,is_oce))
1505       CALL histwrite_phy(o_dtsvdft, d_ts(:,is_ter))
1506       CALL histwrite_phy(o_dtsvdfg,  d_ts(:,is_lic))
1507       CALL histwrite_phy(o_dtsvdfi, d_ts(:,is_sic))
1508       CALL histwrite_phy(o_z0m, z0m(:,nbsrf+1))
1509       CALL histwrite_phy(o_z0h, z0h(:,nbsrf+1))
1510
1511       ! od550 per species
1512!--OLIVIER
1513!This is warranted by treating INCA aerosols as offline aerosols
1514       IF (flag_aerosol.GT.0) THEN
1515          CALL histwrite_phy(o_od443aer, od443aer)
1516          CALL histwrite_phy(o_od550aer, od550aer)
1517          CALL histwrite_phy(o_od865aer, od865aer)
1518          CALL histwrite_phy(o_abs550aer, abs550aer)
1519          CALL histwrite_phy(o_od550lt1aer, od550lt1aer)
1520          CALL histwrite_phy(o_sconcso4, sconcso4)
1521          CALL histwrite_phy(o_sconcno3, sconcno3)
1522          CALL histwrite_phy(o_sconcoa, sconcoa)
1523          CALL histwrite_phy(o_sconcbc, sconcbc)
1524          CALL histwrite_phy(o_sconcss, sconcss)
1525          CALL histwrite_phy(o_sconcdust, sconcdust)
1526          CALL histwrite_phy(o_concso4, concso4)
1527          CALL histwrite_phy(o_concno3, concno3)
1528          CALL histwrite_phy(o_concoa, concoa)
1529          CALL histwrite_phy(o_concbc, concbc)
1530          CALL histwrite_phy(o_concss, concss)
1531          CALL histwrite_phy(o_concdust, concdust)
1532          CALL histwrite_phy(o_loadso4, loadso4)
1533          CALL histwrite_phy(o_loadoa, loadoa)
1534          CALL histwrite_phy(o_loadbc, loadbc)
1535          CALL histwrite_phy(o_loadss, loadss)
1536          CALL histwrite_phy(o_loaddust, loaddust)
1537          CALL histwrite_phy(o_loadno3, loadno3)
1538          CALL histwrite_phy(o_dryod550aer, dryod550aer)
1539          DO naero = 1, naero_tot-1
1540             CALL histwrite_phy(o_drytausumaero(naero),drytausum_aero(:,naero))
1541          END DO
1542       ENDIF
1543       !--STRAT AER
1544       IF (flag_aerosol.GT.0.OR.flag_aerosol_strat.GT.0) THEN
1545          DO naero = 1, naero_tot
1546             CALL histwrite_phy(o_tausumaero(naero),tausum_aero(:,2,naero))
1547          END DO
1548       ENDIF
1549       IF (flag_aerosol_strat.GT.0) THEN
1550          CALL histwrite_phy(o_tausumaero_lw,tausum_aero(:,6,id_STRAT_phy))
1551       ENDIF
1552
1553       CALL histwrite_phy(o_p_tropopause, p_tropopause)
1554       CALL histwrite_phy(o_t_tropopause, t_tropopause)
1555       CALL histwrite_phy(o_z_tropopause, z_tropopause)
1556
1557! ThL -- In the following, we assume read_climoz == 1
1558       IF (vars_defined) THEN
1559         zx_tmp_fi2d = 0.0    ! Computation for strato, added ThL
1560         DO k=1, klev
1561            zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + wo(:,k,1) * stratomask(:,k) * 1.e3
1562         END DO
1563       ENDIF
1564       CALL histwrite_phy(o_col_O3_strato, zx_tmp_fi2d) ! Added ThL
1565
1566       IF (vars_defined) THEN
1567         zx_tmp_fi2d = 0.0    ! Computation for tropo, added ThL
1568         DO k=1, klev
1569            zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + wo(:,k,1) * (1.0-stratomask(:,k)) * 1.e3
1570         END DO
1571       ENDIF
1572       CALL histwrite_phy(o_col_O3_tropo, zx_tmp_fi2d)   ! Added ThL
1573! end add ThL
1574
1575#ifdef CPP_StratAer
1576       IF (type_trac=='coag') THEN
1577          CALL histwrite_phy(o_R2SO4, R2SO4)
1578          CALL histwrite_phy(o_OCS_lifetime, OCS_lifetime)
1579          CALL histwrite_phy(o_SO2_lifetime, SO2_lifetime)
1580          CALL histwrite_phy(o_budg_3D_backgr_ocs,   budg_3D_backgr_ocs)
1581          CALL histwrite_phy(o_budg_3D_backgr_so2,   budg_3D_backgr_so2)
1582          CALL histwrite_phy(o_budg_3D_ocs_to_so2,   budg_3D_ocs_to_so2)
1583          CALL histwrite_phy(o_budg_3D_so2_to_h2so4, budg_3D_so2_to_h2so4)
1584          CALL histwrite_phy(o_budg_3D_nucl,         budg_3D_nucl)
1585          CALL histwrite_phy(o_budg_3D_cond_evap,    budg_3D_cond_evap)
1586          CALL histwrite_phy(o_budg_dep_dry_ocs,     budg_dep_dry_ocs)
1587          CALL histwrite_phy(o_budg_dep_wet_ocs,     budg_dep_wet_ocs)
1588          CALL histwrite_phy(o_budg_dep_dry_so2,     budg_dep_dry_so2)
1589          CALL histwrite_phy(o_budg_dep_wet_so2,     budg_dep_wet_so2)
1590          CALL histwrite_phy(o_budg_dep_dry_h2so4,   budg_dep_dry_h2so4)
1591          CALL histwrite_phy(o_budg_dep_wet_h2so4,   budg_dep_wet_h2so4)
1592          CALL histwrite_phy(o_budg_dep_dry_part,    budg_dep_dry_part)
1593          CALL histwrite_phy(o_budg_dep_wet_part,    budg_dep_wet_part)
1594          CALL histwrite_phy(o_budg_emi_ocs,         budg_emi_ocs)
1595          CALL histwrite_phy(o_budg_emi_so2,         budg_emi_so2)
1596          CALL histwrite_phy(o_budg_emi_h2so4,       budg_emi_h2so4)
1597          CALL histwrite_phy(o_budg_emi_part,        budg_emi_part)
1598          CALL histwrite_phy(o_budg_ocs_to_so2,      budg_ocs_to_so2)
1599          CALL histwrite_phy(o_budg_so2_to_h2so4,    budg_so2_to_h2so4)
1600          CALL histwrite_phy(o_budg_h2so4_to_part,   budg_h2so4_to_part)
1601          CALL histwrite_phy(o_budg_sed_part,        budg_sed_part)
1602          CALL histwrite_phy(o_surf_PM25_sulf, surf_PM25_sulf)
1603          CALL histwrite_phy(o_vsed_aer, vsed_aer)
1604          CALL histwrite_phy(o_f_r_wet, f_r_wet)
1605          CALL histwrite_phy(o_ext_strat_550, tau_strat_550)
1606          CALL histwrite_phy(o_ext_strat_1020, tau_strat_1020)
1607          CALL histwrite_phy(o_tau_strat_550, tausum_strat(:,1))
1608          CALL histwrite_phy(o_tau_strat_1020, tausum_strat(:,2))
1609       ENDIF
1610#endif
1611       !NL
1612       IF (ok_volcan .AND. ok_ade) THEN
1613          DO k=1, klev
1614             IF (vars_defined) zx_tmp_fi3d(:,k)=heat_volc(:,k)*swradcorr(:)
1615          ENDDO
1616          CALL histwrite_phy(o_heat_volc, zx_tmp_fi3d)
1617          DO k=1, klev
1618             IF (vars_defined) zx_tmp_fi3d(:,k)=cool_volc(:,k)
1619          ENDDO
1620          CALL histwrite_phy(o_cool_volc, zx_tmp_fi3d)
1621       ENDIF
1622       IF (ok_ade) THEN
1623          IF (vars_defined) zx_tmp_fi2d(:)=topswad_aero*swradcorr
1624          CALL histwrite_phy(o_topswad, zx_tmp_fi2d)
1625         
1626          IF (vars_defined) zx_tmp_fi2d(:)=topswad0_aero*swradcorr
1627          CALL histwrite_phy(o_topswad0, zx_tmp_fi2d)
1628                   
1629          IF (vars_defined) zx_tmp_fi2d(:)=solswad_aero*swradcorr
1630          CALL histwrite_phy(o_solswad, zx_tmp_fi2d)
1631                   
1632          IF (vars_defined) zx_tmp_fi2d(:)=solswad0_aero*swradcorr
1633          CALL histwrite_phy(o_solswad0, zx_tmp_fi2d)
1634         
1635          CALL histwrite_phy(o_toplwad, toplwad_aero)
1636          CALL histwrite_phy(o_toplwad0, toplwad0_aero)
1637          CALL histwrite_phy(o_sollwad, sollwad_aero)
1638          CALL histwrite_phy(o_sollwad0, sollwad0_aero)
1639          !====MS forcing diagnostics
1640          !ym warning : topsw_aero, solsw_aero, topsw0_aero, solsw0_aero are not defined by model
1641          !ym => init to 0 in radlwsw_m.F90 ztopsw_aero, zsolsw_aero, ztopsw0_aero, zsolsw0_aero
1642
1643          IF (vars_defined) zx_tmp_fi2d(:)=topsw_aero(:,1)*swradcorr(:)
1644          CALL histwrite_phy(o_swtoaas_nat,zx_tmp_fi2d)
1645          IF (vars_defined) zx_tmp_fi2d(:)=solsw_aero(:,1)*swradcorr(:)
1646          CALL histwrite_phy(o_swsrfas_nat,zx_tmp_fi2d)
1647          IF (vars_defined) zx_tmp_fi2d(:)=topsw0_aero(:,1)*swradcorr(:)
1648          CALL histwrite_phy(o_swtoacs_nat,zx_tmp_fi2d)
1649          IF (vars_defined) zx_tmp_fi2d(:)=solsw0_aero(:,1)*swradcorr(:)
1650          CALL histwrite_phy(o_swsrfcs_nat,zx_tmp_fi2d)
1651          !ant
1652          IF (vars_defined) zx_tmp_fi2d(:)=topsw_aero(:,2)*swradcorr(:)
1653          CALL histwrite_phy(o_swtoaas_ant,zx_tmp_fi2d)
1654          IF (vars_defined) zx_tmp_fi2d(:)=solsw_aero(:,2)*swradcorr(:)
1655          CALL histwrite_phy(o_swsrfas_ant,zx_tmp_fi2d)
1656          IF (vars_defined) zx_tmp_fi2d(:)=topsw0_aero(:,2)*swradcorr(:)
1657          CALL histwrite_phy(o_swtoacs_ant,zx_tmp_fi2d)
1658          IF (vars_defined) zx_tmp_fi2d(:)=solsw0_aero(:,2)*swradcorr(:)
1659          CALL histwrite_phy(o_swsrfcs_ant,zx_tmp_fi2d)
1660          !cf
1661          IF (.not. aerosol_couple) THEN
1662             IF (vars_defined) zx_tmp_fi2d(:)=topswcf_aero(:,1)*swradcorr(:)
1663             CALL histwrite_phy(o_swtoacf_nat,zx_tmp_fi2d)
1664             IF (vars_defined) zx_tmp_fi2d(:)=solswcf_aero(:,1)*swradcorr(:)
1665             CALL histwrite_phy(o_swsrfcf_nat,zx_tmp_fi2d)
1666             IF (vars_defined) zx_tmp_fi2d(:)=topswcf_aero(:,2)*swradcorr(:)
1667             CALL histwrite_phy(o_swtoacf_ant,zx_tmp_fi2d)
1668             IF (vars_defined) zx_tmp_fi2d(:)=solswcf_aero(:,2)*swradcorr(:)
1669             CALL histwrite_phy(o_swsrfcf_ant,zx_tmp_fi2d)
1670             IF (vars_defined) zx_tmp_fi2d(:)=topswcf_aero(:,3)*swradcorr(:)
1671             CALL histwrite_phy(o_swtoacf_zero,zx_tmp_fi2d)
1672             IF (vars_defined) zx_tmp_fi2d(:)=solswcf_aero(:,3)*swradcorr(:)
1673             CALL histwrite_phy(o_swsrfcf_zero,zx_tmp_fi2d)
1674          ENDIF
1675          !====MS forcing diagnostics
1676       ENDIF
1677       IF (ok_aie) THEN
1678          IF (vars_defined) zx_tmp_fi2d(:)= topswai_aero*swradcorr
1679          CALL histwrite_phy(o_topswai, zx_tmp_fi2d)
1680         
1681          IF (vars_defined) zx_tmp_fi2d(:)=toplwai_aero*swradcorr
1682          CALL histwrite_phy(o_toplwai, zx_tmp_fi2d)
1683         
1684          IF (vars_defined) zx_tmp_fi2d(:)=solswai_aero*swradcorr
1685          CALL histwrite_phy(o_solswai, zx_tmp_fi2d)
1686         
1687          IF (vars_defined) zx_tmp_fi2d(:)=sollwai_aero*swradcorr
1688          CALL histwrite_phy(o_sollwai, zx_tmp_fi2d)
1689       ENDIF
1690       IF (flag_aerosol.GT.0.AND.ok_cdnc) THEN
1691          CALL histwrite_phy(o_scdnc, scdnc)
1692          CALL histwrite_phy(o_cldncl, cldncl)
1693          CALL histwrite_phy(o_reffclws, reffclws)
1694          CALL histwrite_phy(o_reffclwc, reffclwc)
1695          CALL histwrite_phy(o_cldnvi, cldnvi)
1696          CALL histwrite_phy(o_lcc, lcc)
1697          CALL histwrite_phy(o_lcc3d, lcc3d)
1698          CALL histwrite_phy(o_lcc3dcon, lcc3dcon)
1699          CALL histwrite_phy(o_lcc3dstra, lcc3dstra)
1700          CALL histwrite_phy(o_icc3dcon, icc3dcon)
1701          CALL histwrite_phy(o_icc3dstra, icc3dstra)
1702          CALL histwrite_phy(o_cldicemxrat, zfice)
1703          IF (vars_defined) zx_tmp_fi3d(:,:)=1-zfice(:,:)
1704          CALL histwrite_phy(o_cldwatmxrat, zx_tmp_fi3d)
1705          CALL histwrite_phy(o_reffclwtop, reffclwtop)
1706       ENDIF
1707       ! Champs 3D:
1708       IF (ok_ade .OR. ok_aie) then
1709          CALL histwrite_phy(o_ec550aer, ec550aer)
1710       ENDIF
1711       CALL histwrite_phy(o_lwcon, flwc)
1712       CALL histwrite_phy(o_iwcon, fiwc)
1713       CALL histwrite_phy(o_temp, t_seri)
1714       CALL histwrite_phy(o_theta, theta)
1715       CALL histwrite_phy(o_ovapinit, qx(:,:,ivap))
1716       CALL histwrite_phy(o_ovap, q_seri)
1717       CALL histwrite_phy(o_oliq, ql_seri)
1718
1719       IF (vars_defined) zx_tmp_fi3d = ql_seri+qs_seri
1720       CALL histwrite_phy(o_ocond, zx_tmp_fi3d)
1721
1722       CALL histwrite_phy(o_geop, zphi)
1723       CALL histwrite_phy(o_vitu, u_seri)
1724       CALL histwrite_phy(o_vitv, v_seri)
1725       CALL histwrite_phy(o_vitw, omega)
1726       CALL histwrite_phy(o_pres, pplay)
1727       CALL histwrite_phy(o_paprs, paprs(:,1:klev))
1728       
1729       IF (vars_defined) zx_tmp_fi3d = zphi/RG
1730       CALL histwrite_phy(o_zfull,zx_tmp_fi3d)
1731
1732#ifdef CPP_XIOS
1733!solbnd begin
1734#ifdef CPP_RRTM
1735      IF (iflag_rrtm.EQ.1) THEN
1736       IF (vars_defined) THEN
1737        DO ISW=1, NSW
1738          zx_tmp_fi3dsp(:,ISW) = swdn(:,klevp1)*swradcorr(:)*RSUN(ISW)
1739        ENDDO
1740        CALL histwrite_phy(o_solbnd, zx_tmp_fi3dsp)
1741       ENDIF
1742      ENDIF
1743#endif
1744!solbnd end
1745#endif
1746
1747       IF (flag_aerosol_strat.EQ.2) THEN
1748         CALL histwrite_phy(o_stratomask, stratomask)
1749       ENDIF
1750     
1751       IF (vars_defined)  THEN
1752        zx_tmp_fi3d(:,1)= pphis(:)/RG
1753        DO k = 2, klev
1754         DO i = 1, klon
1755            zx_tmp_fi3d(i,k) = zphi(i,k-1)/RG + &
1756                          (zphi(i,k)-zphi(i,k-1))/RG * &
1757                          (paprs(i,k)-pplay(i,k-1))/(pplay(i,k)-pplay(i,k-1))
1758         ENDDO
1759        ENDDO
1760       ENDIF
1761       CALL histwrite_phy(o_zhalf, zx_tmp_fi3d)
1762       CALL histwrite_phy(o_rneb, cldfra)
1763       CALL histwrite_phy(o_rnebcon, rnebcon)
1764       CALL histwrite_phy(o_rnebls, rneb)
1765       CALL histwrite_phy(o_rneblsvol, rneblsvol)
1766       IF (vars_defined)  THEN
1767          DO k=1, klev
1768             DO i=1, klon
1769                zx_tmp_fi3d(i,k)=cldfra(i,k)*JrNt(i)
1770             ENDDO
1771          ENDDO
1772       ENDIF
1773       CALL histwrite_phy(o_rnebjn, zx_tmp_fi3d)
1774       CALL histwrite_phy(o_rhum, zx_rh)
1775       IF (iflag_ice_thermo .GT. 0) THEN
1776          IF (vars_defined) zx_tmp_fi3d = zx_rhl * 100.
1777          CALL histwrite_phy(o_rhl, zx_tmp_fi3d)
1778          IF (vars_defined) zx_tmp_fi3d = zx_rhi * 100.
1779          CALL histwrite_phy(o_rhi, zx_tmp_fi3d)
1780       ENDIF
1781
1782       
1783       IF (vars_defined) zx_tmp_fi3d = wo(:, :, 1) * dobson_u * 1e3 / zmasse / rmo3 * rmd
1784       CALL histwrite_phy(o_ozone, zx_tmp_fi3d)
1785
1786       IF (read_climoz == 2) THEN
1787         IF (vars_defined) zx_tmp_fi3d = wo(:, :, 2) * dobson_u * 1e3 / zmasse / rmo3 * rmd
1788         CALL histwrite_phy(o_ozone_light, zx_tmp_fi3d)
1789       ENDIF
1790
1791       CALL histwrite_phy(o_duphy, d_u)
1792
1793       CALL histwrite_phy(o_dtphy, d_t)
1794
1795       CALL histwrite_phy(o_dqphy,  d_qx(:,:,ivap))
1796       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,ivap),zmasse,zx_tmp_fi2d)
1797       CALL histwrite_phy(o_dqphy2d,  zx_tmp_fi2d)
1798
1799       CALL histwrite_phy(o_dqlphy,  d_qx(:,:,iliq))
1800       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,iliq),zmasse,zx_tmp_fi2d)
1801       CALL histwrite_phy(o_dqlphy2d,  zx_tmp_fi2d)
1802
1803       IF (nqo.EQ.3) THEN
1804       CALL histwrite_phy(o_dqsphy,  d_qx(:,:,isol))
1805       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,isol),zmasse,zx_tmp_fi2d)
1806       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
1807       ELSE
1808       zx_tmp_fi3d=0.0
1809       CALL histwrite_phy(o_dqsphy,  zx_tmp_fi3d)
1810       zx_tmp_fi2d=0.0
1811       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
1812       ENDIF
1813
1814       DO nsrf=1, nbsrf
1815          IF (vars_defined) zx_tmp_fi2d(1 : klon) = falb1( 1 : klon, nsrf)
1816          CALL histwrite_phy(o_albe_srf(nsrf), zx_tmp_fi2d)
1817          IF (vars_defined) zx_tmp_fi2d(1 : klon) = z0m( 1 : klon, nsrf)
1818          CALL histwrite_phy(o_z0m_srf(nsrf), zx_tmp_fi2d)
1819          IF (vars_defined) zx_tmp_fi2d(1 : klon) = z0h( 1 : klon, nsrf)
1820          CALL histwrite_phy(o_z0h_srf(nsrf), zx_tmp_fi2d)
1821          IF (vars_defined) zx_tmp_fi2d(1 : klon) = agesno( 1 : klon, nsrf)
1822          CALL histwrite_phy(o_ages_srf(nsrf), zx_tmp_fi2d)
1823          IF (vars_defined) zx_tmp_fi2d(1 : klon) = snow( 1 : klon, nsrf)
1824          CALL histwrite_phy(o_snow_srf(nsrf), zx_tmp_fi2d)
1825       ENDDO !nsrf=1, nbsrf
1826       CALL histwrite_phy(o_alb1, albsol1)
1827       CALL histwrite_phy(o_alb2, albsol2)
1828       !FH Sorties pour la couche limite
1829       IF (iflag_pbl>1) THEN
1830          zx_tmp_fi3d=0.
1831          IF (vars_defined) THEN
1832             DO nsrf=1,nbsrf
1833                DO k=1,klev
1834                   zx_tmp_fi3d(:,k)=zx_tmp_fi3d(:,k) &
1835                        +pctsrf(:,nsrf)*pbl_tke(:,k,nsrf)
1836                ENDDO
1837             ENDDO
1838          ENDIF
1839          CALL histwrite_phy(o_tke, zx_tmp_fi3d)
1840          CALL histwrite_phy(o_tke_max, zx_tmp_fi3d) 
1841
1842       ENDIF
1843
1844       CALL histwrite_phy(o_kz, coefh(:,:,is_ave))
1845
1846       CALL histwrite_phy(o_kz_max, coefh(:,:,is_ave))
1847
1848       CALL histwrite_phy(o_clwcon, clwcon0)
1849       CALL histwrite_phy(o_dtdyn, d_t_dyn)
1850
1851       CALL histwrite_phy(o_dqdyn, d_q_dyn)
1852
1853       CALL histwrite_phy(o_dqdyn2d,d_q_dyn2d)
1854
1855       CALL histwrite_phy(o_dqldyn, d_ql_dyn)
1856
1857       CALL histwrite_phy(o_dqldyn2d, d_ql_dyn2d)
1858
1859       CALL histwrite_phy(o_dqsdyn, d_qs_dyn)
1860
1861       CALL histwrite_phy(o_dqsdyn2d, d_qs_dyn2d)
1862
1863       CALL histwrite_phy(o_dudyn, d_u_dyn)
1864       CALL histwrite_phy(o_dvdyn, d_v_dyn)
1865
1866       IF (vars_defined) THEN
1867          zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys
1868       ENDIF
1869       CALL histwrite_phy(o_dtcon, zx_tmp_fi3d)
1870       IF (iflag_thermals.EQ.0) THEN
1871          IF (vars_defined) THEN
1872             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
1873                  d_t_ajsb(1:klon,1:klev)/pdtphys
1874          ENDIF
1875          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
1876       ELSE IF(iflag_thermals.GE.1.AND.iflag_wake.EQ.1) THEN
1877          IF (vars_defined) THEN
1878             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
1879                  d_t_ajs(1:klon,1:klev)/pdtphys + &
1880                  d_t_wake(1:klon,1:klev)/pdtphys
1881          ENDIF
1882          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
1883       ENDIF
1884       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_con(1:klon,1:klev)/pdtphys
1885       CALL histwrite_phy(o_ducon, zx_tmp_fi3d)
1886       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_con(1:klon,1:klev)/pdtphys
1887       CALL histwrite_phy(o_dvcon, zx_tmp_fi3d)
1888       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
1889       CALL histwrite_phy(o_dqcon, zx_tmp_fi3d)
1890       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1891       CALL histwrite_phy(o_dqcon2d, zx_tmp_fi2d)
1892
1893       IF (iflag_thermals.EQ.0) THEN
1894          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
1895          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
1896       ELSE IF (iflag_thermals.GE.1.AND.iflag_wake.EQ.1) THEN
1897          IF (vars_defined) THEN
1898             zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys + &
1899                  d_q_ajs(1:klon,1:klev)/pdtphys + &
1900                  d_q_wake(1:klon,1:klev)/pdtphys
1901          ENDIF
1902          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
1903       ENDIF
1904
1905       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lsc(1:klon,1:klev)/pdtphys
1906       CALL histwrite_phy(o_dtlsc, zx_tmp_fi3d)
1907       IF (vars_defined) zx_tmp_fi3d(1:klon, 1:klev)=(d_t_lsc(1:klon,1:klev)+ &
1908            d_t_eva(1:klon,1:klev))/pdtphys
1909       CALL histwrite_phy(o_dtlschr, zx_tmp_fi3d)
1910       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys
1911       CALL histwrite_phy(o_dqlsc, zx_tmp_fi3d)
1912       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1913       CALL histwrite_phy(o_dqlsc2d, zx_tmp_fi2d)
1914       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=beta_prec(1:klon,1:klev)
1915       CALL histwrite_phy(o_beta_prec, zx_tmp_fi3d)
1916!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1917       ! Sorties specifiques a la separation thermiques/non thermiques
1918       IF (iflag_thermals>=1) THEN
1919          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscth(1:klon,1:klev)/pdtphys
1920          CALL histwrite_phy(o_dtlscth, zx_tmp_fi3d)
1921          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscst(1:klon,1:klev)/pdtphys
1922          CALL histwrite_phy(o_dtlscst, zx_tmp_fi3d)
1923          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscth(1:klon,1:klev)/pdtphys
1924          CALL histwrite_phy(o_dqlscth, zx_tmp_fi3d)
1925          IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1926          CALL histwrite_phy(o_dqlscth2d, zx_tmp_fi2d)
1927          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscst(1:klon,1:klev)/pdtphys
1928          CALL histwrite_phy(o_dqlscst, zx_tmp_fi3d)
1929          IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1930          CALL histwrite_phy(o_dqlscst2d, zx_tmp_fi2d)
1931          CALL histwrite_phy(o_plulth, plul_th)
1932          CALL histwrite_phy(o_plulst, plul_st)
1933          IF (vars_defined) THEN
1934             DO i=1,klon
1935                zx_tmp_fi2d(1:klon)=lmax_th(:)
1936             ENDDO
1937          ENDIF
1938          CALL histwrite_phy(o_lmaxth, zx_tmp_fi2d)
1939          IF (vars_defined) THEN
1940             DO k=1,klev
1941                DO i=1,klon
1942                   IF (ptconvth(i,k)) THEN
1943                      zx_tmp_fi3d(i,k)=1.
1944                   ELSE
1945                      zx_tmp_fi3d(i,k)=0.
1946                   ENDIF
1947                ENDDO
1948             ENDDO
1949          ENDIF
1950          CALL histwrite_phy(o_ptconvth, zx_tmp_fi3d)
1951       ENDIF ! iflag_thermals>=1
1952!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1953       zpt_conv = 0.
1954       WHERE (ptconv) zpt_conv = 1.
1955       CALL histwrite_phy(o_ptconv, zpt_conv)
1956!!       IF (vars_defined)         zx_tmp_fi2d=float(itau_con)/float(itap)
1957!!       CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
1958       IF (vars_defined) THEN
1959          zpt_conv2d(:) = 0.
1960          DO k=1,klev
1961            WHERE (ptconv(:,k)) zpt_conv2d(:) = 1.
1962          ENDDO
1963       ENDIF
1964       CALL histwrite_phy(o_ftime_deepcv, zpt_conv2d)
1965       IF (vars_defined) THEN
1966          zx_tmp_fi2d(:) = 0.
1967          DO k=1,klev
1968            WHERE (ptconvth(:,k)) zx_tmp_fi2d(:) = 1.
1969          ENDDO
1970       ENDIF
1971       CALL histwrite_phy(o_ftime_th, zx_tmp_fi2d)
1972       IF (vars_defined) THEN
1973           zx_tmp_fi2d(:) = max(zx_tmp_fi2d(:),zpt_conv2d(:))
1974       ENDIF
1975       CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
1976!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1977       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf(1:klon,1:klev)/pdtphys
1978       CALL histwrite_phy(o_dtvdf, zx_tmp_fi3d)
1979       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_diss(1:klon,1:klev)/pdtphys
1980       CALL histwrite_phy(o_dtdis, zx_tmp_fi3d)
1981       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf(1:klon,1:klev)/pdtphys
1982       CALL histwrite_phy(o_dqvdf, zx_tmp_fi3d)
1983       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1984       CALL histwrite_phy(o_dqvdf2d, zx_tmp_fi2d)
1985       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_eva(1:klon,1:klev)/pdtphys
1986       CALL histwrite_phy(o_dteva, zx_tmp_fi3d)
1987       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_eva(1:klon,1:klev)/pdtphys
1988       CALL histwrite_phy(o_dqeva, zx_tmp_fi3d)
1989       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1990       CALL histwrite_phy(o_dqeva2d, zx_tmp_fi2d)
1991       CALL histwrite_phy(o_ratqs, ratqs)
1992       IF (vars_defined) THEN
1993          zx_tmp_fi3d(1:klon,1:klev)=d_t_ajs(1:klon,1:klev)/pdtphys - &
1994               d_t_ajsb(1:klon,1:klev)/pdtphys
1995       ENDIF
1996       CALL histwrite_phy(o_dtthe, zx_tmp_fi3d)
1997       IF (vars_defined) THEN
1998          zx_tmp_fi3d(1:klon,1:klev)=d_u_ajs(1:klon,1:klev)/pdtphys
1999       ENDIF
2000       CALL histwrite_phy(o_duthe, zx_tmp_fi3d)
2001       IF (vars_defined) THEN
2002          zx_tmp_fi3d(1:klon,1:klev)=d_v_ajs(1:klon,1:klev)/pdtphys
2003       ENDIF
2004       CALL histwrite_phy(o_dvthe, zx_tmp_fi3d)
2005
2006       IF (iflag_thermals>=1) THEN
2007          ! Pour l instant 0 a y reflichir pour les thermiques
2008          ! regroupe avec ftime_deepcv et ftime_con
2009          !!zx_tmp_fi2d=0.
2010          !!CALL histwrite_phy(o_ftime_th, zx_tmp_fi2d)
2011          CALL histwrite_phy(o_f_th, fm_therm)
2012          CALL histwrite_phy(o_e_th, entr_therm)
2013          CALL histwrite_phy(o_w_th, zw2)
2014          CALL histwrite_phy(o_q_th, zqasc)
2015          CALL histwrite_phy(o_a_th, fraca)
2016          CALL histwrite_phy(o_cloudth_sth, cloudth_sth)
2017          CALL histwrite_phy(o_cloudth_senv, cloudth_senv)
2018          CALL histwrite_phy(o_cloudth_sigmath, cloudth_sigmath)
2019          CALL histwrite_phy(o_cloudth_sigmaenv, cloudth_sigmaenv)
2020          CALL histwrite_phy(o_d_th, detr_therm)
2021          CALL histwrite_phy(o_f0_th, f0)
2022          CALL histwrite_phy(o_zmax_th, zmax_th)
2023          IF (vars_defined) THEN
2024             zx_tmp_fi3d(1:klon,1:klev)=d_q_ajs(1:klon,1:klev)/pdtphys - &
2025                  d_q_ajsb(1:klon,1:klev)/pdtphys
2026          ENDIF
2027          CALL histwrite_phy(o_dqthe, zx_tmp_fi3d)
2028          IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2029          CALL histwrite_phy(o_dqthe2d, zx_tmp_fi2d)
2030       ENDIF !iflag_thermals
2031       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ajsb(1:klon,1:klev)/pdtphys
2032       CALL histwrite_phy(o_dtajs, zx_tmp_fi3d)
2033       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_ajsb(1:klon,1:klev)/pdtphys
2034       CALL histwrite_phy(o_dqajs, zx_tmp_fi3d)
2035       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2036       CALL histwrite_phy(o_dqajs2d, zx_tmp_fi2d)
2037       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys
2038       CALL histwrite_phy(o_dtswr, zx_tmp_fi3d)
2039       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_sw0(1:klon,1:klev)/pdtphys
2040       CALL histwrite_phy(o_dtsw0, zx_tmp_fi3d)
2041       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lwr(1:klon,1:klev)/pdtphys
2042       CALL histwrite_phy(o_dtlwr, zx_tmp_fi3d)
2043       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lw0(1:klon,1:klev)/pdtphys
2044       CALL histwrite_phy(o_dtlw0, zx_tmp_fi3d)
2045       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ec(1:klon,1:klev)/pdtphys
2046       CALL histwrite_phy(o_dtec, zx_tmp_fi3d)
2047       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_vdf(1:klon,1:klev)/pdtphys
2048       CALL histwrite_phy(o_duvdf, zx_tmp_fi3d)
2049       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_vdf(1:klon,1:klev)/pdtphys
2050       CALL histwrite_phy(o_dvvdf, zx_tmp_fi3d)
2051       IF (ok_orodr) THEN
2052          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_oro(1:klon,1:klev)/pdtphys
2053          CALL histwrite_phy(o_duoro, zx_tmp_fi3d)
2054          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_oro(1:klon,1:klev)/pdtphys
2055          CALL histwrite_phy(o_dvoro, zx_tmp_fi3d)
2056          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_oro(1:klon,1:klev)/pdtphys
2057          CALL histwrite_phy(o_dtoro, zx_tmp_fi3d)
2058       ENDIF
2059       IF (ok_orolf) THEN
2060          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_lif(1:klon,1:klev)/pdtphys
2061          CALL histwrite_phy(o_dulif, zx_tmp_fi3d)
2062
2063          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_lif(1:klon,1:klev)/pdtphys
2064          CALL histwrite_phy(o_dvlif, zx_tmp_fi3d)
2065
2066          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lif(1:klon,1:klev)/pdtphys
2067          CALL histwrite_phy(o_dtlif, zx_tmp_fi3d)
2068       ENDIF
2069
2070       IF (ok_hines) THEN
2071          IF (vars_defined) zx_tmp_fi3d=du_gwd_hines/pdtphys
2072          CALL histwrite_phy(o_du_gwd_hines, zx_tmp_fi3d)
2073
2074          IF (vars_defined) zx_tmp_fi3d= dv_gwd_hines/pdtphys         
2075          CALL histwrite_phy(o_dv_gwd_hines, zx_tmp_fi3d)
2076         
2077          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_hin(1:klon,1:klev)/pdtphys
2078          CALL histwrite_phy(o_dthin, zx_tmp_fi3d)
2079          CALL histwrite_phy(o_ustr_gwd_hines, zustr_gwd_hines)
2080          CALL histwrite_phy(o_vstr_gwd_hines, zvstr_gwd_hines)
2081       ENDIF
2082
2083       IF (.not. ok_hines .and. ok_gwd_rando) THEN
2084          IF (vars_defined)  zx_tmp_fi3d=du_gwd_front / pdtphys
2085          CALL histwrite_phy(o_du_gwd_front, zx_tmp_fi3d)
2086         
2087          IF (vars_defined)  zx_tmp_fi3d=dv_gwd_front / pdtphys
2088          CALL histwrite_phy(o_dv_gwd_front, zx_tmp_fi3d)
2089         
2090          CALL histwrite_phy(o_ustr_gwd_front, zustr_gwd_front)
2091          CALL histwrite_phy(o_vstr_gwd_front, zvstr_gwd_front)
2092       ENDIF
2093
2094       IF (ok_gwd_rando) THEN
2095          IF (vars_defined)  zx_tmp_fi3d=du_gwd_rando / pdtphys
2096          CALL histwrite_phy(o_du_gwd_rando, zx_tmp_fi3d)
2097         
2098          IF (vars_defined)  zx_tmp_fi3d=dv_gwd_rando / pdtphys
2099          CALL histwrite_phy(o_dv_gwd_rando, zx_tmp_fi3d)
2100          CALL histwrite_phy(o_ustr_gwd_rando, zustr_gwd_rando)
2101          CALL histwrite_phy(o_vstr_gwd_rando, zvstr_gwd_rando)
2102          CALL histwrite_phy(o_east_gwstress, east_gwstress )
2103          CALL histwrite_phy(o_west_gwstress, west_gwstress )
2104       ENDIF
2105
2106       IF (ok_qch4) THEN
2107          IF (vars_defined) zx_tmp_fi3d=d_q_ch4 / pdtphys
2108          CALL histwrite_phy(o_dqch4, zx_tmp_fi3d)
2109       ENDIF
2110       
2111       IF (vars_defined) THEN
2112         DO k=1, klevp1
2113           zx_tmp_fi3d1(:,k)=swup(:,k)*swradcorr(:)
2114         ENDDO
2115       ENDIF
2116       
2117       CALL histwrite_phy(o_rsu, zx_tmp_fi3d1)
2118
2119
2120       IF (vars_defined) THEN
2121         DO k=1, klevp1
2122           zx_tmp_fi3d1(:,k)=swdn(:,k)*swradcorr(:)
2123         ENDDO
2124       ENDIF
2125       
2126       CALL histwrite_phy(o_rsd, zx_tmp_fi3d1)
2127
2128       IF (vars_defined) THEN
2129         DO k=1, klevp1
2130           zx_tmp_fi3d1(:,k)=swup0(:,k)*swradcorr(:)
2131         ENDDO
2132       ENDIF
2133       
2134       CALL histwrite_phy(o_rsucs, zx_tmp_fi3d1)
2135
2136       IF (vars_defined) THEN
2137         DO k=1, klevp1
2138           zx_tmp_fi3d1(:,k)=swupc0(:,k)*swradcorr(:)
2139         ENDDO
2140       ENDIF
2141       CALL histwrite_phy(o_rsucsaf, zx_tmp_fi3d1)
2142
2143       IF (vars_defined) THEN
2144         DO k=1, klevp1
2145           zx_tmp_fi3d1(:,k)=swdn0(:,k)*swradcorr(:)
2146         ENDDO
2147       ENDIF
2148       CALL histwrite_phy(o_rsdcs, zx_tmp_fi3d1)
2149
2150
2151       IF (vars_defined) THEN
2152         DO k=1, klevp1
2153           zx_tmp_fi3d1(:,k)=swdnc0(:,k)*swradcorr(:)
2154         ENDDO
2155       ENDIF
2156       CALL histwrite_phy(o_rsdcsaf, zx_tmp_fi3d1)
2157
2158       CALL histwrite_phy(o_rlu, lwup)
2159       CALL histwrite_phy(o_rld, lwdn)
2160       CALL histwrite_phy(o_rlucs, lwup0)
2161       CALL histwrite_phy(o_rldcs, lwdn0)
2162
2163       IF (vars_defined) THEN
2164          zx_tmp_fi3d(1:klon,1:klev)=d_t(1:klon,1:klev)+ &
2165               d_t_dyn(1:klon,1:klev)
2166       ENDIF
2167       CALL histwrite_phy(o_tnt, zx_tmp_fi3d)
2168
2169       IF (vars_defined) THEN
2170          zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys + &
2171               d_t_lwr(1:klon,1:klev)/pdtphys
2172       ENDIF
2173       CALL histwrite_phy(o_tntr, zx_tmp_fi3d)
2174       IF (vars_defined) THEN
2175          zx_tmp_fi3d(1:klon,1:klev)= (d_t_lsc(1:klon,1:klev)+ &
2176               d_t_eva(1:klon,1:klev)+ &
2177               d_t_vdf(1:klon,1:klev))/pdtphys
2178       ENDIF
2179       CALL histwrite_phy(o_tntscpbl, zx_tmp_fi3d)
2180       IF (vars_defined) THEN
2181          zx_tmp_fi3d(1:klon,1:klev)=d_qx(1:klon,1:klev,ivap)+ &
2182               d_q_dyn(1:klon,1:klev)
2183       ENDIF
2184       CALL histwrite_phy(o_tnhus, zx_tmp_fi3d)
2185       IF (vars_defined) THEN
2186          zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys+ &
2187               d_q_eva(1:klon,1:klev)/pdtphys
2188       ENDIF
2189       CALL histwrite_phy(o_tnhusscpbl, zx_tmp_fi3d)
2190       CALL histwrite_phy(o_evu, coefm(:,:,is_ave))
2191       IF (vars_defined) THEN
2192          zx_tmp_fi3d(1:klon,1:klev)=q_seri(1:klon,1:klev)+ &
2193               ql_seri(1:klon,1:klev)
2194       ENDIF
2195       CALL histwrite_phy(o_h2o, zx_tmp_fi3d)
2196       IF (iflag_con >= 3) THEN
2197          IF (vars_defined) THEN
2198             zx_tmp_fi3d(1:klon,1:klev)=-1 * (dnwd(1:klon,1:klev)+ &
2199                  dnwd0(1:klon,1:klev))
2200          ENDIF
2201          CALL histwrite_phy(o_mcd, zx_tmp_fi3d)
2202          IF (vars_defined) THEN
2203             zx_tmp_fi3d(1:klon,1:klev)=upwd(1:klon,1:klev) + &
2204                  dnwd(1:klon,1:klev)+ dnwd0(1:klon,1:klev)
2205          ENDIF
2206          CALL histwrite_phy(o_dmc, zx_tmp_fi3d)
2207       ELSE IF (iflag_con == 2) THEN
2208          CALL histwrite_phy(o_mcd,  pmfd)
2209          IF (vars_defined) zx_tmp_fi3d = pmfu + pmfd
2210          CALL histwrite_phy(o_dmc,  zx_tmp_fi3d)
2211       ENDIF
2212       CALL histwrite_phy(o_ref_liq, ref_liq)
2213       CALL histwrite_phy(o_ref_ice, ref_ice)
2214!
2215       IF (ok_4xCO2atm) THEN
2216          IF (vars_defined) zx_tmp_fi2d(:) = swupp(:,klevp1)*swradcorr(:)
2217          CALL histwrite_phy(o_rsut4co2, zx_tmp_fi2d)
2218          IF (vars_defined) zx_tmp_fi2d(:) = lwupp(:,klevp1)
2219          CALL histwrite_phy(o_rlut4co2, zx_tmp_fi2d)
2220          IF (vars_defined) zx_tmp_fi2d(:) = swup0p(:,klevp1)*swradcorr(:)
2221          CALL histwrite_phy(o_rsutcs4co2, zx_tmp_fi2d)
2222          IF (vars_defined) zx_tmp_fi2d(:) = lwup0p(:,klevp1)
2223          CALL histwrite_phy(o_rlutcs4co2, zx_tmp_fi2d)
2224          IF (vars_defined) THEN
2225            DO k=1, klevp1
2226              zx_tmp_fi3d1(:,k)=swupp(:,k)*swradcorr(:)
2227            ENDDO
2228          ENDIF
2229          CALL histwrite_phy(o_rsu4co2, zx_tmp_fi3d1)
2230          IF (vars_defined) THEN
2231            DO k=1, klevp1
2232              zx_tmp_fi3d1(:,k)=swup0p(:,k)*swradcorr(:)
2233            ENDDO
2234          ENDIF
2235          CALL histwrite_phy(o_rsucs4co2, zx_tmp_fi3d1)
2236          IF (vars_defined) THEN
2237            DO k=1, klevp1
2238              zx_tmp_fi3d1(:,k)=swdnp(:,k)*swradcorr(:)
2239            ENDDO
2240          ENDIF
2241          CALL histwrite_phy(o_rsd4co2, zx_tmp_fi3d1)
2242          IF (vars_defined) THEN
2243            DO k=1, klevp1
2244              zx_tmp_fi3d1(:,k)=swdn0p(:,k)*swradcorr(:)
2245            ENDDO
2246          ENDIF
2247          CALL histwrite_phy(o_rsdcs4co2, zx_tmp_fi3d1)
2248          CALL histwrite_phy(o_rlu4co2, lwupp)
2249          CALL histwrite_phy(o_rlucs4co2, lwup0p)
2250          CALL histwrite_phy(o_rld4co2, lwdnp)
2251          CALL histwrite_phy(o_rldcs4co2, lwdn0p)
2252       ENDIF !ok_4xCO2atm
2253!!!!!!!!!!!! Sorties niveaux de pression NMC !!!!!!!!!!!!!!!!!!!!
2254#ifdef CPP_IOIPSL
2255#ifndef CPP_XIOS
2256  IF (.NOT.ok_all_xml) THEN
2257       ! ATTENTION, LES ANCIENS HISTWRITE ONT ETES CONSERVES EN ATTENDANT MIEUX:
2258       ! Champs interpolles sur des niveaux de pression
2259       DO iff=7, nfiles-1 !--OB: here we deal with files 7,8,9
2260
2261          CALL histwrite_phy(o_tnondef,tnondef(:,:,iff-6),iff)
2262          CALL histwrite_phy(o_ta,twriteSTD(:,:,iff-6),iff)
2263          CALL histwrite_phy(o_zg,phiwriteSTD(:,:,iff-6),iff)
2264          CALL histwrite_phy(o_hus,qwriteSTD(:,:,iff-6),iff)
2265          CALL histwrite_phy(o_hur,rhwriteSTD(:,:,iff-6),iff)
2266          CALL histwrite_phy(o_ua,uwriteSTD(:,:,iff-6),iff)
2267          CALL histwrite_phy(o_va,vwriteSTD(:,:,iff-6),iff)
2268          CALL histwrite_phy(o_wap,wwriteSTD(:,:,iff-6),iff)
2269          IF (vars_defined) THEN
2270             DO k=1, nlevSTD
2271                DO i=1, klon
2272                   IF (tnondef(i,k,iff-6).NE.missing_val) THEN
2273                      IF (freq_outNMC(iff-6).LT.0) THEN
2274                         freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
2275                      ELSE
2276                         freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
2277                      ENDIF
2278                      zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,iff-6))/freq_moyNMC(iff-6)
2279                   ELSE
2280                      zx_tmp_fi3d_STD(i,k) = missing_val
2281                   ENDIF
2282                ENDDO
2283             ENDDO
2284          ENDIF
2285          CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD,iff)
2286          IF (vars_defined) THEN
2287             DO k=1, nlevSTD
2288                DO i=1, klon
2289                   IF (O3sumSTD(i,k,iff-6).NE.missing_val) THEN
2290                      zx_tmp_fi3d_STD(i,k) = O3sumSTD(i,k,iff-6) * 1.e+9
2291                   ELSE
2292                      zx_tmp_fi3d_STD(i,k) = missing_val
2293                   ENDIF
2294                ENDDO
2295             ENDDO !k=1, nlevSTD
2296          ENDIF
2297          CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD,iff)
2298          IF (read_climoz == 2) THEN
2299             IF (vars_defined) THEN
2300                DO k=1, nlevSTD
2301                   DO i=1, klon
2302                      IF (O3daysumSTD(i,k,iff-6).NE.missing_val) THEN
2303                         zx_tmp_fi3d_STD(i,k) = O3daysumSTD(i,k,iff-6) * 1.e+9
2304                      ELSE
2305                         zx_tmp_fi3d_STD(i,k) = missing_val
2306                      ENDIF
2307                   ENDDO
2308                ENDDO !k=1, nlevSTD
2309             ENDIF
2310             CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD,iff)
2311          endif
2312          CALL histwrite_phy(o_uxv,uvsumSTD(:,:,iff-6),iff)
2313          CALL histwrite_phy(o_vxq,vqsumSTD(:,:,iff-6),iff)
2314          CALL histwrite_phy(o_vxT,vTsumSTD(:,:,iff-6),iff)
2315          CALL histwrite_phy(o_wxq,wqsumSTD(:,:,iff-6),iff)
2316          CALL histwrite_phy(o_vxphi,vphisumSTD(:,:,iff-6),iff)
2317          CALL histwrite_phy(o_wxT,wTsumSTD(:,:,iff-6),iff)
2318          CALL histwrite_phy(o_uxu,u2sumSTD(:,:,iff-6),iff)
2319          CALL histwrite_phy(o_vxv,v2sumSTD(:,:,iff-6),iff)
2320          CALL histwrite_phy(o_TxT,T2sumSTD(:,:,iff-6),iff)
2321       ENDDO !nfiles
2322  ENDIF
2323#endif
2324#endif
2325#ifdef CPP_XIOS
2326  IF (ok_all_xml) THEN
2327!      DO iff=7, nfiles
2328
2329!         CALL histwrite_phy(o_tnondef,tnondef(:,:,3))
2330          CALL histwrite_phy(o_ta,tlevSTD(:,:))
2331          CALL histwrite_phy(o_zg,philevSTD(:,:))
2332          CALL histwrite_phy(o_hus,qlevSTD(:,:))
2333          CALL histwrite_phy(o_hur,rhlevSTD(:,:))
2334          CALL histwrite_phy(o_ua,ulevSTD(:,:))
2335          CALL histwrite_phy(o_va,vlevSTD(:,:))
2336          CALL histwrite_phy(o_wap,wlevSTD(:,:))
2337!         IF (vars_defined) THEN
2338!            DO k=1, nlevSTD
2339!               DO i=1, klon
2340!                  IF (tnondef(i,k,3).NE.missing_val) THEN
2341!                     IF (freq_outNMC(iff-6).LT.0) THEN
2342!                        freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
2343!                     ELSE
2344!                        freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
2345!                     ENDIF
2346!                     zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,3))/freq_moyNMC(iff-6)
2347!                  ELSE
2348!                     zx_tmp_fi3d_STD(i,k) = missing_val
2349!                  ENDIF
2350!               ENDDO
2351!            ENDDO
2352!         ENDIF
2353!         CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD)
2354          IF (vars_defined) THEN
2355             DO k=1, nlevSTD
2356                DO i=1, klon
2357                   IF (O3STD(i,k).NE.missing_val) THEN
2358                      zx_tmp_fi3d_STD(i,k) = O3STD(i,k) * 1.e+9
2359                   ELSE
2360                      zx_tmp_fi3d_STD(i,k) = missing_val
2361                   ENDIF
2362                ENDDO
2363             ENDDO !k=1, nlevSTD
2364          ENDIF
2365          CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD)
2366          IF (read_climoz == 2) THEN
2367             IF (vars_defined) THEN
2368                DO k=1, nlevSTD
2369                   DO i=1, klon
2370                      IF (O3daySTD(i,k).NE.missing_val) THEN
2371                         zx_tmp_fi3d_STD(i,k) = O3daySTD(i,k) * 1.e+9
2372                      ELSE
2373                         zx_tmp_fi3d_STD(i,k) = missing_val
2374                      ENDIF
2375                   ENDDO
2376                ENDDO !k=1, nlevSTD
2377             ENDIF
2378             CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD)
2379          ENDIF
2380          CALL histwrite_phy(o_uxv,uvSTD(:,:))
2381          CALL histwrite_phy(o_vxq,vqSTD(:,:))
2382          CALL histwrite_phy(o_vxT,vTSTD(:,:))
2383          CALL histwrite_phy(o_wxq,wqSTD(:,:))
2384          CALL histwrite_phy(o_vxphi,vphiSTD(:,:))
2385          CALL histwrite_phy(o_wxT,wTSTD(:,:))
2386          CALL histwrite_phy(o_uxu,u2STD(:,:))
2387          CALL histwrite_phy(o_vxv,v2STD(:,:))
2388          CALL histwrite_phy(o_TxT,T2STD(:,:))
2389!      ENDDO !nfiles
2390  ENDIF
2391#endif
2392!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2393       IF (iflag_phytrac == 1 ) then
2394         IF (type_trac == 'lmdz' .OR. type_trac == 'coag') THEN
2395           DO iq=nqo+1, nqtot
2396             !--3D fields
2397             CALL histwrite_phy(o_trac(iq-nqo), tr_seri(:,:,iq-nqo))
2398             CALL histwrite_phy(o_dtr_vdf(iq-nqo),d_tr_cl(:,:,iq-nqo))
2399             CALL histwrite_phy(o_dtr_the(iq-nqo),d_tr_th(:,:,iq-nqo))
2400             CALL histwrite_phy(o_dtr_con(iq-nqo),d_tr_cv(:,:,iq-nqo))
2401             CALL histwrite_phy(o_dtr_lessi_impa(iq-nqo),d_tr_lessi_impa(:,:,iq-nqo))
2402             CALL histwrite_phy(o_dtr_lessi_nucl(iq-nqo),d_tr_lessi_nucl(:,:,iq-nqo))
2403             CALL histwrite_phy(o_dtr_insc(iq-nqo),d_tr_insc(:,:,iq-nqo))
2404             CALL histwrite_phy(o_dtr_bcscav(iq-nqo),d_tr_bcscav(:,:,iq-nqo))
2405             CALL histwrite_phy(o_dtr_evapls(iq-nqo),d_tr_evapls(:,:,iq-nqo))
2406             CALL histwrite_phy(o_dtr_ls(iq-nqo),d_tr_ls(:,:,iq-nqo))
2407             CALL histwrite_phy(o_dtr_trsp(iq-nqo),d_tr_trsp(:,:,iq-nqo))
2408             CALL histwrite_phy(o_dtr_sscav(iq-nqo),d_tr_sscav(:,:,iq-nqo))
2409             CALL histwrite_phy(o_dtr_sat(iq-nqo),d_tr_sat(:,:,iq-nqo))
2410             CALL histwrite_phy(o_dtr_uscav(iq-nqo),d_tr_uscav(:,:,iq-nqo))
2411            !--2D fields
2412             CALL histwrite_phy(o_dtr_dry(iq-nqo), flux_tr_dry(:,iq-nqo))
2413             zx_tmp_fi2d=0.
2414             IF (vars_defined) THEN
2415                DO k=1,klev
2416                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,iq-nqo)
2417                ENDDO
2418             ENDIF
2419             CALL histwrite_phy(o_trac_cum(iq-nqo), zx_tmp_fi2d)
2420           ENDDO !--iq
2421         ENDIF   !--type_trac
2422!
2423         IF (type_trac == 'co2i') THEN
2424           DO iq=nqo+1, nqtot
2425             !--3D fields
2426             CALL histwrite_phy(o_trac(iq-nqo), tr_seri(:,:,iq-nqo))
2427             CALL histwrite_phy(o_dtr_vdf(iq-nqo),d_tr_cl(:,:,iq-nqo))
2428             CALL histwrite_phy(o_dtr_the(iq-nqo),d_tr_th(:,:,iq-nqo))
2429             CALL histwrite_phy(o_dtr_con(iq-nqo),d_tr_cv(:,:,iq-nqo))
2430             !--2D fields
2431             !--CO2 burden
2432             zx_tmp_fi2d=0.
2433             IF (vars_defined) THEN
2434                DO k=1,klev
2435                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,iq-nqo)
2436                ENDDO
2437             ENDIF
2438             CALL histwrite_phy(o_trac_cum(iq-nqo), zx_tmp_fi2d)
2439           ENDDO !--iq
2440           !--CO2 net fluxes
2441           CALL histwrite_phy(o_flx_co2_land,  fco2_land)
2442           CALL histwrite_phy(o_flx_co2_ocean, fco2_ocean)
2443           CALL histwrite_phy(o_flx_co2_ocean_cor, fco2_ocean_cor)
2444           CALL histwrite_phy(o_flx_co2_land_cor, fco2_land_cor)
2445           CALL histwrite_phy(o_flx_co2_ff,    fco2_ff)
2446           CALL histwrite_phy(o_flx_co2_bb,    fco2_bb)
2447         ENDIF !--type_trac co2i
2448
2449         IF (type_trac == 'inco') THEN
2450           nqup = nqo+1
2451           DO iq=nqo+1, nqup
2452             !--3D fields
2453             CALL histwrite_phy(o_trac(iq-nqo), tr_seri(:,:,iq-nqo))
2454             CALL histwrite_phy(o_dtr_vdf(iq-nqo),d_tr_cl(:,:,iq-nqo))
2455             CALL histwrite_phy(o_dtr_the(iq-nqo),d_tr_th(:,:,iq-nqo))
2456             CALL histwrite_phy(o_dtr_con(iq-nqo),d_tr_cv(:,:,iq-nqo))
2457             !--2D fields
2458             !--CO2 burden
2459             zx_tmp_fi2d=0.
2460             IF (vars_defined) THEN
2461                DO k=1,klev
2462                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,iq-nqo)
2463                ENDDO
2464             ENDIF
2465             CALL histwrite_phy(o_trac_cum(iq-nqo), zx_tmp_fi2d)
2466           ENDDO !--iq
2467           !--CO2 net fluxes
2468           CALL histwrite_phy(o_flx_co2_land,  fco2_land)
2469           CALL histwrite_phy(o_flx_co2_ocean, fco2_ocean)
2470           CALL histwrite_phy(o_flx_co2_ocean_cor, fco2_ocean_cor)
2471           CALL histwrite_phy(o_flx_co2_land_cor, fco2_land_cor)
2472           CALL histwrite_phy(o_flx_co2_ff,    fco2_ff)
2473           CALL histwrite_phy(o_flx_co2_bb,    fco2_bb)
2474         ENDIF !--type_trac inco
2475
2476       ENDIF   !(iflag_phytrac==1)
2477
2478       if (activate_ocean_skin >= 1) then
2479          CALL histwrite_phy(o_delta_sst, delta_sst)
2480          CALL histwrite_phy(o_delta_sal, delta_sal)
2481          CALL histwrite_phy(o_ds_ns, ds_ns)
2482          CALL histwrite_phy(o_dt_ns, dt_ns)
2483          CALL histwrite_phy(o_dter, dter)
2484          CALL histwrite_phy(o_dser, dser)
2485          CALL histwrite_phy(o_tkt, tkt)
2486          CALL histwrite_phy(o_tks, tks)
2487          CALL histwrite_phy(o_taur, taur)
2488          CALL histwrite_phy(o_sss, sss)
2489       end if
2490
2491       IF (.NOT.vars_defined) THEN
2492          !$OMP MASTER
2493#ifndef CPP_IOIPSL_NO_OUTPUT
2494          DO iff=1,nfiles
2495             IF (clef_files(iff)) THEN
2496                CALL histend(nid_files(iff))
2497                ndex2d = 0
2498                ndex3d = 0
2499             ENDIF ! clef_files
2500          ENDDO !  iff
2501#endif
2502#ifdef CPP_XIOS
2503          !On finalise l'initialisation:
2504          CALL wxios_closedef()
2505#endif
2506          !$OMP END MASTER
2507          !$OMP BARRIER
2508          vars_defined = .TRUE.
2509
2510       ENDIF !--.NOT.vars_defined
2511
2512    ENDDO
2513
2514    IF (vars_defined) THEN
2515       ! On synchronise les fichiers pour IOIPSL
2516#ifndef CPP_IOIPSL_NO_OUTPUT
2517       !$OMP MASTER
2518       DO iff=1,nfiles
2519          IF (ok_sync .AND. clef_files(iff)) THEN
2520             CALL histsync(nid_files(iff))
2521          ENDIF
2522       END DO
2523       !$OMP END MASTER
2524#endif
2525    ENDIF
2526
2527  END SUBROUTINE phys_output_write
2528
2529END MODULE phys_output_write_mod
Note: See TracBrowser for help on using the repository browser.