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

Last change on this file since 5490 was 5486, checked in by evignon, 2 weeks ago

inclusion d'un diagnostique de la sublimation de la glace sur les landice
pour la conservation de l'eau

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