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

Last change on this file since 5374 was 5363, checked in by evignon, 8 months ago

Valentin Wiener, Etienne Vignon: ustar dans les sorties n'est plus un diag ad-hoc mais la variable
directement reliée à la tension de vent en surface

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