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

Last change on this file since 3616 was 3616, checked in by oboucher, 4 years ago

Addition of diagnostics for the 100 meter wind

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