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

Last change on this file since 5748 was 5709, checked in by fcheruy, 3 weeks ago

to work with xios et output spectral clear sky flux

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