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

Last change on this file since 3649 was 3630, checked in by Laurent Fairhead, 5 years ago

Parameter new_aod is not needed anymore as it is assumed to be true
all the time. This means that we cannot replay AR4 simulations with new
LMDZ sources (we probably couldn't anyway)
LF, OB

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