source: LMDZ5/trunk/libf/phylmd/phys_output_write_mod.F90 @ 3740

Last change on this file since 3740 was 3003, checked in by Laurent Fairhead, 7 years ago

Modifications to the code and xml files to output Ap and B, the coefficients
of the hybrid coordinates as requested by the CMIP6 DataRequest?
LF (with guidance from A. Caubel and S. Senesi)

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