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

Last change on this file since 5134 was 5134, checked in by abarral, 3 months ago

Replace academic.h, alpale.h, comdissip.h, comdissipn.h, comdissnew.h by modules
Remove unused clesph0.h

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