source: LMDZ6/branches/Optimisation_LMDZ/libf/phylmd/phys_output_write_mod.F90 @ 3759

Last change on this file since 3759 was 3754, checked in by adurocher, 4 years ago

Fix conditional compilation to compile without XIOS

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