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

Last change on this file since 3459 was 3453, checked in by oboucher, 5 years ago

Adding some diagnostics for type_trac=co2i

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