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

Last change on this file since 3171 was 3171, checked in by jyg, 6 years ago

Update of the various connvection frequency
variables:
ftime_con, ftime_deepcv, ftime_th

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