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

Last change on this file since 5659 was 5655, checked in by idelkadi, 2 months ago

Output of direct radiative fluxes when running LMDZ with Ecrad

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