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

Last change on this file since 3511 was 3406, checked in by jghattas, 6 years ago

Added all modifications in the model code that were used for the simulations with DYANMICO during the Grand Challeng 2018. Modifications done by Y. Meurdesoif, L. Fairhead and A.K. Traore

  • 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: 89.3 KB
Line 
1!
2! $Id: phys_output_write_mod.F90 3406 2018-10-23 09:16:41Z idelkadi $
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
694       IF (vars_defined) THEN
695         zx_tmp_fi2d = topsw*swradcorr
696       ENDIF
697       CALL histwrite_phy(o_tops, zx_tmp_fi2d)
698
699       IF (vars_defined) THEN
700         zx_tmp_fi2d = topsw0*swradcorr
701       ENDIF
702       CALL histwrite_phy(o_tops0, zx_tmp_fi2d)
703
704       CALL histwrite_phy(o_topl, toplw)
705       CALL histwrite_phy(o_topl0, toplw0)
706
707       IF (vars_defined) THEN
708          zx_tmp_fi2d(:) = swup(:,klevp1)*swradcorr(:)
709       ENDIF
710       CALL histwrite_phy(o_SWupTOA, zx_tmp_fi2d)
711
712       IF (vars_defined) THEN
713          zx_tmp_fi2d(:) = swup0(:,klevp1)*swradcorr(:)
714       ENDIF
715       CALL histwrite_phy(o_SWupTOAclr, zx_tmp_fi2d)
716
717       IF (vars_defined) THEN
718          zx_tmp_fi2d(:) = swdn(:,klevp1)*swradcorr(:)
719       ENDIF
720       CALL histwrite_phy(o_SWdnTOA, zx_tmp_fi2d)
721
722       IF (vars_defined) THEN
723          zx_tmp_fi2d(:) = swdn0(:,klevp1)*swradcorr(:)
724       ENDIF
725       CALL histwrite_phy(o_SWdnTOAclr, zx_tmp_fi2d)
726
727       IF (vars_defined) THEN
728          zx_tmp_fi2d(:) = topsw(:)*swradcorr(:)-toplw(:)
729       ENDIF
730       CALL histwrite_phy(o_nettop, zx_tmp_fi2d)
731       
732       IF (vars_defined) THEN
733          zx_tmp_fi2d = SWup200*swradcorr
734       ENDIF
735       CALL histwrite_phy(o_SWup200, zx_tmp_fi2d)
736       
737       IF (vars_defined) THEN
738          zx_tmp_fi2d = SWup200clr*swradcorr
739       ENDIF
740       CALL histwrite_phy(o_SWup200clr, zx_tmp_fi2d)
741       
742       IF (vars_defined) THEN
743          zx_tmp_fi2d = SWdn200*swradcorr
744       ENDIF
745       CALL histwrite_phy(o_SWdn200, zx_tmp_fi2d)
746       
747       
748       IF (vars_defined) THEN
749          zx_tmp_fi2d = SWdn200clr*swradcorr
750       ENDIF
751       CALL histwrite_phy(o_SWdn200clr, zx_tmp_fi2d)
752       
753       CALL histwrite_phy(o_LWup200, LWup200)
754       CALL histwrite_phy(o_LWup200clr, LWup200clr)
755       CALL histwrite_phy(o_LWdn200, LWdn200)
756       CALL histwrite_phy(o_LWdn200clr, LWdn200clr)
757       
758       IF (vars_defined) THEN
759          zx_tmp_fi2d = solsw*swradcorr
760       ENDIF
761       CALL histwrite_phy(o_sols, zx_tmp_fi2d)
762       
763       
764       IF (vars_defined) THEN
765          zx_tmp_fi2d = solsw0*swradcorr
766       ENDIF
767       CALL histwrite_phy(o_sols0, zx_tmp_fi2d)
768       CALL histwrite_phy(o_soll, sollw)
769       CALL histwrite_phy(o_soll0, sollw0)
770       CALL histwrite_phy(o_radsol, radsol)
771
772       IF (vars_defined) THEN
773          zx_tmp_fi2d(:) = swup(:,1)*swradcorr(:)
774       ENDIF
775       CALL histwrite_phy(o_SWupSFC, zx_tmp_fi2d)
776
777       IF (vars_defined) THEN
778          zx_tmp_fi2d(:) = swup0(:,1)*swradcorr(:)
779       ENDIF
780       CALL histwrite_phy(o_SWupSFCclr, zx_tmp_fi2d)
781
782       IF (vars_defined) THEN
783          zx_tmp_fi2d(:) = swdn(:,1)*swradcorr(:)
784       ENDIF
785       CALL histwrite_phy(o_SWdnSFC, zx_tmp_fi2d)
786
787       IF (vars_defined) THEN
788          zx_tmp_fi2d(:) = swdn0(:,1)*swradcorr(:)
789       ENDIF
790       CALL histwrite_phy(o_SWdnSFCclr, zx_tmp_fi2d)
791
792       IF (vars_defined) THEN
793          zx_tmp_fi2d(:)=sollwdown(:)-sollw(:)
794       ENDIF
795       CALL histwrite_phy(o_LWupSFC, zx_tmp_fi2d)
796       CALL histwrite_phy(o_LWdnSFC, sollwdown)
797
798       IF (vars_defined) THEN
799          sollwdownclr(1:klon) = -1.*lwdn0(1:klon,1)
800          zx_tmp_fi2d(1:klon)=sollwdownclr(1:klon)-sollw0(1:klon)
801       ENDIF
802       CALL histwrite_phy(o_LWupSFCclr, zx_tmp_fi2d)
803       CALL histwrite_phy(o_LWdnSFCclr, sollwdownclr)
804       CALL histwrite_phy(o_bils, bils)
805       CALL histwrite_phy(o_bils_diss, bils_diss)
806       CALL histwrite_phy(o_bils_ec, bils_ec)
807       CALL histwrite_phy(o_bils_ech, bils_ech)
808       CALL histwrite_phy(o_bils_tke, bils_tke)
809       CALL histwrite_phy(o_bils_kinetic, bils_kinetic)
810       CALL histwrite_phy(o_bils_latent, bils_latent)
811       CALL histwrite_phy(o_bils_enthalp, bils_enthalp)
812
813       IF (vars_defined) THEN
814          zx_tmp_fi2d(1:klon)=-1*sens(1:klon)
815       ENDIF
816       CALL histwrite_phy(o_sens, zx_tmp_fi2d)
817       CALL histwrite_phy(o_fder, fder)
818       CALL histwrite_phy(o_ffonte, zxffonte)
819       CALL histwrite_phy(o_fqcalving, zxfqcalving)
820       CALL histwrite_phy(o_fqfonte, zxfqfonte)
821       CALL histwrite_phy(o_runofflic, zxrunofflic)
822       IF (vars_defined) THEN
823          zx_tmp_fi2d=0.
824          DO nsrf=1,nbsrf
825             zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxu(:,1,nsrf)
826          ENDDO
827       ENDIF
828       CALL histwrite_phy(o_taux, zx_tmp_fi2d)
829
830       IF (vars_defined) THEN
831          zx_tmp_fi2d=0.
832          DO nsrf=1,nbsrf
833             zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxv(:,1,nsrf)
834          ENDDO
835       ENDIF
836       CALL histwrite_phy(o_tauy, zx_tmp_fi2d)
837
838       IF (ok_snow) THEN
839          CALL histwrite_phy(o_snowsrf, snow_o)
840          CALL histwrite_phy(o_qsnow, qsnow)
841          CALL histwrite_phy(o_snowhgt,snowhgt)
842          CALL histwrite_phy(o_toice,to_ice)
843          CALL histwrite_phy(o_sissnow,sissnow)
844          CALL histwrite_phy(o_runoff,runoff)
845          CALL histwrite_phy(o_albslw3,albsol3_lic)
846       ENDIF
847
848       DO nsrf = 1, nbsrf
849
850          IF (vars_defined)             zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)*100.
851          CALL histwrite_phy(o_pourc_srf(nsrf), zx_tmp_fi2d)
852          IF (vars_defined)           zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)
853          CALL histwrite_phy(o_fract_srf(nsrf), zx_tmp_fi2d)
854          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxu( 1 : klon, 1, nsrf)
855          CALL histwrite_phy(o_taux_srf(nsrf), zx_tmp_fi2d)
856          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxv( 1 : klon, 1, nsrf)
857          CALL histwrite_phy(o_tauy_srf(nsrf), zx_tmp_fi2d)
858          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = ftsol( 1 : klon, nsrf)
859          CALL histwrite_phy(o_tsol_srf(nsrf), zx_tmp_fi2d)
860          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = evap_pot( 1 : klon, nsrf)
861          CALL histwrite_phy(o_evappot_srf(nsrf), zx_tmp_fi2d)
862          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = ustar(1 : klon, nsrf)
863          CALL histwrite_phy(o_ustar_srf(nsrf), zx_tmp_fi2d)
864          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = u10m(1 : klon, nsrf)
865          CALL histwrite_phy(o_u10m_srf(nsrf), zx_tmp_fi2d)
866          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = v10m(1 : klon, nsrf)
867          CALL histwrite_phy(o_v10m_srf(nsrf), zx_tmp_fi2d)
868          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = t2m(1 : klon, nsrf)
869          CALL histwrite_phy(o_t2m_srf(nsrf), zx_tmp_fi2d)
870          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = fevap(1 : klon, nsrf)
871          CALL histwrite_phy(o_evap_srf(nsrf), zx_tmp_fi2d)
872          IF (vars_defined)        zx_tmp_fi2d(1 : klon) = fluxt( 1 : klon, 1, nsrf)
873          CALL histwrite_phy(o_sens_srf(nsrf), zx_tmp_fi2d)
874          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxlat( 1 : klon, nsrf)
875          CALL histwrite_phy(o_lat_srf(nsrf), zx_tmp_fi2d)
876          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fsollw( 1 : klon, nsrf)
877          CALL histwrite_phy(o_flw_srf(nsrf), zx_tmp_fi2d)
878          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, nsrf)
879          CALL histwrite_phy(o_fsw_srf(nsrf), zx_tmp_fi2d)
880          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfbils( 1 : klon, nsrf)
881          CALL histwrite_phy(o_wbils_srf(nsrf), zx_tmp_fi2d)
882          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfbilo( 1 : klon, nsrf)
883          CALL histwrite_phy(o_wbilo_srf(nsrf), zx_tmp_fi2d)
884          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfevap( 1 : klon, nsrf)
885          CALL histwrite_phy(o_wevap_srf(nsrf), zx_tmp_fi2d)
886          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfrain( 1 : klon, nsrf)
887          CALL histwrite_phy(o_wrain_srf(nsrf), zx_tmp_fi2d)
888          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfsnow( 1 : klon, nsrf)
889          CALL histwrite_phy(o_wsnow_srf(nsrf), zx_tmp_fi2d)
890
891          IF (iflag_pbl > 1) THEN
892             CALL histwrite_phy(o_tke_srf(nsrf),  pbl_tke(:,1:klev,nsrf))
893             CALL histwrite_phy(o_l_mix(nsrf),  l_mix(:,1:klev,nsrf))
894             CALL histwrite_phy(o_l_mixmin(nsrf),  l_mixmin(:,1:klev,nsrf))
895             CALL histwrite_phy(o_tke_max_srf(nsrf),  pbl_tke(:,1:klev,nsrf))
896          ENDIF
897!jyg<
898          IF (iflag_pbl > 1 .AND. iflag_wake>=1  .AND. iflag_pbl_split >=1) THEN
899             CALL histwrite_phy(o_dltpbltke_srf(nsrf), wake_delta_pbl_TKE(:,1:klev,nsrf))
900          ENDIF
901!>jyg
902!          IF (iflag_pbl > 1 .AND. ifl_pbltree  >=1 ) THEN
903!       CALL histwrite_phy(o_treedrg_srf(nsrf), treedrg(:,1:klev,nsrf))
904!            ENDIF
905
906
907       ENDDO
908
909       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_liq_o(1 : klon, 1)
910       CALL histwrite_phy(o_sens_prec_liq_oce, zx_tmp_fi2d)       
911       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_liq_o(1 : klon, 2)
912       CALL histwrite_phy(o_sens_prec_liq_sic, zx_tmp_fi2d)       
913       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_sol_o(1 : klon, 1)
914       CALL histwrite_phy(o_sens_prec_sol_oce, zx_tmp_fi2d)       
915       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_sol_o(1 : klon, 2)
916       CALL histwrite_phy(o_sens_prec_sol_sic, zx_tmp_fi2d)       
917
918       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_liq_o(1 : klon, 1)
919       CALL histwrite_phy(o_lat_prec_liq_oce, zx_tmp_fi2d)       
920       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_liq_o(1 : klon, 2)
921       CALL histwrite_phy(o_lat_prec_liq_sic, zx_tmp_fi2d)       
922       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_sol_o(1 : klon, 1)
923       CALL histwrite_phy(o_lat_prec_sol_oce, zx_tmp_fi2d)       
924       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_sol_o(1 : klon, 2)
925       CALL histwrite_phy(o_lat_prec_sol_sic, zx_tmp_fi2d)       
926
927       DO nsrf=1,nbsrf+1
928          CALL histwrite_phy(o_wstar(nsrf), wstar(1 : klon, nsrf))
929       ENDDO
930
931       CALL histwrite_phy(o_cdrm, cdragm)
932       CALL histwrite_phy(o_cdrh, cdragh)
933       CALL histwrite_phy(o_cldl, cldl)
934       CALL histwrite_phy(o_cldm, cldm)
935       CALL histwrite_phy(o_cldh, cldh)
936       CALL histwrite_phy(o_cldt, cldt)
937       CALL histwrite_phy(o_JrNt, JrNt)
938       
939       IF (vars_defined)  zx_tmp_fi2d=cldl*JrNt     
940       CALL histwrite_phy(o_cldljn, zx_tmp_fi2d)
941       
942       IF (vars_defined)  zx_tmp_fi2d=cldm*JrNt     
943       CALL histwrite_phy(o_cldmjn, zx_tmp_fi2d)
944       
945       IF (vars_defined)  zx_tmp_fi2d=cldh*JrNt
946       CALL histwrite_phy(o_cldhjn, zx_tmp_fi2d)
947       
948       IF (vars_defined)  zx_tmp_fi2d=cldt*JrNt
949       CALL histwrite_phy(o_cldtjn, zx_tmp_fi2d)
950       
951       CALL histwrite_phy(o_cldq, cldq)
952       IF (vars_defined)       zx_tmp_fi2d(1:klon) = flwp(1:klon)
953       CALL histwrite_phy(o_lwp, zx_tmp_fi2d)
954       IF (vars_defined)       zx_tmp_fi2d(1:klon) = fiwp(1:klon)
955       CALL histwrite_phy(o_iwp, zx_tmp_fi2d)
956       CALL histwrite_phy(o_ue, ue)
957       CALL histwrite_phy(o_ve, ve)
958       CALL histwrite_phy(o_uq, uq)
959       CALL histwrite_phy(o_vq, vq)
960       IF (iflag_con.GE.3) THEN ! sb
961          CALL histwrite_phy(o_cape, cape)
962          CALL histwrite_phy(o_pbase, ema_pcb)
963          CALL histwrite_phy(o_ptop, ema_pct)
964          CALL histwrite_phy(o_fbase, ema_cbmf)
965          IF (iflag_con /= 30) THEN
966             CALL histwrite_phy(o_plcl, plcl)
967             CALL histwrite_phy(o_plfc, plfc)
968             CALL histwrite_phy(o_wbeff, wbeff)
969             CALL histwrite_phy(o_convoccur, convoccur)
970          ENDIF
971
972          CALL histwrite_phy(o_cape_max, cape)
973
974          CALL histwrite_phy(o_upwd, upwd)
975          CALL histwrite_phy(o_Ma, Ma)
976          CALL histwrite_phy(o_dnwd, dnwd)
977          CALL histwrite_phy(o_dnwd0, dnwd0)
978          IF (vars_defined)         zx_tmp_fi2d=float(itau_con)/float(itap)
979          CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
980          IF (vars_defined) THEN
981             IF (iflag_thermals>=1)THEN
982                zx_tmp_fi3d=dnwd+dnwd0+upwd+fm_therm(:,1:klev)
983             ELSE
984                zx_tmp_fi3d=dnwd+dnwd0+upwd
985             ENDIF
986          ENDIF
987          CALL histwrite_phy(o_mc, zx_tmp_fi3d)
988       ENDIF !iflag_con .GE. 3
989       CALL histwrite_phy(o_prw, prw)
990       CALL histwrite_phy(o_prlw, prlw)
991       CALL histwrite_phy(o_prsw, prsw)
992       CALL histwrite_phy(o_s_pblh, s_pblh)
993       CALL histwrite_phy(o_s_pblt, s_pblt)
994       CALL histwrite_phy(o_s_lcl, s_lcl)
995       CALL histwrite_phy(o_s_therm, s_therm)
996       !IM : Les champs suivants (s_capCL, s_oliqCL, s_cteiCL, s_trmb1, s_trmb2, s_trmb3) ne sont pas definis dans HBTM.F
997       !       IF (o_s_capCL%flag(iff)<=lev_files(iff)) THEN
998       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
999       !    $o_s_capCL%name,itau_w,s_capCL)
1000       !       ENDIF
1001       !       IF (o_s_oliqCL%flag(iff)<=lev_files(iff)) THEN
1002       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1003       !    $o_s_oliqCL%name,itau_w,s_oliqCL)
1004       !       ENDIF
1005       !       IF (o_s_cteiCL%flag(iff)<=lev_files(iff)) THEN
1006       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1007       !    $o_s_cteiCL%name,itau_w,s_cteiCL)
1008       !       ENDIF
1009       !       IF (o_s_trmb1%flag(iff)<=lev_files(iff)) THEN
1010       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1011       !    $o_s_trmb1%name,itau_w,s_trmb1)
1012       !       ENDIF
1013       !       IF (o_s_trmb2%flag(iff)<=lev_files(iff)) THEN
1014       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1015       !    $o_s_trmb2%name,itau_w,s_trmb2)
1016       !       ENDIF
1017       !       IF (o_s_trmb3%flag(iff)<=lev_files(iff)) THEN
1018       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1019       !    $o_s_trmb3%name,itau_w,s_trmb3)
1020       !       ENDIF
1021
1022#ifdef CPP_IOIPSL
1023#ifndef CPP_XIOS
1024  IF (.NOT.ok_all_xml) THEN
1025       ! ATTENTION, LES ANCIENS HISTWRITE ONT ETES CONSERVES EN ATTENDANT MIEUX:
1026       ! Champs interpolles sur des niveaux de pression
1027       missing_val=missing_val_nf90
1028       DO iff=1, nfiles
1029          ll=0
1030          DO k=1, nlevSTD
1031             bb2=clevSTD(k)
1032             IF (bb2.EQ."850".OR.bb2.EQ."700".OR. &
1033                  bb2.EQ."500".OR.bb2.EQ."200".OR. &
1034                  bb2.EQ."100".OR. &
1035                  bb2.EQ."50".OR.bb2.EQ."10") THEN
1036
1037                ! a refaire correctement !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1038                ll=ll+1
1039                CALL histwrite_phy(o_uSTDlevs(ll),uwriteSTD(:,k,iff), iff)
1040                CALL histwrite_phy(o_vSTDlevs(ll),vwriteSTD(:,k,iff), iff)
1041                CALL histwrite_phy(o_wSTDlevs(ll),wwriteSTD(:,k,iff), iff)
1042                CALL histwrite_phy(o_zSTDlevs(ll),phiwriteSTD(:,k,iff), iff)
1043                CALL histwrite_phy(o_qSTDlevs(ll),qwriteSTD(:,k,iff), iff)
1044                CALL histwrite_phy(o_tSTDlevs(ll),twriteSTD(:,k,iff), iff)
1045
1046             ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
1047          ENDDO
1048       ENDDO
1049  ENDIF
1050#endif
1051#endif
1052#ifdef CPP_XIOS
1053  IF (ok_all_xml) THEN
1054!XIOS  CALL xios_get_field_attr("u850",default_value=missing_val)
1055!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1056          ll=0
1057          DO k=1, nlevSTD
1058             bb2=clevSTD(k)
1059             IF (bb2.EQ."850".OR.bb2.EQ."700".OR. &
1060                bb2.EQ."500".OR.bb2.EQ."200".OR. &
1061                bb2.EQ."100".OR. &
1062                bb2.EQ."50".OR.bb2.EQ."10") THEN
1063                ll=ll+1
1064                CALL histwrite_phy(o_uSTDlevs(ll),ulevSTD(:,k))
1065                CALL histwrite_phy(o_vSTDlevs(ll),vlevSTD(:,k))
1066                CALL histwrite_phy(o_wSTDlevs(ll),wlevSTD(:,k))
1067                CALL histwrite_phy(o_zSTDlevs(ll),philevSTD(:,k))
1068                CALL histwrite_phy(o_qSTDlevs(ll),qlevSTD(:,k))
1069                CALL histwrite_phy(o_tSTDlevs(ll),tlevSTD(:,k))
1070             ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
1071          ENDDO
1072  ENDIF
1073#endif
1074       IF (vars_defined) THEN
1075          DO i=1, klon
1076             IF (pctsrf(i,is_oce).GT.epsfra.OR. &
1077                  pctsrf(i,is_sic).GT.epsfra) THEN
1078                zx_tmp_fi2d(i) = (ftsol(i, is_oce) * pctsrf(i,is_oce)+ &
1079                     ftsol(i, is_sic) * pctsrf(i,is_sic))/ &
1080                     (pctsrf(i,is_oce)+pctsrf(i,is_sic))
1081             ELSE
1082                zx_tmp_fi2d(i) = 273.15
1083             ENDIF
1084          ENDDO
1085       ENDIF
1086       CALL histwrite_phy(o_t_oce_sic, zx_tmp_fi2d)
1087
1088       ! Couplage convection-couche limite
1089       IF (iflag_con.GE.3) THEN
1090          IF (iflag_coupl>=1) THEN
1091             CALL histwrite_phy(o_ale_bl, ale_bl)
1092             CALL histwrite_phy(o_alp_bl, alp_bl)
1093          ENDIF !iflag_coupl>=1
1094       ENDIF !(iflag_con.GE.3)
1095       ! Wakes
1096       IF (iflag_con.EQ.3) THEN
1097          IF (iflag_wake>=1) THEN
1098             CALL histwrite_phy(o_ale_wk, ale_wake)
1099             CALL histwrite_phy(o_alp_wk, alp_wake)
1100             IF (iflag_pbl_split>=1) THEN
1101               !ym warning : dtvdf_x, dtvdf_w, dqvdf_x, dqvdf_w are not defined by model
1102               !ym => init to 0 in phys_local_var_mod
1103               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dtvdf_x(1:klon,1:klev)/pdtphys
1104               CALL histwrite_phy(o_dtvdf_x    ,zx_tmp_fi3d)
1105               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dtvdf_w(1:klon,1:klev)/pdtphys
1106               CALL histwrite_phy(o_dtvdf_w    ,zx_tmp_fi3d)
1107               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dqvdf_x(1:klon,1:klev)/pdtphys
1108               CALL histwrite_phy(o_dqvdf_x    ,zx_tmp_fi3d)
1109               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dqvdf_w(1:klon,1:klev)/pdtphys
1110               CALL histwrite_phy(o_dqvdf_w    ,zx_tmp_fi3d)
1111               CALL histwrite_phy(o_sens_x     ,sens_x     )
1112               CALL histwrite_phy(o_sens_w     ,sens_w     )
1113               CALL histwrite_phy(o_flat_x     ,zxfluxlat_x)
1114               CALL histwrite_phy(o_flat_w     ,zxfluxlat_w)
1115               CALL histwrite_phy(o_delta_tsurf,delta_tsurf)
1116               CALL histwrite_phy(o_cdragh_x   ,cdragh_x   )
1117               CALL histwrite_phy(o_cdragh_w   ,cdragh_w   )
1118               CALL histwrite_phy(o_cdragm_x   ,cdragm_x   )
1119               CALL histwrite_phy(o_cdragm_w   ,cdragm_w   )
1120               CALL histwrite_phy(o_kh         ,kh         )
1121               CALL histwrite_phy(o_kh_x       ,kh_x       )
1122               CALL histwrite_phy(o_kh_w       ,kh_w       )
1123             ENDIF   ! (iflag_pbl_split>=1)
1124             CALL histwrite_phy(o_ale, ale)
1125             CALL histwrite_phy(o_alp, alp)
1126             CALL histwrite_phy(o_cin, cin)
1127             CALL histwrite_phy(o_WAPE, wake_pe)
1128             CALL histwrite_phy(o_wake_h, wake_h)
1129             CALL histwrite_phy(o_wake_s, wake_s)
1130             CALL histwrite_phy(o_wake_deltat, wake_deltat)
1131             CALL histwrite_phy(o_wake_deltaq, wake_deltaq)
1132             CALL histwrite_phy(o_wake_omg, wake_omg)
1133             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_wake(1:klon,1:klev) &
1134                  /pdtphys
1135             CALL histwrite_phy(o_dtwak, zx_tmp_fi3d)
1136             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_wake(1:klon,1:klev)/pdtphys
1137             CALL histwrite_phy(o_dqwak, zx_tmp_fi3d)
1138             IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1139             CALL histwrite_phy(o_dqwak2d, zx_tmp_fi2d)
1140          ENDIF ! iflag_wake>=1
1141          CALL histwrite_phy(o_ftd, ftd)
1142          CALL histwrite_phy(o_fqd, fqd)
1143       ENDIF !(iflag_con.EQ.3)
1144       IF (iflag_con.EQ.3.OR.iflag_con.EQ.30) THEN
1145          ! sortie RomP convection descente insaturee iflag_con=30
1146          ! etendue a iflag_con=3 (jyg)
1147          CALL histwrite_phy(o_Vprecip, Vprecip)
1148          CALL histwrite_phy(o_wdtrainA, wdtrainA)
1149          CALL histwrite_phy(o_wdtrainM, wdtrainM)
1150       ENDIF !(iflag_con.EQ.3.or.iflag_con.EQ.30)
1151!!! nrlmd le 10/04/2012
1152       IF (iflag_trig_bl>=1) THEN
1153          CALL histwrite_phy(o_n2, n2)
1154          CALL histwrite_phy(o_s2, s2)
1155          CALL histwrite_phy(o_proba_notrig, proba_notrig)
1156          CALL histwrite_phy(o_random_notrig, random_notrig)
1157          CALL histwrite_phy(o_ale_bl_stat, ale_bl_stat)
1158          CALL histwrite_phy(o_ale_bl_trig, ale_bl_trig)
1159       ENDIF  !(iflag_trig_bl>=1)
1160       IF (iflag_clos_bl>=1) THEN
1161          CALL histwrite_phy(o_alp_bl_det, alp_bl_det)
1162          CALL histwrite_phy(o_alp_bl_fluct_m, alp_bl_fluct_m)
1163          CALL histwrite_phy(o_alp_bl_fluct_tke,  &
1164               alp_bl_fluct_tke)
1165          CALL histwrite_phy(o_alp_bl_conv, alp_bl_conv)
1166          CALL histwrite_phy(o_alp_bl_stat, alp_bl_stat)
1167       ENDIF  !(iflag_clos_bl>=1)
1168!!! fin nrlmd le 10/04/2012
1169       ! Output of slab ocean variables
1170       IF (type_ocean=='slab ') THEN
1171          CALL histwrite_phy(o_slab_bils, slab_wfbils)
1172          IF (nslay.EQ.1) THEN
1173              zx_tmp_fi2d(:)=tslab(:,1)
1174              CALL histwrite_phy(o_tslab, zx_tmp_fi2d)
1175              zx_tmp_fi2d(:)=dt_qflux(:,1)
1176              CALL histwrite_phy(o_slab_qflux, zx_tmp_fi2d)
1177          ELSE
1178              CALL histwrite_phy(o_tslab, tslab(:,1:nslay))
1179              CALL histwrite_phy(o_slab_qflux, dt_qflux(:,1:nslay))
1180          ENDIF
1181          IF (version_ocean=='sicINT') THEN
1182              CALL histwrite_phy(o_slab_bilg, slab_bilg)
1183              CALL histwrite_phy(o_slab_tice, tice)
1184              CALL histwrite_phy(o_slab_sic, seaice)
1185          ENDIF
1186          IF (slab_gm) THEN
1187             CALL histwrite_phy(o_slab_gm, dt_gm(:,1:nslay))
1188          END IF
1189          IF (slab_hdiff) THEN
1190            IF (nslay.EQ.1) THEN
1191                zx_tmp_fi2d(:)=dt_hdiff(:,1)
1192                CALL histwrite_phy(o_slab_hdiff, zx_tmp_fi2d)
1193            ELSE
1194                CALL histwrite_phy(o_slab_hdiff, dt_hdiff(:,1:nslay))
1195            ENDIF
1196          ENDIF
1197          IF (slab_ekman.GT.0) THEN
1198            IF (nslay.EQ.1) THEN
1199                zx_tmp_fi2d(:)=dt_ekman(:,1)
1200                CALL histwrite_phy(o_slab_ekman, zx_tmp_fi2d)
1201            ELSE
1202                CALL histwrite_phy(o_slab_ekman, dt_ekman(:,1:nslay))
1203            ENDIF
1204          ENDIF
1205       ENDIF !type_ocean == force/slab
1206       CALL histwrite_phy(o_weakinv, weak_inversion)
1207       CALL histwrite_phy(o_dthmin, dthmin)
1208       CALL histwrite_phy(o_cldtau, cldtau)
1209       CALL histwrite_phy(o_cldemi, cldemi)
1210       CALL histwrite_phy(o_pr_con_l, pmflxr(:,1:klev))
1211       CALL histwrite_phy(o_pr_con_i, pmflxs(:,1:klev))
1212       CALL histwrite_phy(o_pr_lsc_l, prfl(:,1:klev))
1213       CALL histwrite_phy(o_pr_lsc_i, psfl(:,1:klev))
1214       CALL histwrite_phy(o_re, re)
1215       CALL histwrite_phy(o_fl, fl)
1216       IF (vars_defined) THEN
1217          DO i=1, klon
1218             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1219          ENDDO
1220       ENDIF
1221       CALL histwrite_phy(o_rh2m, zx_tmp_fi2d)
1222
1223       IF (vars_defined) THEN
1224          DO i=1, klon
1225             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1226          ENDDO
1227       ENDIF
1228       CALL histwrite_phy(o_rh2m_min, zx_tmp_fi2d)
1229
1230       IF (vars_defined) THEN
1231          DO i=1, klon
1232             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1233          ENDDO
1234       ENDIF
1235       CALL histwrite_phy(o_rh2m_max, zx_tmp_fi2d)
1236
1237       CALL histwrite_phy(o_qsat2m, qsat2m)
1238       CALL histwrite_phy(o_tpot, tpot)
1239       CALL histwrite_phy(o_tpote, tpote)
1240       IF (vars_defined) zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, is_ter)
1241       CALL histwrite_phy(o_SWnetOR,  zx_tmp_fi2d)
1242       IF (vars_defined) zx_tmp_fi2d(1:klon) = solsw(1:klon)/(1.-albsol1(1:klon))
1243       CALL histwrite_phy(o_SWdownOR,  zx_tmp_fi2d)
1244       CALL histwrite_phy(o_LWdownOR, sollwdown)
1245       CALL histwrite_phy(o_snowl, snow_lsc)
1246       CALL histwrite_phy(o_solldown, sollwdown)
1247       CALL histwrite_phy(o_dtsvdfo, d_ts(:,is_oce))
1248       CALL histwrite_phy(o_dtsvdft, d_ts(:,is_ter))
1249       CALL histwrite_phy(o_dtsvdfg,  d_ts(:,is_lic))
1250       CALL histwrite_phy(o_dtsvdfi, d_ts(:,is_sic))
1251       CALL histwrite_phy(o_z0m, z0m(:,nbsrf+1))
1252       CALL histwrite_phy(o_z0h, z0h(:,nbsrf+1))
1253
1254       ! od550 per species
1255!--OLIVIER
1256!This is warranted by treating INCA aerosols as offline aerosols
1257!       IF (new_aod .and. (.not. aerosol_couple)) THEN
1258       IF (new_aod) THEN
1259          IF (flag_aerosol.GT.0) THEN
1260             CALL histwrite_phy(o_od443aer, od443aer)
1261             CALL histwrite_phy(o_od550aer, od550aer)
1262             CALL histwrite_phy(o_od865aer, od865aer)
1263             CALL histwrite_phy(o_abs550aer, abs550aer)
1264             CALL histwrite_phy(o_od550lt1aer, od550lt1aer)
1265             CALL histwrite_phy(o_sconcso4, sconcso4)
1266             CALL histwrite_phy(o_sconcno3, sconcno3)
1267             CALL histwrite_phy(o_sconcoa, sconcoa)
1268             CALL histwrite_phy(o_sconcbc, sconcbc)
1269             CALL histwrite_phy(o_sconcss, sconcss)
1270             CALL histwrite_phy(o_sconcdust, sconcdust)
1271             CALL histwrite_phy(o_concso4, concso4)
1272             CALL histwrite_phy(o_concno3, concno3)
1273             CALL histwrite_phy(o_concoa, concoa)
1274             CALL histwrite_phy(o_concbc, concbc)
1275             CALL histwrite_phy(o_concss, concss)
1276             CALL histwrite_phy(o_concdust, concdust)
1277             CALL histwrite_phy(o_loadso4, loadso4)
1278             CALL histwrite_phy(o_loadoa, loadoa)
1279             CALL histwrite_phy(o_loadbc, loadbc)
1280             CALL histwrite_phy(o_loadss, loadss)
1281             CALL histwrite_phy(o_loaddust, loaddust)
1282             CALL histwrite_phy(o_loadno3, loadno3)
1283             CALL histwrite_phy(o_dryod550aer, dryod550aer)
1284             DO naero = 1, naero_tot-1
1285                CALL histwrite_phy(o_drytausumaero(naero),drytausum_aero(:,naero))
1286             END DO
1287          ENDIF
1288          !--STRAT AER
1289          IF (flag_aerosol.GT.0.OR.flag_aerosol_strat.GT.0) THEN
1290             DO naero = 1, naero_tot
1291                CALL histwrite_phy(o_tausumaero(naero),tausum_aero(:,2,naero))
1292             END DO
1293          ENDIF
1294          IF (flag_aerosol_strat.GT.0) THEN
1295             CALL histwrite_phy(o_tausumaero_lw,tausum_aero(:,6,id_STRAT_phy))
1296          ENDIF
1297       ENDIF
1298
1299       CALL histwrite_phy(o_p_tropopause, p_tropopause)
1300       CALL histwrite_phy(o_t_tropopause, t_tropopause)
1301       CALL histwrite_phy(o_z_tropopause, z_tropopause)
1302
1303! ThL -- In the following, we assume read_climoz == 1
1304       IF (vars_defined) THEN
1305         zx_tmp_fi2d = 0.0    ! Computation for strato, added ThL
1306         DO k=1, klev
1307            zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + wo(:,k,1) * stratomask(:,k) * 1.e3
1308         END DO
1309       ENDIF
1310       CALL histwrite_phy(o_col_O3_strato, zx_tmp_fi2d) ! Added ThL
1311
1312       IF (vars_defined) THEN
1313         zx_tmp_fi2d = 0.0    ! Computation for tropo, added ThL
1314         DO k=1, klev
1315            zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + wo(:,k,1) * (1.0-stratomask(:,k)) * 1.e3
1316         END DO
1317       ENDIF
1318       CALL histwrite_phy(o_col_O3_tropo, zx_tmp_fi2d)   ! Added ThL
1319! end add ThL
1320
1321#ifdef CPP_StratAer
1322       IF (type_trac=='coag') THEN
1323          CALL histwrite_phy(o_R2SO4, R2SO4)
1324          CALL histwrite_phy(o_OCS_lifetime, OCS_lifetime)
1325          CALL histwrite_phy(o_SO2_lifetime, SO2_lifetime)
1326          CALL histwrite_phy(o_budg_3D_backgr_ocs,   budg_3D_backgr_ocs)
1327          CALL histwrite_phy(o_budg_3D_backgr_so2,   budg_3D_backgr_so2)
1328          CALL histwrite_phy(o_budg_3D_ocs_to_so2,   budg_3D_ocs_to_so2)
1329          CALL histwrite_phy(o_budg_3D_so2_to_h2so4, budg_3D_so2_to_h2so4)
1330          CALL histwrite_phy(o_budg_3D_nucl,         budg_3D_nucl)
1331          CALL histwrite_phy(o_budg_3D_cond_evap,    budg_3D_cond_evap)
1332          CALL histwrite_phy(o_budg_dep_dry_h2so4,   budg_dep_dry_h2so4)
1333          CALL histwrite_phy(o_budg_dep_wet_h2so4,   budg_dep_wet_h2so4)
1334          CALL histwrite_phy(o_budg_dep_dry_part,    budg_dep_dry_part)
1335          CALL histwrite_phy(o_budg_dep_wet_part,    budg_dep_wet_part)
1336          CALL histwrite_phy(o_budg_emi_ocs,         budg_emi_ocs)
1337          CALL histwrite_phy(o_budg_emi_so2,         budg_emi_so2)
1338          CALL histwrite_phy(o_budg_emi_h2so4,       budg_emi_h2so4)
1339          CALL histwrite_phy(o_budg_emi_part,        budg_emi_part)
1340          CALL histwrite_phy(o_budg_ocs_to_so2,      budg_ocs_to_so2)
1341          CALL histwrite_phy(o_budg_so2_to_h2so4,    budg_so2_to_h2so4)
1342          CALL histwrite_phy(o_budg_h2so4_to_part,   budg_h2so4_to_part)
1343          CALL histwrite_phy(o_budg_sed_part,        budg_sed_part)
1344          CALL histwrite_phy(o_surf_PM25_sulf, surf_PM25_sulf)
1345          CALL histwrite_phy(o_vsed_aer, vsed_aer)
1346          CALL histwrite_phy(o_f_r_wet, f_r_wet)
1347          CALL histwrite_phy(o_ext_strat_550, tau_strat_550)
1348          CALL histwrite_phy(o_ext_strat_1020, tau_strat_1020)
1349          CALL histwrite_phy(o_tau_strat_550, tausum_strat(:,1))
1350          CALL histwrite_phy(o_tau_strat_1020, tausum_strat(:,2))
1351       ENDIF
1352#endif
1353       IF (ok_ade) THEN
1354          IF (vars_defined) zx_tmp_fi2d(:)=topswad_aero*swradcorr
1355          CALL histwrite_phy(o_topswad, zx_tmp_fi2d)
1356         
1357          IF (vars_defined) zx_tmp_fi2d(:)=topswad0_aero*swradcorr
1358          CALL histwrite_phy(o_topswad0, zx_tmp_fi2d)
1359                   
1360          IF (vars_defined) zx_tmp_fi2d(:)=solswad_aero*swradcorr
1361          CALL histwrite_phy(o_solswad, zx_tmp_fi2d)
1362                   
1363          IF (vars_defined) zx_tmp_fi2d(:)=solswad0_aero*swradcorr
1364          CALL histwrite_phy(o_solswad0, zx_tmp_fi2d)
1365         
1366          IF (type_trac .ne. 'inca') THEN
1367             IF (config_inca .ne. 'aeNP') THEN
1368                CALL histwrite_phy(o_toplwad, toplwad_aero)
1369                CALL histwrite_phy(o_toplwad0, toplwad0_aero)
1370                CALL histwrite_phy(o_sollwad, sollwad_aero)
1371                CALL histwrite_phy(o_sollwad0, sollwad0_aero)
1372             ENDIF
1373          ENDIF
1374          !====MS forcing diagnostics
1375          IF (new_aod) THEN
1376          !ym warning : topsw_aero, solsw_aero, topsw0_aero, solsw0_aero are not defined by model
1377          !ym => init to 0 in radlwsw_m.F90 ztopsw_aero, zsolsw_aero, ztopsw0_aero, zsolsw0_aero
1378
1379             IF (vars_defined) zx_tmp_fi2d(:)=topsw_aero(:,1)*swradcorr(:)
1380             CALL histwrite_phy(o_swtoaas_nat,zx_tmp_fi2d)
1381             IF (vars_defined) zx_tmp_fi2d(:)=solsw_aero(:,1)*swradcorr(:)
1382             CALL histwrite_phy(o_swsrfas_nat,zx_tmp_fi2d)
1383             IF (vars_defined) zx_tmp_fi2d(:)=topsw0_aero(:,1)*swradcorr(:)
1384             CALL histwrite_phy(o_swtoacs_nat,zx_tmp_fi2d)
1385             IF (vars_defined) zx_tmp_fi2d(:)=solsw0_aero(:,1)*swradcorr(:)
1386             CALL histwrite_phy(o_swsrfcs_nat,zx_tmp_fi2d)
1387             !ant
1388             IF (vars_defined) zx_tmp_fi2d(:)=topsw_aero(:,2)*swradcorr(:)
1389             CALL histwrite_phy(o_swtoaas_ant,zx_tmp_fi2d)
1390             IF (vars_defined) zx_tmp_fi2d(:)=solsw_aero(:,2)*swradcorr(:)
1391             CALL histwrite_phy(o_swsrfas_ant,zx_tmp_fi2d)
1392             IF (vars_defined) zx_tmp_fi2d(:)=topsw0_aero(:,2)*swradcorr(:)
1393             CALL histwrite_phy(o_swtoacs_ant,zx_tmp_fi2d)
1394             IF (vars_defined) zx_tmp_fi2d(:)=solsw0_aero(:,2)*swradcorr(:)
1395             CALL histwrite_phy(o_swsrfcs_ant,zx_tmp_fi2d)
1396             !cf
1397             IF (.not. aerosol_couple) THEN
1398                IF (vars_defined) zx_tmp_fi2d(:)=topswcf_aero(:,1)*swradcorr(:)
1399                CALL histwrite_phy(o_swtoacf_nat,zx_tmp_fi2d)
1400                IF (vars_defined) zx_tmp_fi2d(:)=solswcf_aero(:,1)*swradcorr(:)
1401                CALL histwrite_phy(o_swsrfcf_nat,zx_tmp_fi2d)
1402                IF (vars_defined) zx_tmp_fi2d(:)=topswcf_aero(:,2)*swradcorr(:)
1403                CALL histwrite_phy(o_swtoacf_ant,zx_tmp_fi2d)
1404                IF (vars_defined) zx_tmp_fi2d(:)=solswcf_aero(:,2)*swradcorr(:)
1405                CALL histwrite_phy(o_swsrfcf_ant,zx_tmp_fi2d)
1406                IF (vars_defined) zx_tmp_fi2d(:)=topswcf_aero(:,3)*swradcorr(:)
1407                CALL histwrite_phy(o_swtoacf_zero,zx_tmp_fi2d)
1408                IF (vars_defined) zx_tmp_fi2d(:)=solswcf_aero(:,3)*swradcorr(:)
1409                CALL histwrite_phy(o_swsrfcf_zero,zx_tmp_fi2d)
1410             ENDIF
1411          ENDIF ! new_aod
1412          !====MS forcing diagnostics
1413       ENDIF
1414       IF (ok_aie) THEN
1415          IF (vars_defined) zx_tmp_fi2d(:)= topswai_aero*swradcorr
1416          CALL histwrite_phy(o_topswai, zx_tmp_fi2d)
1417         
1418          IF (vars_defined) zx_tmp_fi2d(:)=toplwai_aero*swradcorr
1419          CALL histwrite_phy(o_toplwai, zx_tmp_fi2d)
1420         
1421          IF (vars_defined) zx_tmp_fi2d(:)=solswai_aero*swradcorr
1422          CALL histwrite_phy(o_solswai, zx_tmp_fi2d)
1423         
1424          IF (vars_defined) zx_tmp_fi2d(:)=sollwai_aero*swradcorr
1425          CALL histwrite_phy(o_sollwai, zx_tmp_fi2d)
1426       ENDIF
1427       IF (flag_aerosol.GT.0.AND.ok_cdnc) THEN
1428          CALL histwrite_phy(o_scdnc, scdnc)
1429          CALL histwrite_phy(o_cldncl, cldncl)
1430          CALL histwrite_phy(o_reffclws, reffclws)
1431          CALL histwrite_phy(o_reffclwc, reffclwc)
1432          CALL histwrite_phy(o_cldnvi, cldnvi)
1433          CALL histwrite_phy(o_lcc, lcc)
1434          CALL histwrite_phy(o_lcc3d, lcc3d)
1435          CALL histwrite_phy(o_lcc3dcon, lcc3dcon)
1436          CALL histwrite_phy(o_lcc3dstra, lcc3dstra)
1437          CALL histwrite_phy(o_reffclwtop, reffclwtop)
1438       ENDIF
1439       ! Champs 3D:
1440       IF (ok_ade .OR. ok_aie) then
1441          CALL histwrite_phy(o_ec550aer, ec550aer)
1442       ENDIF
1443       CALL histwrite_phy(o_lwcon, flwc)
1444       CALL histwrite_phy(o_iwcon, fiwc)
1445       CALL histwrite_phy(o_temp, t_seri)
1446       CALL histwrite_phy(o_theta, theta)
1447       CALL histwrite_phy(o_ovapinit, qx(:,:,ivap))
1448       CALL histwrite_phy(o_ovap, q_seri)
1449       CALL histwrite_phy(o_oliq, ql_seri)
1450
1451       IF (vars_defined) zx_tmp_fi3d = ql_seri+qs_seri
1452       CALL histwrite_phy(o_ocond, zx_tmp_fi3d)
1453
1454       CALL histwrite_phy(o_geop, zphi)
1455       CALL histwrite_phy(o_vitu, u_seri)
1456       CALL histwrite_phy(o_vitv, v_seri)
1457       CALL histwrite_phy(o_vitw, omega)
1458       CALL histwrite_phy(o_pres, pplay)
1459       CALL histwrite_phy(o_paprs, paprs(:,1:klev))
1460       
1461       IF (vars_defined) zx_tmp_fi3d = zphi/RG
1462       CALL histwrite_phy(o_zfull,zx_tmp_fi3d)
1463
1464       IF (flag_aerosol_strat.EQ.2) THEN
1465         CALL histwrite_phy(o_stratomask, stratomask)
1466       ENDIF
1467     
1468       IF (vars_defined)  THEN
1469        zx_tmp_fi3d(:,1)= pphis(:)/RG
1470        DO k = 2, klev
1471         DO i = 1, klon
1472            zx_tmp_fi3d(i,k) = zphi(i,k)/RG + &
1473                          (zphi(i,k)-zphi(i,k-1))/RG * &
1474                          (paprs(i,k)-pplay(i,k))/(pplay(i,k)-pplay(i,k-1))
1475         ENDDO
1476        ENDDO
1477       ENDIF
1478       CALL histwrite_phy(o_zhalf, zx_tmp_fi3d)
1479       CALL histwrite_phy(o_rneb, cldfra)
1480       CALL histwrite_phy(o_rnebcon, rnebcon)
1481       CALL histwrite_phy(o_rnebls, rneb)
1482       CALL histwrite_phy(o_rneblsvol, rneblsvol)
1483       IF (vars_defined)  THEN
1484          DO k=1, klev
1485             DO i=1, klon
1486                zx_tmp_fi3d(i,k)=cldfra(i,k)*JrNt(i)
1487             ENDDO
1488          ENDDO
1489       ENDIF
1490       CALL histwrite_phy(o_rnebjn, zx_tmp_fi3d)
1491       CALL histwrite_phy(o_rhum, zx_rh)
1492       
1493       IF (vars_defined) zx_tmp_fi3d = wo(:, :, 1) * dobson_u * 1e3 / zmasse / rmo3 * rmd
1494       CALL histwrite_phy(o_ozone, zx_tmp_fi3d)
1495
1496       IF (read_climoz == 2) THEN
1497         IF (vars_defined) zx_tmp_fi3d = wo(:, :, 2) * dobson_u * 1e3 / zmasse / rmo3 * rmd
1498         CALL histwrite_phy(o_ozone_light, zx_tmp_fi3d)
1499       ENDIF
1500
1501       CALL histwrite_phy(o_duphy, d_u)
1502
1503       CALL histwrite_phy(o_dtphy, d_t)
1504
1505       CALL histwrite_phy(o_dqphy,  d_qx(:,:,ivap))
1506       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,ivap),zmasse,zx_tmp_fi2d)
1507       CALL histwrite_phy(o_dqphy2d,  zx_tmp_fi2d)
1508
1509       CALL histwrite_phy(o_dqlphy,  d_qx(:,:,iliq))
1510       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,iliq),zmasse,zx_tmp_fi2d)
1511       CALL histwrite_phy(o_dqlphy2d,  zx_tmp_fi2d)
1512
1513       IF (nqo.EQ.3) THEN
1514       CALL histwrite_phy(o_dqsphy,  d_qx(:,:,isol))
1515       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,isol),zmasse,zx_tmp_fi2d)
1516       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
1517       ELSE
1518       zx_tmp_fi3d=0.0
1519       CALL histwrite_phy(o_dqsphy,  zx_tmp_fi3d)
1520       zx_tmp_fi2d=0.0
1521       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
1522       ENDIF
1523
1524       DO nsrf=1, nbsrf
1525          IF (vars_defined) zx_tmp_fi2d(1 : klon) = falb1( 1 : klon, nsrf)
1526          CALL histwrite_phy(o_albe_srf(nsrf), zx_tmp_fi2d)
1527          IF (vars_defined) zx_tmp_fi2d(1 : klon) = z0m( 1 : klon, nsrf)
1528          CALL histwrite_phy(o_z0m_srf(nsrf), zx_tmp_fi2d)
1529          IF (vars_defined) zx_tmp_fi2d(1 : klon) = z0h( 1 : klon, nsrf)
1530          CALL histwrite_phy(o_z0h_srf(nsrf), zx_tmp_fi2d)
1531          IF (vars_defined) zx_tmp_fi2d(1 : klon) = agesno( 1 : klon, nsrf)
1532          CALL histwrite_phy(o_ages_srf(nsrf), zx_tmp_fi2d)
1533          IF (vars_defined) zx_tmp_fi2d(1 : klon) = snow( 1 : klon, nsrf)
1534          CALL histwrite_phy(o_snow_srf(nsrf), zx_tmp_fi2d)
1535       ENDDO !nsrf=1, nbsrf
1536       CALL histwrite_phy(o_alb1, albsol1)
1537       CALL histwrite_phy(o_alb2, albsol2)
1538       !FH Sorties pour la couche limite
1539       IF (iflag_pbl>1) THEN
1540          zx_tmp_fi3d=0.
1541          IF (vars_defined) THEN
1542             DO nsrf=1,nbsrf
1543                DO k=1,klev
1544                   zx_tmp_fi3d(:,k)=zx_tmp_fi3d(:,k) &
1545                        +pctsrf(:,nsrf)*pbl_tke(:,k,nsrf)
1546                ENDDO
1547             ENDDO
1548          ENDIF
1549          CALL histwrite_phy(o_tke, zx_tmp_fi3d)
1550
1551          CALL histwrite_phy(o_tke_max, zx_tmp_fi3d)
1552       ENDIF
1553
1554       CALL histwrite_phy(o_kz, coefh(:,:,is_ave))
1555
1556       CALL histwrite_phy(o_kz_max, coefh(:,:,is_ave))
1557
1558       CALL histwrite_phy(o_clwcon, clwcon0)
1559       CALL histwrite_phy(o_dtdyn, d_t_dyn)
1560
1561       CALL histwrite_phy(o_dqdyn, d_q_dyn)
1562
1563       CALL histwrite_phy(o_dqdyn2d,d_q_dyn2d)
1564
1565       CALL histwrite_phy(o_dqldyn, d_ql_dyn)
1566
1567       CALL histwrite_phy(o_dqldyn2d, d_ql_dyn2d)
1568
1569       CALL histwrite_phy(o_dqsdyn, d_qs_dyn)
1570
1571       CALL histwrite_phy(o_dqsdyn2d, d_qs_dyn2d)
1572
1573       CALL histwrite_phy(o_dudyn, d_u_dyn)
1574       CALL histwrite_phy(o_dvdyn, d_v_dyn)
1575
1576       IF (vars_defined) THEN
1577          zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys
1578       ENDIF
1579       CALL histwrite_phy(o_dtcon, zx_tmp_fi3d)
1580       if(iflag_thermals.eq.0)then
1581          IF (vars_defined) THEN
1582             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
1583                  d_t_ajsb(1:klon,1:klev)/pdtphys
1584          ENDIF
1585          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
1586       else if(iflag_thermals.ge.1.and.iflag_wake.EQ.1)then
1587          IF (vars_defined) THEN
1588             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
1589                  d_t_ajs(1:klon,1:klev)/pdtphys + &
1590                  d_t_wake(1:klon,1:klev)/pdtphys
1591          ENDIF
1592          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
1593       endif
1594       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_con(1:klon,1:klev)/pdtphys
1595       CALL histwrite_phy(o_ducon, zx_tmp_fi3d)
1596       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_con(1:klon,1:klev)/pdtphys
1597       CALL histwrite_phy(o_dvcon, zx_tmp_fi3d)
1598       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
1599       CALL histwrite_phy(o_dqcon, zx_tmp_fi3d)
1600       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1601       CALL histwrite_phy(o_dqcon2d, zx_tmp_fi2d)
1602
1603       IF (iflag_thermals.EQ.0) THEN
1604          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
1605          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
1606       ELSE IF (iflag_thermals.GE.1.AND.iflag_wake.EQ.1) THEN
1607          IF (vars_defined) THEN
1608             zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys + &
1609                  d_q_ajs(1:klon,1:klev)/pdtphys + &
1610                  d_q_wake(1:klon,1:klev)/pdtphys
1611          ENDIF
1612          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
1613       ENDIF
1614
1615       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lsc(1:klon,1:klev)/pdtphys
1616       CALL histwrite_phy(o_dtlsc, zx_tmp_fi3d)
1617       IF (vars_defined) zx_tmp_fi3d(1:klon, 1:klev)=(d_t_lsc(1:klon,1:klev)+ &
1618            d_t_eva(1:klon,1:klev))/pdtphys
1619       CALL histwrite_phy(o_dtlschr, zx_tmp_fi3d)
1620       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys
1621       CALL histwrite_phy(o_dqlsc, zx_tmp_fi3d)
1622       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1623       CALL histwrite_phy(o_dqlsc2d, zx_tmp_fi2d)
1624       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=beta_prec(1:klon,1:klev)
1625       CALL histwrite_phy(o_beta_prec, zx_tmp_fi3d)
1626!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1627       ! Sorties specifiques a la separation thermiques/non thermiques
1628       IF (iflag_thermals>=1) THEN
1629          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscth(1:klon,1:klev)/pdtphys
1630          CALL histwrite_phy(o_dtlscth, zx_tmp_fi3d)
1631          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscst(1:klon,1:klev)/pdtphys
1632          CALL histwrite_phy(o_dtlscst, zx_tmp_fi3d)
1633          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscth(1:klon,1:klev)/pdtphys
1634          CALL histwrite_phy(o_dqlscth, zx_tmp_fi3d)
1635          IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1636          CALL histwrite_phy(o_dqlscth2d, zx_tmp_fi2d)
1637          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscst(1:klon,1:klev)/pdtphys
1638          CALL histwrite_phy(o_dqlscst, zx_tmp_fi3d)
1639          IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1640          CALL histwrite_phy(o_dqlscst2d, zx_tmp_fi2d)
1641          CALL histwrite_phy(o_plulth, plul_th)
1642          CALL histwrite_phy(o_plulst, plul_st)
1643          IF (vars_defined) THEN
1644             DO k=1,klev
1645                DO i=1,klon
1646                   IF (ptconvth(i,k)) THEN
1647                      zx_tmp_fi3d(i,k)=1.
1648                   ELSE
1649                      zx_tmp_fi3d(i,k)=0.
1650                   ENDIF
1651                ENDDO
1652             ENDDO
1653          ENDIF
1654          CALL histwrite_phy(o_ptconvth, zx_tmp_fi3d)
1655          IF (vars_defined) THEN
1656             do i=1,klon
1657                zx_tmp_fi2d(1:klon)=lmax_th(:)
1658             enddo
1659          ENDIF
1660          CALL histwrite_phy(o_lmaxth, zx_tmp_fi2d)
1661       ENDIF ! iflag_thermals>=1
1662!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1663       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf(1:klon,1:klev)/pdtphys
1664       CALL histwrite_phy(o_dtvdf, zx_tmp_fi3d)
1665       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_diss(1:klon,1:klev)/pdtphys
1666       CALL histwrite_phy(o_dtdis, zx_tmp_fi3d)
1667       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf(1:klon,1:klev)/pdtphys
1668       CALL histwrite_phy(o_dqvdf, zx_tmp_fi3d)
1669       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1670       CALL histwrite_phy(o_dqvdf2d, zx_tmp_fi2d)
1671       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_eva(1:klon,1:klev)/pdtphys
1672       CALL histwrite_phy(o_dteva, zx_tmp_fi3d)
1673       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_eva(1:klon,1:klev)/pdtphys
1674       CALL histwrite_phy(o_dqeva, zx_tmp_fi3d)
1675       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1676       CALL histwrite_phy(o_dqeva2d, zx_tmp_fi2d)
1677       zpt_conv = 0.
1678       WHERE (ptconv) zpt_conv = 1.
1679       CALL histwrite_phy(o_ptconv, zpt_conv)
1680       CALL histwrite_phy(o_ratqs, ratqs)
1681       IF (vars_defined) THEN
1682          zx_tmp_fi3d(1:klon,1:klev)=d_t_ajs(1:klon,1:klev)/pdtphys - &
1683               d_t_ajsb(1:klon,1:klev)/pdtphys
1684       ENDIF
1685       CALL histwrite_phy(o_dtthe, zx_tmp_fi3d)
1686       IF (vars_defined) THEN
1687          zx_tmp_fi3d(1:klon,1:klev)=d_u_ajs(1:klon,1:klev)/pdtphys
1688       ENDIF
1689       CALL histwrite_phy(o_duthe, zx_tmp_fi3d)
1690       IF (vars_defined) THEN
1691          zx_tmp_fi3d(1:klon,1:klev)=d_v_ajs(1:klon,1:klev)/pdtphys
1692       ENDIF
1693       CALL histwrite_phy(o_dvthe, zx_tmp_fi3d)
1694
1695       IF (iflag_thermals>=1) THEN
1696          ! Pour l instant 0 a y reflichir pour les thermiques
1697          zx_tmp_fi2d=0.
1698          CALL histwrite_phy(o_ftime_th, zx_tmp_fi2d)
1699          CALL histwrite_phy(o_f_th, fm_therm)
1700          CALL histwrite_phy(o_e_th, entr_therm)
1701          CALL histwrite_phy(o_w_th, zw2)
1702          CALL histwrite_phy(o_q_th, zqasc)
1703          CALL histwrite_phy(o_a_th, fraca)
1704          CALL histwrite_phy(o_cloudth_sth, cloudth_sth)
1705          CALL histwrite_phy(o_cloudth_senv, cloudth_senv)
1706          CALL histwrite_phy(o_cloudth_sigmath, cloudth_sigmath)
1707          CALL histwrite_phy(o_cloudth_sigmaenv, cloudth_sigmaenv)
1708          CALL histwrite_phy(o_d_th, detr_therm)
1709          CALL histwrite_phy(o_f0_th, f0)
1710          CALL histwrite_phy(o_zmax_th, zmax_th)
1711          IF (vars_defined) THEN
1712             zx_tmp_fi3d(1:klon,1:klev)=d_q_ajs(1:klon,1:klev)/pdtphys - &
1713                  d_q_ajsb(1:klon,1:klev)/pdtphys
1714          ENDIF
1715          CALL histwrite_phy(o_dqthe, zx_tmp_fi3d)
1716          IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1717          CALL histwrite_phy(o_dqthe2d, zx_tmp_fi2d)
1718       ENDIF !iflag_thermals
1719       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ajsb(1:klon,1:klev)/pdtphys
1720       CALL histwrite_phy(o_dtajs, zx_tmp_fi3d)
1721       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_ajsb(1:klon,1:klev)/pdtphys
1722       CALL histwrite_phy(o_dqajs, zx_tmp_fi3d)
1723       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1724       CALL histwrite_phy(o_dqajs2d, zx_tmp_fi2d)
1725       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys
1726       CALL histwrite_phy(o_dtswr, zx_tmp_fi3d)
1727       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_sw0(1:klon,1:klev)/pdtphys
1728       CALL histwrite_phy(o_dtsw0, zx_tmp_fi3d)
1729       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lwr(1:klon,1:klev)/pdtphys
1730       CALL histwrite_phy(o_dtlwr, zx_tmp_fi3d)
1731       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lw0(1:klon,1:klev)/pdtphys
1732       CALL histwrite_phy(o_dtlw0, zx_tmp_fi3d)
1733       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ec(1:klon,1:klev)/pdtphys
1734       CALL histwrite_phy(o_dtec, zx_tmp_fi3d)
1735       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_vdf(1:klon,1:klev)/pdtphys
1736       CALL histwrite_phy(o_duvdf, zx_tmp_fi3d)
1737       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_vdf(1:klon,1:klev)/pdtphys
1738       CALL histwrite_phy(o_dvvdf, zx_tmp_fi3d)
1739       IF (ok_orodr) THEN
1740          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_oro(1:klon,1:klev)/pdtphys
1741          CALL histwrite_phy(o_duoro, zx_tmp_fi3d)
1742          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_oro(1:klon,1:klev)/pdtphys
1743          CALL histwrite_phy(o_dvoro, zx_tmp_fi3d)
1744          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_oro(1:klon,1:klev)/pdtphys
1745          CALL histwrite_phy(o_dtoro, zx_tmp_fi3d)
1746       ENDIF
1747       IF (ok_orolf) THEN
1748          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_lif(1:klon,1:klev)/pdtphys
1749          CALL histwrite_phy(o_dulif, zx_tmp_fi3d)
1750
1751          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_lif(1:klon,1:klev)/pdtphys
1752          CALL histwrite_phy(o_dvlif, zx_tmp_fi3d)
1753
1754          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lif(1:klon,1:klev)/pdtphys
1755          CALL histwrite_phy(o_dtlif, zx_tmp_fi3d)
1756       ENDIF
1757
1758       IF (ok_hines) THEN
1759          IF (vars_defined) zx_tmp_fi3d=du_gwd_hines/pdtphys
1760          CALL histwrite_phy(o_du_gwd_hines, zx_tmp_fi3d)
1761
1762          IF (vars_defined) zx_tmp_fi3d= dv_gwd_hines/pdtphys         
1763          CALL histwrite_phy(o_dv_gwd_hines, zx_tmp_fi3d)
1764         
1765          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_hin(1:klon,1:klev)/pdtphys
1766          CALL histwrite_phy(o_dthin, zx_tmp_fi3d)
1767          CALL histwrite_phy(o_ustr_gwd_hines, zustr_gwd_hines)
1768          CALL histwrite_phy(o_vstr_gwd_hines, zvstr_gwd_hines)
1769       ENDIF
1770
1771       IF (.not. ok_hines .and. ok_gwd_rando) THEN
1772          IF (vars_defined)  zx_tmp_fi3d=du_gwd_front / pdtphys
1773          CALL histwrite_phy(o_du_gwd_front, zx_tmp_fi3d)
1774         
1775          IF (vars_defined)  zx_tmp_fi3d=dv_gwd_front / pdtphys
1776          CALL histwrite_phy(o_dv_gwd_front, zx_tmp_fi3d)
1777         
1778          CALL histwrite_phy(o_ustr_gwd_front, zustr_gwd_front)
1779          CALL histwrite_phy(o_vstr_gwd_front, zvstr_gwd_front)
1780       ENDIF
1781
1782       IF (ok_gwd_rando) THEN
1783          IF (vars_defined)  zx_tmp_fi3d=du_gwd_rando / pdtphys
1784          CALL histwrite_phy(o_du_gwd_rando, zx_tmp_fi3d)
1785         
1786          IF (vars_defined)  zx_tmp_fi3d=dv_gwd_rando / pdtphys
1787          CALL histwrite_phy(o_dv_gwd_rando, zx_tmp_fi3d)
1788          CALL histwrite_phy(o_ustr_gwd_rando, zustr_gwd_rando)
1789          CALL histwrite_phy(o_vstr_gwd_rando, zvstr_gwd_rando)
1790          CALL histwrite_phy(o_east_gwstress, east_gwstress )
1791          CALL histwrite_phy(o_west_gwstress, west_gwstress )
1792       ENDIF
1793
1794       IF (ok_qch4) THEN
1795          IF (vars_defined) zx_tmp_fi3d=d_q_ch4 / pdtphys
1796          CALL histwrite_phy(o_dqch4, zx_tmp_fi3d)
1797       ENDIF
1798       
1799       IF (vars_defined) THEN
1800         DO k=1, klevp1
1801           zx_tmp_fi3d1(:,k)=swup(:,k)*swradcorr(:)
1802         ENDDO
1803       ENDIF
1804       
1805       CALL histwrite_phy(o_rsu, zx_tmp_fi3d1)
1806
1807
1808       IF (vars_defined) THEN
1809         DO k=1, klevp1
1810           zx_tmp_fi3d1(:,k)=swdn(:,k)*swradcorr(:)
1811         ENDDO
1812       ENDIF
1813       
1814       CALL histwrite_phy(o_rsd, zx_tmp_fi3d1)
1815
1816       IF (vars_defined) THEN
1817         DO k=1, klevp1
1818           zx_tmp_fi3d1(:,k)=swup0(:,k)*swradcorr(:)
1819         ENDDO
1820       ENDIF
1821       
1822       CALL histwrite_phy(o_rsucs, zx_tmp_fi3d1)
1823
1824       IF (vars_defined) THEN
1825         DO k=1, klevp1
1826           zx_tmp_fi3d1(:,k)=swdn0(:,k)*swradcorr(:)
1827         ENDDO
1828       ENDIF
1829       CALL histwrite_phy(o_rsdcs, zx_tmp_fi3d1)
1830
1831       CALL histwrite_phy(o_rlu, lwup)
1832       CALL histwrite_phy(o_rld, lwdn)
1833       CALL histwrite_phy(o_rlucs, lwup0)
1834       CALL histwrite_phy(o_rldcs, lwdn0)
1835
1836       IF (vars_defined) THEN
1837          zx_tmp_fi3d(1:klon,1:klev)=d_t(1:klon,1:klev)+ &
1838               d_t_dyn(1:klon,1:klev)
1839       ENDIF
1840       CALL histwrite_phy(o_tnt, zx_tmp_fi3d)
1841
1842       IF (vars_defined) THEN
1843          zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys + &
1844               d_t_lwr(1:klon,1:klev)/pdtphys
1845       ENDIF
1846       CALL histwrite_phy(o_tntr, zx_tmp_fi3d)
1847       IF (vars_defined) THEN
1848          zx_tmp_fi3d(1:klon,1:klev)= (d_t_lsc(1:klon,1:klev)+ &
1849               d_t_eva(1:klon,1:klev)+ &
1850               d_t_vdf(1:klon,1:klev))/pdtphys
1851       ENDIF
1852       CALL histwrite_phy(o_tntscpbl, zx_tmp_fi3d)
1853       IF (vars_defined) THEN
1854          zx_tmp_fi3d(1:klon,1:klev)=d_qx(1:klon,1:klev,ivap)+ &
1855               d_q_dyn(1:klon,1:klev)
1856       ENDIF
1857       CALL histwrite_phy(o_tnhus, zx_tmp_fi3d)
1858       IF (vars_defined) THEN
1859          zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys+ &
1860               d_q_eva(1:klon,1:klev)/pdtphys
1861       ENDIF
1862       CALL histwrite_phy(o_tnhusscpbl, zx_tmp_fi3d)
1863       CALL histwrite_phy(o_evu, coefm(:,:,is_ave))
1864       IF (vars_defined) THEN
1865          zx_tmp_fi3d(1:klon,1:klev)=q_seri(1:klon,1:klev)+ &
1866               ql_seri(1:klon,1:klev)
1867       ENDIF
1868       CALL histwrite_phy(o_h2o, zx_tmp_fi3d)
1869       IF (iflag_con >= 3) THEN
1870          IF (vars_defined) THEN
1871             zx_tmp_fi3d(1:klon,1:klev)=-1 * (dnwd(1:klon,1:klev)+ &
1872                  dnwd0(1:klon,1:klev))
1873          ENDIF
1874          CALL histwrite_phy(o_mcd, zx_tmp_fi3d)
1875          IF (vars_defined) THEN
1876             zx_tmp_fi3d(1:klon,1:klev)=upwd(1:klon,1:klev) + &
1877                  dnwd(1:klon,1:klev)+ dnwd0(1:klon,1:klev)
1878          ENDIF
1879          CALL histwrite_phy(o_dmc, zx_tmp_fi3d)
1880       ELSE IF (iflag_con == 2) THEN
1881          CALL histwrite_phy(o_mcd,  pmfd)
1882          IF (vars_defined) zx_tmp_fi3d = pmfu + pmfd
1883          CALL histwrite_phy(o_dmc,  zx_tmp_fi3d)
1884       ENDIF
1885       CALL histwrite_phy(o_ref_liq, ref_liq)
1886       CALL histwrite_phy(o_ref_ice, ref_ice)
1887!
1888       IF (ok_4xCO2atm) THEN
1889          IF (vars_defined) zx_tmp_fi2d(:) = swupp(:,klevp1)*swradcorr(:)
1890          CALL histwrite_phy(o_rsut4co2, zx_tmp_fi2d)
1891          IF (vars_defined) zx_tmp_fi2d(:) = lwupp(:,klevp1)
1892          CALL histwrite_phy(o_rlut4co2, zx_tmp_fi2d)
1893          IF (vars_defined) zx_tmp_fi2d(:) = swup0p(:,klevp1)*swradcorr(:)
1894          CALL histwrite_phy(o_rsutcs4co2, zx_tmp_fi2d)
1895          IF (vars_defined) zx_tmp_fi2d(:) = lwup0p(:,klevp1)
1896          CALL histwrite_phy(o_rlutcs4co2, zx_tmp_fi2d)
1897          DO k=1, klevp1
1898            zx_tmp_fi3d1(:,k)=swupp(:,k)*swradcorr(:)
1899          ENDDO
1900          CALL histwrite_phy(o_rsu4co2, zx_tmp_fi3d1)
1901          DO k=1, klevp1
1902            zx_tmp_fi3d1(:,k)=swup0p(:,k)*swradcorr(:)
1903          ENDDO
1904          CALL histwrite_phy(o_rsucs4co2, zx_tmp_fi3d1)
1905          DO k=1, klevp1
1906            zx_tmp_fi3d1(:,k)=swdnp(:,k)*swradcorr(:)
1907          ENDDO
1908          CALL histwrite_phy(o_rsd4co2, zx_tmp_fi3d1)
1909          DO k=1, klevp1
1910            zx_tmp_fi3d1(:,k)=swdn0p(:,k)*swradcorr(:)
1911          ENDDO
1912          CALL histwrite_phy(o_rsdcs4co2, zx_tmp_fi3d1)
1913          CALL histwrite_phy(o_rlu4co2, lwupp)
1914          CALL histwrite_phy(o_rlucs4co2, lwup0p)
1915          CALL histwrite_phy(o_rld4co2, lwdnp)
1916          CALL histwrite_phy(o_rldcs4co2, lwdn0p)
1917       ENDIF !ok_4xCO2atm
1918!!!!!!!!!!!! Sorties niveaux de pression NMC !!!!!!!!!!!!!!!!!!!!
1919#ifdef CPP_IOIPSL
1920#ifndef CPP_XIOS
1921  IF (.NOT.ok_all_xml) THEN
1922       ! ATTENTION, LES ANCIENS HISTWRITE ONT ETES CONSERVES EN ATTENDANT MIEUX:
1923       ! Champs interpolles sur des niveaux de pression
1924       missing_val=missing_val_nf90
1925       DO iff=7, nfiles-1 !--OB: here we deal with files 7,8,9
1926
1927          CALL histwrite_phy(o_tnondef,tnondef(:,:,iff-6),iff)
1928          CALL histwrite_phy(o_ta,twriteSTD(:,:,iff-6),iff)
1929          CALL histwrite_phy(o_zg,phiwriteSTD(:,:,iff-6),iff)
1930          CALL histwrite_phy(o_hus,qwriteSTD(:,:,iff-6),iff)
1931          CALL histwrite_phy(o_hur,rhwriteSTD(:,:,iff-6),iff)
1932          CALL histwrite_phy(o_ua,uwriteSTD(:,:,iff-6),iff)
1933          CALL histwrite_phy(o_va,vwriteSTD(:,:,iff-6),iff)
1934          CALL histwrite_phy(o_wap,wwriteSTD(:,:,iff-6),iff)
1935          IF (vars_defined) THEN
1936             DO k=1, nlevSTD
1937                DO i=1, klon
1938                   IF (tnondef(i,k,iff-6).NE.missing_val) THEN
1939                      IF (freq_outNMC(iff-6).LT.0) THEN
1940                         freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
1941                      ELSE
1942                         freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
1943                      ENDIF
1944                      zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,iff-6))/freq_moyNMC(iff-6)
1945                   ELSE
1946                      zx_tmp_fi3d_STD(i,k) = missing_val
1947                   ENDIF
1948                ENDDO
1949             ENDDO
1950          ENDIF
1951          CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD,iff)
1952          IF (vars_defined) THEN
1953             DO k=1, nlevSTD
1954                DO i=1, klon
1955                   IF (O3sumSTD(i,k,iff-6).NE.missing_val) THEN
1956                      zx_tmp_fi3d_STD(i,k) = O3sumSTD(i,k,iff-6) * 1.e+9
1957                   ELSE
1958                      zx_tmp_fi3d_STD(i,k) = missing_val
1959                   ENDIF
1960                ENDDO
1961             ENDDO !k=1, nlevSTD
1962          ENDIF
1963          CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD,iff)
1964          IF (read_climoz == 2) THEN
1965             IF (vars_defined) THEN
1966                DO k=1, nlevSTD
1967                   DO i=1, klon
1968                      IF (O3daysumSTD(i,k,iff-6).NE.missing_val) THEN
1969                         zx_tmp_fi3d_STD(i,k) = O3daysumSTD(i,k,iff-6) * 1.e+9
1970                      ELSE
1971                         zx_tmp_fi3d_STD(i,k) = missing_val
1972                      ENDIF
1973                   ENDDO
1974                ENDDO !k=1, nlevSTD
1975             ENDIF
1976             CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD,iff)
1977          endif
1978          CALL histwrite_phy(o_uxv,uvsumSTD(:,:,iff-6),iff)
1979          CALL histwrite_phy(o_vxq,vqsumSTD(:,:,iff-6),iff)
1980          CALL histwrite_phy(o_vxT,vTsumSTD(:,:,iff-6),iff)
1981          CALL histwrite_phy(o_wxq,wqsumSTD(:,:,iff-6),iff)
1982          CALL histwrite_phy(o_vxphi,vphisumSTD(:,:,iff-6),iff)
1983          CALL histwrite_phy(o_wxT,wTsumSTD(:,:,iff-6),iff)
1984          CALL histwrite_phy(o_uxu,u2sumSTD(:,:,iff-6),iff)
1985          CALL histwrite_phy(o_vxv,v2sumSTD(:,:,iff-6),iff)
1986          CALL histwrite_phy(o_TxT,T2sumSTD(:,:,iff-6),iff)
1987       ENDDO !nfiles
1988  ENDIF
1989#endif
1990#endif
1991#ifdef CPP_XIOS
1992  IF (ok_all_xml) THEN
1993!      DO iff=7, nfiles
1994
1995!         CALL histwrite_phy(o_tnondef,tnondef(:,:,3))
1996          CALL histwrite_phy(o_ta,tlevSTD(:,:))
1997          CALL histwrite_phy(o_zg,philevSTD(:,:))
1998          CALL histwrite_phy(o_hus,qlevSTD(:,:))
1999          CALL histwrite_phy(o_hur,rhlevSTD(:,:))
2000          CALL histwrite_phy(o_ua,ulevSTD(:,:))
2001          CALL histwrite_phy(o_va,vlevSTD(:,:))
2002          CALL histwrite_phy(o_wap,wlevSTD(:,:))
2003!         IF (vars_defined) THEN
2004!            DO k=1, nlevSTD
2005!               DO i=1, klon
2006!                  IF (tnondef(i,k,3).NE.missing_val) THEN
2007!                     IF (freq_outNMC(iff-6).LT.0) THEN
2008!                        freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
2009!                     ELSE
2010!                        freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
2011!                     ENDIF
2012!                     zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,3))/freq_moyNMC(iff-6)
2013!                  ELSE
2014!                     zx_tmp_fi3d_STD(i,k) = missing_val
2015!                  ENDIF
2016!               ENDDO
2017!            ENDDO
2018!         ENDIF
2019!         CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD)
2020          IF (vars_defined) THEN
2021             DO k=1, nlevSTD
2022                DO i=1, klon
2023                   IF (O3STD(i,k).NE.missing_val) THEN
2024                      zx_tmp_fi3d_STD(i,k) = O3STD(i,k) * 1.e+9
2025                   ELSE
2026                      zx_tmp_fi3d_STD(i,k) = missing_val
2027                   ENDIF
2028                ENDDO
2029             ENDDO !k=1, nlevSTD
2030          ENDIF
2031          CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD)
2032          IF (read_climoz == 2) THEN
2033             IF (vars_defined) THEN
2034                DO k=1, nlevSTD
2035                   DO i=1, klon
2036                      IF (O3daySTD(i,k).NE.missing_val) THEN
2037                         zx_tmp_fi3d_STD(i,k) = O3daySTD(i,k) * 1.e+9
2038                      ELSE
2039                         zx_tmp_fi3d_STD(i,k) = missing_val
2040                      ENDIF
2041                   ENDDO
2042                ENDDO !k=1, nlevSTD
2043             ENDIF
2044             CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD)
2045          ENDIF
2046          CALL histwrite_phy(o_uxv,uvSTD(:,:))
2047          CALL histwrite_phy(o_vxq,vqSTD(:,:))
2048          CALL histwrite_phy(o_vxT,vTSTD(:,:))
2049          CALL histwrite_phy(o_wxq,wqSTD(:,:))
2050          CALL histwrite_phy(o_vxphi,vphiSTD(:,:))
2051          CALL histwrite_phy(o_wxT,wTSTD(:,:))
2052          CALL histwrite_phy(o_uxu,u2STD(:,:))
2053          CALL histwrite_phy(o_vxv,v2STD(:,:))
2054          CALL histwrite_phy(o_TxT,T2STD(:,:))
2055!      ENDDO !nfiles
2056  ENDIF
2057#endif
2058!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2059       IF (iflag_phytrac == 1 ) then
2060       IF (nqtot.GE.nqo+1) THEN
2061          DO iq=nqo+1, nqtot
2062            IF (type_trac == 'lmdz' .OR. type_trac == 'repr' .OR. type_trac == 'coag') THEN
2063             !--3D fields
2064!             CALL histwrite_phy(o_trac(iq-nqo), tr_seri(:,:,iq-nqo))
2065!             CALL histwrite_phy(o_dtr_vdf(iq-nqo),d_tr_cl(:,:,iq-nqo))
2066!             CALL histwrite_phy(o_dtr_the(iq-nqo),d_tr_th(:,:,iq-nqo))
2067!             CALL histwrite_phy(o_dtr_con(iq-nqo),d_tr_cv(:,:,iq-nqo))
2068!             CALL histwrite_phy(o_dtr_lessi_impa(iq-nqo),d_tr_lessi_impa(:,:,iq-nqo))
2069!             CALL histwrite_phy(o_dtr_lessi_nucl(iq-nqo),d_tr_lessi_nucl(:,:,iq-nqo))
2070!             CALL histwrite_phy(o_dtr_insc(iq-nqo),d_tr_insc(:,:,iq-nqo))
2071!             CALL histwrite_phy(o_dtr_bcscav(iq-nqo),d_tr_bcscav(:,:,iq-nqo))
2072!             CALL histwrite_phy(o_dtr_evapls(iq-nqo),d_tr_evapls(:,:,iq-nqo))
2073!             CALL histwrite_phy(o_dtr_ls(iq-nqo),d_tr_ls(:,:,iq-nqo))
2074!             CALL histwrite_phy(o_dtr_trsp(iq-nqo),d_tr_trsp(:,:,iq-nqo))
2075!             CALL histwrite_phy(o_dtr_sscav(iq-nqo),d_tr_sscav(:,:,iq-nqo))
2076!             CALL histwrite_phy(o_dtr_sat(iq-nqo),d_tr_sat(:,:,iq-nqo))
2077!             CALL histwrite_phy(o_dtr_uscav(iq-nqo),d_tr_uscav(:,:,iq-nqo))
2078             !--2D fields
2079!             CALL histwrite_phy(o_dtr_dry(iq-nqo), flux_tr_dry(:,iq-nqo))
2080             zx_tmp_fi2d=0.
2081             IF (vars_defined) THEN
2082                DO k=1,klev
2083                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,iq-nqo)
2084                ENDDO
2085             ENDIF
2086!             CALL histwrite_phy(o_trac_cum(iq-nqo), zx_tmp_fi2d)
2087            ENDIF
2088          ENDDO
2089       ENDIF
2090       ENDIF   !(iflag_phytrac==1)
2091
2092
2093       IF (.NOT.vars_defined) THEN
2094          !$OMP MASTER
2095#ifndef CPP_IOIPSL_NO_OUTPUT
2096          DO iff=1,nfiles
2097             IF (clef_files(iff)) THEN
2098                CALL histend(nid_files(iff))
2099                ndex2d = 0
2100                ndex3d = 0
2101             ENDIF ! clef_files
2102          ENDDO !  iff
2103#endif
2104#ifdef CPP_XIOS
2105          !On finalise l'initialisation:
2106          CALL wxios_closedef()
2107#endif
2108          !$OMP END MASTER
2109          !$OMP BARRIER
2110          vars_defined = .TRUE.
2111
2112       ENDIF !--.NOT.vars_defined
2113
2114    ENDDO
2115
2116    IF (vars_defined) THEN
2117       ! On synchronise les fichiers pour IOIPSL
2118#ifndef CPP_IOIPSL_NO_OUTPUT
2119       !$OMP MASTER
2120       DO iff=1,nfiles
2121          IF (ok_sync .AND. clef_files(iff)) THEN
2122             CALL histsync(nid_files(iff))
2123          ENDIF
2124       END DO
2125       !$OMP END MASTER
2126#endif
2127    ENDIF
2128
2129  END SUBROUTINE phys_output_write
2130
2131END MODULE phys_output_write_mod
Note: See TracBrowser for help on using the repository browser.