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

Last change on this file since 2945 was 2945, checked in by jbmadeleine, 7 years ago
  • Added a new output called rneblsvol which is the cloud fraction by volume

computed in the thermals (see cloudth_vert in cloudth_mod.F90)

  • Added an option called iflag_rain_incloud_vol that computes the conversion

of cloud water to rain using the cloud fraction by volume instead of the cloud
fraction by area, which is larger and otherwise erroneously reduces the in-cloud
water content; iflag_rain_incloud_vol can only be used for iflag_cloudth_vert>=3

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