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

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

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