source: LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/phys_output_write_mod.F90 @ 6057

Last change on this file since 6057 was 5813, checked in by musat, 5 months ago

Ajout iflag_tropo pour choisir le calcul de la tropopause
pour l'ozone:
iflag_tropo=0 : tropopause "dynamique"=> valeur par defaut pour

retrocompatibilite

iflag_tropo=1 : tropopause "lapse-rate" comme pour les aerosols

stratospheriques ==> valeur recommandee

Ionela Musat

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