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

Last change on this file since 5639 was 5639, checked in by aborella, 6 weeks ago

Small bugfixes contrails RF

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