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

Last change on this file since 3865 was 3865, checked in by lmdz-users, 3 years ago

Modifications from Thibaut to create an ESM with interactive CO2 + INCA aerosols

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