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

Last change on this file since 5173 was 5160, checked in by abarral, 11 months ago

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