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

Last change on this file since 3377 was 3332, checked in by lguez, 6 years ago

Remove NetCDF variable SWdownOR from output files. It seems
meaningless to divide the net radiation over all shortwave bands
(solsw) by the mean transmission (1 - albsol1) over part of the
shortwave bands. SWdownOR can be over 4000 W m-2 over ice. The NetCDF
variable containing the correct surface downward shortwave flux is
SWdnSFC. Lower the level of output of SWdnSFC in histins.nc from 10 to
2 so that it replaces SWdownOR.

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