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

Last change on this file since 5445 was 5384, checked in by evignon, 2 weeks ago

ajout de diagnostiques des tendances de precip, Audran Borella

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