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

Last change on this file since 5329 was 5202, checked in by Laurent Fairhead, 8 weeks ago

Updating cirrus branch to trunk revision 5171

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