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

Last change on this file since 4803 was 4803, checked in by evignon, 4 months ago

implementation sous flag des premiers changements
concernant le traitement des precipitations grande echelle
dans le cadre de l'atelier nuages
Audran, Lea, Niels, Gwendal et Etienne

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