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

Last change on this file since 4586 was 4575, checked in by Laurent Fairhead, 13 months ago

Sortir les profils de flux sensible et d'eau dus à la diffusion turbulente (déja calculés auparavant)
FC

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