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

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

Modifications for Data Request

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:keywords set to Id
File size: 90.2 KB
Line 
1!
2! $Id: phys_output_write_mod.F90 3218 2018-02-16 16:40:02Z fairhead $
3!
4MODULE phys_output_write_mod
5
6  USE phytrac_mod, ONLY : d_tr_cl, d_tr_th, d_tr_cv, d_tr_lessi_impa, &
7       d_tr_lessi_nucl, d_tr_insc, d_tr_bcscav, d_tr_evapls, d_tr_ls,  &
8       d_tr_trsp, d_tr_sscav, d_tr_sat, d_tr_uscav, flux_tr_dry
9
10  ! Author: Abderrahmane IDELKADI (original include file)
11  ! Author: Laurent FAIRHEAD (transformation to module/subroutine)
12  ! Author: Ulysse GERARD (effective implementation)
13
14CONTAINS
15
16  ! ug Routine pour définir (lors du premier passage) ET sortir les variables
17  SUBROUTINE phys_output_write(itap, pdtphys, paprs, pphis, &
18       pplay, lmax_th, aerosol_couple,         &
19       ok_ade, ok_aie, ivap, iliq, isol, new_aod, ok_sync, &
20       ptconv, read_climoz, clevSTD, ptconvth, &
21       d_u, d_t, qx, d_qx, zmasse, flag_aerosol, flag_aerosol_strat, ok_cdnc)
22
23    ! This subroutine does the actual writing of diagnostics that were
24    ! defined and initialised in phys_output_mod.F90
25
26    USE dimphy, ONLY: klon, klev, klevp1
27    USE infotrac_phy, ONLY: nbtr
28    USE mod_phys_lmdz_para, ONLY: is_north_pole_phy,is_south_pole_phy
29    USE mod_grid_phy_lmdz, ONLY : nbp_lon, nbp_lat
30    USE time_phylmdz_mod, ONLY: day_step_phy, start_time, itau_phy
31    USE vertical_layers_mod, ONLY : ap, bp, aps, bps
32    USE phys_output_ctrlout_mod, ONLY: o_phis, o_aire, is_ter, is_lic, is_oce, &
33         o_longitude, o_latitude, &
34         o_Ahyb, o_Bhyb,o_Ahyb_inter, o_Bhyb_inter, &
35         is_ave, is_sic, o_contfracATM, o_contfracOR, &
36         o_aireTER, o_flat, o_slp, o_ptstar, o_pt0, o_tsol, &
37         o_t2m, o_t2m_min, o_t2m_max, &
38         o_t2m_min_mon, o_t2m_max_mon, &
39         o_q2m, o_ustar, o_u10m, o_v10m, &
40         o_wind10m, o_wind10max, o_gusts, o_sicf, &
41         o_psol, o_mass, o_qsurf, o_qsol, &
42         o_precip, o_rain_fall, o_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_rain_con, rain_con)
706       CALL histwrite_phy(o_pluc, zx_tmp_fi2d)
707       CALL histwrite_phy(o_snow, snow_fall)
708       CALL histwrite_phy(o_msnow, zxsnow)
709       CALL histwrite_phy(o_fsnow, zfra_o)
710       CALL histwrite_phy(o_evap, evap)
711       CALL histwrite_phy(o_tops, topsw*swradcorr)
712       CALL histwrite_phy(o_tops0, topsw0*swradcorr)
713       CALL histwrite_phy(o_topl, toplw)
714       CALL histwrite_phy(o_topl0, toplw0)
715
716       IF (vars_defined) THEN
717          zx_tmp_fi2d(:) = swup(:,klevp1)*swradcorr(:)
718       ENDIF
719       CALL histwrite_phy(o_SWupTOA, zx_tmp_fi2d)
720
721       IF (vars_defined) THEN
722          zx_tmp_fi2d(:) = swup0(:,klevp1)*swradcorr(:)
723       ENDIF
724       CALL histwrite_phy(o_SWupTOAclr, zx_tmp_fi2d)
725
726       IF (vars_defined) THEN
727          zx_tmp_fi2d(:) = swupc0(:,klevp1)*swradcorr(:)
728       ENDIF
729       CALL histwrite_phy(o_SWupTOAcleanclr, zx_tmp_fi2d)
730
731       IF (vars_defined) THEN
732          zx_tmp_fi2d(:) = swdn(:,klevp1)*swradcorr(:)
733       ENDIF
734       CALL histwrite_phy(o_SWdnTOA, zx_tmp_fi2d)
735
736       IF (vars_defined) THEN
737          zx_tmp_fi2d(:) = swdn0(:,klevp1)*swradcorr(:)
738       ENDIF
739       CALL histwrite_phy(o_SWdnTOAclr, zx_tmp_fi2d)
740
741       IF (vars_defined) THEN
742          zx_tmp_fi2d(:) = topsw(:)*swradcorr(:)-toplw(:)
743       ENDIF
744       CALL histwrite_phy(o_nettop, zx_tmp_fi2d)
745       CALL histwrite_phy(o_SWup200, SWup200*swradcorr)
746       CALL histwrite_phy(o_SWup200clr, SWup200clr*swradcorr)
747       CALL histwrite_phy(o_SWdn200, SWdn200*swradcorr)
748       CALL histwrite_phy(o_SWdn200clr, SWdn200clr*swradcorr)
749       CALL histwrite_phy(o_LWup200, LWup200)
750       CALL histwrite_phy(o_LWup200clr, LWup200clr)
751       CALL histwrite_phy(o_LWdn200, LWdn200)
752       CALL histwrite_phy(o_LWdn200clr, LWdn200clr)
753       CALL histwrite_phy(o_sols, solsw*swradcorr)
754       CALL histwrite_phy(o_sols0, solsw0*swradcorr)
755       CALL histwrite_phy(o_soll, sollw)
756       CALL histwrite_phy(o_soll0, sollw0)
757       CALL histwrite_phy(o_radsol, radsol)
758
759       IF (vars_defined) THEN
760          zx_tmp_fi2d(:) = swup(:,1)*swradcorr(:)
761       ENDIF
762       CALL histwrite_phy(o_SWupSFC, zx_tmp_fi2d)
763
764       IF (vars_defined) THEN
765          zx_tmp_fi2d(:) = swup0(:,1)*swradcorr(:)
766       ENDIF
767       CALL histwrite_phy(o_SWupSFCclr, zx_tmp_fi2d)
768
769       IF (vars_defined) THEN
770          zx_tmp_fi2d(:) = swupc0(:,1)*swradcorr(:)
771       ENDIF
772       CALL histwrite_phy(o_SWupSFCcleanclr, zx_tmp_fi2d)
773
774       IF (vars_defined) THEN
775          zx_tmp_fi2d(:) = swdn(:,1)*swradcorr(:)
776       ENDIF
777       CALL histwrite_phy(o_SWdnSFC, zx_tmp_fi2d)
778
779       IF (vars_defined) THEN
780          zx_tmp_fi2d(:) = swdn0(:,1)*swradcorr(:)
781       ENDIF
782       CALL histwrite_phy(o_SWdnSFCclr, zx_tmp_fi2d)
783
784       IF (vars_defined) THEN
785          zx_tmp_fi2d(:) = swdnc0(:,1)*swradcorr(:)
786       ENDIF
787       CALL histwrite_phy(o_SWdnSFCcleanclr, zx_tmp_fi2d)
788
789       IF (vars_defined) THEN
790          zx_tmp_fi2d(:)=sollwdown(:)-sollw(:)
791       ENDIF
792       CALL histwrite_phy(o_LWupSFC, zx_tmp_fi2d)
793       CALL histwrite_phy(o_LWdnSFC, sollwdown)
794
795       IF (vars_defined) THEN
796          sollwdownclr(1:klon) = -1.*lwdn0(1:klon,1)
797          zx_tmp_fi2d(1:klon)=sollwdownclr(1:klon)-sollw0(1:klon)
798       ENDIF
799       CALL histwrite_phy(o_LWupSFCclr, zx_tmp_fi2d)
800       CALL histwrite_phy(o_LWdnSFCclr, sollwdownclr)
801
802       IF (vars_defined) THEN
803          zx_tmp_fi2d(:) = lwupc0(:,klevp1)
804       ENDIF
805       CALL histwrite_phy(o_LWupTOAcleanclr, zx_tmp_fi2d)
806       IF (vars_defined) THEN
807          zx_tmp_fi2d(:) = -1.*lwdnc0(:,1)
808       ENDIF
809       CALL histwrite_phy(o_LWdnSFCcleanclr, zx_tmp_fi2d)
810
811       CALL histwrite_phy(o_bils, bils)
812       CALL histwrite_phy(o_bils_diss, bils_diss)
813       CALL histwrite_phy(o_bils_ec, bils_ec)
814       CALL histwrite_phy(o_bils_ech, bils_ech)
815       CALL histwrite_phy(o_bils_tke, bils_tke)
816       CALL histwrite_phy(o_bils_kinetic, bils_kinetic)
817       CALL histwrite_phy(o_bils_latent, bils_latent)
818       CALL histwrite_phy(o_bils_enthalp, bils_enthalp)
819
820       IF (vars_defined) THEN
821          zx_tmp_fi2d(1:klon)=-1*sens(1:klon)
822       ENDIF
823       CALL histwrite_phy(o_sens, zx_tmp_fi2d)
824       CALL histwrite_phy(o_fder, fder)
825       CALL histwrite_phy(o_ffonte, zxffonte)
826       CALL histwrite_phy(o_fqcalving, zxfqcalving)
827       CALL histwrite_phy(o_fqfonte, zxfqfonte)
828       IF (vars_defined) THEN
829          zx_tmp_fi2d(1:klon)=(zxfqfonte(1:klon)+rain_fall(1:klon))*pctsrf(1:klon,is_lic)
830       ENDIF
831       CALL histwrite_phy(o_mrroli, zx_tmp_fi2d)
832       CALL histwrite_phy(o_runofflic, zxrunofflic)
833       IF (vars_defined) THEN
834          zx_tmp_fi2d=0.
835          DO nsrf=1,nbsrf
836             zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxu(:,1,nsrf)
837          ENDDO
838       ENDIF
839       CALL histwrite_phy(o_taux, zx_tmp_fi2d)
840
841       IF (vars_defined) THEN
842          zx_tmp_fi2d=0.
843          DO nsrf=1,nbsrf
844             zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxv(:,1,nsrf)
845          ENDDO
846       ENDIF
847       CALL histwrite_phy(o_tauy, zx_tmp_fi2d)
848
849       IF (ok_snow) THEN
850          CALL histwrite_phy(o_snowsrf, snow_o)
851          CALL histwrite_phy(o_qsnow, qsnow)
852          CALL histwrite_phy(o_snowhgt,snowhgt)
853          CALL histwrite_phy(o_toice,to_ice)
854          CALL histwrite_phy(o_sissnow,sissnow)
855          CALL histwrite_phy(o_runoff,runoff)
856          CALL histwrite_phy(o_albslw3,albsol3_lic)
857       ENDIF
858
859       DO nsrf = 1, nbsrf
860
861          IF (vars_defined)             zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)*100.
862          CALL histwrite_phy(o_pourc_srf(nsrf), zx_tmp_fi2d)
863          IF (vars_defined)           zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)
864          CALL histwrite_phy(o_fract_srf(nsrf), zx_tmp_fi2d)
865          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxu( 1 : klon, 1, nsrf)
866          CALL histwrite_phy(o_taux_srf(nsrf), zx_tmp_fi2d)
867          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxv( 1 : klon, 1, nsrf)
868          CALL histwrite_phy(o_tauy_srf(nsrf), zx_tmp_fi2d)
869          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = ftsol( 1 : klon, nsrf)
870          CALL histwrite_phy(o_tsol_srf(nsrf), zx_tmp_fi2d)
871          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = evap_pot( 1 : klon, nsrf)
872          CALL histwrite_phy(o_evappot_srf(nsrf), zx_tmp_fi2d)
873          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = ustar(1 : klon, nsrf)
874          CALL histwrite_phy(o_ustar_srf(nsrf), zx_tmp_fi2d)
875          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = u10m(1 : klon, nsrf)
876          CALL histwrite_phy(o_u10m_srf(nsrf), zx_tmp_fi2d)
877          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = v10m(1 : klon, nsrf)
878          CALL histwrite_phy(o_v10m_srf(nsrf), zx_tmp_fi2d)
879          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = t2m(1 : klon, nsrf)
880          CALL histwrite_phy(o_t2m_srf(nsrf), zx_tmp_fi2d)
881          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = fevap(1 : klon, nsrf)
882          CALL histwrite_phy(o_evap_srf(nsrf), zx_tmp_fi2d)
883          IF (vars_defined)        zx_tmp_fi2d(1 : klon) = fluxt( 1 : klon, 1, nsrf)
884          CALL histwrite_phy(o_sens_srf(nsrf), zx_tmp_fi2d)
885          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxlat( 1 : klon, nsrf)
886          CALL histwrite_phy(o_lat_srf(nsrf), zx_tmp_fi2d)
887          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fsollw( 1 : klon, nsrf)
888          CALL histwrite_phy(o_flw_srf(nsrf), zx_tmp_fi2d)
889          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, nsrf)
890          CALL histwrite_phy(o_fsw_srf(nsrf), zx_tmp_fi2d)
891          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfbils( 1 : klon, nsrf)
892          CALL histwrite_phy(o_wbils_srf(nsrf), zx_tmp_fi2d)
893          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfbilo( 1 : klon, nsrf)
894          CALL histwrite_phy(o_wbilo_srf(nsrf), zx_tmp_fi2d)
895          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfevap( 1 : klon, nsrf)
896          CALL histwrite_phy(o_wevap_srf(nsrf), zx_tmp_fi2d)
897          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfrain( 1 : klon, nsrf)
898          CALL histwrite_phy(o_wrain_srf(nsrf), zx_tmp_fi2d)
899          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfsnow( 1 : klon, nsrf)
900          CALL histwrite_phy(o_wsnow_srf(nsrf), zx_tmp_fi2d)
901
902          IF (iflag_pbl > 1) THEN
903             CALL histwrite_phy(o_tke_srf(nsrf),  pbl_tke(:,1:klev,nsrf))
904             CALL histwrite_phy(o_l_mix(nsrf),  l_mix(:,1:klev,nsrf))
905             CALL histwrite_phy(o_l_mixmin(nsrf),  l_mixmin(:,1:klev,nsrf))
906             CALL histwrite_phy(o_tke_max_srf(nsrf),  pbl_tke(:,1:klev,nsrf))
907          ENDIF
908!jyg<
909          IF (iflag_pbl > 1 .AND. iflag_wake>=1  .AND. iflag_pbl_split >=1) THEN
910             CALL histwrite_phy(o_dltpbltke_srf(nsrf), wake_delta_pbl_TKE(:,1:klev,nsrf))
911          ENDIF
912!>jyg
913!          IF (iflag_pbl > 1 .AND. ifl_pbltree  >=1 ) THEN
914!       CALL histwrite_phy(o_treedrg_srf(nsrf), treedrg(:,1:klev,nsrf))
915!            ENDIF
916
917
918       ENDDO
919
920       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_liq_o(1 : klon, 1)
921       CALL histwrite_phy(o_sens_prec_liq_oce, zx_tmp_fi2d)       
922       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_liq_o(1 : klon, 2)
923       CALL histwrite_phy(o_sens_prec_liq_sic, zx_tmp_fi2d)       
924       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_sol_o(1 : klon, 1)
925       CALL histwrite_phy(o_sens_prec_sol_oce, zx_tmp_fi2d)       
926       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_sol_o(1 : klon, 2)
927       CALL histwrite_phy(o_sens_prec_sol_sic, zx_tmp_fi2d)       
928
929       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_liq_o(1 : klon, 1)
930       CALL histwrite_phy(o_lat_prec_liq_oce, zx_tmp_fi2d)       
931       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_liq_o(1 : klon, 2)
932       CALL histwrite_phy(o_lat_prec_liq_sic, zx_tmp_fi2d)       
933       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_sol_o(1 : klon, 1)
934       CALL histwrite_phy(o_lat_prec_sol_oce, zx_tmp_fi2d)       
935       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_sol_o(1 : klon, 2)
936       CALL histwrite_phy(o_lat_prec_sol_sic, zx_tmp_fi2d)       
937
938       DO nsrf=1,nbsrf+1
939          CALL histwrite_phy(o_wstar(nsrf), wstar(1 : klon, nsrf))
940       ENDDO
941
942       CALL histwrite_phy(o_cdrm, cdragm)
943       CALL histwrite_phy(o_cdrh, cdragh)
944       CALL histwrite_phy(o_cldl, cldl)
945       CALL histwrite_phy(o_cldm, cldm)
946       CALL histwrite_phy(o_cldh, cldh)
947       CALL histwrite_phy(o_cldt, cldt)
948       CALL histwrite_phy(o_JrNt, JrNt)
949       CALL histwrite_phy(o_cldljn, cldl*JrNt)
950       CALL histwrite_phy(o_cldmjn, cldm*JrNt)
951       CALL histwrite_phy(o_cldhjn, cldh*JrNt)
952       CALL histwrite_phy(o_cldtjn, cldt*JrNt)
953       CALL histwrite_phy(o_cldq, cldq)
954       IF (vars_defined)       zx_tmp_fi2d(1:klon) = flwp(1:klon)
955       CALL histwrite_phy(o_lwp, zx_tmp_fi2d)
956       IF (vars_defined)       zx_tmp_fi2d(1:klon) = fiwp(1:klon)
957       CALL histwrite_phy(o_iwp, zx_tmp_fi2d)
958       CALL histwrite_phy(o_ue, ue)
959       CALL histwrite_phy(o_ve, ve)
960       CALL histwrite_phy(o_uq, uq)
961       CALL histwrite_phy(o_vq, vq)
962       IF (iflag_con.GE.3) THEN ! sb
963          CALL histwrite_phy(o_cape, cape)
964          CALL histwrite_phy(o_pbase, ema_pcb)
965          CALL histwrite_phy(o_ptop, ema_pct)
966          CALL histwrite_phy(o_fbase, ema_cbmf)
967          IF (iflag_con /= 30) THEN
968             CALL histwrite_phy(o_plcl, plcl)
969             CALL histwrite_phy(o_plfc, plfc)
970             CALL histwrite_phy(o_wbeff, wbeff)
971             CALL histwrite_phy(o_convoccur, convoccur)
972          ENDIF
973
974          CALL histwrite_phy(o_cape_max, cape)
975
976          CALL histwrite_phy(o_upwd, upwd)
977          CALL histwrite_phy(o_Ma, Ma)
978          CALL histwrite_phy(o_dnwd, dnwd)
979          CALL histwrite_phy(o_dnwd0, dnwd0)
980          !! The part relative to the frequency of occurence of convection
981          !! is now grouped with the part relative to thermals and shallow
982          !! convection (output of the 3 fields: ftime_deepcv, ftime_th and
983          !!  ftime_con).
984          IF (vars_defined) THEN
985             IF (iflag_thermals>=1)THEN
986                zx_tmp_fi3d=-dnwd+dnwd0+upwd+fm_therm(:,1:klev)
987             ELSE
988                zx_tmp_fi3d=-dnwd+dnwd0+upwd
989             ENDIF
990          ENDIF
991          CALL histwrite_phy(o_mc, zx_tmp_fi3d)
992       ENDIF !iflag_con .GE. 3
993       CALL histwrite_phy(o_prw, prw)
994       CALL histwrite_phy(o_prlw, prlw)
995       CALL histwrite_phy(o_prsw, prsw)
996       CALL histwrite_phy(o_s_pblh, s_pblh)
997       CALL histwrite_phy(o_s_pblt, s_pblt)
998       CALL histwrite_phy(o_s_lcl, s_lcl)
999       CALL histwrite_phy(o_s_therm, s_therm)
1000       !IM : Les champs suivants (s_capCL, s_oliqCL, s_cteiCL, s_trmb1, s_trmb2, s_trmb3) ne sont pas definis dans HBTM.F
1001       !       IF (o_s_capCL%flag(iff)<=lev_files(iff)) THEN
1002       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1003       !    $o_s_capCL%name,itau_w,s_capCL)
1004       !       ENDIF
1005       !       IF (o_s_oliqCL%flag(iff)<=lev_files(iff)) THEN
1006       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1007       !    $o_s_oliqCL%name,itau_w,s_oliqCL)
1008       !       ENDIF
1009       !       IF (o_s_cteiCL%flag(iff)<=lev_files(iff)) THEN
1010       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1011       !    $o_s_cteiCL%name,itau_w,s_cteiCL)
1012       !       ENDIF
1013       !       IF (o_s_trmb1%flag(iff)<=lev_files(iff)) THEN
1014       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1015       !    $o_s_trmb1%name,itau_w,s_trmb1)
1016       !       ENDIF
1017       !       IF (o_s_trmb2%flag(iff)<=lev_files(iff)) THEN
1018       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1019       !    $o_s_trmb2%name,itau_w,s_trmb2)
1020       !       ENDIF
1021       !       IF (o_s_trmb3%flag(iff)<=lev_files(iff)) THEN
1022       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1023       !    $o_s_trmb3%name,itau_w,s_trmb3)
1024       !       ENDIF
1025
1026#ifdef CPP_IOIPSL
1027#ifndef CPP_XIOS
1028  IF (.NOT.ok_all_xml) THEN
1029       ! ATTENTION, LES ANCIENS HISTWRITE ONT ETES CONSERVES EN ATTENDANT MIEUX:
1030       ! Champs interpolles sur des niveaux de pression
1031       missing_val=missing_val_nf90
1032       DO iff=1, nfiles
1033          ll=0
1034          DO k=1, nlevSTD
1035             bb2=clevSTD(k)
1036             IF (bb2.EQ."850".OR.bb2.EQ."700".OR. &
1037                  bb2.EQ."500".OR.bb2.EQ."200".OR. &
1038                  bb2.EQ."100".OR. &
1039                  bb2.EQ."50".OR.bb2.EQ."10") THEN
1040
1041                ! a refaire correctement !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1042                ll=ll+1
1043                CALL histwrite_phy(o_uSTDlevs(ll),uwriteSTD(:,k,iff), iff)
1044                CALL histwrite_phy(o_vSTDlevs(ll),vwriteSTD(:,k,iff), iff)
1045                CALL histwrite_phy(o_wSTDlevs(ll),wwriteSTD(:,k,iff), iff)
1046                CALL histwrite_phy(o_zSTDlevs(ll),phiwriteSTD(:,k,iff), iff)
1047                CALL histwrite_phy(o_qSTDlevs(ll),qwriteSTD(:,k,iff), iff)
1048                CALL histwrite_phy(o_tSTDlevs(ll),twriteSTD(:,k,iff), iff)
1049
1050             ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
1051          ENDDO
1052       ENDDO
1053  ENDIF
1054#endif
1055#endif
1056#ifdef CPP_XIOS
1057  IF (ok_all_xml) THEN
1058!XIOS  CALL xios_get_field_attr("u850",default_value=missing_val)
1059!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1060          ll=0
1061          DO k=1, nlevSTD
1062             bb2=clevSTD(k)
1063             IF (bb2.EQ."850".OR.bb2.EQ."700".OR. &
1064                bb2.EQ."500".OR.bb2.EQ."200".OR. &
1065                bb2.EQ."100".OR. &
1066                bb2.EQ."50".OR.bb2.EQ."10") THEN
1067                ll=ll+1
1068                CALL histwrite_phy(o_uSTDlevs(ll),ulevSTD(:,k))
1069                CALL histwrite_phy(o_vSTDlevs(ll),vlevSTD(:,k))
1070                CALL histwrite_phy(o_wSTDlevs(ll),wlevSTD(:,k))
1071                CALL histwrite_phy(o_zSTDlevs(ll),philevSTD(:,k))
1072                CALL histwrite_phy(o_qSTDlevs(ll),qlevSTD(:,k))
1073                CALL histwrite_phy(o_tSTDlevs(ll),tlevSTD(:,k))
1074             ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
1075          ENDDO
1076  ENDIF
1077#endif
1078       IF (vars_defined) THEN
1079          DO i=1, klon
1080             IF (pctsrf(i,is_oce).GT.epsfra.OR. &
1081                  pctsrf(i,is_sic).GT.epsfra) THEN
1082                zx_tmp_fi2d(i) = (ftsol(i, is_oce) * pctsrf(i,is_oce)+ &
1083                     ftsol(i, is_sic) * pctsrf(i,is_sic))/ &
1084                     (pctsrf(i,is_oce)+pctsrf(i,is_sic))
1085             ELSE
1086                zx_tmp_fi2d(i) = 273.15
1087             ENDIF
1088          ENDDO
1089       ENDIF
1090       CALL histwrite_phy(o_t_oce_sic, zx_tmp_fi2d)
1091
1092       ! Couplage convection-couche limite
1093       IF (iflag_con.GE.3) THEN
1094          IF (iflag_coupl>=1) THEN
1095             CALL histwrite_phy(o_ale_bl, ale_bl)
1096             CALL histwrite_phy(o_alp_bl, alp_bl)
1097          ENDIF !iflag_coupl>=1
1098       ENDIF !(iflag_con.GE.3)
1099       ! Wakes
1100       IF (iflag_con.EQ.3) THEN
1101          IF (iflag_wake>=1) THEN
1102             CALL histwrite_phy(o_ale_wk, ale_wake)
1103             CALL histwrite_phy(o_alp_wk, alp_wake)
1104             IF (iflag_pbl_split>=1) THEN
1105               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dtvdf_x(1:klon,1:klev)/pdtphys
1106               CALL histwrite_phy(o_dtvdf_x    ,zx_tmp_fi3d)
1107               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dtvdf_w(1:klon,1:klev)/pdtphys
1108               CALL histwrite_phy(o_dtvdf_w    ,zx_tmp_fi3d)
1109               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dqvdf_x(1:klon,1:klev)/pdtphys
1110               CALL histwrite_phy(o_dqvdf_x    ,zx_tmp_fi3d)
1111               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dqvdf_w(1:klon,1:klev)/pdtphys
1112               CALL histwrite_phy(o_dqvdf_w    ,zx_tmp_fi3d)
1113               CALL histwrite_phy(o_sens_x     ,sens_x     )
1114               CALL histwrite_phy(o_sens_w     ,sens_w     )
1115               CALL histwrite_phy(o_flat_x     ,zxfluxlat_x)
1116               CALL histwrite_phy(o_flat_w     ,zxfluxlat_w)
1117               CALL histwrite_phy(o_delta_tsurf,delta_tsurf)
1118               CALL histwrite_phy(o_cdragh_x   ,cdragh_x   )
1119               CALL histwrite_phy(o_cdragh_w   ,cdragh_w   )
1120               CALL histwrite_phy(o_cdragm_x   ,cdragm_x   )
1121               CALL histwrite_phy(o_cdragm_w   ,cdragm_w   )
1122               CALL histwrite_phy(o_kh         ,kh         )
1123               CALL histwrite_phy(o_kh_x       ,kh_x       )
1124               CALL histwrite_phy(o_kh_w       ,kh_w       )
1125             ENDIF   ! (iflag_pbl_split>=1)
1126             CALL histwrite_phy(o_ale, ale)
1127             CALL histwrite_phy(o_alp, alp)
1128             CALL histwrite_phy(o_cin, cin)
1129             CALL histwrite_phy(o_WAPE, wake_pe)
1130             CALL histwrite_phy(o_wake_h, wake_h)
1131             CALL histwrite_phy(o_wake_s, wake_s)
1132             CALL histwrite_phy(o_wake_deltat, wake_deltat)
1133             CALL histwrite_phy(o_wake_deltaq, wake_deltaq)
1134             CALL histwrite_phy(o_wake_omg, wake_omg)
1135             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_wake(1:klon,1:klev) &
1136                  /pdtphys
1137             CALL histwrite_phy(o_dtwak, zx_tmp_fi3d)
1138             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_wake(1:klon,1:klev)/pdtphys
1139             CALL histwrite_phy(o_dqwak, zx_tmp_fi3d)
1140             CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1141             CALL histwrite_phy(o_dqwak2d, zx_tmp_fi2d)
1142          ENDIF ! iflag_wake>=1
1143          CALL histwrite_phy(o_ftd, ftd)
1144          CALL histwrite_phy(o_fqd, fqd)
1145       ENDIF !(iflag_con.EQ.3)
1146       IF (iflag_con.EQ.3.OR.iflag_con.EQ.30) THEN
1147          ! sortie RomP convection descente insaturee iflag_con=30
1148          ! etendue a iflag_con=3 (jyg)
1149          CALL histwrite_phy(o_Vprecip, Vprecip)
1150          CALL histwrite_phy(o_wdtrainA, wdtrainA)
1151          CALL histwrite_phy(o_wdtrainM, wdtrainM)
1152       ENDIF !(iflag_con.EQ.3.or.iflag_con.EQ.30)
1153!!! nrlmd le 10/04/2012
1154       IF (iflag_trig_bl>=1) THEN
1155          CALL histwrite_phy(o_n2, n2)
1156          CALL histwrite_phy(o_s2, s2)
1157          CALL histwrite_phy(o_proba_notrig, proba_notrig)
1158          CALL histwrite_phy(o_random_notrig, random_notrig)
1159          CALL histwrite_phy(o_ale_bl_stat, ale_bl_stat)
1160          CALL histwrite_phy(o_ale_bl_trig, ale_bl_trig)
1161       ENDIF  !(iflag_trig_bl>=1)
1162       IF (iflag_clos_bl>=1) THEN
1163          CALL histwrite_phy(o_alp_bl_det, alp_bl_det)
1164          CALL histwrite_phy(o_alp_bl_fluct_m, alp_bl_fluct_m)
1165          CALL histwrite_phy(o_alp_bl_fluct_tke,  &
1166               alp_bl_fluct_tke)
1167          CALL histwrite_phy(o_alp_bl_conv, alp_bl_conv)
1168          CALL histwrite_phy(o_alp_bl_stat, alp_bl_stat)
1169       ENDIF  !(iflag_clos_bl>=1)
1170!!! fin nrlmd le 10/04/2012
1171       ! Output of slab ocean variables
1172       IF (type_ocean=='slab ') THEN
1173          CALL histwrite_phy(o_slab_bils, slab_wfbils)
1174          IF (nslay.EQ.1) THEN
1175              zx_tmp_fi2d(:)=tslab(:,1)
1176              CALL histwrite_phy(o_tslab, zx_tmp_fi2d)
1177              zx_tmp_fi2d(:)=dt_qflux(:,1)
1178              CALL histwrite_phy(o_slab_qflux, zx_tmp_fi2d)
1179          ELSE
1180              CALL histwrite_phy(o_tslab, tslab(:,1:nslay))
1181              CALL histwrite_phy(o_slab_qflux, dt_qflux(:,1:nslay))
1182          ENDIF
1183          IF (version_ocean=='sicINT') THEN
1184              CALL histwrite_phy(o_slab_bilg, slab_bilg)
1185              CALL histwrite_phy(o_slab_tice, tice)
1186              CALL histwrite_phy(o_slab_sic, seaice)
1187          ENDIF
1188          IF (slab_gm) THEN
1189             CALL histwrite_phy(o_slab_gm, dt_gm(:,1:nslay))
1190          END IF
1191          IF (slab_hdiff) THEN
1192            IF (nslay.EQ.1) THEN
1193                zx_tmp_fi2d(:)=dt_hdiff(:,1)
1194                CALL histwrite_phy(o_slab_hdiff, zx_tmp_fi2d)
1195            ELSE
1196                CALL histwrite_phy(o_slab_hdiff, dt_hdiff(:,1:nslay))
1197            ENDIF
1198          ENDIF
1199          IF (slab_ekman.GT.0) THEN
1200            IF (nslay.EQ.1) THEN
1201                zx_tmp_fi2d(:)=dt_ekman(:,1)
1202                CALL histwrite_phy(o_slab_ekman, zx_tmp_fi2d)
1203            ELSE
1204                CALL histwrite_phy(o_slab_ekman, dt_ekman(:,1:nslay))
1205            ENDIF
1206          ENDIF
1207       ENDIF !type_ocean == force/slab
1208       CALL histwrite_phy(o_weakinv, weak_inversion)
1209       CALL histwrite_phy(o_dthmin, dthmin)
1210       CALL histwrite_phy(o_cldtau, cldtau)
1211       CALL histwrite_phy(o_cldemi, cldemi)
1212       CALL histwrite_phy(o_pr_con_l, pmflxr(:,1:klev))
1213       CALL histwrite_phy(o_pr_con_i, pmflxs(:,1:klev))
1214       CALL histwrite_phy(o_pr_lsc_l, prfl(:,1:klev))
1215       CALL histwrite_phy(o_pr_lsc_i, psfl(:,1:klev))
1216       CALL histwrite_phy(o_re, re)
1217       CALL histwrite_phy(o_fl, fl)
1218       IF (vars_defined) THEN
1219          DO i=1, klon
1220             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1221          ENDDO
1222       ENDIF
1223       CALL histwrite_phy(o_rh2m, zx_tmp_fi2d)
1224
1225!       IF (vars_defined) THEN
1226!          DO i=1, klon
1227!             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1228!          ENDDO
1229!       ENDIF
1230!       CALL histwrite_phy(o_rh2m_min, zx_tmp_fi2d)
1231
1232!       IF (vars_defined) THEN
1233!          DO i=1, klon
1234!             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1235!          ENDDO
1236!       ENDIF
1237!       CALL histwrite_phy(o_rh2m_max, zx_tmp_fi2d)
1238
1239       CALL histwrite_phy(o_qsat2m, qsat2m)
1240       CALL histwrite_phy(o_tpot, tpot)
1241       CALL histwrite_phy(o_tpote, tpote)
1242       IF (vars_defined) zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, is_ter)
1243       CALL histwrite_phy(o_SWnetOR,  zx_tmp_fi2d)
1244       IF (vars_defined) zx_tmp_fi2d(1:klon) = solsw(1:klon)/(1.-albsol1(1:klon))
1245       CALL histwrite_phy(o_SWdownOR,  zx_tmp_fi2d)
1246       CALL histwrite_phy(o_LWdownOR, sollwdown)
1247       CALL histwrite_phy(o_snowl, snow_lsc)
1248       CALL histwrite_phy(o_solldown, sollwdown)
1249       CALL histwrite_phy(o_dtsvdfo, d_ts(:,is_oce))
1250       CALL histwrite_phy(o_dtsvdft, d_ts(:,is_ter))
1251       CALL histwrite_phy(o_dtsvdfg,  d_ts(:,is_lic))
1252       CALL histwrite_phy(o_dtsvdfi, d_ts(:,is_sic))
1253       CALL histwrite_phy(o_z0m, z0m(:,nbsrf+1))
1254       CALL histwrite_phy(o_z0h, z0h(:,nbsrf+1))
1255
1256       ! od550 per species
1257!--OLIVIER
1258!This is warranted by treating INCA aerosols as offline aerosols
1259!       IF (new_aod .and. (.not. aerosol_couple)) THEN
1260       IF (new_aod) THEN
1261          IF (flag_aerosol.GT.0) THEN
1262             CALL histwrite_phy(o_od443aer, od443aer)
1263             CALL histwrite_phy(o_od550aer, od550aer)
1264             CALL histwrite_phy(o_od865aer, od865aer)
1265             CALL histwrite_phy(o_abs550aer, abs550aer)
1266             CALL histwrite_phy(o_od550lt1aer, od550lt1aer)
1267             CALL histwrite_phy(o_sconcso4, sconcso4)
1268             CALL histwrite_phy(o_sconcno3, sconcno3)
1269             CALL histwrite_phy(o_sconcoa, sconcoa)
1270             CALL histwrite_phy(o_sconcbc, sconcbc)
1271             CALL histwrite_phy(o_sconcss, sconcss)
1272             CALL histwrite_phy(o_sconcdust, sconcdust)
1273             CALL histwrite_phy(o_concso4, concso4)
1274             CALL histwrite_phy(o_concno3, concno3)
1275             CALL histwrite_phy(o_concoa, concoa)
1276             CALL histwrite_phy(o_concbc, concbc)
1277             CALL histwrite_phy(o_concss, concss)
1278             CALL histwrite_phy(o_concdust, concdust)
1279             CALL histwrite_phy(o_loadso4, loadso4)
1280             CALL histwrite_phy(o_loadoa, loadoa)
1281             CALL histwrite_phy(o_loadbc, loadbc)
1282             CALL histwrite_phy(o_loadss, loadss)
1283             CALL histwrite_phy(o_loaddust, loaddust)
1284             CALL histwrite_phy(o_loadno3, loadno3)
1285             CALL histwrite_phy(o_dryod550aer, dryod550aer)
1286             DO naero = 1, naero_tot-1
1287                CALL histwrite_phy(o_drytausumaero(naero),drytausum_aero(:,naero))
1288             END DO
1289          ENDIF
1290          !--STRAT AER
1291          IF (flag_aerosol.GT.0.OR.flag_aerosol_strat.GT.0) THEN
1292             DO naero = 1, naero_tot
1293                CALL histwrite_phy(o_tausumaero(naero),tausum_aero(:,2,naero))
1294             END DO
1295          ENDIF
1296          IF (flag_aerosol_strat.GT.0) THEN
1297             CALL histwrite_phy(o_tausumaero_lw,tausum_aero(:,6,id_STRAT_phy))
1298          ENDIF
1299       ENDIF
1300
1301       CALL histwrite_phy(o_p_tropopause, p_tropopause)
1302       CALL histwrite_phy(o_t_tropopause, t_tropopause)
1303       CALL histwrite_phy(o_z_tropopause, z_tropopause)
1304
1305! ThL -- In the following, we assume read_climoz == 1
1306       zx_tmp_fi2d = 0.0    ! Computation for strato, added ThL
1307       DO k=1, klev
1308          zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + wo(:,k,1) * stratomask(:,k) * 1.e3
1309       END DO
1310       CALL histwrite_phy(o_col_O3_strato, zx_tmp_fi2d) ! Added ThL
1311       zx_tmp_fi2d = 0.0    ! Computation for tropo, added ThL
1312       DO k=1, klev
1313          zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + wo(:,k,1) * (1.0-stratomask(:,k)) * 1.e3
1314       END DO
1315       CALL histwrite_phy(o_col_O3_tropo, zx_tmp_fi2d)   ! Added ThL
1316! end add ThL
1317
1318#ifdef CPP_StratAer
1319       IF (type_trac=='coag') THEN
1320          CALL histwrite_phy(o_R2SO4, R2SO4)
1321          CALL histwrite_phy(o_OCS_lifetime, OCS_lifetime)
1322          CALL histwrite_phy(o_SO2_lifetime, SO2_lifetime)
1323          CALL histwrite_phy(o_budg_3D_backgr_ocs,   budg_3D_backgr_ocs)
1324          CALL histwrite_phy(o_budg_3D_backgr_so2,   budg_3D_backgr_so2)
1325          CALL histwrite_phy(o_budg_3D_ocs_to_so2,   budg_3D_ocs_to_so2)
1326          CALL histwrite_phy(o_budg_3D_so2_to_h2so4, budg_3D_so2_to_h2so4)
1327          CALL histwrite_phy(o_budg_3D_nucl,         budg_3D_nucl)
1328          CALL histwrite_phy(o_budg_3D_cond_evap,    budg_3D_cond_evap)
1329          CALL histwrite_phy(o_budg_dep_dry_ocs,     budg_dep_dry_ocs)
1330          CALL histwrite_phy(o_budg_dep_wet_ocs,     budg_dep_wet_ocs)
1331          CALL histwrite_phy(o_budg_dep_dry_so2,     budg_dep_dry_so2)
1332          CALL histwrite_phy(o_budg_dep_wet_so2,     budg_dep_wet_so2)
1333          CALL histwrite_phy(o_budg_dep_dry_h2so4,   budg_dep_dry_h2so4)
1334          CALL histwrite_phy(o_budg_dep_wet_h2so4,   budg_dep_wet_h2so4)
1335          CALL histwrite_phy(o_budg_dep_dry_part,    budg_dep_dry_part)
1336          CALL histwrite_phy(o_budg_dep_wet_part,    budg_dep_wet_part)
1337          CALL histwrite_phy(o_budg_emi_ocs,         budg_emi_ocs)
1338          CALL histwrite_phy(o_budg_emi_so2,         budg_emi_so2)
1339          CALL histwrite_phy(o_budg_emi_h2so4,       budg_emi_h2so4)
1340          CALL histwrite_phy(o_budg_emi_part,        budg_emi_part)
1341          CALL histwrite_phy(o_budg_ocs_to_so2,      budg_ocs_to_so2)
1342          CALL histwrite_phy(o_budg_so2_to_h2so4,    budg_so2_to_h2so4)
1343          CALL histwrite_phy(o_budg_h2so4_to_part,   budg_h2so4_to_part)
1344          CALL histwrite_phy(o_budg_sed_part,        budg_sed_part)
1345          CALL histwrite_phy(o_surf_PM25_sulf, surf_PM25_sulf)
1346          CALL histwrite_phy(o_vsed_aer, vsed_aer)
1347          CALL histwrite_phy(o_f_r_wet, f_r_wet)
1348          CALL histwrite_phy(o_ext_strat_550, tau_strat_550)
1349          CALL histwrite_phy(o_ext_strat_1020, tau_strat_1020)
1350          CALL histwrite_phy(o_tau_strat_550, tausum_strat(:,1))
1351          CALL histwrite_phy(o_tau_strat_1020, tausum_strat(:,2))
1352       ENDIF
1353#endif
1354       IF (ok_ade) THEN
1355          CALL histwrite_phy(o_topswad, topswad_aero*swradcorr)
1356          CALL histwrite_phy(o_topswad0, topswad0_aero*swradcorr)
1357          CALL histwrite_phy(o_solswad, solswad_aero*swradcorr)
1358          CALL histwrite_phy(o_solswad0, solswad0_aero*swradcorr)
1359          IF (type_trac .ne. 'inca') THEN
1360             IF (config_inca .ne. 'aeNP') THEN
1361                CALL histwrite_phy(o_toplwad, toplwad_aero)
1362                CALL histwrite_phy(o_toplwad0, toplwad0_aero)
1363                CALL histwrite_phy(o_sollwad, sollwad_aero)
1364                CALL histwrite_phy(o_sollwad0, sollwad0_aero)
1365             ENDIF
1366          ENDIF
1367          !====MS forcing diagnostics
1368          IF (new_aod) THEN
1369             zx_tmp_fi2d(:)=topsw_aero(:,1)*swradcorr(:)
1370             CALL histwrite_phy(o_swtoaas_nat,zx_tmp_fi2d)
1371             zx_tmp_fi2d(:)=solsw_aero(:,1)*swradcorr(:)
1372             CALL histwrite_phy(o_swsrfas_nat,zx_tmp_fi2d)
1373             zx_tmp_fi2d(:)=topsw0_aero(:,1)*swradcorr(:)
1374             CALL histwrite_phy(o_swtoacs_nat,zx_tmp_fi2d)
1375             zx_tmp_fi2d(:)=solsw0_aero(:,1)*swradcorr(:)
1376             CALL histwrite_phy(o_swsrfcs_nat,zx_tmp_fi2d)
1377             !ant
1378             zx_tmp_fi2d(:)=topsw_aero(:,2)*swradcorr(:)
1379             CALL histwrite_phy(o_swtoaas_ant,zx_tmp_fi2d)
1380             zx_tmp_fi2d(:)=solsw_aero(:,2)*swradcorr(:)
1381             CALL histwrite_phy(o_swsrfas_ant,zx_tmp_fi2d)
1382             zx_tmp_fi2d(:)=topsw0_aero(:,2)*swradcorr(:)
1383             CALL histwrite_phy(o_swtoacs_ant,zx_tmp_fi2d)
1384             zx_tmp_fi2d(:)=solsw0_aero(:,2)*swradcorr(:)
1385             CALL histwrite_phy(o_swsrfcs_ant,zx_tmp_fi2d)
1386             !cf
1387             IF (.not. aerosol_couple) THEN
1388                zx_tmp_fi2d(:)=topswcf_aero(:,1)*swradcorr(:)
1389                CALL histwrite_phy(o_swtoacf_nat,zx_tmp_fi2d)
1390                zx_tmp_fi2d(:)=solswcf_aero(:,1)*swradcorr(:)
1391                CALL histwrite_phy(o_swsrfcf_nat,zx_tmp_fi2d)
1392                zx_tmp_fi2d(:)=topswcf_aero(:,2)*swradcorr(:)
1393                CALL histwrite_phy(o_swtoacf_ant,zx_tmp_fi2d)
1394                zx_tmp_fi2d(:)=solswcf_aero(:,2)*swradcorr(:)
1395                CALL histwrite_phy(o_swsrfcf_ant,zx_tmp_fi2d)
1396                zx_tmp_fi2d(:)=topswcf_aero(:,3)*swradcorr(:)
1397                CALL histwrite_phy(o_swtoacf_zero,zx_tmp_fi2d)
1398                zx_tmp_fi2d(:)=solswcf_aero(:,3)*swradcorr(:)
1399                CALL histwrite_phy(o_swsrfcf_zero,zx_tmp_fi2d)
1400             ENDIF
1401          ENDIF ! new_aod
1402          !====MS forcing diagnostics
1403       ENDIF
1404       IF (ok_aie) THEN
1405          CALL histwrite_phy(o_topswai, topswai_aero*swradcorr)
1406          CALL histwrite_phy(o_toplwai, toplwai_aero*swradcorr)
1407          CALL histwrite_phy(o_solswai, solswai_aero*swradcorr)
1408          CALL histwrite_phy(o_sollwai, sollwai_aero*swradcorr)
1409       ENDIF
1410       IF (flag_aerosol.GT.0.AND.ok_cdnc) THEN
1411          CALL histwrite_phy(o_scdnc, scdnc)
1412          CALL histwrite_phy(o_cldncl, cldncl)
1413          CALL histwrite_phy(o_reffclws, reffclws)
1414          CALL histwrite_phy(o_reffclwc, reffclwc)
1415          CALL histwrite_phy(o_cldnvi, cldnvi)
1416          CALL histwrite_phy(o_lcc, lcc)
1417          CALL histwrite_phy(o_lcc3d, lcc3d)
1418          CALL histwrite_phy(o_lcc3dcon, lcc3dcon)
1419          CALL histwrite_phy(o_lcc3dstra, lcc3dstra)
1420          CALL histwrite_phy(o_icc3dcon, icc3dcon)
1421          CALL histwrite_phy(o_icc3dstra, icc3dstra)
1422          CALL histwrite_phy(o_cldicemxrat, zfice)
1423          zx_tmp_fi3d(:,:)=1-zfice(:,:)
1424          CALL histwrite_phy(o_cldwatmxrat, zx_tmp_fi3d)
1425          CALL histwrite_phy(o_reffclwtop, reffclwtop)
1426       ENDIF
1427       ! Champs 3D:
1428       IF (ok_ade .OR. ok_aie) then
1429          CALL histwrite_phy(o_ec550aer, ec550aer)
1430       ENDIF
1431       CALL histwrite_phy(o_lwcon, flwc)
1432       CALL histwrite_phy(o_iwcon, fiwc)
1433       CALL histwrite_phy(o_temp, t_seri)
1434       CALL histwrite_phy(o_theta, theta)
1435       CALL histwrite_phy(o_ovapinit, qx(:,:,ivap))
1436       CALL histwrite_phy(o_ovap, q_seri)
1437       CALL histwrite_phy(o_oliq, ql_seri)
1438       CALL histwrite_phy(o_ocond, ql_seri+qs_seri)
1439       CALL histwrite_phy(o_geop, zphi)
1440       CALL histwrite_phy(o_vitu, u_seri)
1441       CALL histwrite_phy(o_vitv, v_seri)
1442       CALL histwrite_phy(o_vitw, omega)
1443       CALL histwrite_phy(o_pres, pplay)
1444       CALL histwrite_phy(o_paprs, paprs(:,1:klev))
1445       CALL histwrite_phy(o_zfull,zphi/RG)
1446
1447#ifdef CPP_XIOS
1448!solbnd begin
1449#ifdef CPP_RRTM
1450      IF (iflag_rrtm.EQ.1) THEN
1451       IF (vars_defined) THEN
1452        DO ISW=1, NSW
1453          zx_tmp_fi3dsp(:,ISW) = swdn(:,klevp1)*swradcorr(:)*RSUN(ISW)
1454        ENDDO
1455        CALL histwrite_phy(o_solbnd, zx_tmp_fi3dsp)
1456       ENDIF
1457      ENDIF
1458#endif
1459!solbnd end
1460#endif
1461
1462       IF (flag_aerosol_strat.EQ.2) THEN
1463         CALL histwrite_phy(o_stratomask, stratomask)
1464       ENDIF
1465     
1466       IF (vars_defined)  THEN
1467        zx_tmp_fi3d(:,1)= pphis(:)/RG
1468        DO k = 2, klev
1469         DO i = 1, klon
1470            zx_tmp_fi3d(i,k) = zphi(i,k)/RG + &
1471                          (zphi(i,k)-zphi(i,k-1))/RG * &
1472                          (paprs(i,k)-pplay(i,k))/(pplay(i,k)-pplay(i,k-1))
1473         ENDDO
1474        ENDDO
1475       ENDIF
1476       CALL histwrite_phy(o_zhalf, zx_tmp_fi3d)
1477       CALL histwrite_phy(o_rneb, cldfra)
1478       CALL histwrite_phy(o_rnebcon, rnebcon)
1479       CALL histwrite_phy(o_rnebls, rneb)
1480       CALL histwrite_phy(o_rneblsvol, rneblsvol)
1481       IF (vars_defined)  THEN
1482          DO k=1, klev
1483             DO i=1, klon
1484                zx_tmp_fi3d(i,k)=cldfra(i,k)*JrNt(i)
1485             ENDDO
1486          ENDDO
1487       ENDIF
1488       CALL histwrite_phy(o_rnebjn, zx_tmp_fi3d)
1489       CALL histwrite_phy(o_rhum, zx_rh)
1490       CALL histwrite_phy(o_ozone, &
1491            wo(:, :, 1) * dobson_u * 1e3 / zmasse / rmo3 * rmd)
1492
1493       IF (read_climoz == 2) THEN
1494          CALL histwrite_phy(o_ozone_light, &
1495               wo(:, :, 2) * dobson_u * 1e3 / zmasse / rmo3 * rmd)
1496       ENDIF
1497
1498       CALL histwrite_phy(o_duphy, d_u)
1499
1500       CALL histwrite_phy(o_dtphy, d_t)
1501
1502       CALL histwrite_phy(o_dqphy,  d_qx(:,:,ivap))
1503       CALL water_int(klon,klev,d_qx(:,:,ivap),zmasse,zx_tmp_fi2d)
1504       CALL histwrite_phy(o_dqphy2d,  zx_tmp_fi2d)
1505
1506       CALL histwrite_phy(o_dqlphy,  d_qx(:,:,iliq))
1507       CALL water_int(klon,klev,d_qx(:,:,iliq),zmasse,zx_tmp_fi2d)
1508       CALL histwrite_phy(o_dqlphy2d,  zx_tmp_fi2d)
1509
1510       IF (nqo.EQ.3) THEN
1511       CALL histwrite_phy(o_dqsphy,  d_qx(:,:,isol))
1512       CALL water_int(klon,klev,d_qx(:,:,isol),zmasse,zx_tmp_fi2d)
1513       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
1514       ELSE
1515       zx_tmp_fi3d=0.0
1516       CALL histwrite_phy(o_dqsphy,  zx_tmp_fi3d)
1517       zx_tmp_fi2d=0.0
1518       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
1519       ENDIF
1520
1521       DO nsrf=1, nbsrf
1522          IF (vars_defined) zx_tmp_fi2d(1 : klon) = falb1( 1 : klon, nsrf)
1523          CALL histwrite_phy(o_albe_srf(nsrf), zx_tmp_fi2d)
1524          IF (vars_defined) zx_tmp_fi2d(1 : klon) = z0m( 1 : klon, nsrf)
1525          CALL histwrite_phy(o_z0m_srf(nsrf), zx_tmp_fi2d)
1526          IF (vars_defined) zx_tmp_fi2d(1 : klon) = z0h( 1 : klon, nsrf)
1527          CALL histwrite_phy(o_z0h_srf(nsrf), zx_tmp_fi2d)
1528          IF (vars_defined) zx_tmp_fi2d(1 : klon) = agesno( 1 : klon, nsrf)
1529          CALL histwrite_phy(o_ages_srf(nsrf), zx_tmp_fi2d)
1530          IF (vars_defined) zx_tmp_fi2d(1 : klon) = snow( 1 : klon, nsrf)
1531          CALL histwrite_phy(o_snow_srf(nsrf), zx_tmp_fi2d)
1532       ENDDO !nsrf=1, nbsrf
1533       CALL histwrite_phy(o_alb1, albsol1)
1534       CALL histwrite_phy(o_alb2, albsol2)
1535       !FH Sorties pour la couche limite
1536       IF (iflag_pbl>1) THEN
1537          zx_tmp_fi3d=0.
1538          IF (vars_defined) THEN
1539             DO nsrf=1,nbsrf
1540                DO k=1,klev
1541                   zx_tmp_fi3d(:,k)=zx_tmp_fi3d(:,k) &
1542                        +pctsrf(:,nsrf)*pbl_tke(:,k,nsrf)
1543                ENDDO
1544             ENDDO
1545          ENDIF
1546          CALL histwrite_phy(o_tke, zx_tmp_fi3d)
1547
1548          CALL histwrite_phy(o_tke_max, zx_tmp_fi3d)
1549       ENDIF
1550
1551       CALL histwrite_phy(o_kz, coefh(:,:,is_ave))
1552
1553       CALL histwrite_phy(o_kz_max, coefh(:,:,is_ave))
1554
1555       CALL histwrite_phy(o_clwcon, clwcon0)
1556       CALL histwrite_phy(o_dtdyn, d_t_dyn)
1557
1558       CALL histwrite_phy(o_dqdyn, d_q_dyn)
1559
1560       CALL histwrite_phy(o_dqdyn2d,d_q_dyn2d)
1561
1562       CALL histwrite_phy(o_dqldyn, d_ql_dyn)
1563
1564       CALL histwrite_phy(o_dqldyn2d, d_ql_dyn2d)
1565
1566       CALL histwrite_phy(o_dqsdyn, d_qs_dyn)
1567
1568       CALL histwrite_phy(o_dqsdyn2d, d_qs_dyn2d)
1569
1570       CALL histwrite_phy(o_dudyn, d_u_dyn)
1571       CALL histwrite_phy(o_dvdyn, d_v_dyn)
1572
1573       IF (vars_defined) THEN
1574          zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys
1575       ENDIF
1576       CALL histwrite_phy(o_dtcon, zx_tmp_fi3d)
1577       if(iflag_thermals.eq.0)then
1578          IF (vars_defined) THEN
1579             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
1580                  d_t_ajsb(1:klon,1:klev)/pdtphys
1581          ENDIF
1582          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
1583       else if(iflag_thermals.ge.1.and.iflag_wake.EQ.1)then
1584          IF (vars_defined) THEN
1585             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
1586                  d_t_ajs(1:klon,1:klev)/pdtphys + &
1587                  d_t_wake(1:klon,1:klev)/pdtphys
1588          ENDIF
1589          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
1590       endif
1591       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_con(1:klon,1:klev)/pdtphys
1592       CALL histwrite_phy(o_ducon, zx_tmp_fi3d)
1593       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_con(1:klon,1:klev)/pdtphys
1594       CALL histwrite_phy(o_dvcon, zx_tmp_fi3d)
1595       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
1596       CALL histwrite_phy(o_dqcon, zx_tmp_fi3d)
1597       CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1598       CALL histwrite_phy(o_dqcon2d, zx_tmp_fi2d)
1599
1600       IF (iflag_thermals.EQ.0) THEN
1601          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
1602          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
1603       ELSE IF (iflag_thermals.GE.1.AND.iflag_wake.EQ.1) THEN
1604          IF (vars_defined) THEN
1605             zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys + &
1606                  d_q_ajs(1:klon,1:klev)/pdtphys + &
1607                  d_q_wake(1:klon,1:klev)/pdtphys
1608          ENDIF
1609          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
1610       ENDIF
1611
1612       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lsc(1:klon,1:klev)/pdtphys
1613       CALL histwrite_phy(o_dtlsc, zx_tmp_fi3d)
1614       IF (vars_defined) zx_tmp_fi3d(1:klon, 1:klev)=(d_t_lsc(1:klon,1:klev)+ &
1615            d_t_eva(1:klon,1:klev))/pdtphys
1616       CALL histwrite_phy(o_dtlschr, zx_tmp_fi3d)
1617       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys
1618       CALL histwrite_phy(o_dqlsc, zx_tmp_fi3d)
1619       CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1620       CALL histwrite_phy(o_dqlsc2d, zx_tmp_fi2d)
1621       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=beta_prec(1:klon,1:klev)
1622       CALL histwrite_phy(o_beta_prec, zx_tmp_fi3d)
1623!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1624       ! Sorties specifiques a la separation thermiques/non thermiques
1625       IF (iflag_thermals>=1) THEN
1626          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscth(1:klon,1:klev)/pdtphys
1627          CALL histwrite_phy(o_dtlscth, zx_tmp_fi3d)
1628          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscst(1:klon,1:klev)/pdtphys
1629          CALL histwrite_phy(o_dtlscst, zx_tmp_fi3d)
1630          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscth(1:klon,1:klev)/pdtphys
1631          CALL histwrite_phy(o_dqlscth, zx_tmp_fi3d)
1632          CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1633          CALL histwrite_phy(o_dqlscth2d, zx_tmp_fi2d)
1634          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscst(1:klon,1:klev)/pdtphys
1635          CALL histwrite_phy(o_dqlscst, zx_tmp_fi3d)
1636          CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1637          CALL histwrite_phy(o_dqlscst2d, zx_tmp_fi2d)
1638          CALL histwrite_phy(o_plulth, plul_th)
1639          CALL histwrite_phy(o_plulst, plul_st)
1640          IF (vars_defined) THEN
1641             do i=1,klon
1642                zx_tmp_fi2d(1:klon)=lmax_th(:)
1643             enddo
1644          ENDIF
1645          CALL histwrite_phy(o_lmaxth, zx_tmp_fi2d)
1646          IF (vars_defined) THEN
1647             DO k=1,klev
1648                DO i=1,klon
1649                   IF (ptconvth(i,k)) THEN
1650                      zx_tmp_fi3d(i,k)=1.
1651                   ELSE
1652                      zx_tmp_fi3d(i,k)=0.
1653                   ENDIF
1654                ENDDO
1655             ENDDO
1656          ENDIF
1657          CALL histwrite_phy(o_ptconvth, zx_tmp_fi3d)
1658       ENDIF ! iflag_thermals>=1
1659!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1660       zpt_conv = 0.
1661       WHERE (ptconv) zpt_conv = 1.
1662       CALL histwrite_phy(o_ptconv, zpt_conv)
1663!!       IF (vars_defined)         zx_tmp_fi2d=float(itau_con)/float(itap)
1664!!       CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
1665       IF (vars_defined) THEN
1666          zpt_conv2d(:) = 0.
1667          DO k=1,klev
1668            WHERE (ptconv(:,k)) zpt_conv2d(:) = 1.
1669          ENDDO
1670       ENDIF
1671       CALL histwrite_phy(o_ftime_deepcv, zpt_conv2d)
1672       IF (vars_defined) THEN
1673          zx_tmp_fi2d(:) = 0.
1674          DO k=1,klev
1675            WHERE (ptconvth(:,k)) zx_tmp_fi2d(:) = 1.
1676          ENDDO
1677       ENDIF
1678       CALL histwrite_phy(o_ftime_th, zx_tmp_fi2d)
1679       IF (vars_defined) THEN
1680           zx_tmp_fi2d(:) = max(zx_tmp_fi2d(:),zpt_conv2d(:))
1681       ENDIF
1682       CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
1683!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1684       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf(1:klon,1:klev)/pdtphys
1685       CALL histwrite_phy(o_dtvdf, zx_tmp_fi3d)
1686       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_diss(1:klon,1:klev)/pdtphys
1687       CALL histwrite_phy(o_dtdis, zx_tmp_fi3d)
1688       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf(1:klon,1:klev)/pdtphys
1689       CALL histwrite_phy(o_dqvdf, zx_tmp_fi3d)
1690       CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1691       CALL histwrite_phy(o_dqvdf2d, zx_tmp_fi2d)
1692       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_eva(1:klon,1:klev)/pdtphys
1693       CALL histwrite_phy(o_dteva, zx_tmp_fi3d)
1694       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_eva(1:klon,1:klev)/pdtphys
1695       CALL histwrite_phy(o_dqeva, zx_tmp_fi3d)
1696       CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1697       CALL histwrite_phy(o_dqeva2d, zx_tmp_fi2d)
1698       CALL histwrite_phy(o_ratqs, ratqs)
1699       IF (vars_defined) THEN
1700          zx_tmp_fi3d(1:klon,1:klev)=d_t_ajs(1:klon,1:klev)/pdtphys - &
1701               d_t_ajsb(1:klon,1:klev)/pdtphys
1702       ENDIF
1703       CALL histwrite_phy(o_dtthe, zx_tmp_fi3d)
1704       IF (vars_defined) THEN
1705          zx_tmp_fi3d(1:klon,1:klev)=d_u_ajs(1:klon,1:klev)/pdtphys
1706       ENDIF
1707       CALL histwrite_phy(o_duthe, zx_tmp_fi3d)
1708       IF (vars_defined) THEN
1709          zx_tmp_fi3d(1:klon,1:klev)=d_v_ajs(1:klon,1:klev)/pdtphys
1710       ENDIF
1711       CALL histwrite_phy(o_dvthe, zx_tmp_fi3d)
1712
1713       IF (iflag_thermals>=1) THEN
1714          ! Pour l instant 0 a y reflichir pour les thermiques
1715          ! regroupe avec ftime_deepcv et ftime_con
1716          !!zx_tmp_fi2d=0.
1717          !!CALL histwrite_phy(o_ftime_th, zx_tmp_fi2d)
1718          CALL histwrite_phy(o_f_th, fm_therm)
1719          CALL histwrite_phy(o_e_th, entr_therm)
1720          CALL histwrite_phy(o_w_th, zw2)
1721          CALL histwrite_phy(o_q_th, zqasc)
1722          CALL histwrite_phy(o_a_th, fraca)
1723          CALL histwrite_phy(o_cloudth_sth, cloudth_sth)
1724          CALL histwrite_phy(o_cloudth_senv, cloudth_senv)
1725          CALL histwrite_phy(o_cloudth_sigmath, cloudth_sigmath)
1726          CALL histwrite_phy(o_cloudth_sigmaenv, cloudth_sigmaenv)
1727          CALL histwrite_phy(o_d_th, detr_therm)
1728          CALL histwrite_phy(o_f0_th, f0)
1729          CALL histwrite_phy(o_zmax_th, zmax_th)
1730          IF (vars_defined) THEN
1731             zx_tmp_fi3d(1:klon,1:klev)=d_q_ajs(1:klon,1:klev)/pdtphys - &
1732                  d_q_ajsb(1:klon,1:klev)/pdtphys
1733          ENDIF
1734          CALL histwrite_phy(o_dqthe, zx_tmp_fi3d)
1735          CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1736          CALL histwrite_phy(o_dqthe2d, zx_tmp_fi2d)
1737       ENDIF !iflag_thermals
1738       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ajsb(1:klon,1:klev)/pdtphys
1739       CALL histwrite_phy(o_dtajs, zx_tmp_fi3d)
1740       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_ajsb(1:klon,1:klev)/pdtphys
1741       CALL histwrite_phy(o_dqajs, zx_tmp_fi3d)
1742       CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1743       CALL histwrite_phy(o_dqajs2d, zx_tmp_fi2d)
1744       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys
1745       CALL histwrite_phy(o_dtswr, zx_tmp_fi3d)
1746       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_sw0(1:klon,1:klev)/pdtphys
1747       CALL histwrite_phy(o_dtsw0, zx_tmp_fi3d)
1748       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lwr(1:klon,1:klev)/pdtphys
1749       CALL histwrite_phy(o_dtlwr, zx_tmp_fi3d)
1750       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lw0(1:klon,1:klev)/pdtphys
1751       CALL histwrite_phy(o_dtlw0, zx_tmp_fi3d)
1752       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ec(1:klon,1:klev)/pdtphys
1753       CALL histwrite_phy(o_dtec, zx_tmp_fi3d)
1754       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_vdf(1:klon,1:klev)/pdtphys
1755       CALL histwrite_phy(o_duvdf, zx_tmp_fi3d)
1756       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_vdf(1:klon,1:klev)/pdtphys
1757       CALL histwrite_phy(o_dvvdf, zx_tmp_fi3d)
1758       IF (ok_orodr) THEN
1759          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_oro(1:klon,1:klev)/pdtphys
1760          CALL histwrite_phy(o_duoro, zx_tmp_fi3d)
1761          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_oro(1:klon,1:klev)/pdtphys
1762          CALL histwrite_phy(o_dvoro, zx_tmp_fi3d)
1763          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_oro(1:klon,1:klev)/pdtphys
1764          CALL histwrite_phy(o_dtoro, zx_tmp_fi3d)
1765       ENDIF
1766       IF (ok_orolf) THEN
1767          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_lif(1:klon,1:klev)/pdtphys
1768          CALL histwrite_phy(o_dulif, zx_tmp_fi3d)
1769
1770          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_lif(1:klon,1:klev)/pdtphys
1771          CALL histwrite_phy(o_dvlif, zx_tmp_fi3d)
1772
1773          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lif(1:klon,1:klev)/pdtphys
1774          CALL histwrite_phy(o_dtlif, zx_tmp_fi3d)
1775       ENDIF
1776
1777       IF (ok_hines) THEN
1778          CALL histwrite_phy(o_du_gwd_hines, du_gwd_hines/pdtphys)
1779          CALL histwrite_phy(o_dv_gwd_hines, dv_gwd_hines/pdtphys)
1780          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_hin(1:klon,1:klev)/pdtphys
1781          CALL histwrite_phy(o_dthin, zx_tmp_fi3d)
1782          CALL histwrite_phy(o_ustr_gwd_hines, zustr_gwd_hines)
1783          CALL histwrite_phy(o_vstr_gwd_hines, zvstr_gwd_hines)
1784       ENDIF
1785
1786       IF (.not. ok_hines .and. ok_gwd_rando) THEN
1787          CALL histwrite_phy(o_du_gwd_front, du_gwd_front / pdtphys)
1788          CALL histwrite_phy(o_dv_gwd_front, dv_gwd_front / pdtphys)
1789          CALL histwrite_phy(o_ustr_gwd_front, zustr_gwd_front)
1790          CALL histwrite_phy(o_vstr_gwd_front, zvstr_gwd_front)
1791       ENDIF
1792
1793       IF (ok_gwd_rando) THEN
1794          CALL histwrite_phy(o_du_gwd_rando, du_gwd_rando / pdtphys)
1795          CALL histwrite_phy(o_dv_gwd_rando, dv_gwd_rando / pdtphys)
1796          CALL histwrite_phy(o_ustr_gwd_rando, zustr_gwd_rando)
1797          CALL histwrite_phy(o_vstr_gwd_rando, zvstr_gwd_rando)
1798          CALL histwrite_phy(o_east_gwstress, east_gwstress )
1799          CALL histwrite_phy(o_west_gwstress, west_gwstress )
1800       ENDIF
1801
1802       IF (ok_qch4) THEN
1803          CALL histwrite_phy(o_dqch4, d_q_ch4 / pdtphys)
1804       ENDIF
1805
1806       DO k=1, klevp1
1807         zx_tmp_fi3d1(:,k)=swup(:,k)*swradcorr(:)
1808       ENDDO
1809       CALL histwrite_phy(o_rsu, zx_tmp_fi3d1)
1810       DO k=1, klevp1
1811         zx_tmp_fi3d1(:,k)=swdn(:,k)*swradcorr(:)
1812       ENDDO
1813       CALL histwrite_phy(o_rsd, zx_tmp_fi3d1)
1814       DO k=1, klevp1
1815         zx_tmp_fi3d1(:,k)=swup0(:,k)*swradcorr(:)
1816       ENDDO
1817       CALL histwrite_phy(o_rsucs, zx_tmp_fi3d1)
1818       DO k=1, klevp1
1819         zx_tmp_fi3d1(:,k)=swupc0(:,k)*swradcorr(:)
1820       ENDDO
1821       CALL histwrite_phy(o_rsucsaf, zx_tmp_fi3d1)
1822       DO k=1, klevp1
1823         zx_tmp_fi3d1(:,k)=swdn0(:,k)*swradcorr(:)
1824       ENDDO
1825       CALL histwrite_phy(o_rsdcs, zx_tmp_fi3d1)
1826       DO k=1, klevp1
1827         zx_tmp_fi3d1(:,k)=swdnc0(:,k)*swradcorr(:)
1828       ENDDO
1829       CALL histwrite_phy(o_rsdcsaf, zx_tmp_fi3d1)
1830
1831       CALL histwrite_phy(o_rlu, lwup)
1832       CALL histwrite_phy(o_rld, lwdn)
1833       CALL histwrite_phy(o_rlucs, lwup0)
1834       CALL histwrite_phy(o_rldcs, lwdn0)
1835
1836       IF (vars_defined) THEN
1837          zx_tmp_fi3d(1:klon,1:klev)=d_t(1:klon,1:klev)+ &
1838               d_t_dyn(1:klon,1:klev)
1839       ENDIF
1840       CALL histwrite_phy(o_tnt, zx_tmp_fi3d)
1841
1842       IF (vars_defined) THEN
1843          zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys + &
1844               d_t_lwr(1:klon,1:klev)/pdtphys
1845       ENDIF
1846       CALL histwrite_phy(o_tntr, zx_tmp_fi3d)
1847       IF (vars_defined) THEN
1848          zx_tmp_fi3d(1:klon,1:klev)= (d_t_lsc(1:klon,1:klev)+ &
1849               d_t_eva(1:klon,1:klev)+ &
1850               d_t_vdf(1:klon,1:klev))/pdtphys
1851       ENDIF
1852       CALL histwrite_phy(o_tntscpbl, zx_tmp_fi3d)
1853       IF (vars_defined) THEN
1854          zx_tmp_fi3d(1:klon,1:klev)=d_qx(1:klon,1:klev,ivap)+ &
1855               d_q_dyn(1:klon,1:klev)
1856       ENDIF
1857       CALL histwrite_phy(o_tnhus, zx_tmp_fi3d)
1858       IF (vars_defined) THEN
1859          zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys+ &
1860               d_q_eva(1:klon,1:klev)/pdtphys
1861       ENDIF
1862       CALL histwrite_phy(o_tnhusscpbl, zx_tmp_fi3d)
1863       CALL histwrite_phy(o_evu, coefm(:,:,is_ave))
1864       IF (vars_defined) THEN
1865          zx_tmp_fi3d(1:klon,1:klev)=q_seri(1:klon,1:klev)+ &
1866               ql_seri(1:klon,1:klev)
1867       ENDIF
1868       CALL histwrite_phy(o_h2o, zx_tmp_fi3d)
1869       IF (iflag_con >= 3) THEN
1870          IF (vars_defined) THEN
1871             zx_tmp_fi3d(1:klon,1:klev)=-1 * (dnwd(1:klon,1:klev)+ &
1872                  dnwd0(1:klon,1:klev))
1873          ENDIF
1874          CALL histwrite_phy(o_mcd, zx_tmp_fi3d)
1875          IF (vars_defined) THEN
1876             zx_tmp_fi3d(1:klon,1:klev)=upwd(1:klon,1:klev) + &
1877                  dnwd(1:klon,1:klev)+ dnwd0(1:klon,1:klev)
1878          ENDIF
1879          CALL histwrite_phy(o_dmc, zx_tmp_fi3d)
1880       ELSE IF (iflag_con == 2) THEN
1881          CALL histwrite_phy(o_mcd,  pmfd)
1882          CALL histwrite_phy(o_dmc,  pmfu + pmfd)
1883       ENDIF
1884       CALL histwrite_phy(o_ref_liq, ref_liq)
1885       CALL histwrite_phy(o_ref_ice, ref_ice)
1886!
1887       IF (ok_4xCO2atm) THEN
1888          IF (vars_defined) zx_tmp_fi2d(:) = swupp(:,klevp1)*swradcorr(:)
1889          CALL histwrite_phy(o_rsut4co2, zx_tmp_fi2d)
1890          IF (vars_defined) zx_tmp_fi2d(:) = lwupp(:,klevp1)
1891          CALL histwrite_phy(o_rlut4co2, zx_tmp_fi2d)
1892          IF (vars_defined) zx_tmp_fi2d(:) = swup0p(:,klevp1)*swradcorr(:)
1893          CALL histwrite_phy(o_rsutcs4co2, zx_tmp_fi2d)
1894          IF (vars_defined) zx_tmp_fi2d(:) = lwup0p(:,klevp1)
1895          CALL histwrite_phy(o_rlutcs4co2, zx_tmp_fi2d)
1896          DO k=1, klevp1
1897            zx_tmp_fi3d1(:,k)=swupp(:,k)*swradcorr(:)
1898          ENDDO
1899          CALL histwrite_phy(o_rsu4co2, zx_tmp_fi3d1)
1900          DO k=1, klevp1
1901            zx_tmp_fi3d1(:,k)=swup0p(:,k)*swradcorr(:)
1902          ENDDO
1903          CALL histwrite_phy(o_rsucs4co2, zx_tmp_fi3d1)
1904          DO k=1, klevp1
1905            zx_tmp_fi3d1(:,k)=swdnp(:,k)*swradcorr(:)
1906          ENDDO
1907          CALL histwrite_phy(o_rsd4co2, zx_tmp_fi3d1)
1908          DO k=1, klevp1
1909            zx_tmp_fi3d1(:,k)=swdn0p(:,k)*swradcorr(:)
1910          ENDDO
1911          CALL histwrite_phy(o_rsdcs4co2, zx_tmp_fi3d1)
1912          CALL histwrite_phy(o_rlu4co2, lwupp)
1913          CALL histwrite_phy(o_rlucs4co2, lwup0p)
1914          CALL histwrite_phy(o_rld4co2, lwdnp)
1915          CALL histwrite_phy(o_rldcs4co2, lwdn0p)
1916       ENDIF !ok_4xCO2atm
1917!!!!!!!!!!!! Sorties niveaux de pression NMC !!!!!!!!!!!!!!!!!!!!
1918#ifdef CPP_IOIPSL
1919#ifndef CPP_XIOS
1920  IF (.NOT.ok_all_xml) THEN
1921       ! ATTENTION, LES ANCIENS HISTWRITE ONT ETES CONSERVES EN ATTENDANT MIEUX:
1922       ! Champs interpolles sur des niveaux de pression
1923       missing_val=missing_val_nf90
1924       DO iff=7, nfiles-1 !--OB: here we deal with files 7,8,9
1925
1926          CALL histwrite_phy(o_tnondef,tnondef(:,:,iff-6),iff)
1927          CALL histwrite_phy(o_ta,twriteSTD(:,:,iff-6),iff)
1928          CALL histwrite_phy(o_zg,phiwriteSTD(:,:,iff-6),iff)
1929          CALL histwrite_phy(o_hus,qwriteSTD(:,:,iff-6),iff)
1930          CALL histwrite_phy(o_hur,rhwriteSTD(:,:,iff-6),iff)
1931          CALL histwrite_phy(o_ua,uwriteSTD(:,:,iff-6),iff)
1932          CALL histwrite_phy(o_va,vwriteSTD(:,:,iff-6),iff)
1933          CALL histwrite_phy(o_wap,wwriteSTD(:,:,iff-6),iff)
1934          IF (vars_defined) THEN
1935             DO k=1, nlevSTD
1936                DO i=1, klon
1937                   IF (tnondef(i,k,iff-6).NE.missing_val) THEN
1938                      IF (freq_outNMC(iff-6).LT.0) THEN
1939                         freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
1940                      ELSE
1941                         freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
1942                      ENDIF
1943                      zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,iff-6))/freq_moyNMC(iff-6)
1944                   ELSE
1945                      zx_tmp_fi3d_STD(i,k) = missing_val
1946                   ENDIF
1947                ENDDO
1948             ENDDO
1949          ENDIF
1950          CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD,iff)
1951          IF (vars_defined) THEN
1952             DO k=1, nlevSTD
1953                DO i=1, klon
1954                   IF (O3sumSTD(i,k,iff-6).NE.missing_val) THEN
1955                      zx_tmp_fi3d_STD(i,k) = O3sumSTD(i,k,iff-6) * 1.e+9
1956                   ELSE
1957                      zx_tmp_fi3d_STD(i,k) = missing_val
1958                   ENDIF
1959                ENDDO
1960             ENDDO !k=1, nlevSTD
1961          ENDIF
1962          CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD,iff)
1963          IF (read_climoz == 2) THEN
1964             IF (vars_defined) THEN
1965                DO k=1, nlevSTD
1966                   DO i=1, klon
1967                      IF (O3daysumSTD(i,k,iff-6).NE.missing_val) THEN
1968                         zx_tmp_fi3d_STD(i,k) = O3daysumSTD(i,k,iff-6) * 1.e+9
1969                      ELSE
1970                         zx_tmp_fi3d_STD(i,k) = missing_val
1971                      ENDIF
1972                   ENDDO
1973                ENDDO !k=1, nlevSTD
1974             ENDIF
1975             CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD,iff)
1976          endif
1977          CALL histwrite_phy(o_uxv,uvsumSTD(:,:,iff-6),iff)
1978          CALL histwrite_phy(o_vxq,vqsumSTD(:,:,iff-6),iff)
1979          CALL histwrite_phy(o_vxT,vTsumSTD(:,:,iff-6),iff)
1980          CALL histwrite_phy(o_wxq,wqsumSTD(:,:,iff-6),iff)
1981          CALL histwrite_phy(o_vxphi,vphisumSTD(:,:,iff-6),iff)
1982          CALL histwrite_phy(o_wxT,wTsumSTD(:,:,iff-6),iff)
1983          CALL histwrite_phy(o_uxu,u2sumSTD(:,:,iff-6),iff)
1984          CALL histwrite_phy(o_vxv,v2sumSTD(:,:,iff-6),iff)
1985          CALL histwrite_phy(o_TxT,T2sumSTD(:,:,iff-6),iff)
1986       ENDDO !nfiles
1987  ENDIF
1988#endif
1989#endif
1990#ifdef CPP_XIOS
1991  IF (ok_all_xml) THEN
1992!      DO iff=7, nfiles
1993
1994!         CALL histwrite_phy(o_tnondef,tnondef(:,:,3))
1995          CALL histwrite_phy(o_ta,tlevSTD(:,:))
1996          CALL histwrite_phy(o_zg,philevSTD(:,:))
1997          CALL histwrite_phy(o_hus,qlevSTD(:,:))
1998          CALL histwrite_phy(o_hur,rhlevSTD(:,:))
1999          CALL histwrite_phy(o_ua,ulevSTD(:,:))
2000          CALL histwrite_phy(o_va,vlevSTD(:,:))
2001          CALL histwrite_phy(o_wap,wlevSTD(:,:))
2002!         IF (vars_defined) THEN
2003!            DO k=1, nlevSTD
2004!               DO i=1, klon
2005!                  IF (tnondef(i,k,3).NE.missing_val) THEN
2006!                     IF (freq_outNMC(iff-6).LT.0) THEN
2007!                        freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
2008!                     ELSE
2009!                        freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
2010!                     ENDIF
2011!                     zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,3))/freq_moyNMC(iff-6)
2012!                  ELSE
2013!                     zx_tmp_fi3d_STD(i,k) = missing_val
2014!                  ENDIF
2015!               ENDDO
2016!            ENDDO
2017!         ENDIF
2018!         CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD)
2019          IF (vars_defined) THEN
2020             DO k=1, nlevSTD
2021                DO i=1, klon
2022                   IF (O3STD(i,k).NE.missing_val) THEN
2023                      zx_tmp_fi3d_STD(i,k) = O3STD(i,k) * 1.e+9
2024                   ELSE
2025                      zx_tmp_fi3d_STD(i,k) = missing_val
2026                   ENDIF
2027                ENDDO
2028             ENDDO !k=1, nlevSTD
2029          ENDIF
2030          CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD)
2031          IF (read_climoz == 2) THEN
2032             IF (vars_defined) THEN
2033                DO k=1, nlevSTD
2034                   DO i=1, klon
2035                      IF (O3daySTD(i,k).NE.missing_val) THEN
2036                         zx_tmp_fi3d_STD(i,k) = O3daySTD(i,k) * 1.e+9
2037                      ELSE
2038                         zx_tmp_fi3d_STD(i,k) = missing_val
2039                      ENDIF
2040                   ENDDO
2041                ENDDO !k=1, nlevSTD
2042             ENDIF
2043             CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD)
2044          ENDIF
2045          CALL histwrite_phy(o_uxv,uvSTD(:,:))
2046          CALL histwrite_phy(o_vxq,vqSTD(:,:))
2047          CALL histwrite_phy(o_vxT,vTSTD(:,:))
2048          CALL histwrite_phy(o_wxq,wqSTD(:,:))
2049          CALL histwrite_phy(o_vxphi,vphiSTD(:,:))
2050          CALL histwrite_phy(o_wxT,wTSTD(:,:))
2051          CALL histwrite_phy(o_uxu,u2STD(:,:))
2052          CALL histwrite_phy(o_vxv,v2STD(:,:))
2053          CALL histwrite_phy(o_TxT,T2STD(:,:))
2054!      ENDDO !nfiles
2055  ENDIF
2056#endif
2057!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2058       IF (iflag_phytrac == 1 ) then
2059       IF (nqtot.GE.nqo+1) THEN
2060          DO iq=nqo+1, nqtot
2061            IF (type_trac == 'lmdz' .OR. type_trac == 'repr' .OR. type_trac == 'coag') THEN
2062             !--3D fields
2063             CALL histwrite_phy(o_trac(iq-nqo), tr_seri(:,:,iq-nqo))
2064             CALL histwrite_phy(o_dtr_vdf(iq-nqo),d_tr_cl(:,:,iq-nqo))
2065             CALL histwrite_phy(o_dtr_the(iq-nqo),d_tr_th(:,:,iq-nqo))
2066             CALL histwrite_phy(o_dtr_con(iq-nqo),d_tr_cv(:,:,iq-nqo))
2067             CALL histwrite_phy(o_dtr_lessi_impa(iq-nqo),d_tr_lessi_impa(:,:,iq-nqo))
2068             CALL histwrite_phy(o_dtr_lessi_nucl(iq-nqo),d_tr_lessi_nucl(:,:,iq-nqo))
2069             CALL histwrite_phy(o_dtr_insc(iq-nqo),d_tr_insc(:,:,iq-nqo))
2070             CALL histwrite_phy(o_dtr_bcscav(iq-nqo),d_tr_bcscav(:,:,iq-nqo))
2071             CALL histwrite_phy(o_dtr_evapls(iq-nqo),d_tr_evapls(:,:,iq-nqo))
2072             CALL histwrite_phy(o_dtr_ls(iq-nqo),d_tr_ls(:,:,iq-nqo))
2073             CALL histwrite_phy(o_dtr_trsp(iq-nqo),d_tr_trsp(:,:,iq-nqo))
2074             CALL histwrite_phy(o_dtr_sscav(iq-nqo),d_tr_sscav(:,:,iq-nqo))
2075             CALL histwrite_phy(o_dtr_sat(iq-nqo),d_tr_sat(:,:,iq-nqo))
2076             CALL histwrite_phy(o_dtr_uscav(iq-nqo),d_tr_uscav(:,:,iq-nqo))
2077             !--2D fields
2078             CALL histwrite_phy(o_dtr_dry(iq-nqo), flux_tr_dry(:,iq-nqo))
2079             zx_tmp_fi2d=0.
2080             IF (vars_defined) THEN
2081                DO k=1,klev
2082                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,iq-nqo)
2083                ENDDO
2084             ENDIF
2085#ifndef REPROBUS
2086             CALL histwrite_phy(o_trac_cum(iq-nqo), zx_tmp_fi2d)
2087#endif
2088            ENDIF
2089          ENDDO
2090       ENDIF
2091
2092       IF (type_trac == 'repr') THEN
2093#ifdef REPROBUS
2094           DO iq=1,nbnas
2095             CALL histwrite_phy(o_nas(iq), nas(:,:,iq))
2096           ENDDO
2097#endif
2098       ENDIF
2099
2100       ENDIF   !(iflag_phytrac==1)
2101
2102
2103       IF (.NOT.vars_defined) THEN
2104          !$OMP MASTER
2105#ifndef CPP_IOIPSL_NO_OUTPUT
2106          DO iff=1,nfiles
2107             IF (clef_files(iff)) THEN
2108                CALL histend(nid_files(iff))
2109                ndex2d = 0
2110                ndex3d = 0
2111             ENDIF ! clef_files
2112          ENDDO !  iff
2113#endif
2114#ifdef CPP_XIOS
2115          !On finalise l'initialisation:
2116          CALL wxios_closedef()
2117#endif
2118          !$OMP END MASTER
2119          !$OMP BARRIER
2120          vars_defined = .TRUE.
2121
2122       ENDIF !--.NOT.vars_defined
2123
2124    ENDDO
2125
2126    IF (vars_defined) THEN
2127       ! On synchronise les fichiers pour IOIPSL
2128#ifndef CPP_IOIPSL_NO_OUTPUT
2129       !$OMP MASTER
2130       DO iff=1,nfiles
2131          IF (ok_sync .AND. clef_files(iff)) THEN
2132             CALL histsync(nid_files(iff))
2133          ENDIF
2134       END DO
2135       !$OMP END MASTER
2136#endif
2137    ENDIF
2138
2139  END SUBROUTINE phys_output_write
2140
2141END MODULE phys_output_write_mod
Note: See TracBrowser for help on using the repository browser.