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

Last change on this file since 4678 was 4677, checked in by idelkadi, 9 months ago

Implementation in the LMDZ code of the double call of the ECRAD radiative transfer code to estimate the 3D radiative effect of clouds.

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