source: LMDZ6/branches/LMDZISOdevSN/libf/phylmd/phys_output_write_mod.F90 @ 6114

Last change on this file since 6114 was 6114, checked in by Sebastien Nguyen, 4 weeks ago

-10 routines avant test post pbl_surface

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