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

Last change on this file since 5045 was 5039, checked in by evignon, 3 months ago

ajout des tendances de tke de la routine ATKE dans les sorties

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