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

Last change on this file since 5005 was 4998, checked in by lebasn, 3 months ago

StratAer?: new diags (sulfate SAD and MMR)

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