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

Last change on this file since 5447 was 5447, checked in by jyg, 6 hours ago

output the convective wet deposit of tracers

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