source: LMDZ6/branches/Ocean_skin/libf/phylmd/phys_output_write_mod.F90 @ 3429

Last change on this file since 3429 was 3429, checked in by lguez, 5 years ago

Create subdirectory Ocean_skin in libf. For now, Ocean_skin is under
control of git, not subversion.

Add variable eps_w to common YOMCST.

For now, continue to read ocean skin parameters from a namelist in
config_ocean_skin.

The parameterisation is called from procedure surf_ocean.

Add two prognostic variables for the parameterisation: dt_ns and
ds_ns. Add eight diagnostic variables: t_int, s_int, dter, dser, tkt,
tks, rf, taur. The ten variables are only defined on ocean surface,
elsewhere they are set to nf90_fill_real. In pbl_surface, we can
initialize the eight diagnostic variables to nf90_fill_real before the
loop on sub-surfaces, but we need to keep the old values of dt_ns and
ds_ns as input of the parameterisation so we set dt_ns and ds_ns to
nf90_fill_real after the call to surf_ocean. Define ten corresponding
compressed variables in pbl_surface. Define ten corresponding NetCDF
output variables in phys_output_ctrlout_mod.

In procedure pbl_surface_newfrac, for an appearing ocean sub-surface,
dt_ns and ds_ns are set to 0. In phyetat0, also set initial dt_ns and
ds_ns to 0 if they are not in start file.

In procedure surf_ocean, for now, we use a constant specific latent
heat of vaporization, as elsewhere in LMDZ, and a constant bulk
salinity.

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