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

Last change on this file since 4619 was 4619, checked in by yann meurdesoif, 10 months ago

Suppress usage of preprocessing key CPP_XIOS.
Wrapper file is used to suppress XIOS symbol when xios is not linked and not used (-io ioipsl)
The CPP_XIOS key is replaced in model by "using_xios" boolean variable to switch between IOIPSL or XIOS output.

YM

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