source: LMDZ6/branches/cirrus/libf/phylmd/phys_output_write_mod.F90 @ 4951

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

New version of condensation and ice supersaturation in LSCP.
Multiple changes troughout the code (in particular, two new water phase tracers).

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