source: LMDZ6/branches/IPSLCM6.0.15/libf/phylmd/phys_output_write_mod.F90 @ 3425

Last change on this file since 3425 was 3425, checked in by Laurent Fairhead, 5 years ago

Followup to r3408 modifications for VolMIP
NL

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