source: LMDZ6/branches/WETDEP_DECOUPLE/libf/phylmd/phys_output_write_mod.F90 @ 5305

Last change on this file since 5305 was 4798, checked in by nfevrier, 9 months ago

First save of N. Février's modifications

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