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

Last change on this file since 4881 was 4881, checked in by evignon, 7 weeks ago

extraction plus propre de la dissipation de TKE

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