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

Last change on this file since 4819 was 4819, checked in by evignon, 3 months ago

modifications du commit precedent a la suite de l'atelier nuages

  • 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: 116.9 KB
Line 
1!
2! $Id: phys_output_write_mod.F90 4819 2024-02-14 19:55:10Z 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_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_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_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, &
313         l_mixmin,l_mix, tke_dissip, &
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, &
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, 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         qrain_lsc, qsnow_lsc, 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       ENDIF
900
901       IF (vars_defined) THEN
902         zx_tmp_fi2d = topsw*swradcorr
903       ENDIF
904       CALL histwrite_phy(o_tops, zx_tmp_fi2d)
905
906       IF (vars_defined) THEN
907         zx_tmp_fi2d = topsw0*swradcorr
908       ENDIF
909       CALL histwrite_phy(o_tops0, zx_tmp_fi2d)
910
911       CALL histwrite_phy(o_topl, toplw)
912       CALL histwrite_phy(o_topl0, toplw0)
913
914! offline
915       IF (using_xios) THEN
916         IF (offline) THEN
917
918            coefh_stok(:,1)      = cdragh(:)
919            coefh_stok(:,2:klev) = coefh(:,2:klev, is_ave)
920         
921            CALL histwrite_phy('upwd_stok', upwd)
922            CALL histwrite_phy('t_stok', t)
923            CALL histwrite_phy('fm_th_stok', fm_therm(:,1:klev))
924            CALL histwrite_phy('en_th_stok', entr_therm)
925            CALL histwrite_phy('da_stok',da )
926            CALL histwrite_phy('mp_stok',mp )
927            CALL histwrite_phy('dnwd_stok', dnwd)
928            CALL histwrite_phy('wght_stok', wght_cvfd)
929            CALL histwrite_phy('coefh_stok', coefh_stok)
930            CALL histwrite_phy('yu1_stok', u1)
931            CALL histwrite_phy('yv1_stok', v1)
932
933            DO k=1,klev
934               IF (k<10) THEN
935                  WRITE(nvar,'(i1)') k
936               ELSE IF (k<100) THEN
937                  WRITE(nvar,'(i2)') k
938               ELSE
939                  WRITE(nvar,'(i3)') k
940               ENDIF
941               nvar='phi_lev'//trim(nvar)
942               CALL histwrite_phy(nvar,phi(:,:,k))
943            ENDDO
944         
945         ENDIF
946       ENDIF
947       
948       IF (vars_defined) THEN
949          zx_tmp_fi2d(:) = swup(:,klevp1)*swradcorr(:)
950       ENDIF
951       CALL histwrite_phy(o_SWupTOA, zx_tmp_fi2d)
952
953       IF (vars_defined) THEN
954          zx_tmp_fi2d(:) = swup0(:,klevp1)*swradcorr(:)
955       ENDIF
956       CALL histwrite_phy(o_SWupTOAclr, zx_tmp_fi2d)
957
958       IF (type_trac/='inca' .OR. config_inca=='aeNP') THEN
959          IF (vars_defined) THEN
960             zx_tmp_fi2d(:) = swupc0(:,klevp1)*swradcorr(:)
961          ENDIF
962          CALL histwrite_phy(o_SWupTOAcleanclr, zx_tmp_fi2d)
963       ENDIF
964
965       IF (vars_defined) THEN
966          zx_tmp_fi2d(:) = swdn(:,klevp1)*swradcorr(:)
967       ENDIF
968       CALL histwrite_phy(o_SWdnTOA, zx_tmp_fi2d)
969
970       IF (vars_defined) THEN
971          zx_tmp_fi2d(:) = swdn0(:,klevp1)*swradcorr(:)
972       ENDIF
973       CALL histwrite_phy(o_SWdnTOAclr, zx_tmp_fi2d)
974
975       IF (vars_defined) THEN
976          zx_tmp_fi2d(:) = topsw(:)*swradcorr(:)-toplw(:)
977       ENDIF
978       CALL histwrite_phy(o_nettop, zx_tmp_fi2d)
979       
980       IF (vars_defined) THEN
981          zx_tmp_fi2d = SWup200*swradcorr
982       ENDIF
983       CALL histwrite_phy(o_SWup200, zx_tmp_fi2d)
984       
985       IF (vars_defined) THEN
986          zx_tmp_fi2d = SWup200clr*swradcorr
987       ENDIF
988       CALL histwrite_phy(o_SWup200clr, zx_tmp_fi2d)
989       
990       IF (vars_defined) THEN
991          zx_tmp_fi2d = SWdn200*swradcorr
992       ENDIF
993       CALL histwrite_phy(o_SWdn200, zx_tmp_fi2d)
994       
995       
996       IF (vars_defined) THEN
997          zx_tmp_fi2d = SWdn200clr*swradcorr
998       ENDIF
999       CALL histwrite_phy(o_SWdn200clr, zx_tmp_fi2d)
1000       
1001       CALL histwrite_phy(o_LWup200, LWup200)
1002       CALL histwrite_phy(o_LWup200clr, LWup200clr)
1003       CALL histwrite_phy(o_LWdn200, LWdn200)
1004       CALL histwrite_phy(o_LWdn200clr, LWdn200clr)
1005       
1006       IF (vars_defined) THEN
1007          zx_tmp_fi2d = solsw*swradcorr
1008       ENDIF
1009       CALL histwrite_phy(o_sols, zx_tmp_fi2d)
1010       
1011       IF (vars_defined) THEN
1012          zx_tmp_fi2d = solsw0*swradcorr
1013       ENDIF
1014       CALL histwrite_phy(o_sols0, zx_tmp_fi2d)
1015       CALL histwrite_phy(o_soll, sollw)
1016       CALL histwrite_phy(o_soll0, sollw0)
1017       CALL histwrite_phy(o_radsol, radsol)
1018
1019       IF (vars_defined) THEN
1020          zx_tmp_fi2d(:) = swup(:,1)*swradcorr(:)
1021       ENDIF
1022       CALL histwrite_phy(o_SWupSFC, zx_tmp_fi2d)
1023
1024       IF (vars_defined) THEN
1025          zx_tmp_fi2d(:) = swup0(:,1)*swradcorr(:)
1026       ENDIF
1027       CALL histwrite_phy(o_SWupSFCclr, zx_tmp_fi2d)
1028
1029       IF (type_trac/='inca' .OR. config_inca=='aeNP') THEN
1030          IF (vars_defined) THEN
1031             zx_tmp_fi2d(:) = swupc0(:,1)*swradcorr(:)
1032          ENDIF
1033          CALL histwrite_phy(o_SWupSFCcleanclr, zx_tmp_fi2d)
1034       ENDIF
1035
1036       IF (vars_defined) THEN
1037          zx_tmp_fi2d(:) = swdn(:,1)*swradcorr(:)
1038       ENDIF
1039       CALL histwrite_phy(o_SWdnSFC, zx_tmp_fi2d)
1040
1041       IF (vars_defined) THEN
1042          zx_tmp_fi2d(:) = swdn0(:,1)*swradcorr(:)
1043       ENDIF
1044       CALL histwrite_phy(o_SWdnSFCclr, zx_tmp_fi2d)
1045
1046       IF (type_trac/='inca' .OR. config_inca=='aeNP') THEN
1047          IF (vars_defined) THEN
1048             zx_tmp_fi2d(:) = swdnc0(:,1)*swradcorr(:)
1049          ENDIF
1050          CALL histwrite_phy(o_SWdnSFCcleanclr, zx_tmp_fi2d)
1051       ENDIF
1052
1053       CALL histwrite_phy(o_fdiffSWdnSFC, solswfdiff)
1054
1055       IF (vars_defined) THEN
1056          zx_tmp_fi2d(:)=sollwdown(:)-sollw(:)
1057       ENDIF
1058       CALL histwrite_phy(o_LWupSFC, zx_tmp_fi2d)
1059       CALL histwrite_phy(o_LWdnSFC, sollwdown)
1060
1061       IF (vars_defined) THEN
1062          sollwdownclr(1:klon) = -1.*lwdn0(1:klon,1)
1063          zx_tmp_fi2d(1:klon)=sollwdownclr(1:klon)-sollw0(1:klon)
1064       ENDIF
1065       CALL histwrite_phy(o_LWupSFCclr, zx_tmp_fi2d)
1066       CALL histwrite_phy(o_LWdnSFCclr, sollwdownclr)
1067
1068       IF (type_trac/='inca' .OR. config_inca=='aeNP') THEN
1069          IF (vars_defined) THEN
1070             zx_tmp_fi2d(:) = lwupc0(:,klevp1)
1071          ENDIF
1072          CALL histwrite_phy(o_LWupTOAcleanclr, zx_tmp_fi2d)
1073       ENDIF
1074
1075       IF (type_trac/='inca' .OR. config_inca=='aeNP') THEN
1076          IF (vars_defined) THEN
1077             zx_tmp_fi2d(:) = -1.*lwdnc0(:,1)
1078          ENDIF
1079          CALL histwrite_phy(o_LWdnSFCcleanclr, zx_tmp_fi2d)
1080       ENDIF
1081
1082!AI 08 2023 Ecrad 3Deffect
1083#ifdef CPP_ECRAD
1084     CALL histwrite_phy(o_cloud_cover_sw, cloud_cover_sw)
1085     IF (ok_3Deffect) THEN
1086       CALL histwrite_phy(o_cloud_cover_sw_s2, cloud_cover_sw_s2)
1087       IF (vars_defined) THEN
1088          zx_tmp_fi2d = solsw_s2*swradcorr
1089       ENDIF
1090       CALL histwrite_phy(o_sols_s2, zx_tmp_fi2d)
1091       IF (vars_defined) THEN
1092          zx_tmp_fi2d = solsw0_s2*swradcorr
1093       ENDIF
1094       CALL histwrite_phy(o_sols0_s2, zx_tmp_fi2d)
1095       CALL histwrite_phy(o_soll_s2, sollw_s2)
1096       CALL histwrite_phy(o_soll0_s2, sollw0_s2)
1097       IF (vars_defined) THEN
1098         zx_tmp_fi2d = topsw_s2*swradcorr
1099       ENDIF
1100       CALL histwrite_phy(o_tops_s2, zx_tmp_fi2d)
1101
1102       IF (vars_defined) THEN
1103         zx_tmp_fi2d = topsw0_s2*swradcorr
1104       ENDIF
1105       CALL histwrite_phy(o_tops0_s2, zx_tmp_fi2d)
1106
1107       CALL histwrite_phy(o_topl_s2, toplw_s2)
1108       CALL histwrite_phy(o_topl0_s2, toplw0_s2)
1109
1110       IF (vars_defined) THEN
1111          zx_tmp_fi2d(:) = swup_s2(:,klevp1)*swradcorr(:)
1112       ENDIF
1113       CALL histwrite_phy(o_SWupTOA_s2, zx_tmp_fi2d)
1114
1115       IF (vars_defined) THEN
1116          zx_tmp_fi2d(:) = swup0_s2(:,klevp1)*swradcorr(:)
1117       ENDIF
1118       CALL histwrite_phy(o_SWupTOAclr_s2, zx_tmp_fi2d)
1119
1120       IF (vars_defined) THEN
1121          zx_tmp_fi2d(:) = swdn_s2(:,klevp1)*swradcorr(:)
1122       ENDIF
1123       CALL histwrite_phy(o_SWdnTOA_s2, zx_tmp_fi2d)
1124
1125       IF (vars_defined) THEN
1126          zx_tmp_fi2d(:) = swdn0_s2(:,klevp1)*swradcorr(:)
1127       ENDIF
1128       CALL histwrite_phy(o_SWdnTOAclr_s2, zx_tmp_fi2d)
1129
1130       IF (vars_defined) THEN
1131          zx_tmp_fi2d(:)=sollwdown_s2(:)-sollw_s2(:)
1132       ENDIF
1133       CALL histwrite_phy(o_LWupSFC_s2, zx_tmp_fi2d)
1134       CALL histwrite_phy(o_LWdnSFC_s2, sollwdown_s2)
1135
1136       IF (vars_defined) THEN
1137          sollwdownclr_s2(1:klon) = -1.*lwdn0_s2(1:klon,1)
1138          zx_tmp_fi2d(1:klon)=sollwdownclr_s2(1:klon)-sollw0_s2(1:klon)
1139       ENDIF
1140       CALL histwrite_phy(o_LWupSFCclr_s2, zx_tmp_fi2d)
1141       CALL histwrite_phy(o_LWdnSFCclr_s2, sollwdownclr_s2)
1142
1143       IF (vars_defined) THEN
1144          zx_tmp_fi2d(:) = swup_s2(:,1)*swradcorr(:)
1145       ENDIF
1146       CALL histwrite_phy(o_SWupSFC_s2, zx_tmp_fi2d)
1147
1148       IF (vars_defined) THEN
1149          zx_tmp_fi2d(:) = swup0_s2(:,1)*swradcorr(:)
1150       ENDIF
1151       CALL histwrite_phy(o_SWupSFCclr_s2, zx_tmp_fi2d)
1152
1153       IF (vars_defined) THEN
1154          zx_tmp_fi2d(:) = swdn_s2(:,1)*swradcorr(:)
1155       ENDIF
1156       CALL histwrite_phy(o_SWdnSFC_s2, zx_tmp_fi2d)
1157
1158       IF (vars_defined) THEN
1159          zx_tmp_fi2d(:) = swdn0_s2(:,1)*swradcorr(:)
1160       ENDIF
1161       CALL histwrite_phy(o_SWdnSFCclr_s2, zx_tmp_fi2d)
1162
1163       IF (vars_defined) THEN
1164         DO k=1, klevp1
1165           zx_tmp_fi3d1(:,k)=swup_s2(:,k)*swradcorr(:)
1166         ENDDO
1167       ENDIF
1168       CALL histwrite_phy(o_rsu_s2, zx_tmp_fi3d1)
1169
1170       IF (vars_defined) THEN
1171         DO k=1, klevp1
1172           zx_tmp_fi3d1(:,k)=swdn_s2(:,k)*swradcorr(:)
1173         ENDDO
1174       ENDIF
1175       CALL histwrite_phy(o_rsd_s2, zx_tmp_fi3d1)
1176
1177       IF (vars_defined) THEN
1178         DO k=1, klevp1
1179           zx_tmp_fi3d1(:,k)=swup0_s2(:,k)*swradcorr(:)
1180         ENDDO
1181       ENDIF
1182       CALL histwrite_phy(o_rsucs_s2, zx_tmp_fi3d1)
1183
1184       IF (vars_defined) THEN
1185         DO k=1, klevp1
1186           zx_tmp_fi3d1(:,k)=swdn0_s2(:,k)*swradcorr(:)
1187         ENDDO
1188       ENDIF
1189       CALL histwrite_phy(o_rsdcs_s2, zx_tmp_fi3d1)
1190
1191       CALL histwrite_phy(o_rlu_s2, lwup_s2)
1192       CALL histwrite_phy(o_rld_s2, lwdn_s2)
1193       CALL histwrite_phy(o_rlucs_s2, lwup0_s2)
1194       CALL histwrite_phy(o_rldcs_s2, lwdn0_s2)
1195    ENDIF !ok_3Deffect
1196#endif       
1197
1198       CALL histwrite_phy(o_bils, bils)
1199       CALL histwrite_phy(o_bils_diss, bils_diss)
1200       CALL histwrite_phy(o_bils_ec, bils_ec)
1201       CALL histwrite_phy(o_bils_ech, bils_ech)
1202       CALL histwrite_phy(o_bils_tke, bils_tke)
1203       CALL histwrite_phy(o_bils_kinetic, bils_kinetic)
1204       CALL histwrite_phy(o_bils_latent, bils_latent)
1205       CALL histwrite_phy(o_bils_enthalp, bils_enthalp)
1206
1207       IF (vars_defined) THEN
1208          zx_tmp_fi2d(1:klon)=-1*sens(1:klon)
1209       ENDIF
1210       CALL histwrite_phy(o_sens, zx_tmp_fi2d)
1211       CALL histwrite_phy(o_fder, fder)
1212       CALL histwrite_phy(o_ffonte, zxffonte)
1213       CALL histwrite_phy(o_fqcalving, zxfqcalving)
1214       CALL histwrite_phy(o_fqfonte, zxfqfonte)
1215       IF (vars_defined) THEN
1216          zx_tmp_fi2d(1:klon)=(zxfqfonte(1:klon)+rain_fall(1:klon))*pctsrf(1:klon,is_lic)
1217       ENDIF
1218       CALL histwrite_phy(o_mrroli, zx_tmp_fi2d)
1219       CALL histwrite_phy(o_runofflic, zxrunofflic)
1220       IF (vars_defined) THEN
1221          zx_tmp_fi2d=0.
1222          DO nsrf=1,nbsrf
1223             zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxu(:,1,nsrf)
1224          ENDDO
1225       ENDIF
1226       CALL histwrite_phy(o_taux, zx_tmp_fi2d)
1227
1228       IF (vars_defined) THEN
1229          zx_tmp_fi2d=0.
1230          DO nsrf=1,nbsrf
1231             zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxv(:,1,nsrf)
1232          ENDDO
1233       ENDIF
1234       CALL histwrite_phy(o_tauy, zx_tmp_fi2d)
1235
1236       DO nsrf = 1, nbsrf
1237
1238          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)*100.
1239          CALL histwrite_phy(o_pourc_srf(nsrf), zx_tmp_fi2d)
1240          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)
1241          CALL histwrite_phy(o_fract_srf(nsrf), zx_tmp_fi2d)
1242          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = fluxu( 1 : klon, 1, nsrf)
1243          CALL histwrite_phy(o_taux_srf(nsrf), zx_tmp_fi2d)
1244          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = fluxv( 1 : klon, 1, nsrf)
1245          CALL histwrite_phy(o_tauy_srf(nsrf), zx_tmp_fi2d)
1246          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = ftsol( 1 : klon, nsrf)
1247          CALL histwrite_phy(o_tsol_srf(nsrf), zx_tmp_fi2d)
1248          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = evap_pot( 1 : klon, nsrf)
1249          CALL histwrite_phy(o_evappot_srf(nsrf), zx_tmp_fi2d)
1250          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = ustar(1 : klon, nsrf)
1251          CALL histwrite_phy(o_ustar_srf(nsrf), zx_tmp_fi2d)
1252          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = u10m(1 : klon, nsrf)
1253          CALL histwrite_phy(o_u10m_srf(nsrf), zx_tmp_fi2d)
1254          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = v10m(1 : klon, nsrf)
1255          CALL histwrite_phy(o_v10m_srf(nsrf), zx_tmp_fi2d)
1256          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = t2m(1 : klon, nsrf)
1257          CALL histwrite_phy(o_t2m_srf(nsrf), zx_tmp_fi2d)
1258          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = fevap(1 : klon, nsrf)
1259          CALL histwrite_phy(o_evap_srf(nsrf), zx_tmp_fi2d)
1260          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = fluxt( 1 : klon, 1, nsrf)
1261          CALL histwrite_phy(o_sens_srf(nsrf), zx_tmp_fi2d)
1262          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = fluxlat( 1 : klon, nsrf)
1263          CALL histwrite_phy(o_lat_srf(nsrf), zx_tmp_fi2d)
1264          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = fsollw( 1 : klon, nsrf)
1265          CALL histwrite_phy(o_flw_srf(nsrf), zx_tmp_fi2d)
1266          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, nsrf)
1267          CALL histwrite_phy(o_fsw_srf(nsrf), zx_tmp_fi2d)
1268          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = wfbils( 1 : klon, nsrf)
1269          CALL histwrite_phy(o_wbils_srf(nsrf), zx_tmp_fi2d)
1270          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = (fevap(1:klon,nsrf)-(rain_fall(1:klon)+snow_fall(1:klon)))*pctsrf(1:klon,nsrf)
1271          CALL histwrite_phy(o_wbilo_srf(nsrf), zx_tmp_fi2d)
1272          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = wfevap( 1 : klon, nsrf)
1273          CALL histwrite_phy(o_wevap_srf(nsrf), zx_tmp_fi2d)
1274          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = rain_fall(1:klon)*pctsrf(1:klon,nsrf)
1275          CALL histwrite_phy(o_wrain_srf(nsrf), zx_tmp_fi2d)
1276          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = snow_fall(1:klon)*pctsrf(1:klon,nsrf)
1277          CALL histwrite_phy(o_wsnow_srf(nsrf), zx_tmp_fi2d)
1278
1279          IF (iflag_pbl > 1) THEN
1280             CALL histwrite_phy(o_tke_srf(nsrf),  pbl_tke(:,1:klev,nsrf))
1281             !CALL histwrite_phy(o_l_mix(nsrf),  l_mix(:,1:klev,nsrf))
1282             CALL histwrite_phy(o_l_mixmin(nsrf),  l_mixmin(:,1:klev,nsrf))
1283             CALL histwrite_phy(o_tke_max_srf(nsrf),  pbl_tke(:,1:klev,nsrf))
1284          ENDIF
1285!jyg<
1286          IF (iflag_pbl > 1 .AND. iflag_wake>=1  .AND. iflag_pbl_split >=1) THEN
1287             CALL histwrite_phy(o_dltpbltke_srf(nsrf), wake_delta_pbl_TKE(:,1:klev,nsrf))
1288          ENDIF
1289!>jyg
1290!          IF (iflag_pbl > 1 .AND. ifl_pbltree  >=1 ) THEN
1291!       CALL histwrite_phy(o_treedrg_srf(nsrf), treedrg(:,1:klev,nsrf))
1292!            ENDIF
1293
1294       ENDDO
1295       
1296               
1297        IF (iflag_pbl > 1) THEN
1298          zx_tmp_fi3d=0.
1299          IF (vars_defined) THEN
1300             DO nsrf=1,nbsrf
1301                DO k=1,klev
1302                   zx_tmp_fi3d(:,k)=zx_tmp_fi3d(:,k) &
1303                        +pctsrf(:,nsrf)*tke_dissip(:,k,nsrf)
1304                ENDDO
1305             ENDDO
1306          ENDIF
1307         
1308          CALL histwrite_phy(o_tke_dissip, zx_tmp_fi3d)   
1309       ENDIF
1310
1311       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_liq_o(1 : klon, 1)
1312       CALL histwrite_phy(o_sens_prec_liq_oce, zx_tmp_fi2d)       
1313       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_liq_o(1 : klon, 2)
1314       CALL histwrite_phy(o_sens_prec_liq_sic, zx_tmp_fi2d)       
1315       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_sol_o(1 : klon, 1)
1316       CALL histwrite_phy(o_sens_prec_sol_oce, zx_tmp_fi2d)       
1317       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_sol_o(1 : klon, 2)
1318       CALL histwrite_phy(o_sens_prec_sol_sic, zx_tmp_fi2d)       
1319
1320       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_liq_o(1 : klon, 1)
1321       CALL histwrite_phy(o_lat_prec_liq_oce, zx_tmp_fi2d)       
1322       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_liq_o(1 : klon, 2)
1323       CALL histwrite_phy(o_lat_prec_liq_sic, zx_tmp_fi2d)       
1324       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_sol_o(1 : klon, 1)
1325       CALL histwrite_phy(o_lat_prec_sol_oce, zx_tmp_fi2d)       
1326       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_sol_o(1 : klon, 2)
1327       CALL histwrite_phy(o_lat_prec_sol_sic, zx_tmp_fi2d)       
1328
1329       DO nsrf=1,nbsrf+1
1330          CALL histwrite_phy(o_wstar(nsrf), wstar(1 : klon, nsrf))
1331       ENDDO
1332
1333       CALL histwrite_phy(o_cdrm, cdragm)
1334       CALL histwrite_phy(o_cdrh, cdragh)
1335       CALL histwrite_phy(o_cldl, cldl)
1336       CALL histwrite_phy(o_cldm, cldm)
1337       CALL histwrite_phy(o_cldh, cldh)
1338       CALL histwrite_phy(o_cldt, cldt)
1339       CALL histwrite_phy(o_JrNt, JrNt)
1340       
1341       IF (vars_defined)  zx_tmp_fi2d=cldl*JrNt     
1342       CALL histwrite_phy(o_cldljn, zx_tmp_fi2d)
1343       
1344       IF (vars_defined)  zx_tmp_fi2d=cldm*JrNt     
1345       CALL histwrite_phy(o_cldmjn, zx_tmp_fi2d)
1346       
1347       IF (vars_defined)  zx_tmp_fi2d=cldh*JrNt
1348       CALL histwrite_phy(o_cldhjn, zx_tmp_fi2d)
1349       
1350       IF (vars_defined)  zx_tmp_fi2d=cldt*JrNt
1351       CALL histwrite_phy(o_cldtjn, zx_tmp_fi2d)
1352       
1353       CALL histwrite_phy(o_cldq, cldq)
1354       IF (vars_defined)       zx_tmp_fi2d(1:klon) = flwp(1:klon)
1355       CALL histwrite_phy(o_lwp, zx_tmp_fi2d)
1356       IF (vars_defined)       zx_tmp_fi2d(1:klon) = fiwp(1:klon)
1357       CALL histwrite_phy(o_iwp, zx_tmp_fi2d)
1358       CALL histwrite_phy(o_ue, ue)
1359       CALL histwrite_phy(o_ve, ve)
1360       CALL histwrite_phy(o_uq, uq)
1361       CALL histwrite_phy(o_vq, vq)
1362       CALL histwrite_phy(o_uwat, uwat)
1363       CALL histwrite_phy(o_vwat, vwat)
1364       IF (iflag_con.GE.3) THEN ! sb
1365          CALL histwrite_phy(o_cape, cape)
1366          CALL histwrite_phy(o_pbase, ema_pcb)
1367          CALL histwrite_phy(o_ptop, ema_pct)
1368          CALL histwrite_phy(o_fbase, ema_cbmf)
1369          IF (iflag_con /= 30) THEN
1370             CALL histwrite_phy(o_plcl, plcl)
1371             CALL histwrite_phy(o_plfc, plfc)
1372             CALL histwrite_phy(o_wbeff, wbeff)
1373             CALL histwrite_phy(o_convoccur, convoccur)
1374          ENDIF
1375
1376          CALL histwrite_phy(o_cape_max, cape)
1377
1378          CALL histwrite_phy(o_upwd, upwd)
1379          CALL histwrite_phy(o_Ma, Ma)
1380          CALL histwrite_phy(o_dnwd, dnwd)
1381          CALL histwrite_phy(o_dnwd0, dnwd0)
1382          !! The part relative to the frequency of occurence of convection
1383          !! is now grouped with the part relative to thermals and shallow
1384          !! convection (output of the 3 fields: ftime_deepcv, ftime_th and
1385          !!  ftime_con).
1386          IF (vars_defined) THEN
1387             IF (iflag_thermals>=1)THEN
1388                zx_tmp_fi3d=dnwd+dnwd0+upwd+fm_therm(:,1:klev)
1389             ELSE
1390                zx_tmp_fi3d=dnwd+dnwd0+upwd
1391             ENDIF
1392          ENDIF
1393          CALL histwrite_phy(o_mc, zx_tmp_fi3d)
1394       ENDIF !iflag_con .GE. 3
1395       CALL histwrite_phy(o_prw, prw)
1396       CALL histwrite_phy(o_prlw, prlw)
1397       CALL histwrite_phy(o_prsw, prsw)
1398       IF (ok_bs) THEN
1399       CALL histwrite_phy(o_prbsw, prbsw)
1400       ENDIF
1401       CALL histwrite_phy(o_s_pblh, s_pblh)
1402       CALL histwrite_phy(o_s_pblt, s_pblt)
1403       CALL histwrite_phy(o_s_lcl, s_lcl)
1404       CALL histwrite_phy(o_s_therm, s_therm)
1405       !IM : Les champs suivants (s_capCL, s_oliqCL, s_cteiCL, s_trmb1, s_trmb2, s_trmb3) ne sont pas definis dans HBTM.F
1406       !       IF (o_s_capCL%flag(iff)<=lev_files(iff)) THEN
1407       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1408       !    $o_s_capCL%name,itau_w,s_capCL)
1409       !       ENDIF
1410       !       IF (o_s_oliqCL%flag(iff)<=lev_files(iff)) THEN
1411       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1412       !    $o_s_oliqCL%name,itau_w,s_oliqCL)
1413       !       ENDIF
1414       !       IF (o_s_cteiCL%flag(iff)<=lev_files(iff)) THEN
1415       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1416       !    $o_s_cteiCL%name,itau_w,s_cteiCL)
1417       !       ENDIF
1418       !       IF (o_s_trmb1%flag(iff)<=lev_files(iff)) THEN
1419       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1420       !    $o_s_trmb1%name,itau_w,s_trmb1)
1421       !       ENDIF
1422       !       IF (o_s_trmb2%flag(iff)<=lev_files(iff)) THEN
1423       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1424       !    $o_s_trmb2%name,itau_w,s_trmb2)
1425       !       ENDIF
1426       !       IF (o_s_trmb3%flag(iff)<=lev_files(iff)) THEN
1427       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1428       !    $o_s_trmb3%name,itau_w,s_trmb3)
1429       !       ENDIF
1430
1431#ifdef CPP_IOIPSL
1432       IF (.NOT. using_xios) THEN
1433         IF (.NOT.ok_all_xml) THEN
1434           ! ATTENTION, LES ANCIENS HISTWRITE ONT ETES CONSERVES EN ATTENDANT MIEUX:
1435           ! Champs interpolles sur des niveaux de pression
1436            DO iff=1, nfiles
1437              ll=0
1438              DO k=1, nlevSTD
1439                bb2=clevSTD(k)
1440                  IF (bb2.EQ."850".OR.bb2.EQ."700".OR. &
1441                       bb2.EQ."500".OR.bb2.EQ."200".OR. &
1442                       bb2.EQ."100".OR. &
1443                       bb2.EQ."50".OR.bb2.EQ."10") THEN
1444
1445                      ! a refaire correctement !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1446                      ll=ll+1
1447                      CALL histwrite_phy(o_uSTDlevs(ll),uwriteSTD(:,k,iff), iff)
1448                      CALL histwrite_phy(o_vSTDlevs(ll),vwriteSTD(:,k,iff), iff)
1449                      CALL histwrite_phy(o_wSTDlevs(ll),wwriteSTD(:,k,iff), iff)
1450                      CALL histwrite_phy(o_zSTDlevs(ll),phiwriteSTD(:,k,iff), iff)
1451                      CALL histwrite_phy(o_qSTDlevs(ll),qwriteSTD(:,k,iff), iff)
1452                      CALL histwrite_phy(o_tSTDlevs(ll),twriteSTD(:,k,iff), iff)
1453
1454                  ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
1455              ENDDO
1456            ENDDO
1457         ENDIF
1458       ENDIF
1459#endif
1460
1461       IF (using_xios) THEN
1462         IF (ok_all_xml) THEN
1463           !XIOS  CALL xios_get_field_attr("u850",default_value=missing_val)
1464!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1465            ll=0
1466            DO k=1, nlevSTD
1467              bb2=clevSTD(k)
1468              IF (bb2.EQ."850".OR.bb2.EQ."700".OR. &
1469                  bb2.EQ."500".OR.bb2.EQ."200".OR. &
1470                  bb2.EQ."100".OR. &
1471                  bb2.EQ."50".OR.bb2.EQ."10") THEN
1472                  ll=ll+1
1473                  CALL histwrite_phy(o_uSTDlevs(ll),ulevSTD(:,k))
1474                  CALL histwrite_phy(o_vSTDlevs(ll),vlevSTD(:,k))
1475                  CALL histwrite_phy(o_wSTDlevs(ll),wlevSTD(:,k))
1476                  CALL histwrite_phy(o_zSTDlevs(ll),philevSTD(:,k))
1477                  CALL histwrite_phy(o_qSTDlevs(ll),qlevSTD(:,k))
1478                  CALL histwrite_phy(o_tSTDlevs(ll),tlevSTD(:,k))
1479              ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
1480            ENDDO
1481         ENDIF
1482       ENDIF
1483
1484       IF (vars_defined) THEN
1485          DO i=1, klon
1486             IF (pctsrf(i,is_oce).GT.epsfra.OR. &
1487                  pctsrf(i,is_sic).GT.epsfra) THEN
1488                zx_tmp_fi2d(i) = (ftsol(i, is_oce) * pctsrf(i,is_oce)+ &
1489                     ftsol(i, is_sic) * pctsrf(i,is_sic))/ &
1490                     (pctsrf(i,is_oce)+pctsrf(i,is_sic))
1491             ELSE
1492                zx_tmp_fi2d(i) = 273.15
1493             ENDIF
1494          ENDDO
1495       ENDIF
1496       CALL histwrite_phy(o_t_oce_sic, zx_tmp_fi2d)
1497
1498       ! Couplage convection-couche limite
1499       IF (iflag_con.GE.3) THEN
1500          IF (iflag_coupl>=1) THEN
1501             CALL histwrite_phy(o_ale_bl, ale_bl)
1502             CALL histwrite_phy(o_alp_bl, alp_bl)
1503          ENDIF !iflag_coupl>=1
1504       ENDIF !(iflag_con.GE.3)
1505       ! Wakes
1506       IF (iflag_con.EQ.3) THEN
1507          CALL histwrite_phy(o_Mipsh, Mipsh)
1508          IF (iflag_wake>=1) THEN
1509             CALL histwrite_phy(o_ale_wk, ale_wake)
1510             CALL histwrite_phy(o_alp_wk, alp_wake)
1511             IF (iflag_pbl_split>=1) THEN
1512!!               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dtvdf_x(1:klon,1:klev)/pdtphys
1513!!               CALL histwrite_phy(o_dtvdf_x    ,zx_tmp_fi3d)
1514!!               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dtvdf_w(1:klon,1:klev)/pdtphys
1515!!               CALL histwrite_phy(o_dtvdf_w    ,zx_tmp_fi3d)
1516!!               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dqvdf_x(1:klon,1:klev)/pdtphys
1517!!               CALL histwrite_phy(o_dqvdf_x    ,zx_tmp_fi3d)
1518!!               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dqvdf_w(1:klon,1:klev)/pdtphys
1519!
1520               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf_x(1:klon,1:klev)/pdtphys
1521               CALL histwrite_phy(o_dtvdf_x    ,zx_tmp_fi3d)
1522               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf_w(1:klon,1:klev)/pdtphys
1523               CALL histwrite_phy(o_dtvdf_w    ,zx_tmp_fi3d)
1524               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf_x(1:klon,1:klev)/pdtphys
1525               CALL histwrite_phy(o_dqvdf_x    ,zx_tmp_fi3d)
1526               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf_w(1:klon,1:klev)/pdtphys
1527!
1528               CALL histwrite_phy(o_dqvdf_w    ,zx_tmp_fi3d)
1529       IF (vars_defined)  zx_tmp_fi2d(1:klon)=-1*sens_x(1:klon)
1530               CALL histwrite_phy(o_sens_x     ,zx_tmp_fi2d)
1531       IF (vars_defined)  zx_tmp_fi2d(1:klon)=-1*sens_w(1:klon)
1532               CALL histwrite_phy(o_sens_w     ,zx_tmp_fi2d)
1533               CALL histwrite_phy(o_flat_x     ,zxfluxlat_x)
1534               CALL histwrite_phy(o_flat_w     ,zxfluxlat_w)
1535          zx_tmp_fi2d=0.
1536          IF (vars_defined) THEN
1537             DO nsrf=1,nbsrf
1538                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:) &
1539                        +pctsrf(:,nsrf)*delta_tsurf(:,nsrf)
1540             ENDDO
1541          ENDIF
1542               CALL histwrite_phy(o_delta_tsurf,zx_tmp_fi2d)
1543               CALL histwrite_phy(o_cdragh_x   ,cdragh_x   )
1544               CALL histwrite_phy(o_cdragh_w   ,cdragh_w   )
1545               CALL histwrite_phy(o_cdragm_x   ,cdragm_x   )
1546               CALL histwrite_phy(o_cdragm_w   ,cdragm_w   )
1547               CALL histwrite_phy(o_kh         ,kh         )
1548               CALL histwrite_phy(o_kh_x       ,kh_x       )
1549               CALL histwrite_phy(o_kh_w       ,kh_w       )
1550             ENDIF   ! (iflag_pbl_split>=1)
1551             CALL histwrite_phy(o_ale, ale)
1552             CALL histwrite_phy(o_alp, alp)
1553             CALL histwrite_phy(o_cin, cin)
1554             CALL histwrite_phy(o_WAPE, wake_pe)
1555             CALL histwrite_phy(o_cv_gen, cv_gen)
1556             CALL histwrite_phy(o_wake_h, wake_h)
1557             CALL histwrite_phy(o_wake_dens, wake_dens)
1558             CALL histwrite_phy(o_wake_s, wake_s)
1559             CALL histwrite_phy(o_wake_deltat, wake_deltat)
1560             CALL histwrite_phy(o_wake_deltaq, wake_deltaq)
1561             CALL histwrite_phy(o_wake_omg, wake_omg)
1562             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_wake(1:klon,1:klev) &
1563                  /pdtphys
1564             CALL histwrite_phy(o_dtwak, zx_tmp_fi3d)
1565             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_wake(1:klon,1:klev)/pdtphys
1566             CALL histwrite_phy(o_dqwak, zx_tmp_fi3d)
1567             IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1568             CALL histwrite_phy(o_dqwak2d, zx_tmp_fi2d)
1569          ENDIF ! iflag_wake>=1
1570          CALL histwrite_phy(o_ftd, ftd)
1571          CALL histwrite_phy(o_fqd, fqd)
1572       ENDIF !(iflag_con.EQ.3)
1573       IF (iflag_con.EQ.3.OR.iflag_con.EQ.30) THEN
1574          ! sortie RomP convection descente insaturee iflag_con=30
1575          ! etendue a iflag_con=3 (jyg)
1576          CALL histwrite_phy(o_Vprecip, Vprecip)
1577          CALL histwrite_phy(o_qtaa, qtaa)
1578          CALL histwrite_phy(o_clwaa, clw)
1579          CALL histwrite_phy(o_wdtrainA, wdtrainA)
1580          CALL histwrite_phy(o_wdtrainS, wdtrainS)
1581          CALL histwrite_phy(o_wdtrainM, wdtrainM)
1582       ENDIF !(iflag_con.EQ.3.or.iflag_con.EQ.30)
1583!!! nrlmd le 10/04/2012
1584       IF (iflag_trig_bl>=1) THEN
1585          CALL histwrite_phy(o_n2, n2)
1586          CALL histwrite_phy(o_s2, s2)
1587          CALL histwrite_phy(o_proba_notrig, proba_notrig)
1588          CALL histwrite_phy(o_random_notrig, random_notrig)
1589          CALL histwrite_phy(o_ale_bl_stat, ale_bl_stat)
1590          CALL histwrite_phy(o_ale_bl_trig, ale_bl_trig)
1591       ENDIF  !(iflag_trig_bl>=1)
1592       IF (iflag_clos_bl>=1) THEN
1593          CALL histwrite_phy(o_alp_bl_det, alp_bl_det)
1594          CALL histwrite_phy(o_alp_bl_fluct_m, alp_bl_fluct_m)
1595          CALL histwrite_phy(o_alp_bl_fluct_tke,  &
1596               alp_bl_fluct_tke)
1597          CALL histwrite_phy(o_alp_bl_conv, alp_bl_conv)
1598          CALL histwrite_phy(o_alp_bl_stat, alp_bl_stat)
1599       ENDIF  !(iflag_clos_bl>=1)
1600!!! fin nrlmd le 10/04/2012
1601       ! Output of slab ocean variables
1602       IF (type_ocean=='slab ') THEN
1603          CALL histwrite_phy(o_slab_bils, slab_wfbils)
1604          IF (nslay.EQ.1) THEN
1605              IF (vars_defined) zx_tmp_fi2d(:)=tslab(:,1)
1606              CALL histwrite_phy(o_tslab, zx_tmp_fi2d)
1607              IF (vars_defined) zx_tmp_fi2d(:)=dt_qflux(:,1)
1608              CALL histwrite_phy(o_slab_qflux, zx_tmp_fi2d)
1609          ELSE
1610              CALL histwrite_phy(o_tslab, tslab(:,1:nslay))
1611              CALL histwrite_phy(o_slab_qflux, dt_qflux(:,1:nslay))
1612          ENDIF
1613          IF (version_ocean=='sicINT') THEN
1614              CALL histwrite_phy(o_slab_bilg, slab_bilg)
1615              CALL histwrite_phy(o_slab_tice, tice)
1616              CALL histwrite_phy(o_slab_sic, seaice)
1617          ENDIF
1618          IF (slab_gm) THEN
1619             CALL histwrite_phy(o_slab_gm, dt_gm(:,1:nslay))
1620          ENDIF
1621          IF (slab_hdiff) THEN
1622            IF (nslay.EQ.1) THEN
1623                IF (vars_defined) zx_tmp_fi2d(:)=dt_hdiff(:,1)
1624                CALL histwrite_phy(o_slab_hdiff, zx_tmp_fi2d)
1625            ELSE
1626                CALL histwrite_phy(o_slab_hdiff, dt_hdiff(:,1:nslay))
1627            ENDIF
1628          ENDIF
1629          IF (slab_ekman.GT.0) THEN
1630            IF (nslay.EQ.1) THEN
1631                IF (vars_defined) zx_tmp_fi2d(:)=dt_ekman(:,1)
1632                CALL histwrite_phy(o_slab_ekman, zx_tmp_fi2d)
1633            ELSE
1634                CALL histwrite_phy(o_slab_ekman, dt_ekman(:,1:nslay))
1635            ENDIF
1636          ENDIF
1637       ENDIF !type_ocean == force/slab
1638       CALL histwrite_phy(o_weakinv, weak_inversion)
1639       CALL histwrite_phy(o_dthmin, dthmin)
1640       CALL histwrite_phy(o_cldtau, cldtau)
1641       CALL histwrite_phy(o_cldemi, cldemi)
1642       CALL histwrite_phy(o_pr_con_l, pmflxr(:,1:klev))
1643       CALL histwrite_phy(o_pr_con_i, pmflxs(:,1:klev))
1644       CALL histwrite_phy(o_pr_lsc_l, prfl(:,1:klev))
1645       CALL histwrite_phy(o_pr_lsc_i, psfl(:,1:klev))
1646       CALL histwrite_phy(o_re, re)
1647       CALL histwrite_phy(o_fl, fl)
1648
1649       IF (ok_bs) THEN
1650         CALL histwrite_phy(o_pr_bs, bsfl(:,1:klev))
1651       ENDIF
1652
1653       IF (vars_defined) THEN
1654          DO i=1, klon
1655             IF (zt2m(i).LE.273.15) then
1656                zx_tmp_fi2d(i)=MAX(0.,rh2m(i)*100.)
1657             ELSE
1658                zx_tmp_fi2d(i)=MAX(0.,MIN(100.,rh2m(i)*100.))
1659             ENDIF
1660          ENDDO
1661       ENDIF
1662       CALL histwrite_phy(o_rh2m, zx_tmp_fi2d)
1663
1664!       IF (vars_defined) THEN
1665!          DO i=1, klon
1666!             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1667!          ENDDO
1668!       ENDIF
1669!       CALL histwrite_phy(o_rh2m_min, zx_tmp_fi2d)
1670
1671!       IF (vars_defined) THEN
1672!          DO i=1, klon
1673!             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1674!          ENDDO
1675!       ENDIF
1676!       CALL histwrite_phy(o_rh2m_max, zx_tmp_fi2d)
1677
1678       CALL histwrite_phy(o_qsat2m, qsat2m)
1679       CALL histwrite_phy(o_tpot, tpot)
1680       CALL histwrite_phy(o_tpote, tpote)
1681       IF (vars_defined) zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, is_ter)
1682       CALL histwrite_phy(o_SWnetOR,  zx_tmp_fi2d)
1683       CALL histwrite_phy(o_LWdownOR, sollwdown)
1684       CALL histwrite_phy(o_snowl, snow_lsc)
1685       CALL histwrite_phy(o_solldown, sollwdown)
1686       CALL histwrite_phy(o_dtsvdfo, d_ts(:,is_oce))
1687       CALL histwrite_phy(o_dtsvdft, d_ts(:,is_ter))
1688       CALL histwrite_phy(o_dtsvdfg,  d_ts(:,is_lic))
1689       CALL histwrite_phy(o_dtsvdfi, d_ts(:,is_sic))
1690       CALL histwrite_phy(o_z0m, z0m(:,nbsrf+1))
1691       CALL histwrite_phy(o_z0h, z0h(:,nbsrf+1))
1692
1693       ! od550 per species
1694!--OLIVIER
1695!This is warranted by treating INCA aerosols as offline aerosols
1696#ifndef CPP_ECRAD
1697       IF (flag_aerosol.GT.0) THEN
1698          IF (type_trac/='inca' .OR. config_inca=='aeNP') THEN
1699
1700             CALL histwrite_phy(o_od443aer, od443aer)
1701             CALL histwrite_phy(o_od550aer, od550aer)
1702             CALL histwrite_phy(o_od865aer, od865aer)
1703             CALL histwrite_phy(o_abs550aer, abs550aer)
1704             CALL histwrite_phy(o_od550lt1aer, od550lt1aer)
1705             CALL histwrite_phy(o_sconcso4, sconcso4)
1706             CALL histwrite_phy(o_sconcno3, sconcno3)
1707             CALL histwrite_phy(o_sconcoa, sconcoa)
1708             CALL histwrite_phy(o_sconcbc, sconcbc)
1709             CALL histwrite_phy(o_sconcss, sconcss)
1710             CALL histwrite_phy(o_sconcdust, sconcdust)
1711             CALL histwrite_phy(o_concso4, concso4)
1712             CALL histwrite_phy(o_concno3, concno3)
1713             CALL histwrite_phy(o_concoa, concoa)
1714             CALL histwrite_phy(o_concbc, concbc)
1715             CALL histwrite_phy(o_concss, concss)
1716             CALL histwrite_phy(o_concdust, concdust)
1717             CALL histwrite_phy(o_loadso4, loadso4)
1718             CALL histwrite_phy(o_loadoa, loadoa)
1719             CALL histwrite_phy(o_loadbc, loadbc)
1720             CALL histwrite_phy(o_loadss, loadss)
1721             CALL histwrite_phy(o_loaddust, loaddust)
1722             CALL histwrite_phy(o_loadno3, loadno3)
1723             CALL histwrite_phy(o_dryod550aer, dryod550aer)
1724             DO naero = 1, naero_tot-1
1725                CALL histwrite_phy(o_drytausumaero(naero),drytausum_aero(:,naero))
1726             ENDDO
1727          ENDIF
1728       ENDIF
1729       !--STRAT AER
1730       IF (flag_aerosol.GT.0.OR.flag_aerosol_strat.GT.0) THEN
1731          DO naero = 1, naero_tot
1732             CALL histwrite_phy(o_tausumaero(naero),tausum_aero(:,2,naero))
1733          ENDDO
1734       ENDIF
1735       IF (flag_aerosol_strat.GT.0) THEN
1736          CALL histwrite_phy(o_tausumaero_lw,tausum_aero(:,6,id_STRAT_phy))
1737       ENDIF
1738
1739       CALL histwrite_phy(o_p_tropopause, p_tropopause)
1740       CALL histwrite_phy(o_t_tropopause, t_tropopause)
1741       CALL histwrite_phy(o_z_tropopause, z_tropopause)
1742
1743! ThL -- In the following, we assume read_climoz == 1
1744       IF (vars_defined) THEN
1745         zx_tmp_fi2d = 0.0    ! Computation for strato, added ThL
1746         DO k=1, klev
1747            zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + wo(:,k,1) * stratomask(:,k) * 1.e3
1748         ENDDO
1749       ENDIF
1750       CALL histwrite_phy(o_col_O3_strato, zx_tmp_fi2d) ! Added ThL
1751
1752       IF (vars_defined) THEN
1753         zx_tmp_fi2d = 0.0    ! Computation for tropo, added ThL
1754         DO k=1, klev
1755            zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + wo(:,k,1) * (1.0-stratomask(:,k)) * 1.e3
1756         ENDDO
1757       ENDIF
1758       CALL histwrite_phy(o_col_O3_tropo, zx_tmp_fi2d)   ! Added ThL
1759! end add ThL
1760
1761#ifdef CPP_StratAer
1762       IF (type_trac=='coag') THEN
1763          CALL histwrite_phy(o_R2SO4, R2SO4)
1764          CALL histwrite_phy(o_OCS_lifetime, OCS_lifetime)
1765          CALL histwrite_phy(o_SO2_lifetime, SO2_lifetime)
1766          CALL histwrite_phy(o_budg_3D_backgr_ocs,   budg_3D_backgr_ocs)
1767          CALL histwrite_phy(o_budg_3D_backgr_so2,   budg_3D_backgr_so2)
1768          CALL histwrite_phy(o_budg_3D_ocs_to_so2,   budg_3D_ocs_to_so2)
1769          CALL histwrite_phy(o_budg_3D_so2_to_h2so4, budg_3D_so2_to_h2so4)
1770          CALL histwrite_phy(o_budg_3D_nucl,         budg_3D_nucl)
1771          CALL histwrite_phy(o_budg_3D_cond_evap,    budg_3D_cond_evap)
1772          CALL histwrite_phy(o_budg_dep_dry_ocs,     budg_dep_dry_ocs)
1773          CALL histwrite_phy(o_budg_dep_wet_ocs,     budg_dep_wet_ocs)
1774          CALL histwrite_phy(o_budg_dep_dry_so2,     budg_dep_dry_so2)
1775          CALL histwrite_phy(o_budg_dep_wet_so2,     budg_dep_wet_so2)
1776          CALL histwrite_phy(o_budg_dep_dry_h2so4,   budg_dep_dry_h2so4)
1777          CALL histwrite_phy(o_budg_dep_wet_h2so4,   budg_dep_wet_h2so4)
1778          CALL histwrite_phy(o_budg_dep_dry_part,    budg_dep_dry_part)
1779          CALL histwrite_phy(o_budg_dep_wet_part,    budg_dep_wet_part)
1780          CALL histwrite_phy(o_budg_emi_ocs,         budg_emi_ocs)
1781          CALL histwrite_phy(o_budg_emi_so2,         budg_emi_so2)
1782          CALL histwrite_phy(o_budg_emi_h2so4,       budg_emi_h2so4)
1783          CALL histwrite_phy(o_budg_emi_part,        budg_emi_part)
1784          CALL histwrite_phy(o_budg_ocs_to_so2,      budg_ocs_to_so2)
1785          CALL histwrite_phy(o_budg_so2_to_h2so4,    budg_so2_to_h2so4)
1786          CALL histwrite_phy(o_budg_h2so4_to_part,   budg_h2so4_to_part)
1787          CALL histwrite_phy(o_budg_sed_part,        budg_sed_part)
1788          CALL histwrite_phy(o_surf_PM25_sulf, surf_PM25_sulf)
1789          CALL histwrite_phy(o_vsed_aer, vsed_aer)
1790          CALL histwrite_phy(o_f_r_wet, f_r_wet)
1791          CALL histwrite_phy(o_ext_strat_550, tau_strat_550)
1792          CALL histwrite_phy(o_ext_strat_1020, tau_strat_1020)
1793          CALL histwrite_phy(o_tau_strat_550, tausum_strat(:,1))
1794          CALL histwrite_phy(o_tau_strat_1020, tausum_strat(:,2))
1795       ENDIF
1796#endif
1797       !NL
1798       IF (ok_volcan .AND. ok_ade) THEN
1799          DO k=1, klev
1800             IF (vars_defined) zx_tmp_fi3d(:,k)=heat_volc(:,k)*swradcorr(:)
1801          ENDDO
1802          CALL histwrite_phy(o_heat_volc, zx_tmp_fi3d)
1803          DO k=1, klev
1804             IF (vars_defined) zx_tmp_fi3d(:,k)=cool_volc(:,k)
1805          ENDDO
1806          CALL histwrite_phy(o_cool_volc, zx_tmp_fi3d)
1807       ENDIF
1808       IF (ok_ade) THEN
1809          IF (vars_defined) zx_tmp_fi2d(:)=topswad_aero*swradcorr
1810          CALL histwrite_phy(o_topswad, zx_tmp_fi2d)
1811         
1812          IF (vars_defined) zx_tmp_fi2d(:)=topswad0_aero*swradcorr
1813          CALL histwrite_phy(o_topswad0, zx_tmp_fi2d)
1814                   
1815          IF (vars_defined) zx_tmp_fi2d(:)=solswad_aero*swradcorr
1816          CALL histwrite_phy(o_solswad, zx_tmp_fi2d)
1817                   
1818          IF (vars_defined) zx_tmp_fi2d(:)=solswad0_aero*swradcorr
1819          CALL histwrite_phy(o_solswad0, zx_tmp_fi2d)
1820         
1821          IF (type_trac/='inca' .OR. config_inca=='aeNP') THEN
1822
1823             CALL histwrite_phy(o_toplwad, toplwad_aero)
1824             CALL histwrite_phy(o_toplwad0, toplwad0_aero)
1825             CALL histwrite_phy(o_sollwad, sollwad_aero)
1826             CALL histwrite_phy(o_sollwad0, sollwad0_aero)
1827          ENDIF
1828          !====MS forcing diagnostics
1829          !ym warning : topsw_aero, solsw_aero, topsw0_aero, solsw0_aero are not defined by model
1830          !ym => init to 0 in radlwsw_m.F90 ztopsw_aero, zsolsw_aero, ztopsw0_aero, zsolsw0_aero
1831
1832          IF (vars_defined) zx_tmp_fi2d(:)=topsw_aero(:,1)*swradcorr(:)
1833          CALL histwrite_phy(o_swtoaas_nat,zx_tmp_fi2d)
1834          IF (vars_defined) zx_tmp_fi2d(:)=solsw_aero(:,1)*swradcorr(:)
1835          CALL histwrite_phy(o_swsrfas_nat,zx_tmp_fi2d)
1836          IF (vars_defined) zx_tmp_fi2d(:)=topsw0_aero(:,1)*swradcorr(:)
1837          CALL histwrite_phy(o_swtoacs_nat,zx_tmp_fi2d)
1838          IF (vars_defined) zx_tmp_fi2d(:)=solsw0_aero(:,1)*swradcorr(:)
1839          CALL histwrite_phy(o_swsrfcs_nat,zx_tmp_fi2d)
1840          !ant
1841          IF (vars_defined) zx_tmp_fi2d(:)=topsw_aero(:,2)*swradcorr(:)
1842          CALL histwrite_phy(o_swtoaas_ant,zx_tmp_fi2d)
1843          IF (vars_defined) zx_tmp_fi2d(:)=solsw_aero(:,2)*swradcorr(:)
1844          CALL histwrite_phy(o_swsrfas_ant,zx_tmp_fi2d)
1845          IF (vars_defined) zx_tmp_fi2d(:)=topsw0_aero(:,2)*swradcorr(:)
1846          CALL histwrite_phy(o_swtoacs_ant,zx_tmp_fi2d)
1847          IF (vars_defined) zx_tmp_fi2d(:)=solsw0_aero(:,2)*swradcorr(:)
1848          CALL histwrite_phy(o_swsrfcs_ant,zx_tmp_fi2d)
1849          !cf
1850          IF (.not. aerosol_couple) THEN
1851             IF (vars_defined) zx_tmp_fi2d(:)=topswcf_aero(:,1)*swradcorr(:)
1852             CALL histwrite_phy(o_swtoacf_nat,zx_tmp_fi2d)
1853             IF (vars_defined) zx_tmp_fi2d(:)=solswcf_aero(:,1)*swradcorr(:)
1854             CALL histwrite_phy(o_swsrfcf_nat,zx_tmp_fi2d)
1855             IF (vars_defined) zx_tmp_fi2d(:)=topswcf_aero(:,2)*swradcorr(:)
1856             CALL histwrite_phy(o_swtoacf_ant,zx_tmp_fi2d)
1857             IF (vars_defined) zx_tmp_fi2d(:)=solswcf_aero(:,2)*swradcorr(:)
1858             CALL histwrite_phy(o_swsrfcf_ant,zx_tmp_fi2d)
1859             IF (vars_defined) zx_tmp_fi2d(:)=topswcf_aero(:,3)*swradcorr(:)
1860             CALL histwrite_phy(o_swtoacf_zero,zx_tmp_fi2d)
1861             IF (vars_defined) zx_tmp_fi2d(:)=solswcf_aero(:,3)*swradcorr(:)
1862             CALL histwrite_phy(o_swsrfcf_zero,zx_tmp_fi2d)
1863          ENDIF
1864          !====MS forcing diagnostics
1865       ENDIF
1866       IF (ok_aie) THEN
1867          IF (vars_defined) zx_tmp_fi2d(:)= topswai_aero*swradcorr
1868          CALL histwrite_phy(o_topswai, zx_tmp_fi2d)
1869         
1870          IF (vars_defined) zx_tmp_fi2d(:)=toplwai_aero*swradcorr
1871          CALL histwrite_phy(o_toplwai, zx_tmp_fi2d)
1872         
1873          IF (vars_defined) zx_tmp_fi2d(:)=solswai_aero*swradcorr
1874          CALL histwrite_phy(o_solswai, zx_tmp_fi2d)
1875         
1876          IF (vars_defined) zx_tmp_fi2d(:)=sollwai_aero*swradcorr
1877          CALL histwrite_phy(o_sollwai, zx_tmp_fi2d)
1878       ENDIF
1879       IF (flag_aerosol.GT.0.AND.ok_cdnc) THEN
1880          CALL histwrite_phy(o_scdnc, scdnc)
1881          CALL histwrite_phy(o_cldncl, cldncl)
1882          CALL histwrite_phy(o_reffclws, reffclws)
1883          CALL histwrite_phy(o_reffclwc, reffclwc)
1884          CALL histwrite_phy(o_cldnvi, cldnvi)
1885          CALL histwrite_phy(o_lcc, lcc)
1886          CALL histwrite_phy(o_lcc3d, lcc3d)
1887          CALL histwrite_phy(o_lcc3dcon, lcc3dcon)
1888          CALL histwrite_phy(o_lcc3dstra, lcc3dstra)
1889          CALL histwrite_phy(o_icc3dcon, icc3dcon)
1890          CALL histwrite_phy(o_icc3dstra, icc3dstra)
1891          CALL histwrite_phy(o_cldicemxrat, zfice)
1892          IF (vars_defined) zx_tmp_fi3d(:,:)=1-zfice(:,:)
1893          CALL histwrite_phy(o_cldwatmxrat, zx_tmp_fi3d)
1894          CALL histwrite_phy(o_reffclwtop, reffclwtop)
1895       ENDIF
1896       ! Champs 3D:
1897       IF (ok_ade .OR. ok_aie) then
1898          IF (type_trac/='inca' .OR. config_inca=='aeNP') THEN
1899             CALL histwrite_phy(o_ec550aer, ec550aer)
1900          ENDIF
1901       ENDIF
1902
1903       CALL histwrite_phy(o_lwcon, flwc)
1904       CALL histwrite_phy(o_iwcon, fiwc)
1905       CALL histwrite_phy(o_temp, t_seri)
1906       CALL histwrite_phy(o_theta, theta)
1907       CALL histwrite_phy(o_ovapinit, qx(:,:,ivap))
1908       CALL histwrite_phy(o_ovap, q_seri)
1909       CALL histwrite_phy(o_oliq, ql_seri)
1910       !FC
1911       CALL histwrite_phy(o_zxfluxt, zxfluxt)
1912       CALL histwrite_phy(o_zxfluxq, zx_tmp_fi3d)
1913       !FC
1914
1915       IF (vars_defined) zx_tmp_fi3d = ql_seri+qs_seri
1916       CALL histwrite_phy(o_ocond, zx_tmp_fi3d)
1917
1918       CALL histwrite_phy(o_geop, zphi)
1919       CALL histwrite_phy(o_vitu, u_seri)
1920       CALL histwrite_phy(o_vitv, v_seri)
1921       CALL histwrite_phy(o_vitw, omega)
1922       CALL histwrite_phy(o_pres, pplay)
1923       CALL histwrite_phy(o_paprs, paprs(:,1:klev))
1924       
1925       IF (vars_defined) zx_tmp_fi3d = zphi/RG
1926       CALL histwrite_phy(o_zfull,zx_tmp_fi3d)
1927
1928       IF (ok_bs) THEN
1929          CALL histwrite_phy(o_qbs, qbs_seri)
1930       ENDIF
1931
1932       IF (using_xios) THEN
1933!solbnd begin
1934#ifdef CPP_RRTM
1935         IF (iflag_rrtm.EQ.1) THEN
1936           IF (vars_defined) THEN
1937             DO ISW=1, NSW
1938               zx_tmp_fi3dsp(:,ISW) = swdn(:,klevp1)*swradcorr(:)*RSUN(ISW)
1939             ENDDO
1940             CALL histwrite_phy(o_solbnd, zx_tmp_fi3dsp)
1941           ENDIF
1942         ENDIF
1943#endif
1944!solbnd end
1945       ENDIF
1946#endif
1947
1948       IF (flag_aerosol_strat.EQ.2) THEN
1949         CALL histwrite_phy(o_stratomask, stratomask)
1950       ENDIF
1951     
1952       IF (vars_defined)  THEN
1953        zx_tmp_fi3d(:,1)= pphis(:)/RG
1954        DO k = 2, klev
1955         DO i = 1, klon
1956            zx_tmp_fi3d(i,k) = zphi(i,k-1)/RG + &
1957                          (zphi(i,k)-zphi(i,k-1))/RG * &
1958                          (paprs(i,k)-pplay(i,k-1))/(pplay(i,k)-pplay(i,k-1))
1959         ENDDO
1960        ENDDO
1961       ENDIF
1962       CALL histwrite_phy(o_zhalf, zx_tmp_fi3d)
1963       CALL histwrite_phy(o_rneb, cldfra)
1964       CALL histwrite_phy(o_rnebcon, rnebcon)
1965       CALL histwrite_phy(o_rnebls, rneb)
1966       CALL histwrite_phy(o_rneblsvol, rneblsvol)
1967       IF (vars_defined)  THEN
1968          DO k=1, klev
1969             DO i=1, klon
1970                zx_tmp_fi3d(i,k)=cldfra(i,k)*JrNt(i)
1971             ENDDO
1972          ENDDO
1973       ENDIF
1974       CALL histwrite_phy(o_rnebjn, zx_tmp_fi3d)
1975       CALL histwrite_phy(o_rhum, zx_rh)
1976       IF (iflag_ice_thermo .GT. 0) THEN
1977          IF (vars_defined) zx_tmp_fi3d = zx_rhl * 100.
1978          CALL histwrite_phy(o_rhl, zx_tmp_fi3d)
1979          IF (vars_defined) zx_tmp_fi3d = zx_rhi * 100.
1980          CALL histwrite_phy(o_rhi, zx_tmp_fi3d)
1981       ENDIF
1982     
1983       IF (ok_new_lscp) THEN
1984           CALL histwrite_phy(o_pfraclr, pfraclr)
1985           CALL histwrite_phy(o_pfracld, pfracld)
1986           IF (ok_poprecip) THEN
1987           CALL histwrite_phy(o_qrainlsc, qrain_lsc)
1988           CALL histwrite_phy(o_qsnowlsc, qsnow_lsc)
1989           CALL histwrite_phy(o_dqreva, dqreva)
1990           CALL histwrite_phy(o_dqrauto, dqrauto)
1991           CALL histwrite_phy(o_dqrcol, dqrcol)
1992           CALL histwrite_phy(o_dqrmelt, dqrmelt)
1993           CALL histwrite_phy(o_dqrfreez, dqrfreez)
1994           CALL histwrite_phy(o_dqssub, dqssub)
1995           CALL histwrite_phy(o_dqsauto, dqsauto)
1996           CALL histwrite_phy(o_dqsagg, dqsagg)
1997           CALL histwrite_phy(o_dqsmelt, dqsmelt)
1998           CALL histwrite_phy(o_dqsfreez, dqsfreez)
1999           CALL histwrite_phy(o_dqsrim, dqsrim)
2000           ENDIF
2001       ENDIF
2002
2003!--aviation & supersaturation
2004       IF (ok_ice_sursat) THEN
2005         CALL histwrite_phy(o_oclr, qclr)
2006         CALL histwrite_phy(o_ocld, qcld)
2007         CALL histwrite_phy(o_oss, qss)
2008         CALL histwrite_phy(o_ovc, qvc)
2009         CALL histwrite_phy(o_rnebclr, rnebclr)
2010         CALL histwrite_phy(o_rnebss, rnebss)
2011         CALL histwrite_phy(o_rnebseri, rneb_seri)
2012         CALL histwrite_phy(o_gammass, gamma_ss)
2013         CALL histwrite_phy(o_N1_ss, N1_ss)
2014         CALL histwrite_phy(o_N2_ss, N2_ss)
2015         CALL histwrite_phy(o_drnebsub, drneb_sub)
2016         CALL histwrite_phy(o_drnebcon, drneb_con)
2017         CALL histwrite_phy(o_drnebtur, drneb_tur)
2018         CALL histwrite_phy(o_drnebavi, drneb_avi)
2019         CALL histwrite_phy(o_qsatl, zqsatl)
2020         CALL histwrite_phy(o_qsats, zqsats)
2021         CALL histwrite_phy(o_Tcontr, Tcontr)
2022         CALL histwrite_phy(o_qcontr, qcontr)
2023         CALL histwrite_phy(o_qcontr2, qcontr2)
2024         CALL histwrite_phy(o_fcontrN, fcontrN)
2025         CALL histwrite_phy(o_fcontrP, fcontrP)
2026       ENDIF
2027       IF (ok_plane_contrail) THEN
2028         CALL histwrite_phy(o_flight_m, flight_m)
2029       ENDIF
2030       IF (ok_plane_h2o) THEN
2031         CALL histwrite_phy(o_flight_h2o, flight_h2o)
2032       ENDIF
2033       
2034       IF (vars_defined) zx_tmp_fi3d = wo(:, :, 1) * dobson_u * 1e3 / zmasse / rmo3 * rmd
2035       CALL histwrite_phy(o_ozone, zx_tmp_fi3d)
2036
2037       IF (read_climoz == 2) THEN
2038         IF (vars_defined) zx_tmp_fi3d = wo(:, :, 2) * dobson_u * 1e3 / zmasse / rmo3 * rmd
2039         CALL histwrite_phy(o_ozone_light, zx_tmp_fi3d)
2040       ENDIF
2041
2042       CALL histwrite_phy(o_duphy, d_u)
2043
2044       CALL histwrite_phy(o_dtphy, d_t)
2045
2046       CALL histwrite_phy(o_dqphy,  d_qx(:,:,ivap))
2047       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,ivap),zmasse,zx_tmp_fi2d)
2048       CALL histwrite_phy(o_dqphy2d,  zx_tmp_fi2d)
2049
2050       CALL histwrite_phy(o_dqlphy,  d_qx(:,:,iliq))
2051       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,iliq),zmasse,zx_tmp_fi2d)
2052       CALL histwrite_phy(o_dqlphy2d,  zx_tmp_fi2d)
2053
2054       IF (nqo.EQ.3) THEN
2055       CALL histwrite_phy(o_dqsphy,  d_qx(:,:,isol))
2056       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,isol),zmasse,zx_tmp_fi2d)
2057       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
2058       ELSE
2059       zx_tmp_fi3d=0.0
2060       CALL histwrite_phy(o_dqsphy,  zx_tmp_fi3d)
2061       zx_tmp_fi2d=0.0
2062       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
2063       ENDIF
2064
2065
2066       IF (ok_bs) THEN
2067       CALL histwrite_phy(o_dqbsphy,  d_qx(:,:,ibs))
2068       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,ibs),zmasse,zx_tmp_fi2d)
2069       CALL histwrite_phy(o_dqbsphy2d,  zx_tmp_fi2d)
2070       ELSE
2071       zx_tmp_fi3d=0.0
2072       CALL histwrite_phy(o_dqbsphy,  zx_tmp_fi3d)
2073       zx_tmp_fi2d=0.0
2074       CALL histwrite_phy(o_dqbsphy2d,  zx_tmp_fi2d)
2075       ENDIF
2076
2077       DO nsrf=1, nbsrf
2078          IF (vars_defined) zx_tmp_fi2d(1 : klon) = falb1( 1 : klon, nsrf)
2079          CALL histwrite_phy(o_albe_srf(nsrf), zx_tmp_fi2d)
2080          IF (vars_defined) zx_tmp_fi2d(1 : klon) = z0m( 1 : klon, nsrf)
2081          CALL histwrite_phy(o_z0m_srf(nsrf), zx_tmp_fi2d)
2082          IF (vars_defined) zx_tmp_fi2d(1 : klon) = z0h( 1 : klon, nsrf)
2083          CALL histwrite_phy(o_z0h_srf(nsrf), zx_tmp_fi2d)
2084          IF (vars_defined) zx_tmp_fi2d(1 : klon) = agesno( 1 : klon, nsrf)
2085          CALL histwrite_phy(o_ages_srf(nsrf), zx_tmp_fi2d)
2086          IF (vars_defined) zx_tmp_fi2d(1 : klon) = snow( 1 : klon, nsrf)
2087          CALL histwrite_phy(o_snow_srf(nsrf), zx_tmp_fi2d)
2088       ENDDO !nsrf=1, nbsrf
2089       CALL histwrite_phy(o_alb1, albsol1)
2090       CALL histwrite_phy(o_alb2, albsol2)
2091       !FH Sorties pour la couche limite
2092       IF (iflag_pbl>1) THEN
2093          zx_tmp_fi3d=0.
2094          IF (vars_defined) THEN
2095             DO nsrf=1,nbsrf
2096                DO k=1,klev
2097                   zx_tmp_fi3d(:,k)=zx_tmp_fi3d(:,k) &
2098                        +pctsrf(:,nsrf)*pbl_tke(:,k,nsrf)
2099                ENDDO
2100             ENDDO
2101          ENDIF
2102          CALL histwrite_phy(o_tke, zx_tmp_fi3d)
2103          CALL histwrite_phy(o_tke_max, zx_tmp_fi3d) 
2104       ENDIF
2105
2106       CALL histwrite_phy(o_kz, coefh(:,:,is_ave))
2107
2108       CALL histwrite_phy(o_kz_max, coefh(:,:,is_ave))
2109
2110       CALL histwrite_phy(o_clwcon, clwcon0)
2111
2112       CALL histwrite_phy(o_dtdyn, d_t_dyn)
2113
2114       CALL histwrite_phy(o_dqdyn, d_q_dyn)
2115
2116       CALL histwrite_phy(o_dqdyn2d,d_q_dyn2d)
2117
2118       CALL histwrite_phy(o_dqldyn, d_ql_dyn)
2119
2120       CALL histwrite_phy(o_dqldyn2d, d_ql_dyn2d)
2121
2122       CALL histwrite_phy(o_dqsdyn, d_qs_dyn)
2123
2124       CALL histwrite_phy(o_dqsdyn2d, d_qs_dyn2d)
2125
2126       IF (ok_bs) THEN
2127         CALL histwrite_phy(o_dqbsdyn, d_qbs_dyn)
2128         CALL histwrite_phy(o_dqbsdyn2d, d_qbs_dyn2d)
2129       ENDIF
2130
2131       CALL histwrite_phy(o_dudyn, d_u_dyn)
2132       CALL histwrite_phy(o_dvdyn, d_v_dyn)
2133
2134       IF (vars_defined) THEN
2135          zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys
2136       ENDIF
2137       CALL histwrite_phy(o_dtcon, zx_tmp_fi3d)
2138       IF (iflag_thermals.EQ.0) THEN
2139          IF (vars_defined) THEN
2140             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
2141                  d_t_ajsb(1:klon,1:klev)/pdtphys
2142          ENDIF
2143          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
2144       ELSE IF(iflag_thermals.GE.1.AND.iflag_wake.EQ.1) THEN
2145          IF (vars_defined) THEN
2146             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
2147                  d_t_ajs(1:klon,1:klev)/pdtphys + &
2148                  d_t_wake(1:klon,1:klev)/pdtphys
2149          ENDIF
2150          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
2151       ENDIF
2152       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_con(1:klon,1:klev)/pdtphys
2153       CALL histwrite_phy(o_ducon, zx_tmp_fi3d)
2154       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_con(1:klon,1:klev)/pdtphys
2155       CALL histwrite_phy(o_dvcon, zx_tmp_fi3d)
2156       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
2157       CALL histwrite_phy(o_dqcon, zx_tmp_fi3d)
2158       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2159       CALL histwrite_phy(o_dqcon2d, zx_tmp_fi2d)
2160
2161       IF (iflag_thermals.EQ.0) THEN
2162          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
2163          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
2164       ELSE IF (iflag_thermals.GE.1.AND.iflag_wake.EQ.1) THEN
2165          IF (vars_defined) THEN
2166             zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys + &
2167                  d_q_ajs(1:klon,1:klev)/pdtphys + &
2168                  d_q_wake(1:klon,1:klev)/pdtphys
2169          ENDIF
2170          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
2171       ENDIF
2172
2173       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lsc(1:klon,1:klev)/pdtphys
2174       CALL histwrite_phy(o_dtlsc, zx_tmp_fi3d)
2175       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
2176       CALL histwrite_phy(o_dtlschr, zx_tmp_fi3d)
2177       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys
2178       CALL histwrite_phy(o_dqlsc, zx_tmp_fi3d)
2179       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2180       CALL histwrite_phy(o_dqlsc2d, zx_tmp_fi2d)
2181       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=beta_prec(1:klon,1:klev)
2182       CALL histwrite_phy(o_beta_prec, zx_tmp_fi3d)
2183!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2184       ! Sorties specifiques a la separation thermiques/non thermiques
2185       IF (iflag_thermals>=1) THEN
2186          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscth(1:klon,1:klev)/pdtphys
2187          CALL histwrite_phy(o_dtlscth, zx_tmp_fi3d)
2188          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscst(1:klon,1:klev)/pdtphys
2189          CALL histwrite_phy(o_dtlscst, zx_tmp_fi3d)
2190          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscth(1:klon,1:klev)/pdtphys
2191          CALL histwrite_phy(o_dqlscth, zx_tmp_fi3d)
2192          IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2193          CALL histwrite_phy(o_dqlscth2d, zx_tmp_fi2d)
2194          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscst(1:klon,1:klev)/pdtphys
2195          CALL histwrite_phy(o_dqlscst, zx_tmp_fi3d)
2196          IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2197          CALL histwrite_phy(o_dqlscst2d, zx_tmp_fi2d)
2198          CALL histwrite_phy(o_plulth, plul_th)
2199          CALL histwrite_phy(o_plulst, plul_st)
2200          IF (vars_defined) THEN
2201             DO i=1,klon
2202                zx_tmp_fi2d(1:klon)=lmax_th(:)
2203             ENDDO
2204          ENDIF
2205          CALL histwrite_phy(o_lmaxth, zx_tmp_fi2d)
2206          IF (vars_defined) THEN
2207             DO k=1,klev
2208                DO i=1,klon
2209                   IF (ptconvth(i,k)) THEN
2210                      zx_tmp_fi3d(i,k)=1.
2211                   ELSE
2212                      zx_tmp_fi3d(i,k)=0.
2213                   ENDIF
2214                ENDDO
2215             ENDDO
2216          ENDIF
2217          CALL histwrite_phy(o_ptconvth, zx_tmp_fi3d)
2218       ENDIF ! iflag_thermals>=1
2219!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2220       zpt_conv = 0.
2221       WHERE (ptconv) zpt_conv = 1.
2222       CALL histwrite_phy(o_ptconv, zpt_conv)
2223!!       IF (vars_defined)         zx_tmp_fi2d=float(itau_con)/float(itap)
2224!!       CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
2225       IF (vars_defined) THEN
2226          zpt_conv2d(:) = 0.
2227          DO k=1,klev
2228            WHERE (ptconv(:,k)) zpt_conv2d(:) = 1.
2229          ENDDO
2230       ENDIF
2231       CALL histwrite_phy(o_ftime_deepcv, zpt_conv2d)
2232       IF (vars_defined) THEN
2233          zx_tmp_fi2d(:) = 0.
2234          DO k=1,klev
2235            WHERE (ptconvth(:,k)) zx_tmp_fi2d(:) = 1.
2236          ENDDO
2237       ENDIF
2238       CALL histwrite_phy(o_ftime_th, zx_tmp_fi2d)
2239       IF (vars_defined) THEN
2240           zx_tmp_fi2d(:) = max(zx_tmp_fi2d(:),zpt_conv2d(:))
2241       ENDIF
2242       CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
2243!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2244       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf(1:klon,1:klev)/pdtphys
2245       CALL histwrite_phy(o_dtvdf, zx_tmp_fi3d)
2246       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_diss(1:klon,1:klev)/pdtphys
2247       CALL histwrite_phy(o_dtdis, zx_tmp_fi3d)
2248       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf(1:klon,1:klev)/pdtphys
2249       CALL histwrite_phy(o_dqvdf, zx_tmp_fi3d)
2250       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2251       CALL histwrite_phy(o_dqvdf2d, zx_tmp_fi2d)
2252       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_eva(1:klon,1:klev)/pdtphys
2253       CALL histwrite_phy(o_dteva, zx_tmp_fi3d)
2254       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_eva(1:klon,1:klev)/pdtphys
2255       CALL histwrite_phy(o_dqeva, zx_tmp_fi3d)
2256       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2257       CALL histwrite_phy(o_dqeva2d, zx_tmp_fi2d)
2258       CALL histwrite_phy(o_ratqs, ratqs)
2259       IF (vars_defined) THEN
2260          zx_tmp_fi3d(1:klon,1:klev)=d_t_ajs(1:klon,1:klev)/pdtphys - &
2261               d_t_ajsb(1:klon,1:klev)/pdtphys
2262       ENDIF
2263       CALL histwrite_phy(o_dtthe, zx_tmp_fi3d)
2264       IF (vars_defined) THEN
2265          zx_tmp_fi3d(1:klon,1:klev)=d_u_ajs(1:klon,1:klev)/pdtphys
2266       ENDIF
2267       CALL histwrite_phy(o_duthe, zx_tmp_fi3d)
2268       IF (vars_defined) THEN
2269          zx_tmp_fi3d(1:klon,1:klev)=d_v_ajs(1:klon,1:klev)/pdtphys
2270       ENDIF
2271       CALL histwrite_phy(o_dvthe, zx_tmp_fi3d)
2272
2273       IF (ok_bs) THEN
2274          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_qbs_vdf(1:klon,1:klev)/pdtphys
2275          CALL histwrite_phy(o_dqbsvdf, zx_tmp_fi3d)
2276          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_qbs_bs(1:klon,1:klev)/pdtphys
2277          CALL histwrite_phy(o_dqbsbs, zx_tmp_fi3d)
2278          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_bs(1:klon,1:klev)/pdtphys
2279          CALL histwrite_phy(o_dqbs, zx_tmp_fi3d)
2280          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_bs(1:klon,1:klev)/pdtphys
2281          CALL histwrite_phy(o_dtbs, zx_tmp_fi3d)
2282       ENDIF
2283
2284       IF (iflag_thermals>=1) THEN
2285          ! Pour l instant 0 a y reflichir pour les thermiques
2286          ! regroupe avec ftime_deepcv et ftime_con
2287          !!zx_tmp_fi2d=0.
2288          !!CALL histwrite_phy(o_ftime_th, zx_tmp_fi2d)
2289          CALL histwrite_phy(o_f_th, fm_therm)
2290          CALL histwrite_phy(o_e_th, entr_therm)
2291          CALL histwrite_phy(o_w_th, zw2)
2292          CALL histwrite_phy(o_q_th, zqasc)
2293          CALL histwrite_phy(o_a_th, fraca)
2294          CALL histwrite_phy(o_cloudth_sth, cloudth_sth)
2295          CALL histwrite_phy(o_cloudth_senv, cloudth_senv)
2296          CALL histwrite_phy(o_cloudth_sigmath, cloudth_sigmath)
2297          CALL histwrite_phy(o_cloudth_sigmaenv, cloudth_sigmaenv)
2298          CALL histwrite_phy(o_d_th, detr_therm)
2299          CALL histwrite_phy(o_f0_th, f0)
2300          CALL histwrite_phy(o_zmax_th, zmax_th)
2301          IF (vars_defined) THEN
2302             zx_tmp_fi3d(1:klon,1:klev)=d_q_ajs(1:klon,1:klev)/pdtphys-d_q_ajsb(1:klon,1:klev)/pdtphys
2303          ENDIF
2304          CALL histwrite_phy(o_dqthe, zx_tmp_fi3d)
2305          IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2306          CALL histwrite_phy(o_dqthe2d, zx_tmp_fi2d)
2307       ENDIF !iflag_thermals
2308       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ajsb(1:klon,1:klev)/pdtphys
2309       CALL histwrite_phy(o_dtajs, zx_tmp_fi3d)
2310       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_ajsb(1:klon,1:klev)/pdtphys
2311       CALL histwrite_phy(o_dqajs, zx_tmp_fi3d)
2312       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2313       CALL histwrite_phy(o_dqajs2d, zx_tmp_fi2d)
2314       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys
2315       CALL histwrite_phy(o_dtswr, zx_tmp_fi3d)
2316       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_sw0(1:klon,1:klev)/pdtphys
2317       CALL histwrite_phy(o_dtsw0, zx_tmp_fi3d)
2318       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lwr(1:klon,1:klev)/pdtphys
2319       CALL histwrite_phy(o_dtlwr, zx_tmp_fi3d)
2320       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lw0(1:klon,1:klev)/pdtphys
2321       CALL histwrite_phy(o_dtlw0, zx_tmp_fi3d)
2322       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ec(1:klon,1:klev)/pdtphys
2323       CALL histwrite_phy(o_dtec, zx_tmp_fi3d)
2324       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_vdf(1:klon,1:klev)/pdtphys
2325       CALL histwrite_phy(o_duvdf, zx_tmp_fi3d)
2326       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_vdf(1:klon,1:klev)/pdtphys
2327       CALL histwrite_phy(o_dvvdf, zx_tmp_fi3d)
2328       IF (ok_orodr) THEN
2329          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_oro(1:klon,1:klev)/pdtphys
2330          CALL histwrite_phy(o_duoro, zx_tmp_fi3d)
2331          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_oro(1:klon,1:klev)/pdtphys
2332          CALL histwrite_phy(o_dvoro, zx_tmp_fi3d)
2333          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_oro(1:klon,1:klev)/pdtphys
2334          CALL histwrite_phy(o_dtoro, zx_tmp_fi3d)
2335       ENDIF
2336       IF (ok_orolf) THEN
2337          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_lif(1:klon,1:klev)/pdtphys
2338          CALL histwrite_phy(o_dulif, zx_tmp_fi3d)
2339
2340          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_lif(1:klon,1:klev)/pdtphys
2341          CALL histwrite_phy(o_dvlif, zx_tmp_fi3d)
2342
2343          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lif(1:klon,1:klev)/pdtphys
2344          CALL histwrite_phy(o_dtlif, zx_tmp_fi3d)
2345       ENDIF
2346
2347       IF (ok_hines) THEN
2348          IF (vars_defined) zx_tmp_fi3d=du_gwd_hines/pdtphys
2349          CALL histwrite_phy(o_du_gwd_hines, zx_tmp_fi3d)
2350
2351          IF (vars_defined) zx_tmp_fi3d= dv_gwd_hines/pdtphys         
2352          CALL histwrite_phy(o_dv_gwd_hines, zx_tmp_fi3d)
2353         
2354          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_hin(1:klon,1:klev)/pdtphys
2355          CALL histwrite_phy(o_dthin, zx_tmp_fi3d)
2356          CALL histwrite_phy(o_ustr_gwd_hines, zustr_gwd_hines)
2357          CALL histwrite_phy(o_vstr_gwd_hines, zvstr_gwd_hines)
2358       ENDIF
2359
2360       IF (.not. ok_hines .and. ok_gwd_rando) THEN
2361          IF (vars_defined)  zx_tmp_fi3d=du_gwd_front / pdtphys
2362          CALL histwrite_phy(o_du_gwd_front, zx_tmp_fi3d)
2363         
2364          IF (vars_defined)  zx_tmp_fi3d=dv_gwd_front / pdtphys
2365          CALL histwrite_phy(o_dv_gwd_front, zx_tmp_fi3d)
2366         
2367          CALL histwrite_phy(o_ustr_gwd_front, zustr_gwd_front)
2368          CALL histwrite_phy(o_vstr_gwd_front, zvstr_gwd_front)
2369       ENDIF
2370
2371       IF (ok_gwd_rando) THEN
2372          IF (vars_defined)  zx_tmp_fi3d=du_gwd_rando / pdtphys
2373          CALL histwrite_phy(o_du_gwd_rando, zx_tmp_fi3d)
2374         
2375          IF (vars_defined)  zx_tmp_fi3d=dv_gwd_rando / pdtphys
2376          CALL histwrite_phy(o_dv_gwd_rando, zx_tmp_fi3d)
2377          CALL histwrite_phy(o_ustr_gwd_rando, zustr_gwd_rando)
2378          CALL histwrite_phy(o_vstr_gwd_rando, zvstr_gwd_rando)
2379          CALL histwrite_phy(o_east_gwstress, east_gwstress )
2380          CALL histwrite_phy(o_west_gwstress, west_gwstress )
2381       ENDIF
2382
2383       IF (ok_qch4) THEN
2384          IF (vars_defined) zx_tmp_fi3d=d_q_ch4
2385          CALL histwrite_phy(o_dqch4, zx_tmp_fi3d)
2386       ENDIF
2387       
2388       IF (vars_defined) THEN
2389         DO k=1, klevp1
2390           zx_tmp_fi3d1(:,k)=swup(:,k)*swradcorr(:)
2391         ENDDO
2392       ENDIF
2393       
2394       CALL histwrite_phy(o_rsu, zx_tmp_fi3d1)
2395
2396       IF (vars_defined) THEN
2397         DO k=1, klevp1
2398           zx_tmp_fi3d1(:,k)=swdn(:,k)*swradcorr(:)
2399         ENDDO
2400       ENDIF
2401       
2402       CALL histwrite_phy(o_rsd, zx_tmp_fi3d1)
2403
2404       IF (vars_defined) THEN
2405         DO k=1, klevp1
2406           zx_tmp_fi3d1(:,k)=swup0(:,k)*swradcorr(:)
2407         ENDDO
2408       ENDIF
2409       
2410       CALL histwrite_phy(o_rsucs, zx_tmp_fi3d1)
2411
2412       IF (type_trac/='inca' .OR. config_inca=='aeNP') THEN
2413          IF (vars_defined) THEN
2414             DO k=1, klevp1
2415                zx_tmp_fi3d1(:,k)=swupc0(:,k)*swradcorr(:)
2416             ENDDO
2417          ENDIF
2418          CALL histwrite_phy(o_rsucsaf, zx_tmp_fi3d1)
2419       ENDIF
2420
2421       IF (vars_defined) THEN
2422         DO k=1, klevp1
2423           zx_tmp_fi3d1(:,k)=swdn0(:,k)*swradcorr(:)
2424         ENDDO
2425       ENDIF
2426       CALL histwrite_phy(o_rsdcs, zx_tmp_fi3d1)
2427
2428       IF (type_trac/='inca' .OR. config_inca=='aeNP') THEN
2429          IF (vars_defined) THEN
2430             DO k=1, klevp1
2431                zx_tmp_fi3d1(:,k)=swdnc0(:,k)*swradcorr(:)
2432             ENDDO
2433          ENDIF
2434          CALL histwrite_phy(o_rsdcsaf, zx_tmp_fi3d1)
2435       ENDIF
2436
2437       CALL histwrite_phy(o_rlu, lwup)
2438       CALL histwrite_phy(o_rld, lwdn)
2439       CALL histwrite_phy(o_rlucs, lwup0)
2440       CALL histwrite_phy(o_rldcs, lwdn0)
2441
2442       IF (vars_defined) THEN
2443          zx_tmp_fi3d(1:klon,1:klev)=d_t(1:klon,1:klev)+ &
2444               d_t_dyn(1:klon,1:klev)
2445       ENDIF
2446       CALL histwrite_phy(o_tnt, zx_tmp_fi3d)
2447
2448       IF (vars_defined) THEN
2449          zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys + &
2450               d_t_lwr(1:klon,1:klev)/pdtphys
2451       ENDIF
2452       CALL histwrite_phy(o_tntr, zx_tmp_fi3d)
2453       IF (vars_defined) THEN
2454          zx_tmp_fi3d(1:klon,1:klev)= (d_t_lsc(1:klon,1:klev)+ &
2455               d_t_eva(1:klon,1:klev)+ &
2456               d_t_vdf(1:klon,1:klev))/pdtphys
2457       ENDIF
2458       CALL histwrite_phy(o_tntscpbl, zx_tmp_fi3d)
2459       IF (vars_defined) THEN
2460          zx_tmp_fi3d(1:klon,1:klev)=d_qx(1:klon,1:klev,ivap)+ &
2461               d_q_dyn(1:klon,1:klev)
2462       ENDIF
2463       CALL histwrite_phy(o_tnhus, zx_tmp_fi3d)
2464       IF (vars_defined) THEN
2465          zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys+ &
2466               d_q_eva(1:klon,1:klev)/pdtphys
2467       ENDIF
2468       CALL histwrite_phy(o_tnhusscpbl, zx_tmp_fi3d)
2469       CALL histwrite_phy(o_evu, coefm(:,:,is_ave))
2470       IF (vars_defined) THEN
2471          zx_tmp_fi3d(1:klon,1:klev)=q_seri(1:klon,1:klev)+ &
2472               ql_seri(1:klon,1:klev)
2473       ENDIF
2474       CALL histwrite_phy(o_h2o, zx_tmp_fi3d)
2475       IF (iflag_con >= 3) THEN
2476          IF (vars_defined) THEN
2477             zx_tmp_fi3d(1:klon,1:klev)=-1 * (dnwd(1:klon,1:klev)+ &
2478                  dnwd0(1:klon,1:klev))
2479          ENDIF
2480          CALL histwrite_phy(o_mcd, zx_tmp_fi3d)
2481          IF (vars_defined) THEN
2482             zx_tmp_fi3d(1:klon,1:klev)=upwd(1:klon,1:klev) + &
2483                  dnwd(1:klon,1:klev)+ dnwd0(1:klon,1:klev)
2484          ENDIF
2485          CALL histwrite_phy(o_dmc, zx_tmp_fi3d)
2486       ELSE IF (iflag_con == 2) THEN
2487          CALL histwrite_phy(o_mcd,  pmfd)
2488          IF (vars_defined) zx_tmp_fi3d = pmfu + pmfd
2489          CALL histwrite_phy(o_dmc,  zx_tmp_fi3d)
2490       ENDIF
2491       CALL histwrite_phy(o_ref_liq, ref_liq)
2492       CALL histwrite_phy(o_ref_ice, ref_ice)
2493!
2494       IF (ok_4xCO2atm) THEN
2495          IF (vars_defined) zx_tmp_fi2d(:) = swupp(:,klevp1)*swradcorr(:)
2496          CALL histwrite_phy(o_rsut4co2, zx_tmp_fi2d)
2497          IF (vars_defined) zx_tmp_fi2d(:) = lwupp(:,klevp1)
2498          CALL histwrite_phy(o_rlut4co2, zx_tmp_fi2d)
2499          IF (vars_defined) zx_tmp_fi2d(:) = swup0p(:,klevp1)*swradcorr(:)
2500          CALL histwrite_phy(o_rsutcs4co2, zx_tmp_fi2d)
2501          IF (vars_defined) zx_tmp_fi2d(:) = lwup0p(:,klevp1)
2502          CALL histwrite_phy(o_rlutcs4co2, zx_tmp_fi2d)
2503          IF (vars_defined) THEN
2504            DO k=1, klevp1
2505              zx_tmp_fi3d1(:,k)=swupp(:,k)*swradcorr(:)
2506            ENDDO
2507          ENDIF
2508          CALL histwrite_phy(o_rsu4co2, zx_tmp_fi3d1)
2509          IF (vars_defined) THEN
2510            DO k=1, klevp1
2511              zx_tmp_fi3d1(:,k)=swup0p(:,k)*swradcorr(:)
2512            ENDDO
2513          ENDIF
2514          CALL histwrite_phy(o_rsucs4co2, zx_tmp_fi3d1)
2515          IF (vars_defined) THEN
2516            DO k=1, klevp1
2517              zx_tmp_fi3d1(:,k)=swdnp(:,k)*swradcorr(:)
2518            ENDDO
2519          ENDIF
2520          CALL histwrite_phy(o_rsd4co2, zx_tmp_fi3d1)
2521          IF (vars_defined) THEN
2522            DO k=1, klevp1
2523              zx_tmp_fi3d1(:,k)=swdn0p(:,k)*swradcorr(:)
2524            ENDDO
2525          ENDIF
2526          CALL histwrite_phy(o_rsdcs4co2, zx_tmp_fi3d1)
2527          CALL histwrite_phy(o_rlu4co2, lwupp)
2528          CALL histwrite_phy(o_rlucs4co2, lwup0p)
2529          CALL histwrite_phy(o_rld4co2, lwdnp)
2530          CALL histwrite_phy(o_rldcs4co2, lwdn0p)
2531       ENDIF !ok_4xCO2atm
2532!!!!!!!!!!!! Sorties niveaux de pression NMC !!!!!!!!!!!!!!!!!!!!
2533#ifdef CPP_IOIPSL
2534       IF (.NOT. using_xios) THEN
2535         IF (.NOT.ok_all_xml) THEN
2536           ! ATTENTION, LES ANCIENS HISTWRITE ONT ETES CONSERVES EN ATTENDANT MIEUX:
2537           ! Champs interpolles sur des niveaux de pression
2538           DO iff=7, nfiles-1 !--OB: here we deal with files 7,8,9
2539
2540             CALL histwrite_phy(o_tnondef,tnondef(:,:,iff-6),iff)
2541             CALL histwrite_phy(o_ta,twriteSTD(:,:,iff-6),iff)
2542             CALL histwrite_phy(o_zg,phiwriteSTD(:,:,iff-6),iff)
2543             CALL histwrite_phy(o_hus,qwriteSTD(:,:,iff-6),iff)
2544             CALL histwrite_phy(o_hur,rhwriteSTD(:,:,iff-6),iff)
2545             CALL histwrite_phy(o_ua,uwriteSTD(:,:,iff-6),iff)
2546             CALL histwrite_phy(o_va,vwriteSTD(:,:,iff-6),iff)
2547             CALL histwrite_phy(o_wap,wwriteSTD(:,:,iff-6),iff)
2548             IF (vars_defined) THEN
2549               DO k=1, nlevSTD
2550                  DO i=1, klon
2551                     IF (tnondef(i,k,iff-6).NE.missing_val) THEN
2552                       IF (freq_outNMC(iff-6).LT.0) THEN
2553                          freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
2554                       ELSE
2555                          freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
2556                       ENDIF
2557                       zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,iff-6))/freq_moyNMC(iff-6)
2558                     ELSE
2559                       zx_tmp_fi3d_STD(i,k) = missing_val
2560                     ENDIF
2561                  ENDDO
2562               ENDDO
2563             ENDIF
2564             CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD,iff)
2565             IF (vars_defined) THEN
2566               DO k=1, nlevSTD
2567                  DO i=1, klon
2568                    IF (O3sumSTD(i,k,iff-6).NE.missing_val) THEN
2569                       zx_tmp_fi3d_STD(i,k) = O3sumSTD(i,k,iff-6) * 1.e+9
2570                    ELSE
2571                       zx_tmp_fi3d_STD(i,k) = missing_val
2572                    ENDIF
2573                  ENDDO
2574               ENDDO !k=1, nlevSTD
2575             ENDIF
2576             CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD,iff)
2577             IF (read_climoz == 2) THEN
2578               IF (vars_defined) THEN
2579                 DO k=1, nlevSTD
2580                   DO i=1, klon
2581                      IF (O3daysumSTD(i,k,iff-6).NE.missing_val) THEN
2582                         zx_tmp_fi3d_STD(i,k) = O3daysumSTD(i,k,iff-6) * 1.e+9
2583                      ELSE
2584                         zx_tmp_fi3d_STD(i,k) = missing_val
2585                      ENDIF
2586                   ENDDO
2587                 ENDDO !k=1, nlevSTD
2588               ENDIF
2589               CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD,iff)
2590             ENDIF
2591             CALL histwrite_phy(o_uxv,uvsumSTD(:,:,iff-6),iff)
2592             CALL histwrite_phy(o_vxq,vqsumSTD(:,:,iff-6),iff)
2593             CALL histwrite_phy(o_vxT,vTsumSTD(:,:,iff-6),iff)
2594             CALL histwrite_phy(o_wxq,wqsumSTD(:,:,iff-6),iff)
2595             CALL histwrite_phy(o_vxphi,vphisumSTD(:,:,iff-6),iff)
2596             CALL histwrite_phy(o_wxT,wTsumSTD(:,:,iff-6),iff)
2597             CALL histwrite_phy(o_uxu,u2sumSTD(:,:,iff-6),iff)
2598             CALL histwrite_phy(o_vxv,v2sumSTD(:,:,iff-6),iff)
2599             CALL histwrite_phy(o_TxT,T2sumSTD(:,:,iff-6),iff)
2600           ENDDO !nfiles
2601         ENDIF
2602       ENDIF !.NOT. using_xios
2603#endif
2604
2605       IF (using_xios) THEN
2606         IF (ok_all_xml) THEN
2607    !      DO iff=7, nfiles
2608
2609!         CALL histwrite_phy(o_tnondef,tnondef(:,:,3))
2610          CALL histwrite_phy(o_ta,tlevSTD(:,:))
2611          CALL histwrite_phy(o_zg,philevSTD(:,:))
2612          CALL histwrite_phy(o_hus,qlevSTD(:,:))
2613          CALL histwrite_phy(o_hur,rhlevSTD(:,:))
2614          CALL histwrite_phy(o_ua,ulevSTD(:,:))
2615          CALL histwrite_phy(o_va,vlevSTD(:,:))
2616          CALL histwrite_phy(o_wap,wlevSTD(:,:))
2617!         IF (vars_defined) THEN
2618!            DO k=1, nlevSTD
2619!               DO i=1, klon
2620!                  IF (tnondef(i,k,3).NE.missing_val) THEN
2621!                     IF (freq_outNMC(iff-6).LT.0) THEN
2622!                        freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
2623!                     ELSE
2624!                        freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
2625!                     ENDIF
2626!                     zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,3))/freq_moyNMC(iff-6)
2627!                  ELSE
2628!                     zx_tmp_fi3d_STD(i,k) = missing_val
2629!                  ENDIF
2630!               ENDDO
2631!            ENDDO
2632!         ENDIF
2633!         CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD)
2634          IF (vars_defined) THEN
2635             DO k=1, nlevSTD
2636                DO i=1, klon
2637                   IF (O3STD(i,k).NE.missing_val) THEN
2638                      zx_tmp_fi3d_STD(i,k) = O3STD(i,k) * 1.e+9
2639                   ELSE
2640                      zx_tmp_fi3d_STD(i,k) = missing_val
2641                   ENDIF
2642                ENDDO
2643             ENDDO !k=1, nlevSTD
2644          ENDIF
2645          CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD)
2646          IF (read_climoz == 2) THEN
2647             IF (vars_defined) THEN
2648                DO k=1, nlevSTD
2649                   DO i=1, klon
2650                      IF (O3daySTD(i,k).NE.missing_val) THEN
2651                         zx_tmp_fi3d_STD(i,k) = O3daySTD(i,k) * 1.e+9
2652                      ELSE
2653                         zx_tmp_fi3d_STD(i,k) = missing_val
2654                      ENDIF
2655                   ENDDO
2656                ENDDO !k=1, nlevSTD
2657             ENDIF
2658             CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD)
2659          ENDIF
2660          CALL histwrite_phy(o_uxv,uvSTD(:,:))
2661          CALL histwrite_phy(o_vxq,vqSTD(:,:))
2662          CALL histwrite_phy(o_vxT,vTSTD(:,:))
2663          CALL histwrite_phy(o_wxq,wqSTD(:,:))
2664          CALL histwrite_phy(o_vxphi,vphiSTD(:,:))
2665          CALL histwrite_phy(o_wxT,wTSTD(:,:))
2666          CALL histwrite_phy(o_uxu,u2STD(:,:))
2667          CALL histwrite_phy(o_vxv,v2STD(:,:))
2668          CALL histwrite_phy(o_TxT,T2STD(:,:))
2669!      ENDDO !nfiles
2670    ENDIF
2671  ENDIF !using_xios
2672!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2673       IF (iflag_phytrac == 1 ) then
2674!
2675         IF (type_trac == 'co2i') THEN
2676           itr = 0
2677           DO iq = 1, nqtot
2678             IF(.NOT.tracers(iq)%isInPhysics) CYCLE
2679             itr = itr + 1
2680!            write(*,*) 'phys_output_write_mod 2370: itr=',itr
2681             !--3D fields
2682             CALL histwrite_phy(o_trac(itr), tr_seri(:,:,itr))
2683             CALL histwrite_phy(o_dtr_vdf(itr),d_tr_cl(:,:,itr))
2684             CALL histwrite_phy(o_dtr_the(itr),d_tr_th(:,:,itr))
2685             CALL histwrite_phy(o_dtr_con(itr),d_tr_cv(:,:,itr))
2686             !--2D fields
2687             !--CO2 burden
2688             zx_tmp_fi2d=0.
2689             IF (vars_defined) THEN
2690                DO k=1,klev
2691                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,itr)
2692                ENDDO
2693             ENDIF
2694             CALL histwrite_phy(o_trac_cum(itr), zx_tmp_fi2d)
2695           ENDDO !--iq
2696           !--CO2 net fluxes
2697           CALL histwrite_phy(o_flx_co2_land,  fco2_land)
2698           CALL histwrite_phy(o_flx_co2_ocean, fco2_ocean)
2699           CALL histwrite_phy(o_flx_co2_ocean_cor, fco2_ocean_cor)
2700           CALL histwrite_phy(o_flx_co2_land_cor, fco2_land_cor)
2701           CALL histwrite_phy(o_flx_co2_ff,    fco2_ff)
2702           CALL histwrite_phy(o_flx_co2_bb,    fco2_bb)
2703
2704         ELSE IF (type_trac == 'inco') THEN
2705           itr = 0
2706           DO iq = 1, nqtot
2707             IF(.NOT.tracers(iq)%isInPhysics) CYCLE
2708             itr = itr+1
2709             IF(tracers(iq)%component /= 'co2i') CYCLE
2710             !--3D fields
2711             CALL histwrite_phy(o_trac   (itr),tr_seri(:,:,itr))
2712             CALL histwrite_phy(o_dtr_vdf(itr),d_tr_cl(:,:,itr))
2713             CALL histwrite_phy(o_dtr_the(itr),d_tr_th(:,:,itr))
2714             CALL histwrite_phy(o_dtr_con(itr),d_tr_cv(:,:,itr))
2715             !--2D fields
2716             !--CO2 burden
2717             zx_tmp_fi2d=0.
2718             IF (vars_defined) THEN
2719                DO k=1,klev
2720                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,itr)
2721                ENDDO
2722             ENDIF
2723             CALL histwrite_phy(o_trac_cum(itr), zx_tmp_fi2d)
2724           ENDDO !--iq
2725           !--CO2 net fluxes
2726           CALL histwrite_phy(o_flx_co2_land,  fco2_land)
2727           CALL histwrite_phy(o_flx_co2_ocean, fco2_ocean)
2728           CALL histwrite_phy(o_flx_co2_ocean_cor, fco2_ocean_cor)
2729           CALL histwrite_phy(o_flx_co2_land_cor, fco2_land_cor)
2730           CALL histwrite_phy(o_flx_co2_ff,    fco2_ff)
2731           CALL histwrite_phy(o_flx_co2_bb,    fco2_bb)
2732
2733         ELSE IF (ANY(type_trac==['lmdz','coag'])) THEN
2734           itr = 0
2735           DO iq = 1, nqtot
2736             IF(.NOT.tracers(iq)%isInPhysics) CYCLE
2737             itr = itr + 1
2738!            write(*,*) 'phys_output_write_mod 2337: itr=',itr
2739             !--3D fields
2740             CALL histwrite_phy(o_trac(itr), tr_seri(:,:,itr))
2741             CALL histwrite_phy(o_dtr_vdf(itr),d_tr_cl(:,:,itr))
2742             CALL histwrite_phy(o_dtr_the(itr),d_tr_th(:,:,itr))
2743             CALL histwrite_phy(o_dtr_con(itr),d_tr_cv(:,:,itr))
2744             CALL histwrite_phy(o_dtr_lessi_impa(itr),d_tr_lessi_impa(:,:,itr))
2745             CALL histwrite_phy(o_dtr_lessi_nucl(itr),d_tr_lessi_nucl(:,:,itr))
2746             CALL histwrite_phy(o_dtr_insc(itr),d_tr_insc(:,:,itr))
2747             CALL histwrite_phy(o_dtr_bcscav(itr),d_tr_bcscav(:,:,itr))
2748             CALL histwrite_phy(o_dtr_evapls(itr),d_tr_evapls(:,:,itr))
2749             CALL histwrite_phy(o_dtr_ls(itr),d_tr_ls(:,:,itr))
2750             CALL histwrite_phy(o_dtr_trsp(itr),d_tr_trsp(:,:,itr))
2751             CALL histwrite_phy(o_dtr_sscav(itr),d_tr_sscav(:,:,itr))
2752             CALL histwrite_phy(o_dtr_sat(itr),d_tr_sat(:,:,itr))
2753             CALL histwrite_phy(o_dtr_uscav(itr),d_tr_uscav(:,:,itr))
2754            !--2D fields
2755             CALL histwrite_phy(o_dtr_dry(itr), flux_tr_dry(:,itr))
2756             zx_tmp_fi2d=0.
2757             IF (vars_defined) THEN
2758                DO k=1,klev
2759                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,itr)
2760                ENDDO
2761             ENDIF
2762             CALL histwrite_phy(o_trac_cum(itr), zx_tmp_fi2d)
2763           ENDDO !--iq
2764         ENDIF   !--type_trac
2765       ENDIF   !(iflag_phytrac==1)
2766
2767       if (activate_ocean_skin >= 1) then
2768          CALL histwrite_phy(o_delta_sst, delta_sst)
2769          CALL histwrite_phy(o_delta_sal, delta_sal)
2770          CALL histwrite_phy(o_ds_ns, ds_ns)
2771          CALL histwrite_phy(o_dt_ns, dt_ns)
2772          CALL histwrite_phy(o_dter, dter)
2773          CALL histwrite_phy(o_dser, dser)
2774          CALL histwrite_phy(o_tkt, tkt)
2775          CALL histwrite_phy(o_tks, tks)
2776          CALL histwrite_phy(o_taur, taur)
2777          CALL histwrite_phy(o_sss, sss)
2778       end if
2779
2780#ifdef ISO
2781    do ixt=1,ntiso
2782!        write(*,*) 'ixt'
2783        IF (vars_defined) zx_tmp_fi2d(:) = xtrain_fall(ixt,:) + xtsnow_fall(ixt,:)
2784        CALL histwrite_phy(o_xtprecip(ixt), zx_tmp_fi2d)
2785
2786        IF (vars_defined) zx_tmp_fi2d(:) = xtrain_lsc(ixt,:) + xtsnow_lsc(ixt,:)
2787        CALL histwrite_phy(o_xtplul(ixt), zx_tmp_fi2d)
2788
2789        IF (vars_defined) zx_tmp_fi2d(:) = xtrain_con(ixt,:) + xtsnow_con(ixt,:)
2790        CALL histwrite_phy(o_xtpluc(ixt), zx_tmp_fi2d)
2791        CALL histwrite_phy(o_xtevap(ixt),   xtevap(ixt,:))
2792        CALL histwrite_phy(o_xtovap(ixt),  xt_seri(ixt,:,:))
2793        CALL histwrite_phy(o_xtoliq(ixt), xtl_seri(ixt,:,:))
2794
2795        DO nsrf = 1, nbsrf ! ajout Camille 8 mai 2023
2796        IF (vars_defined)       zx_tmp_fi2d(1 : klon) = fxtevap(ixt,:, nsrf)
2797        CALL histwrite_phy(o_xtevap_srf(ixt,nsrf), zx_tmp_fi2d)
2798        ENDDO
2799
2800        IF (vars_defined) zx_tmp_fi3d(:,:)=xtl_seri(ixt,:,:)+xts_seri(ixt,:,:)
2801        CALL histwrite_phy(o_xtcond(ixt), zx_tmp_fi3d)
2802        CALL histwrite_phy(o_dxtdyn(ixt),   d_xt_dyn(ixt,:,:))
2803        CALL histwrite_phy(o_dxtldyn(ixt), d_xtl_dyn(ixt,:,:))
2804
2805        IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_con(ixt,:,:)/pdtphys
2806        CALL histwrite_phy(o_dxtcon(ixt), zx_tmp_fi3d)
2807
2808        IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_lsc(ixt,:,:)/pdtphys
2809        CALL histwrite_phy(o_dxtlsc(ixt), zx_tmp_fi3d)
2810
2811        IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_eva(ixt,:,:)/pdtphys
2812        CALL histwrite_phy(o_dxteva(ixt), zx_tmp_fi3d)
2813
2814        IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_vdf(ixt,:,:)/pdtphys
2815        CALL histwrite_phy(o_dxtvdf(ixt), zx_tmp_fi3d)
2816
2817        IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_ajsb(ixt,:,:)/pdtphys
2818        CALL histwrite_phy(o_dxtajs(ixt), zx_tmp_fi3d)
2819
2820        IF (vars_defined) zx_tmp_fi3d(:,:)=(d_xt_ajs(ixt,:,:)-d_xt_ajsb(ixt,:,:))/pdtphys
2821        CALL histwrite_phy(o_dxtthe(ixt), zx_tmp_fi3d)
2822
2823        IF (ok_qch4) THEN
2824          IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_ch4(ixt,:,:)/pdtphys
2825          CALL histwrite_phy(o_dxtch4(ixt), zx_tmp_fi3d)
2826        ENDIF
2827
2828        IF (ixt == iso_HTO) THEN
2829          IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_prod_nucl(ixt,:,:)/pdtphys
2830          CALL histwrite_phy(o_dxtprod_nucl(ixt), zx_tmp_fi3d)
2831
2832          IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_cosmo(ixt,:,:)/pdtphys
2833          CALL histwrite_phy(o_dxtcosmo(ixt), zx_tmp_fi3d)
2834
2835          IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_decroiss(ixt,:,:)/pdtphys
2836          CALL histwrite_phy(o_dxtdecroiss(ixt), zx_tmp_fi3d)
2837        ENDIF
2838
2839    !write(*,*) 'phys_output_write_mod 2531'
2840    ENDDO
2841#endif
2842
2843       IF (.NOT.vars_defined) THEN
2844          !$OMP MASTER
2845#ifndef CPP_IOIPSL_NO_OUTPUT
2846          DO iff=1,nfiles
2847             IF (clef_files(iff)) THEN
2848                CALL histend(nid_files(iff))
2849                ndex2d = 0
2850                ndex3d = 0
2851             ENDIF ! clef_files
2852          ENDDO !  iff
2853#endif
2854          !On finalise l'initialisation:
2855          IF (using_xios) CALL wxios_closedef()
2856
2857          !$OMP END MASTER
2858          !$OMP BARRIER
2859          vars_defined = .TRUE.
2860
2861       ENDIF !--.NOT.vars_defined
2862
2863    ENDDO
2864
2865    IF (vars_defined) THEN
2866       ! On synchronise les fichiers pour IOIPSL
2867#ifndef CPP_IOIPSL_NO_OUTPUT
2868       !$OMP MASTER
2869       DO iff=1,nfiles
2870          IF (ok_sync .AND. clef_files(iff)) THEN
2871             CALL histsync(nid_files(iff))
2872          ENDIF
2873       ENDDO
2874       !$OMP END MASTER
2875#endif
2876    ENDIF
2877
2878  END SUBROUTINE phys_output_write
2879
2880END MODULE phys_output_write_mod
Note: See TracBrowser for help on using the repository browser.