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

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

Put YOMCST.h into modules

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