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

Last change on this file since 5134 was 5109, checked in by Sebastien Nguyen, 5 months ago

added runoffland (bucket runoff) to outputs and automatic output for water isotopes defined in tracer.def

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