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

Last change on this file since 3179 was 3179, checked in by jyg, 6 years ago

New structure for the representation of vdf
splitting in pbl_surface. Computations are
gathered in two subroutines included in the module
wx_pbl_mod: wx_pbl0_fuse, called before the
sub-surfaces, determines the single column
equivalent to the (w) and (x) columns.
wx_pbl0_split, called after the subsurfaces,
determines the distinct (w) and (x) surface
fluxes.

This is a first version with no surface
temperature difference between (w) and (x) (hence
the index 0).

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