source: LMDZ6/branches/LMDZ_ECRad/libf/phylmd/phys_output_write_mod.F90 @ 4926

Last change on this file since 4926 was 4771, checked in by idelkadi, 7 months ago

Correction: output of the cloud fraction sw from Ecrad corresponding to the 2nd call

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