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

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

commission pour la suite du travail sur la mise a jour
de la param de neige soufflee

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