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

Last change on this file since 5473 was 5473, checked in by jyg, 24 hours ago

output the total wet deposit of tracers (convective + large scale)

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