source: LMDZ6/branches/LMDZ-COSP/libf/phylmd/phys_output_write_mod.F90 @ 5898

Last change on this file since 5898 was 5890, checked in by acozic, 2 weeks ago

fix a bug on writing of dyntropo (need to be write only if adjust_tropopause = true & read_climoz > 0)

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