source: LMDZ6/branches/contrails/libf/phylmd/phys_output_write_mod.F90 @ 5453

Last change on this file since 5453 was 5453, checked in by aborella, 36 hours ago

Added water emissions and IO routines for contrails.
Work to be done: contrails initial cross section and radiative transfer

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