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

Last change on this file since 5201 was 5150, checked in by lebasn, 3 months ago

StratAer?: add effective radius diag.

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