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

Last change on this file since 5491 was 5491, checked in by jyg, 5 hours ago

New outputs :

+ coef_clos = [conv mass flux given by Alp closure]/[conv mass flux given by Emanuel scheme closure]
+ coef_clos_eff = effective coefficient used in the convective scheme.

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