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

Last change on this file since 3250 was 3250, checked in by Laurent Fairhead, 6 years ago

Integration of transport diagnostics for the CMIP6 data request

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