source: LMDZ6/branches/contrails/libf/phylmd/phys_output_write_mod.F90 @ 5779

Last change on this file since 5779 was 5779, checked in by aborella, 4 months ago

Added autoconversion for contrails + various small modifications for residual bugs

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