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

Last change on this file since 5649 was 5627, checked in by amaison, 2 months ago

Representation of heterogeneous continental subsurfaces with parameter or flux aggregation in the simplified surface model (bucket) for 1D case studies.

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