source: LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90 @ 3312

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

Integration of transport diagnostics for the CMIP6 data request

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