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

Last change on this file since 4947 was 4887, checked in by oboucher, 7 months ago

Correction of another small bug on the water mass fixer (not activated)
Introduction of a water_budget diagnostic that quantifies non-conservation from the LMDZ physics

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