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

Last change on this file since 5624 was 5614, checked in by evignon, 7 months ago

Commission liée à un update majeur de la routine de condensation grande echelle suite au travail
de Lea, Audran et Etienne
Elle inclue une restructuration des routines pour clarifier le role "moniteur" de la routine lscp_main,
une mise à jour de la parametrisation de partitionnement de phase de Lea pour inclure les nuages de couche limite,
ainsi que des corrections des routines de precipitations "poprecip".
Convergence numerique verifiee en prod et debug pour les physiques NPv6.3 et 7.0.1c

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