source: LMDZ6/branches/DYNAMICO-conv/libf/phylmd/phys_output_write_mod.F90 @ 3336

Last change on this file since 3336 was 3336, checked in by Laurent Fairhead, 6 years ago

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