source: LMDZ6/branches/Amaury_dev/libf/phylmd/phys_output_write_mod.F90 @ 5119

Last change on this file since 5119 was 5117, checked in by abarral, 4 months ago

rename modules properly lmdz_*
move some unused files to obsolete/
(lint) uppercase fortran keywords

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