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

Last change on this file since 5456 was 5456, checked in by aborella, 24 hours ago

Added diagnostics for contrails fraction

  • 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.3 KB
Line 
1!
2! $Id: phys_output_write_mod.F90 5456 2024-12-23 20:37:29Z 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, o_contfra, &
229         o_Tcritcont, o_qcritcont, o_potcontfraP, o_potcontfraNP, &
230         o_dcontfracir, 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, contfra, &
353         Tcritcont, qcritcont, potcontfraP, potcontfraNP, &
354         dcontfra_cir, 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_contfra, contfra)
2135         CALL histwrite_phy(o_dcontfracir, dcontfra_cir)
2136         CALL histwrite_phy(o_dcfavi, dcf_avi)
2137         CALL histwrite_phy(o_dqiavi, dqi_avi)
2138         CALL histwrite_phy(o_dqvcavi, dqvc_avi)
2139       ENDIF
2140       IF (ok_plane_h2o) THEN
2141         CALL histwrite_phy(o_flight_h2o, flight_h2o)
2142         CALL histwrite_phy(o_dqavi, d_q_avi)
2143       ENDIF
2144       
2145       IF (vars_defined) zx_tmp_fi3d = wo(:, :, 1) * dobson_u * 1e3 / zmasse / rmo3 * rmd
2146       CALL histwrite_phy(o_ozone, zx_tmp_fi3d)
2147
2148       IF (read_climoz == 2) THEN
2149         IF (vars_defined) zx_tmp_fi3d = wo(:, :, 2) * dobson_u * 1e3 / zmasse / rmo3 * rmd
2150         CALL histwrite_phy(o_ozone_light, zx_tmp_fi3d)
2151       ENDIF
2152
2153       CALL histwrite_phy(o_duphy, d_u)
2154
2155       CALL histwrite_phy(o_dtphy, d_t)
2156
2157       CALL histwrite_phy(o_dqphy,  d_qx(:,:,ivap))
2158       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,ivap),zmasse,zx_tmp_fi2d)
2159       CALL histwrite_phy(o_dqphy2d,  zx_tmp_fi2d)
2160
2161       CALL histwrite_phy(o_dqlphy,  d_qx(:,:,iliq))
2162       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,iliq),zmasse,zx_tmp_fi2d)
2163       CALL histwrite_phy(o_dqlphy2d,  zx_tmp_fi2d)
2164
2165       IF (nqo.EQ.3) THEN
2166       CALL histwrite_phy(o_dqsphy,  d_qx(:,:,isol))
2167       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,isol),zmasse,zx_tmp_fi2d)
2168       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
2169       ELSE
2170       zx_tmp_fi3d=0.0
2171       CALL histwrite_phy(o_dqsphy,  zx_tmp_fi3d)
2172       zx_tmp_fi2d=0.0
2173       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
2174       ENDIF
2175
2176
2177       IF (ok_bs) THEN
2178       CALL histwrite_phy(o_dqbsphy,  d_qx(:,:,ibs))
2179       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,ibs),zmasse,zx_tmp_fi2d)
2180       CALL histwrite_phy(o_dqbsphy2d,  zx_tmp_fi2d)
2181       ELSE
2182       zx_tmp_fi3d=0.0
2183       CALL histwrite_phy(o_dqbsphy,  zx_tmp_fi3d)
2184       zx_tmp_fi2d=0.0
2185       CALL histwrite_phy(o_dqbsphy2d,  zx_tmp_fi2d)
2186       ENDIF
2187
2188       DO nsrf=1, nbsrf
2189          IF (vars_defined) zx_tmp_fi2d(1 : klon) = falb1( 1 : klon, nsrf)
2190          CALL histwrite_phy(o_albe_srf(nsrf), zx_tmp_fi2d)
2191          IF (vars_defined) zx_tmp_fi2d(1 : klon) = z0m( 1 : klon, nsrf)
2192          CALL histwrite_phy(o_z0m_srf(nsrf), zx_tmp_fi2d)
2193          IF (vars_defined) zx_tmp_fi2d(1 : klon) = z0h( 1 : klon, nsrf)
2194          CALL histwrite_phy(o_z0h_srf(nsrf), zx_tmp_fi2d)
2195          IF (vars_defined) zx_tmp_fi2d(1 : klon) = agesno( 1 : klon, nsrf)
2196          CALL histwrite_phy(o_ages_srf(nsrf), zx_tmp_fi2d)
2197          IF (vars_defined) zx_tmp_fi2d(1 : klon) = snow( 1 : klon, nsrf)
2198          CALL histwrite_phy(o_snow_srf(nsrf), zx_tmp_fi2d)
2199       ENDDO !nsrf=1, nbsrf
2200       CALL histwrite_phy(o_alb1, albsol1)
2201       CALL histwrite_phy(o_alb2, albsol2)
2202       !FH Sorties pour la couche limite
2203       IF (iflag_pbl>1) THEN
2204          zx_tmp_fi3d=0.
2205          IF (vars_defined) THEN
2206             DO nsrf=1,nbsrf
2207                DO k=1,klev
2208                   zx_tmp_fi3d(:,k)=zx_tmp_fi3d(:,k) &
2209                        +pctsrf(:,nsrf)*pbl_tke(:,k,nsrf)
2210                ENDDO
2211             ENDDO
2212          ENDIF
2213          CALL histwrite_phy(o_tke, zx_tmp_fi3d)
2214          CALL histwrite_phy(o_tke_max, zx_tmp_fi3d) 
2215       ENDIF
2216
2217       CALL histwrite_phy(o_kz, coefh(:,:,is_ave))
2218
2219       CALL histwrite_phy(o_kz_max, coefh(:,:,is_ave))
2220
2221       CALL histwrite_phy(o_clwcon, clwcon0)
2222
2223       CALL histwrite_phy(o_dtdyn, d_t_dyn)
2224
2225       CALL histwrite_phy(o_dqdyn, d_q_dyn)
2226
2227       CALL histwrite_phy(o_dqdyn2d,d_q_dyn2d)
2228
2229       CALL histwrite_phy(o_dqldyn, d_ql_dyn)
2230
2231       CALL histwrite_phy(o_dqldyn2d, d_ql_dyn2d)
2232
2233       CALL histwrite_phy(o_dqsdyn, d_qs_dyn)
2234
2235       CALL histwrite_phy(o_dqsdyn2d, d_qs_dyn2d)
2236
2237       IF (ok_bs) THEN
2238         CALL histwrite_phy(o_dqbsdyn, d_qbs_dyn)
2239         CALL histwrite_phy(o_dqbsdyn2d, d_qbs_dyn2d)
2240       ENDIF
2241
2242       CALL histwrite_phy(o_dudyn, d_u_dyn)
2243       CALL histwrite_phy(o_dvdyn, d_v_dyn)
2244
2245       IF (vars_defined) THEN
2246          zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys
2247       ENDIF
2248       CALL histwrite_phy(o_dtcon, zx_tmp_fi3d)
2249       IF (iflag_thermals.EQ.0) THEN
2250          IF (vars_defined) THEN
2251             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
2252                  d_t_ajsb(1:klon,1:klev)/pdtphys
2253          ENDIF
2254          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
2255       ELSE IF(iflag_thermals.GE.1.AND.iflag_wake.EQ.1) THEN
2256          IF (vars_defined) THEN
2257             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
2258                  d_t_ajs(1:klon,1:klev)/pdtphys + &
2259                  d_t_wake(1:klon,1:klev)/pdtphys
2260          ENDIF
2261          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
2262       ENDIF
2263       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_con(1:klon,1:klev)/pdtphys
2264       CALL histwrite_phy(o_ducon, zx_tmp_fi3d)
2265       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_con(1:klon,1:klev)/pdtphys
2266       CALL histwrite_phy(o_dvcon, zx_tmp_fi3d)
2267       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
2268       CALL histwrite_phy(o_dqcon, zx_tmp_fi3d)
2269       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2270       CALL histwrite_phy(o_dqcon2d, zx_tmp_fi2d)
2271
2272       IF (iflag_thermals.EQ.0) THEN
2273          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
2274          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
2275       ELSE IF (iflag_thermals.GE.1.AND.iflag_wake.EQ.1) THEN
2276          IF (vars_defined) THEN
2277             zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys + &
2278                  d_q_ajs(1:klon,1:klev)/pdtphys + &
2279                  d_q_wake(1:klon,1:klev)/pdtphys
2280          ENDIF
2281          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
2282       ENDIF
2283
2284       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lsc(1:klon,1:klev)/pdtphys
2285       CALL histwrite_phy(o_dtlsc, zx_tmp_fi3d)
2286       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
2287       CALL histwrite_phy(o_dtlschr, zx_tmp_fi3d)
2288       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys
2289       CALL histwrite_phy(o_dqlsc, zx_tmp_fi3d)
2290       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2291       CALL histwrite_phy(o_dqlsc2d, zx_tmp_fi2d)
2292       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=beta_prec(1:klon,1:klev)
2293       CALL histwrite_phy(o_beta_prec, zx_tmp_fi3d)
2294!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2295       ! Sorties specifiques a la separation thermiques/non thermiques
2296       IF (iflag_thermals>=1) THEN
2297          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscth(1:klon,1:klev)/pdtphys
2298          CALL histwrite_phy(o_dtlscth, zx_tmp_fi3d)
2299          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscst(1:klon,1:klev)/pdtphys
2300          CALL histwrite_phy(o_dtlscst, zx_tmp_fi3d)
2301          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscth(1:klon,1:klev)/pdtphys
2302          CALL histwrite_phy(o_dqlscth, zx_tmp_fi3d)
2303          IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2304          CALL histwrite_phy(o_dqlscth2d, zx_tmp_fi2d)
2305          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscst(1:klon,1:klev)/pdtphys
2306          CALL histwrite_phy(o_dqlscst, zx_tmp_fi3d)
2307          IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2308          CALL histwrite_phy(o_dqlscst2d, zx_tmp_fi2d)
2309          CALL histwrite_phy(o_plulth, plul_th)
2310          CALL histwrite_phy(o_plulst, plul_st)
2311          IF (vars_defined) THEN
2312             DO i=1,klon
2313                zx_tmp_fi2d(1:klon)=lmax_th(:)
2314             ENDDO
2315          ENDIF
2316          CALL histwrite_phy(o_lmaxth, zx_tmp_fi2d)
2317          IF (vars_defined) THEN
2318             DO k=1,klev
2319                DO i=1,klon
2320                   IF (ptconvth(i,k)) THEN
2321                      zx_tmp_fi3d(i,k)=1.
2322                   ELSE
2323                      zx_tmp_fi3d(i,k)=0.
2324                   ENDIF
2325                ENDDO
2326             ENDDO
2327          ENDIF
2328          CALL histwrite_phy(o_ptconvth, zx_tmp_fi3d)
2329       ENDIF ! iflag_thermals>=1
2330!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2331       zpt_conv = 0.
2332       WHERE (ptconv) zpt_conv = 1.
2333       CALL histwrite_phy(o_ptconv, zpt_conv)
2334!!       IF (vars_defined)         zx_tmp_fi2d=float(itau_con)/float(itap)
2335!!       CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
2336       IF (vars_defined) THEN
2337          zpt_conv2d(:) = 0.
2338          DO k=1,klev
2339            WHERE (ptconv(:,k)) zpt_conv2d(:) = 1.
2340          ENDDO
2341       ENDIF
2342       CALL histwrite_phy(o_ftime_deepcv, zpt_conv2d)
2343       IF (vars_defined) THEN
2344          zx_tmp_fi2d(:) = 0.
2345          DO k=1,klev
2346            WHERE (ptconvth(:,k)) zx_tmp_fi2d(:) = 1.
2347          ENDDO
2348       ENDIF
2349       CALL histwrite_phy(o_ftime_th, zx_tmp_fi2d)
2350       IF (vars_defined) THEN
2351           zx_tmp_fi2d(:) = max(zx_tmp_fi2d(:),zpt_conv2d(:))
2352       ENDIF
2353       CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
2354!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2355       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf(1:klon,1:klev)/pdtphys
2356       CALL histwrite_phy(o_dtvdf, zx_tmp_fi3d)
2357       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_diss(1:klon,1:klev)/pdtphys
2358       CALL histwrite_phy(o_dtdis, zx_tmp_fi3d)
2359       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf(1:klon,1:klev)/pdtphys
2360       CALL histwrite_phy(o_dqvdf, zx_tmp_fi3d)
2361       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2362       CALL histwrite_phy(o_dqvdf2d, zx_tmp_fi2d)
2363       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_eva(1:klon,1:klev)/pdtphys
2364       CALL histwrite_phy(o_dteva, zx_tmp_fi3d)
2365       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_eva(1:klon,1:klev)/pdtphys
2366       CALL histwrite_phy(o_dqeva, zx_tmp_fi3d)
2367       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2368       CALL histwrite_phy(o_dqeva2d, zx_tmp_fi2d)
2369       CALL histwrite_phy(o_ratqs, ratqs)
2370       IF (vars_defined) THEN
2371          zx_tmp_fi3d(1:klon,1:klev)=d_t_ajs(1:klon,1:klev)/pdtphys - &
2372               d_t_ajsb(1:klon,1:klev)/pdtphys
2373       ENDIF
2374       CALL histwrite_phy(o_dtthe, zx_tmp_fi3d)
2375       IF (vars_defined) THEN
2376          zx_tmp_fi3d(1:klon,1:klev)=d_u_ajs(1:klon,1:klev)/pdtphys
2377       ENDIF
2378       CALL histwrite_phy(o_duthe, zx_tmp_fi3d)
2379       IF (vars_defined) THEN
2380          zx_tmp_fi3d(1:klon,1:klev)=d_v_ajs(1:klon,1:klev)/pdtphys
2381       ENDIF
2382       CALL histwrite_phy(o_dvthe, zx_tmp_fi3d)
2383
2384       IF (ok_bs) THEN
2385          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_qbs_vdf(1:klon,1:klev)/pdtphys
2386          CALL histwrite_phy(o_dqbsvdf, zx_tmp_fi3d)
2387          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_qbs_bsss(1:klon,1:klev)/pdtphys
2388          CALL histwrite_phy(o_dqbsbs, zx_tmp_fi3d)
2389          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_bsss(1:klon,1:klev)/pdtphys
2390          CALL histwrite_phy(o_dqbs, zx_tmp_fi3d)
2391          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_bsss(1:klon,1:klev)/pdtphys
2392          CALL histwrite_phy(o_dtbs, zx_tmp_fi3d)
2393       ENDIF
2394
2395       IF (iflag_thermals>=1) THEN
2396          ! Pour l instant 0 a y reflichir pour les thermiques
2397          ! regroupe avec ftime_deepcv et ftime_con
2398          !!zx_tmp_fi2d=0.
2399          !!CALL histwrite_phy(o_ftime_th, zx_tmp_fi2d)
2400          CALL histwrite_phy(o_f_th, fm_therm)
2401          CALL histwrite_phy(o_e_th, entr_therm)
2402          CALL histwrite_phy(o_w_th, zw2)
2403          CALL histwrite_phy(o_q_th, zqasc)
2404          CALL histwrite_phy(o_a_th, fraca)
2405          CALL histwrite_phy(o_cloudth_sth, cloudth_sth)
2406          CALL histwrite_phy(o_cloudth_senv, cloudth_senv)
2407          CALL histwrite_phy(o_cloudth_sigmath, cloudth_sigmath)
2408          CALL histwrite_phy(o_cloudth_sigmaenv, cloudth_sigmaenv)
2409          CALL histwrite_phy(o_d_th, detr_therm)
2410          CALL histwrite_phy(o_f0_th, f0)
2411          CALL histwrite_phy(o_zmax_th, zmax_th)
2412          IF (vars_defined) THEN
2413             zx_tmp_fi3d(1:klon,1:klev)=d_q_ajs(1:klon,1:klev)/pdtphys-d_q_ajsb(1:klon,1:klev)/pdtphys
2414          ENDIF
2415          CALL histwrite_phy(o_dqthe, zx_tmp_fi3d)
2416          IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2417          CALL histwrite_phy(o_dqthe2d, zx_tmp_fi2d)
2418       ENDIF !iflag_thermals
2419       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ajsb(1:klon,1:klev)/pdtphys
2420       CALL histwrite_phy(o_dtajs, zx_tmp_fi3d)
2421       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_ajsb(1:klon,1:klev)/pdtphys
2422       CALL histwrite_phy(o_dqajs, zx_tmp_fi3d)
2423       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2424       CALL histwrite_phy(o_dqajs2d, zx_tmp_fi2d)
2425       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys
2426       CALL histwrite_phy(o_dtswr, zx_tmp_fi3d)
2427       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_sw0(1:klon,1:klev)/pdtphys
2428       CALL histwrite_phy(o_dtsw0, zx_tmp_fi3d)
2429       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lwr(1:klon,1:klev)/pdtphys
2430       CALL histwrite_phy(o_dtlwr, zx_tmp_fi3d)
2431       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lw0(1:klon,1:klev)/pdtphys
2432       CALL histwrite_phy(o_dtlw0, zx_tmp_fi3d)
2433       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ec(1:klon,1:klev)/pdtphys
2434       CALL histwrite_phy(o_dtec, zx_tmp_fi3d)
2435       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_vdf(1:klon,1:klev)/pdtphys
2436       CALL histwrite_phy(o_duvdf, zx_tmp_fi3d)
2437       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_vdf(1:klon,1:klev)/pdtphys
2438       CALL histwrite_phy(o_dvvdf, zx_tmp_fi3d)
2439       IF (ok_orodr) THEN
2440          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_oro(1:klon,1:klev)/pdtphys
2441          CALL histwrite_phy(o_duoro, zx_tmp_fi3d)
2442          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_oro(1:klon,1:klev)/pdtphys
2443          CALL histwrite_phy(o_dvoro, zx_tmp_fi3d)
2444          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_oro(1:klon,1:klev)/pdtphys
2445          CALL histwrite_phy(o_dtoro, zx_tmp_fi3d)
2446       ENDIF
2447       IF (ok_orolf) THEN
2448          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_lif(1:klon,1:klev)/pdtphys
2449          CALL histwrite_phy(o_dulif, zx_tmp_fi3d)
2450
2451          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_lif(1:klon,1:klev)/pdtphys
2452          CALL histwrite_phy(o_dvlif, zx_tmp_fi3d)
2453
2454          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lif(1:klon,1:klev)/pdtphys
2455          CALL histwrite_phy(o_dtlif, zx_tmp_fi3d)
2456       ENDIF
2457
2458       IF (ok_hines) THEN
2459          IF (vars_defined) zx_tmp_fi3d=du_gwd_hines/pdtphys
2460          CALL histwrite_phy(o_du_gwd_hines, zx_tmp_fi3d)
2461
2462          IF (vars_defined) zx_tmp_fi3d= dv_gwd_hines/pdtphys         
2463          CALL histwrite_phy(o_dv_gwd_hines, zx_tmp_fi3d)
2464         
2465          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_hin(1:klon,1:klev)/pdtphys
2466          CALL histwrite_phy(o_dthin, zx_tmp_fi3d)
2467          CALL histwrite_phy(o_ustr_gwd_hines, zustr_gwd_hines)
2468          CALL histwrite_phy(o_vstr_gwd_hines, zvstr_gwd_hines)
2469       ENDIF
2470
2471       IF (.not. ok_hines .and. ok_gwd_rando) THEN
2472          IF (vars_defined)  zx_tmp_fi3d=du_gwd_front / pdtphys
2473          CALL histwrite_phy(o_du_gwd_front, zx_tmp_fi3d)
2474         
2475          IF (vars_defined)  zx_tmp_fi3d=dv_gwd_front / pdtphys
2476          CALL histwrite_phy(o_dv_gwd_front, zx_tmp_fi3d)
2477         
2478          CALL histwrite_phy(o_ustr_gwd_front, zustr_gwd_front)
2479          CALL histwrite_phy(o_vstr_gwd_front, zvstr_gwd_front)
2480       ENDIF
2481
2482       IF (ok_gwd_rando) THEN
2483          IF (vars_defined)  zx_tmp_fi3d=du_gwd_rando / pdtphys
2484          CALL histwrite_phy(o_du_gwd_rando, zx_tmp_fi3d)
2485         
2486          IF (vars_defined)  zx_tmp_fi3d=dv_gwd_rando / pdtphys
2487          CALL histwrite_phy(o_dv_gwd_rando, zx_tmp_fi3d)
2488          CALL histwrite_phy(o_ustr_gwd_rando, zustr_gwd_rando)
2489          CALL histwrite_phy(o_vstr_gwd_rando, zvstr_gwd_rando)
2490          CALL histwrite_phy(o_east_gwstress, east_gwstress )
2491          CALL histwrite_phy(o_west_gwstress, west_gwstress )
2492       ENDIF
2493
2494       IF (ok_qch4) THEN
2495          IF (vars_defined) zx_tmp_fi3d=d_q_ch4
2496          CALL histwrite_phy(o_dqch4, zx_tmp_fi3d)
2497       ENDIF
2498       
2499       IF (vars_defined) THEN
2500         DO k=1, klevp1
2501           zx_tmp_fi3d1(:,k)=swup(:,k)*swradcorr(:)
2502         ENDDO
2503       ENDIF
2504       
2505       CALL histwrite_phy(o_rsu, zx_tmp_fi3d1)
2506
2507       IF (vars_defined) THEN
2508         DO k=1, klevp1
2509           zx_tmp_fi3d1(:,k)=swdn(:,k)*swradcorr(:)
2510         ENDDO
2511       ENDIF
2512       
2513       CALL histwrite_phy(o_rsd, zx_tmp_fi3d1)
2514
2515       IF (vars_defined) THEN
2516         DO k=1, klevp1
2517           zx_tmp_fi3d1(:,k)=swup0(:,k)*swradcorr(:)
2518         ENDDO
2519       ENDIF
2520       
2521       CALL histwrite_phy(o_rsucs, zx_tmp_fi3d1)
2522
2523       IF (type_trac/='inca' .OR. config_inca=='aeNP') THEN
2524          IF (vars_defined) THEN
2525             DO k=1, klevp1
2526                zx_tmp_fi3d1(:,k)=swupc0(:,k)*swradcorr(:)
2527             ENDDO
2528          ENDIF
2529          CALL histwrite_phy(o_rsucsaf, zx_tmp_fi3d1)
2530       ENDIF
2531
2532       IF (vars_defined) THEN
2533         DO k=1, klevp1
2534           zx_tmp_fi3d1(:,k)=swdn0(:,k)*swradcorr(:)
2535         ENDDO
2536       ENDIF
2537       CALL histwrite_phy(o_rsdcs, zx_tmp_fi3d1)
2538
2539       IF (type_trac/='inca' .OR. config_inca=='aeNP') THEN
2540          IF (vars_defined) THEN
2541             DO k=1, klevp1
2542                zx_tmp_fi3d1(:,k)=swdnc0(:,k)*swradcorr(:)
2543             ENDDO
2544          ENDIF
2545          CALL histwrite_phy(o_rsdcsaf, zx_tmp_fi3d1)
2546       ENDIF
2547
2548       CALL histwrite_phy(o_rlu, lwup)
2549       CALL histwrite_phy(o_rld, lwdn)
2550       CALL histwrite_phy(o_rlucs, lwup0)
2551       CALL histwrite_phy(o_rldcs, lwdn0)
2552
2553       IF (vars_defined) THEN
2554          zx_tmp_fi3d(1:klon,1:klev)=d_t(1:klon,1:klev)+ &
2555               d_t_dyn(1:klon,1:klev)
2556       ENDIF
2557       CALL histwrite_phy(o_tnt, zx_tmp_fi3d)
2558
2559       IF (vars_defined) THEN
2560          zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys + &
2561               d_t_lwr(1:klon,1:klev)/pdtphys
2562       ENDIF
2563       CALL histwrite_phy(o_tntr, zx_tmp_fi3d)
2564       IF (vars_defined) THEN
2565          zx_tmp_fi3d(1:klon,1:klev)= (d_t_lsc(1:klon,1:klev)+ &
2566               d_t_eva(1:klon,1:klev)+ &
2567               d_t_vdf(1:klon,1:klev))/pdtphys
2568       ENDIF
2569       CALL histwrite_phy(o_tntscpbl, zx_tmp_fi3d)
2570       IF (vars_defined) THEN
2571          zx_tmp_fi3d(1:klon,1:klev)=d_qx(1:klon,1:klev,ivap)+ &
2572               d_q_dyn(1:klon,1:klev)
2573       ENDIF
2574       CALL histwrite_phy(o_tnhus, zx_tmp_fi3d)
2575       IF (vars_defined) THEN
2576          zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys+ &
2577               d_q_eva(1:klon,1:klev)/pdtphys
2578       ENDIF
2579       CALL histwrite_phy(o_tnhusscpbl, zx_tmp_fi3d)
2580       CALL histwrite_phy(o_evu, coefm(:,:,is_ave))
2581       IF (vars_defined) THEN
2582          zx_tmp_fi3d(1:klon,1:klev)=q_seri(1:klon,1:klev)+ &
2583               ql_seri(1:klon,1:klev)
2584       ENDIF
2585       CALL histwrite_phy(o_h2o, zx_tmp_fi3d)
2586       IF (iflag_con >= 3) THEN
2587          IF (vars_defined) THEN
2588             zx_tmp_fi3d(1:klon,1:klev)=-1 * (dnwd(1:klon,1:klev)+ &
2589                  dnwd0(1:klon,1:klev))
2590          ENDIF
2591          CALL histwrite_phy(o_mcd, zx_tmp_fi3d)
2592          IF (vars_defined) THEN
2593             zx_tmp_fi3d(1:klon,1:klev)=upwd(1:klon,1:klev) + &
2594                  dnwd(1:klon,1:klev)+ dnwd0(1:klon,1:klev)
2595          ENDIF
2596          CALL histwrite_phy(o_dmc, zx_tmp_fi3d)
2597       ELSE IF (iflag_con == 2) THEN
2598          CALL histwrite_phy(o_mcd,  pmfd)
2599          IF (vars_defined) zx_tmp_fi3d = pmfu + pmfd
2600          CALL histwrite_phy(o_dmc,  zx_tmp_fi3d)
2601       ENDIF
2602       CALL histwrite_phy(o_ref_liq, ref_liq)
2603       CALL histwrite_phy(o_ref_ice, ref_ice)
2604!
2605       IF (ok_4xCO2atm) THEN
2606          IF (vars_defined) zx_tmp_fi2d(:) = swupp(:,klevp1)*swradcorr(:)
2607          CALL histwrite_phy(o_rsut4co2, zx_tmp_fi2d)
2608          IF (vars_defined) zx_tmp_fi2d(:) = lwupp(:,klevp1)
2609          CALL histwrite_phy(o_rlut4co2, zx_tmp_fi2d)
2610          IF (vars_defined) zx_tmp_fi2d(:) = swup0p(:,klevp1)*swradcorr(:)
2611          CALL histwrite_phy(o_rsutcs4co2, zx_tmp_fi2d)
2612          IF (vars_defined) zx_tmp_fi2d(:) = lwup0p(:,klevp1)
2613          CALL histwrite_phy(o_rlutcs4co2, zx_tmp_fi2d)
2614          IF (vars_defined) THEN
2615            DO k=1, klevp1
2616              zx_tmp_fi3d1(:,k)=swupp(:,k)*swradcorr(:)
2617            ENDDO
2618          ENDIF
2619          CALL histwrite_phy(o_rsu4co2, zx_tmp_fi3d1)
2620          IF (vars_defined) THEN
2621            DO k=1, klevp1
2622              zx_tmp_fi3d1(:,k)=swup0p(:,k)*swradcorr(:)
2623            ENDDO
2624          ENDIF
2625          CALL histwrite_phy(o_rsucs4co2, zx_tmp_fi3d1)
2626          IF (vars_defined) THEN
2627            DO k=1, klevp1
2628              zx_tmp_fi3d1(:,k)=swdnp(:,k)*swradcorr(:)
2629            ENDDO
2630          ENDIF
2631          CALL histwrite_phy(o_rsd4co2, zx_tmp_fi3d1)
2632          IF (vars_defined) THEN
2633            DO k=1, klevp1
2634              zx_tmp_fi3d1(:,k)=swdn0p(:,k)*swradcorr(:)
2635            ENDDO
2636          ENDIF
2637          CALL histwrite_phy(o_rsdcs4co2, zx_tmp_fi3d1)
2638          CALL histwrite_phy(o_rlu4co2, lwupp)
2639          CALL histwrite_phy(o_rlucs4co2, lwup0p)
2640          CALL histwrite_phy(o_rld4co2, lwdnp)
2641          CALL histwrite_phy(o_rldcs4co2, lwdn0p)
2642       ENDIF !ok_4xCO2atm
2643!!!!!!!!!!!! Sorties niveaux de pression NMC !!!!!!!!!!!!!!!!!!!!
2644       IF (.NOT. using_xios) THEN
2645         IF (.NOT.ok_all_xml) THEN
2646           ! ATTENTION, LES ANCIENS HISTWRITE ONT ETES CONSERVES EN ATTENDANT MIEUX:
2647           ! Champs interpolles sur des niveaux de pression
2648           DO iff=7, nfiles-1 !--OB: here we deal with files 7,8,9
2649
2650             CALL histwrite_phy(o_tnondef,tnondef(:,:,iff-6),iff)
2651             CALL histwrite_phy(o_ta,twriteSTD(:,:,iff-6),iff)
2652             CALL histwrite_phy(o_zg,phiwriteSTD(:,:,iff-6),iff)
2653             CALL histwrite_phy(o_hus,qwriteSTD(:,:,iff-6),iff)
2654             CALL histwrite_phy(o_hur,rhwriteSTD(:,:,iff-6),iff)
2655             CALL histwrite_phy(o_ua,uwriteSTD(:,:,iff-6),iff)
2656             CALL histwrite_phy(o_va,vwriteSTD(:,:,iff-6),iff)
2657             CALL histwrite_phy(o_wap,wwriteSTD(:,:,iff-6),iff)
2658             IF (vars_defined) THEN
2659               DO k=1, nlevSTD
2660                  DO i=1, klon
2661                     IF (tnondef(i,k,iff-6).NE.missing_val) THEN
2662                       IF (freq_outNMC(iff-6).LT.0) THEN
2663                          freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
2664                       ELSE
2665                          freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
2666                       ENDIF
2667                       zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,iff-6))/freq_moyNMC(iff-6)
2668                     ELSE
2669                       zx_tmp_fi3d_STD(i,k) = missing_val
2670                     ENDIF
2671                  ENDDO
2672               ENDDO
2673             ENDIF
2674             CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD,iff)
2675             IF (vars_defined) THEN
2676               DO k=1, nlevSTD
2677                  DO i=1, klon
2678                    IF (O3sumSTD(i,k,iff-6).NE.missing_val) THEN
2679                       zx_tmp_fi3d_STD(i,k) = O3sumSTD(i,k,iff-6) * 1.e+9
2680                    ELSE
2681                       zx_tmp_fi3d_STD(i,k) = missing_val
2682                    ENDIF
2683                  ENDDO
2684               ENDDO !k=1, nlevSTD
2685             ENDIF
2686             CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD,iff)
2687             IF (read_climoz == 2) THEN
2688               IF (vars_defined) THEN
2689                 DO k=1, nlevSTD
2690                   DO i=1, klon
2691                      IF (O3daysumSTD(i,k,iff-6).NE.missing_val) THEN
2692                         zx_tmp_fi3d_STD(i,k) = O3daysumSTD(i,k,iff-6) * 1.e+9
2693                      ELSE
2694                         zx_tmp_fi3d_STD(i,k) = missing_val
2695                      ENDIF
2696                   ENDDO
2697                 ENDDO !k=1, nlevSTD
2698               ENDIF
2699               CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD,iff)
2700             ENDIF
2701             CALL histwrite_phy(o_uxv,uvsumSTD(:,:,iff-6),iff)
2702             CALL histwrite_phy(o_vxq,vqsumSTD(:,:,iff-6),iff)
2703             CALL histwrite_phy(o_vxT,vTsumSTD(:,:,iff-6),iff)
2704             CALL histwrite_phy(o_wxq,wqsumSTD(:,:,iff-6),iff)
2705             CALL histwrite_phy(o_vxphi,vphisumSTD(:,:,iff-6),iff)
2706             CALL histwrite_phy(o_wxT,wTsumSTD(:,:,iff-6),iff)
2707             CALL histwrite_phy(o_uxu,u2sumSTD(:,:,iff-6),iff)
2708             CALL histwrite_phy(o_vxv,v2sumSTD(:,:,iff-6),iff)
2709             CALL histwrite_phy(o_TxT,T2sumSTD(:,:,iff-6),iff)
2710           ENDDO !nfiles
2711         ENDIF
2712       ENDIF !.NOT. using_xios
2713
2714
2715       IF (using_xios) THEN
2716         IF (ok_all_xml) THEN
2717    !      DO iff=7, nfiles
2718
2719!         CALL histwrite_phy(o_tnondef,tnondef(:,:,3))
2720          CALL histwrite_phy(o_ta,tlevSTD(:,:))
2721          CALL histwrite_phy(o_zg,philevSTD(:,:))
2722          CALL histwrite_phy(o_hus,qlevSTD(:,:))
2723          CALL histwrite_phy(o_hur,rhlevSTD(:,:))
2724          CALL histwrite_phy(o_ua,ulevSTD(:,:))
2725          CALL histwrite_phy(o_va,vlevSTD(:,:))
2726          CALL histwrite_phy(o_wap,wlevSTD(:,:))
2727!         IF (vars_defined) THEN
2728!            DO k=1, nlevSTD
2729!               DO i=1, klon
2730!                  IF (tnondef(i,k,3).NE.missing_val) THEN
2731!                     IF (freq_outNMC(iff-6).LT.0) THEN
2732!                        freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
2733!                     ELSE
2734!                        freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
2735!                     ENDIF
2736!                     zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,3))/freq_moyNMC(iff-6)
2737!                  ELSE
2738!                     zx_tmp_fi3d_STD(i,k) = missing_val
2739!                  ENDIF
2740!               ENDDO
2741!            ENDDO
2742!         ENDIF
2743!         CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD)
2744          IF (vars_defined) THEN
2745             DO k=1, nlevSTD
2746                DO i=1, klon
2747                   IF (O3STD(i,k).NE.missing_val) THEN
2748                      zx_tmp_fi3d_STD(i,k) = O3STD(i,k) * 1.e+9
2749                   ELSE
2750                      zx_tmp_fi3d_STD(i,k) = missing_val
2751                   ENDIF
2752                ENDDO
2753             ENDDO !k=1, nlevSTD
2754          ENDIF
2755          CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD)
2756          IF (read_climoz == 2) THEN
2757             IF (vars_defined) THEN
2758                DO k=1, nlevSTD
2759                   DO i=1, klon
2760                      IF (O3daySTD(i,k).NE.missing_val) THEN
2761                         zx_tmp_fi3d_STD(i,k) = O3daySTD(i,k) * 1.e+9
2762                      ELSE
2763                         zx_tmp_fi3d_STD(i,k) = missing_val
2764                      ENDIF
2765                   ENDDO
2766                ENDDO !k=1, nlevSTD
2767             ENDIF
2768             CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD)
2769          ENDIF
2770          CALL histwrite_phy(o_uxv,uvSTD(:,:))
2771          CALL histwrite_phy(o_vxq,vqSTD(:,:))
2772          CALL histwrite_phy(o_vxT,vTSTD(:,:))
2773          CALL histwrite_phy(o_wxq,wqSTD(:,:))
2774          CALL histwrite_phy(o_vxphi,vphiSTD(:,:))
2775          CALL histwrite_phy(o_wxT,wTSTD(:,:))
2776          CALL histwrite_phy(o_uxu,u2STD(:,:))
2777          CALL histwrite_phy(o_vxv,v2STD(:,:))
2778          CALL histwrite_phy(o_TxT,T2STD(:,:))
2779!      ENDDO !nfiles
2780    ENDIF
2781  ENDIF !using_xios
2782!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2783       IF (iflag_phytrac == 1 ) then
2784!
2785         IF (type_trac == 'co2i') THEN
2786           itr = 0
2787           DO iq = 1, nqtot
2788             IF(.NOT.tracers(iq)%isInPhysics) CYCLE
2789             itr = itr + 1
2790!            write(*,*) 'phys_output_write_mod 2370: itr=',itr
2791             !--3D fields
2792             CALL histwrite_phy(o_trac(itr), tr_seri(:,:,itr))
2793             CALL histwrite_phy(o_dtr_vdf(itr),d_tr_cl(:,:,itr))
2794             CALL histwrite_phy(o_dtr_the(itr),d_tr_th(:,:,itr))
2795             CALL histwrite_phy(o_dtr_con(itr),d_tr_cv(:,:,itr))
2796             !--2D fields
2797             !--CO2 burden
2798             zx_tmp_fi2d=0.
2799             IF (vars_defined) THEN
2800                DO k=1,klev
2801                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,itr)
2802                ENDDO
2803             ENDIF
2804             CALL histwrite_phy(o_trac_cum(itr), zx_tmp_fi2d)
2805           ENDDO !--iq
2806           !--CO2 net fluxes
2807           CALL histwrite_phy(o_flx_co2_land,  fco2_land)
2808           CALL histwrite_phy(o_flx_co2_ocean, fco2_ocean)
2809           CALL histwrite_phy(o_flx_co2_ocean_cor, fco2_ocean_cor)
2810           CALL histwrite_phy(o_flx_co2_land_cor, fco2_land_cor)
2811           CALL histwrite_phy(o_flx_co2_ff,    fco2_ff)
2812           CALL histwrite_phy(o_flx_co2_bb,    fco2_bb)
2813
2814         ELSE IF (type_trac == 'inco') THEN
2815           itr = 0
2816           DO iq = 1, nqtot
2817             IF(.NOT.tracers(iq)%isInPhysics) CYCLE
2818             itr = itr+1
2819             IF(tracers(iq)%component /= 'co2i') CYCLE
2820             !--3D fields
2821             CALL histwrite_phy(o_trac   (itr),tr_seri(:,:,itr))
2822             CALL histwrite_phy(o_dtr_vdf(itr),d_tr_cl(:,:,itr))
2823             CALL histwrite_phy(o_dtr_the(itr),d_tr_th(:,:,itr))
2824             CALL histwrite_phy(o_dtr_con(itr),d_tr_cv(:,:,itr))
2825             !--2D fields
2826             !--CO2 burden
2827             zx_tmp_fi2d=0.
2828             IF (vars_defined) THEN
2829                DO k=1,klev
2830                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,itr)
2831                ENDDO
2832             ENDIF
2833             CALL histwrite_phy(o_trac_cum(itr), zx_tmp_fi2d)
2834           ENDDO !--iq
2835           !--CO2 net fluxes
2836           CALL histwrite_phy(o_flx_co2_land,  fco2_land)
2837           CALL histwrite_phy(o_flx_co2_ocean, fco2_ocean)
2838           CALL histwrite_phy(o_flx_co2_ocean_cor, fco2_ocean_cor)
2839           CALL histwrite_phy(o_flx_co2_land_cor, fco2_land_cor)
2840           CALL histwrite_phy(o_flx_co2_ff,    fco2_ff)
2841           CALL histwrite_phy(o_flx_co2_bb,    fco2_bb)
2842
2843         ELSE IF (ANY(type_trac==['lmdz','coag'])) THEN
2844           itr = 0
2845           DO iq = 1, nqtot
2846             IF(.NOT.tracers(iq)%isInPhysics) CYCLE
2847             itr = itr + 1
2848!            write(*,*) 'phys_output_write_mod 2337: itr=',itr
2849             !--3D fields
2850             CALL histwrite_phy(o_trac(itr), tr_seri(:,:,itr))
2851             CALL histwrite_phy(o_dtr_vdf(itr),d_tr_cl(:,:,itr))
2852             CALL histwrite_phy(o_dtr_the(itr),d_tr_th(:,:,itr))
2853             CALL histwrite_phy(o_dtr_con(itr),d_tr_cv(:,:,itr))
2854             CALL histwrite_phy(o_dtr_lessi_impa(itr),d_tr_lessi_impa(:,:,itr))
2855             CALL histwrite_phy(o_dtr_lessi_nucl(itr),d_tr_lessi_nucl(:,:,itr))
2856             CALL histwrite_phy(o_dtr_insc(itr),d_tr_insc(:,:,itr))
2857             CALL histwrite_phy(o_dtr_bcscav(itr),d_tr_bcscav(:,:,itr))
2858             CALL histwrite_phy(o_dtr_evapls(itr),d_tr_evapls(:,:,itr))
2859             CALL histwrite_phy(o_dtr_ls(itr),d_tr_ls(:,:,itr))
2860             CALL histwrite_phy(o_dtr_trsp(itr),d_tr_trsp(:,:,itr))
2861             CALL histwrite_phy(o_dtr_sscav(itr),d_tr_sscav(:,:,itr))
2862             CALL histwrite_phy(o_dtr_sat(itr),d_tr_sat(:,:,itr))
2863             CALL histwrite_phy(o_dtr_uscav(itr),d_tr_uscav(:,:,itr))
2864            !--2D fields
2865             CALL histwrite_phy(o_dtr_wet_con(itr), flux_tr_wet(:,itr))
2866             CALL histwrite_phy(o_dtr_dry(itr), flux_tr_dry(:,itr))
2867             zx_tmp_fi2d=0.
2868             IF (vars_defined) THEN
2869                DO k=1,klev
2870                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,itr)
2871                ENDDO
2872             ENDIF
2873             CALL histwrite_phy(o_trac_cum(itr), zx_tmp_fi2d)
2874           ENDDO !--iq
2875         ENDIF   !--type_trac
2876       ENDIF   !(iflag_phytrac==1)
2877
2878       if (activate_ocean_skin >= 1) then
2879          CALL histwrite_phy(o_delta_sst, delta_sst)
2880          CALL histwrite_phy(o_delta_sal, delta_sal)
2881          CALL histwrite_phy(o_ds_ns, ds_ns)
2882          CALL histwrite_phy(o_dt_ns, dt_ns)
2883          CALL histwrite_phy(o_dter, dter)
2884          CALL histwrite_phy(o_dser, dser)
2885          CALL histwrite_phy(o_tkt, tkt)
2886          CALL histwrite_phy(o_tks, tks)
2887          CALL histwrite_phy(o_taur, taur)
2888          CALL histwrite_phy(o_sss, sss)
2889       end if
2890
2891    !! runoff land bucket - ajout S. Nguyen 23 07 2024
2892    CALL histwrite_phy(o_runoff_diag, runoff_diag)
2893
2894#ifdef ISO
2895    !write(*,*) 'tmp phys_output_write: ntiso=',ntiso
2896
2897    DO ixt = 1, ntiso
2898        !write(*,*) 'ixt,o_xtovap(ixt)=',ixt,o_xtovap(ixt)
2899        IF (vars_defined) zx_tmp_fi2d(:) = xtrain_fall(ixt,:) + xtsnow_fall(ixt,:)
2900        CALL histwrite_phy(o_xtprecip(ixt), zx_tmp_fi2d)
2901
2902        IF (vars_defined) zx_tmp_fi2d(:) = xtrain_lsc(ixt,:) + xtsnow_lsc(ixt,:)
2903        CALL histwrite_phy(o_xtplul(ixt), zx_tmp_fi2d)
2904
2905        IF (vars_defined) zx_tmp_fi2d(:) = xtrain_con(ixt,:) + xtsnow_con(ixt,:)
2906        CALL histwrite_phy(o_xtpluc(ixt), zx_tmp_fi2d)
2907        CALL histwrite_phy(o_xtevap(ixt),   xtevap(ixt,:))
2908        CALL histwrite_phy(o_xtovap(ixt),  xt_seri(ixt,:,:))
2909        CALL histwrite_phy(o_xtoliq(ixt), xtl_seri(ixt,:,:))
2910
2911        !! runoff land bucket - ajout S. Nguyen 25 avril 2024
2912        CALL histwrite_phy(o_xtrunoff_diag(ixt), xtrunoff_diag(ixt,:))
2913
2914
2915        DO nsrf = 1, nbsrf ! ajout Camille 8 mai 2023
2916        IF (vars_defined)       zx_tmp_fi2d(1 : klon) = fxtevap(ixt,:, nsrf)
2917        CALL histwrite_phy(o_xtevap_srf(ixt,nsrf), zx_tmp_fi2d)
2918        ENDDO
2919
2920        IF (vars_defined) zx_tmp_fi3d(:,:)=xtl_seri(ixt,:,:)+xts_seri(ixt,:,:)
2921        CALL histwrite_phy(o_xtcond(ixt), zx_tmp_fi3d)
2922        CALL histwrite_phy(o_dxtdyn(ixt),   d_xt_dyn(ixt,:,:))
2923        CALL histwrite_phy(o_dxtldyn(ixt), d_xtl_dyn(ixt,:,:))
2924
2925        IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_con(ixt,:,:)/pdtphys
2926        CALL histwrite_phy(o_dxtcon(ixt), zx_tmp_fi3d)
2927
2928        IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_lsc(ixt,:,:)/pdtphys
2929        CALL histwrite_phy(o_dxtlsc(ixt), zx_tmp_fi3d)
2930
2931        IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_eva(ixt,:,:)/pdtphys
2932        CALL histwrite_phy(o_dxteva(ixt), zx_tmp_fi3d)
2933
2934        IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_vdf(ixt,:,:)/pdtphys
2935        CALL histwrite_phy(o_dxtvdf(ixt), zx_tmp_fi3d)
2936
2937        IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_ajsb(ixt,:,:)/pdtphys
2938        CALL histwrite_phy(o_dxtajs(ixt), zx_tmp_fi3d)
2939
2940        IF (vars_defined) zx_tmp_fi3d(:,:)=(d_xt_ajs(ixt,:,:)-d_xt_ajsb(ixt,:,:))/pdtphys
2941        CALL histwrite_phy(o_dxtthe(ixt), zx_tmp_fi3d)
2942
2943        IF (ok_qch4) THEN
2944          IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_ch4(ixt,:,:)/pdtphys
2945          CALL histwrite_phy(o_dxtch4(ixt), zx_tmp_fi3d)
2946        ENDIF
2947
2948        IF (ixt == iso_HTO) THEN
2949          IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_prod_nucl(ixt,:,:)/pdtphys
2950          CALL histwrite_phy(o_dxtprod_nucl(ixt), zx_tmp_fi3d)
2951
2952          IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_cosmo(ixt,:,:)/pdtphys
2953          CALL histwrite_phy(o_dxtcosmo(ixt), zx_tmp_fi3d)
2954
2955          IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_decroiss(ixt,:,:)/pdtphys
2956          CALL histwrite_phy(o_dxtdecroiss(ixt), zx_tmp_fi3d)
2957        ENDIF
2958
2959    !write(*,*) 'phys_output_write_mod 2531'
2960    ENDDO
2961#endif
2962
2963       IF (.NOT.vars_defined) THEN
2964          !$OMP MASTER
2965#ifndef CPP_IOIPSL_NO_OUTPUT
2966          DO iff=1,nfiles
2967             IF (clef_files(iff)) THEN
2968                CALL histend(nid_files(iff))
2969                ndex2d = 0
2970                ndex3d = 0
2971             ENDIF ! clef_files
2972          ENDDO !  iff
2973#endif
2974
2975!SN activate water isotopes present in tracer.def
2976#ifdef ISO
2977          DO ixt = 1, ntiso
2978            outiso = TRIM(isoName(ixt))
2979            i = INDEX(outiso, '_', .TRUE.)
2980            outiso = outiso(1:i-1)//outiso(i+1:LEN_TRIM(outiso))
2981
2982            CALL xios_set_fieldgroup_attr("iso2D_"//TRIM(outiso), enabled=.TRUE.)
2983            CALL xios_set_fieldgroup_attr("iso3D_"//TRIM(outiso), enabled=.TRUE.)
2984
2985          ENDDO
2986#endif
2987          !On finalise l'initialisation:
2988          IF (using_xios) CALL wxios_closedef()
2989
2990          !$OMP END MASTER
2991          !$OMP BARRIER
2992          vars_defined = .TRUE.
2993
2994       ENDIF !--.NOT.vars_defined
2995
2996    ENDDO
2997
2998    IF (vars_defined) THEN
2999       ! On synchronise les fichiers pour IOIPSL
3000#ifndef CPP_IOIPSL_NO_OUTPUT
3001       !$OMP MASTER
3002       DO iff=1,nfiles
3003          IF (ok_sync .AND. clef_files(iff)) THEN
3004             CALL histsync(nid_files(iff))
3005          ENDIF
3006       ENDDO
3007       !$OMP END MASTER
3008#endif
3009    ENDIF
3010
3011  END SUBROUTINE phys_output_write
3012
3013END MODULE phys_output_write_mod
Note: See TracBrowser for help on using the repository browser.