source: LMDZ6/branches/LMDZ-QUEST/libf/phylmd/phys_output_write_mod.F90 @ 4074

Last change on this file since 4074 was 3483, checked in by acozic, 6 years ago

toplwad diagnostic works with INCA aeNP aerosols as well [ merge with rev 3381 of trunk ]

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