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

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

Implementation of a first crude model of the
dynamic of wake population.

  • 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.9 KB
Line 
1!
2! $Id: phys_output_write_mod.F90 3208 2018-02-16 11:42:18Z jyg $
3!
4MODULE phys_output_write_mod
5
6  USE phytrac_mod, ONLY : d_tr_cl, d_tr_th, d_tr_cv, d_tr_lessi_impa, &
7       d_tr_lessi_nucl, d_tr_insc, d_tr_bcscav, d_tr_evapls, d_tr_ls,  &
8       d_tr_trsp, d_tr_sscav, d_tr_sat, d_tr_uscav, flux_tr_dry
9
10  ! Author: Abderrahmane IDELKADI (original include file)
11  ! Author: Laurent FAIRHEAD (transformation to module/subroutine)
12  ! Author: Ulysse GERARD (effective implementation)
13
14CONTAINS
15
16  ! ug Routine pour définir (lors du premier passage) ET sortir les variables
17  SUBROUTINE phys_output_write(itap, pdtphys, paprs, pphis, &
18       pplay, lmax_th, aerosol_couple,         &
19       ok_ade, ok_aie, ivap, iliq, isol, new_aod, ok_sync, &
20       ptconv, read_climoz, clevSTD, ptconvth, &
21       d_u, d_t, qx, d_qx, zmasse, flag_aerosol, flag_aerosol_strat, ok_cdnc)
22
23    ! This subroutine does the actual writing of diagnostics that were
24    ! defined and initialised in phys_output_mod.F90
25
26    USE dimphy, ONLY: klon, klev, klevp1
27    USE infotrac_phy, ONLY: nbtr
28    USE mod_phys_lmdz_para, ONLY: is_north_pole_phy,is_south_pole_phy
29    USE mod_grid_phy_lmdz, ONLY : nbp_lon, nbp_lat
30    USE time_phylmdz_mod, ONLY: day_step_phy, start_time, itau_phy
31    USE vertical_layers_mod, ONLY : ap, bp, aps, bps
32    USE phys_output_ctrlout_mod, ONLY: o_phis, o_aire, is_ter, is_lic, is_oce, &
33         o_longitude, o_latitude, &
34         o_Ahyb, o_Bhyb,o_Ahyb_inter, o_Bhyb_inter, &
35         is_ave, is_sic, o_contfracATM, o_contfracOR, &
36         o_aireTER, o_flat, o_slp, o_ptstar, o_pt0, o_tsol, &
37         o_t2m, o_t2m_min, o_t2m_max, &
38         o_t2m_min_mon, o_t2m_max_mon, &
39         o_q2m, o_ustar, o_u10m, o_v10m, &
40         o_wind10m, o_wind10max, o_gusts, o_sicf, &
41         o_psol, o_mass, o_qsurf, o_qsol, &
42         o_precip, o_rain_fall, o_ndayrain, o_plul, o_pluc, o_plun, &
43         o_snow, o_msnow, o_fsnow, o_evap, o_ep,o_epmax_diag, & ! epmax_cape
44         o_tops, o_tops0, o_topl, o_topl0, &
45         o_SWupTOA, o_SWupTOAclr, o_SWupTOAcleanclr, o_SWdnTOA, &
46         o_SWdnTOAclr, o_nettop, o_SWup200, &
47         o_SWup200clr, o_SWdn200, o_SWdn200clr, &
48         o_LWup200, o_LWup200clr, o_LWdn200, &
49         o_LWdn200clr, o_sols, o_sols0, &
50         o_soll, o_radsol, o_soll0, o_SWupSFC, &
51         o_SWupSFCclr, o_SWupSFCcleanclr, o_SWdnSFC, o_SWdnSFCclr, o_SWdnSFCcleanclr, &
52         o_LWupSFC, o_LWdnSFC, o_LWupSFCclr, &
53         o_LWdnSFCclr, o_LWupTOAcleanclr, o_LWdnSFCcleanclr, o_bils, o_bils_diss, &
54         o_bils_ec,o_bils_ech, o_bils_tke, o_bils_kinetic, &
55         o_bils_latent, o_bils_enthalp, o_sens, &
56         o_fder, o_ffonte, o_fqcalving, o_fqfonte, o_mrroli, o_runofflic, &
57         o_taux, o_tauy, o_snowsrf, o_qsnow, &
58         o_snowhgt, o_toice, o_sissnow, o_runoff, &
59         o_albslw3, o_pourc_srf, o_fract_srf, &
60         o_taux_srf, o_tauy_srf, o_tsol_srf, &
61         o_evappot_srf, o_ustar_srf, o_u10m_srf, &
62         o_v10m_srf, o_t2m_srf, o_evap_srf, &
63         o_sens_srf, o_lat_srf, o_flw_srf, &
64         o_fsw_srf, o_wbils_srf, o_wbilo_srf, &
65         o_wevap_srf, o_wrain_srf, o_wsnow_srf, &
66         o_tke_srf, o_tke_max_srf,o_dltpbltke_srf, o_wstar, &
67         o_l_mixmin,o_l_mix, &
68         o_cdrm, o_cdrh, o_cldl, o_cldm, o_cldh, &
69         o_cldt, o_JrNt, o_cldljn, o_cldmjn, &
70         o_cldhjn, o_cldtjn, o_cldq, o_lwp, o_iwp, &
71         o_ue, o_ve, o_uq, o_vq, o_cape, o_pbase, &
72         o_ptop, o_fbase, o_plcl, o_plfc, &
73         o_wbeff, o_convoccur, o_cape_max, o_upwd, o_ep,o_epmax_diag, o_Ma, &
74         o_dnwd, o_dnwd0, o_ftime_deepcv, o_ftime_con, o_mc, &
75         o_prw, o_prlw, o_prsw, o_s_pblh, o_s_pblt, o_s_lcl, &
76         o_s_therm, o_uSTDlevs, o_vSTDlevs, &
77         o_wSTDlevs, o_zSTDlevs, o_qSTDlevs, &
78         o_tSTDlevs, epsfra, o_t_oce_sic, &
79         o_ale_bl, o_alp_bl, o_ale_wk, o_alp_wk, &
80         o_dtvdf_x    , o_dtvdf_w    , o_dqvdf_x    , o_dqvdf_w    , &
81         o_sens_x     , o_sens_w     , o_flat_x     , o_flat_w     , &
82         o_delta_tsurf, &
83         o_cdragh_x   , o_cdragh_w   , o_cdragm_x   , o_cdragm_w   , &
84         o_kh         , o_kh_x       , o_kh_w       , &
85         o_ale, o_alp, o_cin, o_WAPE, o_wake_h, o_cv_gen, o_wake_dens, &
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_dens, 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         d_t_vdf_x    ,d_t_vdf_w    ,d_q_vdf_x    ,d_q_vdf_w    , &
262         sens_x     ,sens_w     ,zxfluxlat_x,zxfluxlat_w, &
263         cdragh_x   ,cdragh_w   ,cdragm_x   ,cdragm_w   , &
264         kh         ,kh_x       ,kh_w       , &
265         cv_gen, wake_h, &
266         wake_omg, d_t_wake, d_q_wake, Vprecip, &
267         wdtrainA, wdtrainM, n2, s2, proba_notrig, &
268         random_notrig, &
269         alp_bl_det, alp_bl_fluct_m, alp_bl_conv, &
270         alp_bl_stat, alp_bl_fluct_tke, slab_wfbils, &
271         weak_inversion, dthmin, cldtau, cldemi, &
272         pmflxr, pmflxs, prfl, psfl, re, fl, rh2m, &
273         qsat2m, tpote, tpot, d_ts, od443aer, od550aer, dryod550aer, &
274         od865aer, abs550aer, od550lt1aer, sconcso4, sconcno3, &
275         sconcoa, sconcbc, sconcss, sconcdust, concso4, concno3, &
276         concoa, concbc, concss, concdust, loadso4, &
277         loadoa, loadbc, loadss, loaddust, loadno3, tausum_aero, drytausum_aero, &
278         topswad_aero, topswad0_aero, solswad_aero, &
279         solswad0_aero, topsw_aero, solsw_aero, &
280         topsw0_aero, solsw0_aero, topswcf_aero, &
281         solswcf_aero, topswai_aero, solswai_aero, &
282         toplwad_aero, toplwad0_aero, sollwad_aero, &
283         sollwad0_aero, toplwai_aero, sollwai_aero, &
284         scdnc, cldncl, reffclws, reffclwc, cldnvi, stratomask,&
285         lcc, lcc3d, lcc3dcon, lcc3dstra, &
286         icc3dcon, icc3dstra, zfice, reffclwtop, &
287         ec550aer, flwc, fiwc, t_seri, theta, q_seri, &
288         ql_seri, qs_seri, tr_seri, &
289         zphi, u_seri, v_seri, omega, cldfra, &
290         rneb, rnebjn, rneblsvol, zx_rh, d_t_dyn,  &
291         d_q_dyn,  d_ql_dyn, d_qs_dyn, &
292         d_q_dyn2d,  d_ql_dyn2d, d_qs_dyn2d, &
293         d_u_dyn, d_v_dyn, d_t_con, d_t_ajsb, d_t_ajs, &
294         d_u_ajs, d_v_ajs, &
295         d_u_con, d_v_con, d_q_con, d_q_ajs, d_t_lsc, &
296         d_t_lwr,d_t_lw0,d_t_swr,d_t_sw0, &
297         d_t_eva, d_q_lsc, beta_prec, d_t_lscth, &
298         d_t_lscst, d_q_lscth, d_q_lscst, plul_th, &
299         plul_st, d_t_vdf, d_t_diss, d_q_vdf, d_q_eva, &
300         zw2, fraca, zmax_th, d_q_ajsb, d_t_ec, d_u_vdf, &
301         d_v_vdf, d_u_oro, d_v_oro, d_t_oro, d_u_lif, &
302         d_v_lif, d_t_lif, du_gwd_hines, dv_gwd_hines, d_t_hin, &
303         dv_gwd_rando, dv_gwd_front, &
304         east_gwstress, west_gwstress, &
305         d_q_ch4, pmfd, pmfu, ref_liq, ref_ice, rhwriteSTD, &
306         ep, epmax_diag, &  ! epmax_cape
307         p_tropopause, t_tropopause, z_tropopause
308
309#ifdef CPP_StratAer
310    USE phys_local_var_mod, ONLY:  &
311         budg_3D_nucl, budg_3D_cond_evap, budg_3D_ocs_to_so2, budg_3D_so2_to_h2so4, &
312         budg_sed_part, R2SO4, OCS_lifetime, SO2_lifetime, &
313         budg_3D_backgr_ocs, budg_3D_backgr_so2, &
314         budg_dep_dry_ocs, budg_dep_wet_ocs, &
315         budg_dep_dry_so2, budg_dep_wet_so2, &
316         budg_dep_dry_h2so4, budg_dep_wet_h2so4, &
317         budg_dep_dry_part, budg_dep_wet_part, &
318         budg_emi_ocs, budg_emi_so2, budg_emi_h2so4, budg_emi_part, &
319         budg_ocs_to_so2, budg_so2_to_h2so4, budg_h2so4_to_part, &
320         surf_PM25_sulf, tau_strat_550, tausum_strat, &
321         vsed_aer, tau_strat_1020, f_r_wet
322#endif
323
324#ifdef REPROBUS
325    USE CHEM_REP, ONLY : nas, nbnas, tnamenas, ttextnas
326#endif
327
328    USE phys_output_var_mod, ONLY: vars_defined, snow_o, zfra_o, bils_diss, &
329         bils_ec,bils_ech, bils_tke, bils_kinetic, bils_latent, bils_enthalp, &
330         itau_con, nfiles, clef_files, nid_files, dryaod_diag, &
331         zustr_gwd_hines, zvstr_gwd_hines,zustr_gwd_rando, zvstr_gwd_rando, &
332         zustr_gwd_front, zvstr_gwd_front, sza_o,    &
333         sens_prec_liq_o, sens_prec_sol_o, lat_prec_liq_o, lat_prec_sol_o, &
334         cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv, &
335! Marine
336         map_prop_hc, map_prop_hist, &
337         map_emis_hc,map_iwp_hc,map_deltaz_hc,&
338         map_pcld_hc,map_tcld_hc,&
339         map_emis_hist,map_iwp_hist,map_deltaz_hist,&
340         map_rad_hist,&
341         map_ntot,map_hc,map_hist,&
342         map_Cb,map_ThCi,map_Anv,&
343         map_emis_Cb,map_pcld_Cb,map_tcld_Cb,&
344         map_emis_ThCi,map_pcld_ThCi,map_tcld_ThCi,&
345         map_emis_Anv,map_pcld_Anv,map_tcld_Anv, &
346         alt_tropo, &
347!Ionela
348         ok_4xCO2atm
349
350    USE ocean_slab_mod, ONLY: nslay, tslab, slab_bilg, tice, seaice, &
351        slab_ekman,slab_hdiff,slab_gm,dt_ekman, dt_hdiff, dt_gm, dt_qflux
352    USE pbl_surface_mod, ONLY: snow
353    USE indice_sol_mod, ONLY: nbsrf
354    USE infotrac_phy, ONLY: nqtot, nqo, type_trac, tname, niadv
355    USE geometry_mod, ONLY: cell_area, latitude_deg, longitude_deg
356    USE surface_data, ONLY: type_ocean, version_ocean, ok_veget, ok_snow
357    USE aero_mod, ONLY: naero_tot, id_STRAT_phy
358    USE ioipsl, ONLY: histend, histsync
359    USE iophy, ONLY: set_itau_iophy, histwrite_phy
360    USE netcdf, ONLY: nf90_fill_real
361    USE print_control_mod, ONLY: prt_level,lunout
362
363
364#ifdef CPP_XIOS
365    ! ug Pour les sorties XIOS
366    USE xios
367    USE wxios, ONLY: wxios_closedef, missing_val
368#endif
369    USE phys_cal_mod, ONLY : mth_len
370
371#ifdef CPP_RRTM
372    USE YOESW, ONLY : RSUN
373#endif
374    USE tracinca_mod, ONLY: config_inca
375
376    IMPLICIT NONE
377
378    INCLUDE "clesphys.h"
379    INCLUDE "thermcell.h"
380    INCLUDE "compbl.h"
381    INCLUDE "YOMCST.h"
382
383    ! Input
384    INTEGER :: itap, ivap, iliq, isol, read_climoz
385    INTEGER, DIMENSION(klon) :: lmax_th
386    LOGICAL :: aerosol_couple, ok_sync
387    LOGICAL :: ok_ade, ok_aie, new_aod
388    LOGICAL, DIMENSION(klon, klev) :: ptconv, ptconvth
389    REAL :: pdtphys
390    CHARACTER (LEN=4), DIMENSION(nlevSTD) :: clevSTD
391    REAL, DIMENSION(klon,nlevSTD) :: zx_tmp_fi3d_STD
392    REAL, DIMENSION(klon) :: pphis
393    REAL, DIMENSION(klon, klev) :: pplay, d_u, d_t
394    REAL, DIMENSION(klon, klev+1) :: paprs
395    REAL, DIMENSION(klon,klev,nqtot) :: qx, d_qx
396    REAL, DIMENSION(klon, klev) :: zmasse
397    INTEGER :: flag_aerosol_strat
398    INTEGER :: flag_aerosol
399    LOGICAL :: ok_cdnc
400    REAL, DIMENSION(3) :: freq_moyNMC
401
402    ! Local
403    INTEGER :: itau_w
404    INTEGER :: i, iinit, iinitend=1, iff, iq, iiq, nsrf, k, ll, naero
405    REAL, DIMENSION (klon) :: zx_tmp_fi2d, zpt_conv2d
406    REAL, DIMENSION (klon,klev) :: zx_tmp_fi3d, zpt_conv
407    REAL, DIMENSION (klon,klev+1) :: zx_tmp_fi3d1
408    REAL, DIMENSION (klon,NSW) :: zx_tmp_fi3dsp
409    CHARACTER (LEN=4)              :: bb2
410    INTEGER, DIMENSION(nbp_lon*nbp_lat)  :: ndex2d
411    INTEGER, DIMENSION(nbp_lon*nbp_lat*klev) :: ndex3d
412    REAL, PARAMETER :: dobson_u = 2.1415e-05 ! Dobson unit, in kg m-2
413!   REAL, PARAMETER :: missing_val=nf90_fill_real
414    REAL, DIMENSION(klev,2) :: Ahyb_bounds, Bhyb_bounds
415    INTEGER :: ilev
416#ifndef CPP_XIOS
417    REAL :: missing_val
418#endif
419    REAL, PARAMETER :: un_jour=86400.
420    INTEGER ISW
421    CHARACTER*1 ch1
422    CHARACTER*20 varname
423
424#ifdef CPP_XIOS
425    TYPE(xios_fieldgroup) :: group_handle
426    TYPE(xios_field) :: child
427#endif
428#ifdef CPP_StratAer
429    LOGICAL, PARAMETER :: debug_strataer=.FALSE.
430#endif
431
432    ! On calcul le nouveau tau:
433    itau_w = itau_phy + itap
434    ! On le donne à iophy pour que les histwrite y aient accès:
435    CALL set_itau_iophy(itau_w)
436
437    IF (.NOT.vars_defined) THEN
438       iinitend = 2
439    ELSE
440       iinitend = 1
441    ENDIF
442
443    DO ilev=1,klev
444      Ahyb_bounds(ilev,1) = ap(ilev)
445      Ahyb_bounds(ilev,2) = ap(ilev+1)
446      Bhyb_bounds(ilev,1) = bp(ilev)
447      Bhyb_bounds(ilev,2) = bp(ilev+1)
448    END DO
449
450#ifdef CPP_XIOS
451#ifdef CPP_StratAer
452!$OMP MASTER
453   IF (.NOT.vars_defined) THEN
454          !On ajoute les variables 3D traceurs par l interface fortran
455          CALL xios_get_handle("fields_strataer_trac_3D", group_handle)
456          ! On boucle sur les traceurs pour les ajouter au groupe puis fixer les attributs
457          DO iq=nqo+1, nqtot
458            iiq=niadv(iq)
459            varname=trim(tname(iiq))
460            WRITE (lunout,*) 'XIOS var=', nqo, iq, nqtot, varname
461            CALL xios_add_child(group_handle, child, varname)
462            CALL xios_set_attr(child, name=varname, unit="kg kg-1")
463            varname='d'//trim(tname(iiq))//'_vdf'
464            CALL xios_add_child(group_handle, child, varname)
465            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
466            varname='d'//trim(tname(iiq))//'_the'
467            CALL xios_add_child(group_handle, child, varname)
468            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
469            varname='d'//trim(tname(iiq))//'_con'
470            CALL xios_add_child(group_handle, child, varname)
471            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
472            varname='d'//trim(tname(iiq))//'_lessi_impa'
473            CALL xios_add_child(group_handle, child, varname)
474            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
475            varname='d'//trim(tname(iiq))//'_lessi_nucl'
476            CALL xios_add_child(group_handle, child, varname)
477            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
478            varname='d'//trim(tname(iiq))//'_insc'
479            CALL xios_add_child(group_handle, child, varname)
480            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
481            varname='d'//trim(tname(iiq))//'_bcscav'
482            CALL xios_add_child(group_handle, child, varname)
483            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
484            varname='d'//trim(tname(iiq))//'_evapls'
485            CALL xios_add_child(group_handle, child, varname)
486            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
487            varname='d'//trim(tname(iiq))//'_ls'
488            CALL xios_add_child(group_handle, child, varname)
489            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
490            varname='d'//trim(tname(iiq))//'_trsp'
491            CALL xios_add_child(group_handle, child, varname)
492            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
493            varname='d'//trim(tname(iiq))//'_sscav'
494            CALL xios_add_child(group_handle, child, varname)
495            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
496            varname='d'//trim(tname(iiq))//'_sat'
497            CALL xios_add_child(group_handle, child, varname)
498            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
499            varname='d'//trim(tname(iiq))//'_uscav'
500            CALL xios_add_child(group_handle, child, varname)
501            CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
502          ENDDO
503          !On ajoute les variables 2D traceurs par l interface fortran
504          CALL xios_get_handle("fields_strataer_trac_2D", group_handle)
505          ! On boucle sur les traceurs pour les ajouter au groupe puis fixer les attributs
506          DO iq=nqo+1, nqtot
507            iiq=niadv(iq)
508            varname='cum'//trim(tname(iiq))
509            WRITE (lunout,*) 'XIOS var=', iq, nqtot, varname
510            CALL xios_add_child(group_handle, child, varname)
511            CALL xios_set_attr(child, name=varname, unit="kg m-2")
512            varname='cumd'//trim(tname(iiq))//'_dry'
513            CALL xios_add_child(group_handle, child, varname)
514            CALL xios_set_attr(child, name=varname, unit="kg m-2 s-1")
515          ENDDO
516    ENDIF
517!$OMP END MASTER
518#endif
519#endif
520    ! ug la boucle qui suit ne sert qu'une fois, pour l'initialisation, sinon il n'y a toujours qu'un seul passage:
521    DO iinit=1, iinitend
522!      print *,'IFF iinit=', iinit, iinitend
523#ifdef CPP_XIOS
524       !$OMP MASTER
525       IF (vars_defined) THEN
526          IF (prt_level >= 10) then
527             write(lunout,*)"phys_output_write: call xios_update_calendar, itau_w=",itau_w
528          ENDIF
529!          CALL xios_update_calendar(itau_w)
530          CALL xios_update_calendar(itap)
531       ENDIF
532       !$OMP END MASTER
533       !$OMP BARRIER
534#endif
535       ! On procède à l'écriture ou à la définition des nombreuses variables:
536!!! Champs 1D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
537       CALL histwrite_phy(o_phis, pphis)
538
539       zx_tmp_fi2d = cell_area
540       IF (is_north_pole_phy) then
541         zx_tmp_fi2d(1) = cell_area(1)/nbp_lon
542       ENDIF
543       IF (is_south_pole_phy) then
544         zx_tmp_fi2d(klon) = cell_area(klon)/nbp_lon
545       ENDIf
546       CALL histwrite_phy(o_aire, zx_tmp_fi2d)
547
548       IF (vars_defined) THEN
549          DO i=1, klon
550             zx_tmp_fi2d(i)=pctsrf(i,is_ter)+pctsrf(i,is_lic)
551          ENDDO
552       ENDIF
553
554       CALL histwrite_phy(o_contfracATM, zx_tmp_fi2d)
555       CALL histwrite_phy(o_contfracOR, pctsrf(:,is_ter))
556!
557#ifdef CPP_XIOS
558       CALL histwrite_phy("R_ecc",R_ecc)
559       CALL histwrite_phy("R_peri",R_peri)
560       CALL histwrite_phy("R_incl",R_incl)
561       CALL histwrite_phy("solaire",solaire)
562       CALL histwrite_phy(o_Ahyb, aps)
563       CALL histwrite_phy(o_Bhyb, bps)
564       CALL histwrite_phy(o_Ahyb_inter, Ahyb_bounds)
565       CALL histwrite_phy(o_Bhyb_inter, Bhyb_bounds)
566       CALL histwrite_phy(o_longitude, longitude_deg)
567       CALL histwrite_phy(o_latitude, latitude_deg)
568!
569#ifdef CPP_RRTM
570      IF (iflag_rrtm.EQ.1) THEN
571        DO ISW=1, NSW
572          WRITE(ch1,'(i1)') ISW
573!         zx_tmp_0d=RSUN(ISW)
574!         CALL histwrite_phy("rsun"//ch1,zx_tmp_0d)
575          CALL histwrite_phy("rsun"//ch1,RSUN(ISW))
576        ENDDO
577      ENDIF
578#endif
579!
580       CALL histwrite_phy("co2_ppm",co2_ppm)
581       CALL histwrite_phy("CH4_ppb",CH4_ppb)
582       CALL histwrite_phy("N2O_ppb",N2O_ppb)
583       CALL histwrite_phy("CFC11_ppt",CFC11_ppt)
584       CALL histwrite_phy("CFC12_ppt",CFC12_ppt)
585!
586#endif
587
588!!! Champs 2D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
589! Simulateur AIRS
590     IF (ok_airs) then
591      CALL histwrite_phy(o_alt_tropo,alt_tropo)
592 
593      CALL histwrite_phy(o_map_prop_hc,map_prop_hc)
594      CALL histwrite_phy(o_map_prop_hist,map_prop_hist)
595
596      CALL histwrite_phy(o_map_emis_hc,map_emis_hc)
597      CALL histwrite_phy(o_map_iwp_hc,map_iwp_hc)
598      CALL histwrite_phy(o_map_deltaz_hc,map_deltaz_hc)
599      CALL histwrite_phy(o_map_pcld_hc,map_pcld_hc)
600      CALL histwrite_phy(o_map_tcld_hc,map_tcld_hc)
601
602      CALL histwrite_phy(o_map_emis_hist,map_emis_hist)
603      CALL histwrite_phy(o_map_iwp_hist,map_iwp_hist)
604      CALL histwrite_phy(o_map_deltaz_hist,map_deltaz_hist)
605
606      CALL histwrite_phy(o_map_ntot,map_ntot)
607      CALL histwrite_phy(o_map_hc,map_hc)
608      CALL histwrite_phy(o_map_hist,map_hist)
609
610      CALL histwrite_phy(o_map_Cb,map_Cb)
611      CALL histwrite_phy(o_map_ThCi,map_ThCi)
612      CALL histwrite_phy(o_map_Anv,map_Anv)
613
614      CALL histwrite_phy(o_map_emis_Cb,map_emis_Cb)
615      CALL histwrite_phy(o_map_pcld_Cb,map_pcld_Cb)
616      CALL histwrite_phy(o_map_tcld_Cb,map_tcld_Cb)
617
618      CALL histwrite_phy(o_map_emis_ThCi,map_emis_ThCi)
619      CALL histwrite_phy(o_map_pcld_ThCi,map_pcld_ThCi)
620      CALL histwrite_phy(o_map_tcld_ThCi,map_tcld_ThCi)
621
622      CALL histwrite_phy(o_map_emis_Anv,map_emis_Anv)
623      CALL histwrite_phy(o_map_pcld_Anv,map_pcld_Anv)
624      CALL histwrite_phy(o_map_tcld_Anv,map_tcld_Anv)
625     ENDIF
626
627       CALL histwrite_phy(o_sza, sza_o)
628       CALL histwrite_phy(o_flat, zxfluxlat)
629       CALL histwrite_phy(o_ptstar, ptstar)
630       CALL histwrite_phy(o_pt0, pt0)
631       CALL histwrite_phy(o_slp, slp)
632       CALL histwrite_phy(o_tsol, zxtsol)
633       CALL histwrite_phy(o_t2m, zt2m)
634       CALL histwrite_phy(o_t2m_min, zt2m)
635       CALL histwrite_phy(o_t2m_max, zt2m)
636       CALL histwrite_phy(o_t2m_max_mon, t2m_max_mon)
637       CALL histwrite_phy(o_t2m_min_mon, t2m_min_mon)
638
639       IF (vars_defined) THEN
640          DO i=1, klon
641             zx_tmp_fi2d(i)=SQRT(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i))
642          ENDDO
643       ENDIF
644       CALL histwrite_phy(o_wind10m, zx_tmp_fi2d)
645
646       IF (vars_defined) THEN
647          DO i=1, klon
648             zx_tmp_fi2d(i)=SQRT(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i))
649          ENDDO
650       ENDIF
651       CALL histwrite_phy(o_wind10max, zx_tmp_fi2d)
652
653       CALL histwrite_phy(o_gusts, gustiness)
654
655       IF (vars_defined) THEN
656          DO i = 1, klon
657             zx_tmp_fi2d(i) = pctsrf(i,is_sic)
658          ENDDO
659       ENDIF
660       CALL histwrite_phy(o_sicf, zx_tmp_fi2d)
661       CALL histwrite_phy(o_q2m, zq2m)
662       CALL histwrite_phy(o_ustar, zustar)
663       CALL histwrite_phy(o_u10m, zu10m)
664       CALL histwrite_phy(o_v10m, zv10m)
665
666       IF (vars_defined) THEN
667          DO i = 1, klon
668             zx_tmp_fi2d(i) = paprs(i,1)
669          ENDDO
670       ENDIF
671       CALL histwrite_phy(o_psol, zx_tmp_fi2d)
672       CALL histwrite_phy(o_mass, zmasse)
673       CALL histwrite_phy(o_qsurf, zxqsurf)
674
675       IF (.NOT. ok_veget) THEN
676          CALL histwrite_phy(o_qsol, qsol)
677       ENDIF
678
679       IF (vars_defined) THEN
680          DO i = 1, klon
681             zx_tmp_fi2d(i) = rain_fall(i) + snow_fall(i)
682          ENDDO
683       ENDIF
684
685       CALL histwrite_phy(o_precip, zx_tmp_fi2d)
686       CALL histwrite_phy(o_rain_fall, rain_fall)
687       CALL histwrite_phy(o_ndayrain, nday_rain)
688
689       ! epmax_cape:
690!       CALL histwrite_phy(o_epmax_diag, epmax_diag)
691       CALL histwrite_phy(o_ep, ep)
692
693       IF (vars_defined) THEN
694          DO i = 1, klon
695             zx_tmp_fi2d(i) = rain_lsc(i) + snow_lsc(i)
696          ENDDO
697       ENDIF
698       CALL histwrite_phy(o_plul, zx_tmp_fi2d)
699       CALL histwrite_phy(o_plun, rain_num)
700
701       IF (vars_defined) THEN
702          DO i = 1, klon
703             zx_tmp_fi2d(i) = rain_con(i) + snow_con(i)
704          ENDDO
705       ENDIF
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!
1113               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf_x(1:klon,1:klev)/pdtphys
1114               CALL histwrite_phy(o_dtvdf_x    ,zx_tmp_fi3d)
1115               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf_w(1:klon,1:klev)/pdtphys
1116               CALL histwrite_phy(o_dtvdf_w    ,zx_tmp_fi3d)
1117               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf_x(1:klon,1:klev)/pdtphys
1118               CALL histwrite_phy(o_dqvdf_x    ,zx_tmp_fi3d)
1119               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf_w(1:klon,1:klev)/pdtphys
1120!
1121               CALL histwrite_phy(o_dqvdf_w    ,zx_tmp_fi3d)
1122               CALL histwrite_phy(o_sens_x     ,sens_x     )
1123               CALL histwrite_phy(o_sens_w     ,sens_w     )
1124               CALL histwrite_phy(o_flat_x     ,zxfluxlat_x)
1125               CALL histwrite_phy(o_flat_w     ,zxfluxlat_w)
1126               CALL histwrite_phy(o_delta_tsurf,delta_tsurf)
1127               CALL histwrite_phy(o_cdragh_x   ,cdragh_x   )
1128               CALL histwrite_phy(o_cdragh_w   ,cdragh_w   )
1129               CALL histwrite_phy(o_cdragm_x   ,cdragm_x   )
1130               CALL histwrite_phy(o_cdragm_w   ,cdragm_w   )
1131               CALL histwrite_phy(o_kh         ,kh         )
1132               CALL histwrite_phy(o_kh_x       ,kh_x       )
1133               CALL histwrite_phy(o_kh_w       ,kh_w       )
1134             ENDIF   ! (iflag_pbl_split>=1)
1135             CALL histwrite_phy(o_ale, ale)
1136             CALL histwrite_phy(o_alp, alp)
1137             CALL histwrite_phy(o_cin, cin)
1138             CALL histwrite_phy(o_WAPE, wake_pe)
1139             CALL histwrite_phy(o_cv_gen, cv_gen)
1140             CALL histwrite_phy(o_wake_h, wake_h)
1141             CALL histwrite_phy(o_wake_dens, wake_dens)
1142             CALL histwrite_phy(o_wake_s, wake_s)
1143             CALL histwrite_phy(o_wake_deltat, wake_deltat)
1144             CALL histwrite_phy(o_wake_deltaq, wake_deltaq)
1145             CALL histwrite_phy(o_wake_omg, wake_omg)
1146             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_wake(1:klon,1:klev) &
1147                  /pdtphys
1148             CALL histwrite_phy(o_dtwak, zx_tmp_fi3d)
1149             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_wake(1:klon,1:klev)/pdtphys
1150             CALL histwrite_phy(o_dqwak, zx_tmp_fi3d)
1151             CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1152             CALL histwrite_phy(o_dqwak2d, zx_tmp_fi2d)
1153          ENDIF ! iflag_wake>=1
1154          CALL histwrite_phy(o_ftd, ftd)
1155          CALL histwrite_phy(o_fqd, fqd)
1156       ENDIF !(iflag_con.EQ.3)
1157       IF (iflag_con.EQ.3.OR.iflag_con.EQ.30) THEN
1158          ! sortie RomP convection descente insaturee iflag_con=30
1159          ! etendue a iflag_con=3 (jyg)
1160          CALL histwrite_phy(o_Vprecip, Vprecip)
1161          CALL histwrite_phy(o_wdtrainA, wdtrainA)
1162          CALL histwrite_phy(o_wdtrainM, wdtrainM)
1163       ENDIF !(iflag_con.EQ.3.or.iflag_con.EQ.30)
1164!!! nrlmd le 10/04/2012
1165       IF (iflag_trig_bl>=1) THEN
1166          CALL histwrite_phy(o_n2, n2)
1167          CALL histwrite_phy(o_s2, s2)
1168          CALL histwrite_phy(o_proba_notrig, proba_notrig)
1169          CALL histwrite_phy(o_random_notrig, random_notrig)
1170          CALL histwrite_phy(o_ale_bl_stat, ale_bl_stat)
1171          CALL histwrite_phy(o_ale_bl_trig, ale_bl_trig)
1172       ENDIF  !(iflag_trig_bl>=1)
1173       IF (iflag_clos_bl>=1) THEN
1174          CALL histwrite_phy(o_alp_bl_det, alp_bl_det)
1175          CALL histwrite_phy(o_alp_bl_fluct_m, alp_bl_fluct_m)
1176          CALL histwrite_phy(o_alp_bl_fluct_tke,  &
1177               alp_bl_fluct_tke)
1178          CALL histwrite_phy(o_alp_bl_conv, alp_bl_conv)
1179          CALL histwrite_phy(o_alp_bl_stat, alp_bl_stat)
1180       ENDIF  !(iflag_clos_bl>=1)
1181!!! fin nrlmd le 10/04/2012
1182       ! Output of slab ocean variables
1183       IF (type_ocean=='slab ') THEN
1184          CALL histwrite_phy(o_slab_bils, slab_wfbils)
1185          IF (nslay.EQ.1) THEN
1186              zx_tmp_fi2d(:)=tslab(:,1)
1187              CALL histwrite_phy(o_tslab, zx_tmp_fi2d)
1188              zx_tmp_fi2d(:)=dt_qflux(:,1)
1189              CALL histwrite_phy(o_slab_qflux, zx_tmp_fi2d)
1190          ELSE
1191              CALL histwrite_phy(o_tslab, tslab(:,1:nslay))
1192              CALL histwrite_phy(o_slab_qflux, dt_qflux(:,1:nslay))
1193          ENDIF
1194          IF (version_ocean=='sicINT') THEN
1195              CALL histwrite_phy(o_slab_bilg, slab_bilg)
1196              CALL histwrite_phy(o_slab_tice, tice)
1197              CALL histwrite_phy(o_slab_sic, seaice)
1198          ENDIF
1199          IF (slab_gm) THEN
1200             CALL histwrite_phy(o_slab_gm, dt_gm(:,1:nslay))
1201          END IF
1202          IF (slab_hdiff) THEN
1203            IF (nslay.EQ.1) THEN
1204                zx_tmp_fi2d(:)=dt_hdiff(:,1)
1205                CALL histwrite_phy(o_slab_hdiff, zx_tmp_fi2d)
1206            ELSE
1207                CALL histwrite_phy(o_slab_hdiff, dt_hdiff(:,1:nslay))
1208            ENDIF
1209          ENDIF
1210          IF (slab_ekman.GT.0) THEN
1211            IF (nslay.EQ.1) THEN
1212                zx_tmp_fi2d(:)=dt_ekman(:,1)
1213                CALL histwrite_phy(o_slab_ekman, zx_tmp_fi2d)
1214            ELSE
1215                CALL histwrite_phy(o_slab_ekman, dt_ekman(:,1:nslay))
1216            ENDIF
1217          ENDIF
1218       ENDIF !type_ocean == force/slab
1219       CALL histwrite_phy(o_weakinv, weak_inversion)
1220       CALL histwrite_phy(o_dthmin, dthmin)
1221       CALL histwrite_phy(o_cldtau, cldtau)
1222       CALL histwrite_phy(o_cldemi, cldemi)
1223       CALL histwrite_phy(o_pr_con_l, pmflxr(:,1:klev))
1224       CALL histwrite_phy(o_pr_con_i, pmflxs(:,1:klev))
1225       CALL histwrite_phy(o_pr_lsc_l, prfl(:,1:klev))
1226       CALL histwrite_phy(o_pr_lsc_i, psfl(:,1:klev))
1227       CALL histwrite_phy(o_re, re)
1228       CALL histwrite_phy(o_fl, fl)
1229       IF (vars_defined) THEN
1230          DO i=1, klon
1231             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1232          ENDDO
1233       ENDIF
1234       CALL histwrite_phy(o_rh2m, zx_tmp_fi2d)
1235
1236!       IF (vars_defined) THEN
1237!          DO i=1, klon
1238!             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1239!          ENDDO
1240!       ENDIF
1241!       CALL histwrite_phy(o_rh2m_min, zx_tmp_fi2d)
1242
1243!       IF (vars_defined) THEN
1244!          DO i=1, klon
1245!             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1246!          ENDDO
1247!       ENDIF
1248!       CALL histwrite_phy(o_rh2m_max, zx_tmp_fi2d)
1249
1250       CALL histwrite_phy(o_qsat2m, qsat2m)
1251       CALL histwrite_phy(o_tpot, tpot)
1252       CALL histwrite_phy(o_tpote, tpote)
1253       IF (vars_defined) zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, is_ter)
1254       CALL histwrite_phy(o_SWnetOR,  zx_tmp_fi2d)
1255       IF (vars_defined) zx_tmp_fi2d(1:klon) = solsw(1:klon)/(1.-albsol1(1:klon))
1256       CALL histwrite_phy(o_SWdownOR,  zx_tmp_fi2d)
1257       CALL histwrite_phy(o_LWdownOR, sollwdown)
1258       CALL histwrite_phy(o_snowl, snow_lsc)
1259       CALL histwrite_phy(o_solldown, sollwdown)
1260       CALL histwrite_phy(o_dtsvdfo, d_ts(:,is_oce))
1261       CALL histwrite_phy(o_dtsvdft, d_ts(:,is_ter))
1262       CALL histwrite_phy(o_dtsvdfg,  d_ts(:,is_lic))
1263       CALL histwrite_phy(o_dtsvdfi, d_ts(:,is_sic))
1264       CALL histwrite_phy(o_z0m, z0m(:,nbsrf+1))
1265       CALL histwrite_phy(o_z0h, z0h(:,nbsrf+1))
1266
1267       ! od550 per species
1268!--OLIVIER
1269!This is warranted by treating INCA aerosols as offline aerosols
1270!       IF (new_aod .and. (.not. aerosol_couple)) THEN
1271       IF (new_aod) THEN
1272          IF (flag_aerosol.GT.0) THEN
1273             CALL histwrite_phy(o_od443aer, od443aer)
1274             CALL histwrite_phy(o_od550aer, od550aer)
1275             CALL histwrite_phy(o_od865aer, od865aer)
1276             CALL histwrite_phy(o_abs550aer, abs550aer)
1277             CALL histwrite_phy(o_od550lt1aer, od550lt1aer)
1278             CALL histwrite_phy(o_sconcso4, sconcso4)
1279             CALL histwrite_phy(o_sconcno3, sconcno3)
1280             CALL histwrite_phy(o_sconcoa, sconcoa)
1281             CALL histwrite_phy(o_sconcbc, sconcbc)
1282             CALL histwrite_phy(o_sconcss, sconcss)
1283             CALL histwrite_phy(o_sconcdust, sconcdust)
1284             CALL histwrite_phy(o_concso4, concso4)
1285             CALL histwrite_phy(o_concno3, concno3)
1286             CALL histwrite_phy(o_concoa, concoa)
1287             CALL histwrite_phy(o_concbc, concbc)
1288             CALL histwrite_phy(o_concss, concss)
1289             CALL histwrite_phy(o_concdust, concdust)
1290             CALL histwrite_phy(o_loadso4, loadso4)
1291             CALL histwrite_phy(o_loadoa, loadoa)
1292             CALL histwrite_phy(o_loadbc, loadbc)
1293             CALL histwrite_phy(o_loadss, loadss)
1294             CALL histwrite_phy(o_loaddust, loaddust)
1295             CALL histwrite_phy(o_loadno3, loadno3)
1296             CALL histwrite_phy(o_dryod550aer, dryod550aer)
1297             DO naero = 1, naero_tot-1
1298                CALL histwrite_phy(o_drytausumaero(naero),drytausum_aero(:,naero))
1299             END DO
1300          ENDIF
1301          !--STRAT AER
1302          IF (flag_aerosol.GT.0.OR.flag_aerosol_strat.GT.0) THEN
1303             DO naero = 1, naero_tot
1304                CALL histwrite_phy(o_tausumaero(naero),tausum_aero(:,2,naero))
1305             END DO
1306          ENDIF
1307          IF (flag_aerosol_strat.GT.0) THEN
1308             CALL histwrite_phy(o_tausumaero_lw,tausum_aero(:,6,id_STRAT_phy))
1309          ENDIF
1310       ENDIF
1311
1312       CALL histwrite_phy(o_p_tropopause, p_tropopause)
1313       CALL histwrite_phy(o_t_tropopause, t_tropopause)
1314       CALL histwrite_phy(o_z_tropopause, z_tropopause)
1315
1316! ThL -- In the following, we assume read_climoz == 1
1317       zx_tmp_fi2d = 0.0    ! Computation for strato, added ThL
1318       DO k=1, klev
1319          zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + wo(:,k,1) * stratomask(:,k) * 1.e3
1320       END DO
1321       CALL histwrite_phy(o_col_O3_strato, zx_tmp_fi2d) ! Added ThL
1322       zx_tmp_fi2d = 0.0    ! Computation for tropo, added ThL
1323       DO k=1, klev
1324          zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + wo(:,k,1) * (1.0-stratomask(:,k)) * 1.e3
1325       END DO
1326       CALL histwrite_phy(o_col_O3_tropo, zx_tmp_fi2d)   ! Added ThL
1327! end add ThL
1328
1329#ifdef CPP_StratAer
1330       IF (type_trac=='coag') THEN
1331          CALL histwrite_phy(o_R2SO4, R2SO4)
1332          CALL histwrite_phy(o_OCS_lifetime, OCS_lifetime)
1333          CALL histwrite_phy(o_SO2_lifetime, SO2_lifetime)
1334          CALL histwrite_phy(o_budg_3D_backgr_ocs,   budg_3D_backgr_ocs)
1335          CALL histwrite_phy(o_budg_3D_backgr_so2,   budg_3D_backgr_so2)
1336          CALL histwrite_phy(o_budg_3D_ocs_to_so2,   budg_3D_ocs_to_so2)
1337          CALL histwrite_phy(o_budg_3D_so2_to_h2so4, budg_3D_so2_to_h2so4)
1338          CALL histwrite_phy(o_budg_3D_nucl,         budg_3D_nucl)
1339          CALL histwrite_phy(o_budg_3D_cond_evap,    budg_3D_cond_evap)
1340          CALL histwrite_phy(o_budg_dep_dry_ocs,     budg_dep_dry_ocs)
1341          CALL histwrite_phy(o_budg_dep_wet_ocs,     budg_dep_wet_ocs)
1342          CALL histwrite_phy(o_budg_dep_dry_so2,     budg_dep_dry_so2)
1343          CALL histwrite_phy(o_budg_dep_wet_so2,     budg_dep_wet_so2)
1344          CALL histwrite_phy(o_budg_dep_dry_h2so4,   budg_dep_dry_h2so4)
1345          CALL histwrite_phy(o_budg_dep_wet_h2so4,   budg_dep_wet_h2so4)
1346          CALL histwrite_phy(o_budg_dep_dry_part,    budg_dep_dry_part)
1347          CALL histwrite_phy(o_budg_dep_wet_part,    budg_dep_wet_part)
1348          CALL histwrite_phy(o_budg_emi_ocs,         budg_emi_ocs)
1349          CALL histwrite_phy(o_budg_emi_so2,         budg_emi_so2)
1350          CALL histwrite_phy(o_budg_emi_h2so4,       budg_emi_h2so4)
1351          CALL histwrite_phy(o_budg_emi_part,        budg_emi_part)
1352          CALL histwrite_phy(o_budg_ocs_to_so2,      budg_ocs_to_so2)
1353          CALL histwrite_phy(o_budg_so2_to_h2so4,    budg_so2_to_h2so4)
1354          CALL histwrite_phy(o_budg_h2so4_to_part,   budg_h2so4_to_part)
1355          CALL histwrite_phy(o_budg_sed_part,        budg_sed_part)
1356          CALL histwrite_phy(o_surf_PM25_sulf, surf_PM25_sulf)
1357          CALL histwrite_phy(o_vsed_aer, vsed_aer)
1358          CALL histwrite_phy(o_f_r_wet, f_r_wet)
1359          CALL histwrite_phy(o_ext_strat_550, tau_strat_550)
1360          CALL histwrite_phy(o_ext_strat_1020, tau_strat_1020)
1361          CALL histwrite_phy(o_tau_strat_550, tausum_strat(:,1))
1362          CALL histwrite_phy(o_tau_strat_1020, tausum_strat(:,2))
1363       ENDIF
1364#endif
1365       IF (ok_ade) THEN
1366          CALL histwrite_phy(o_topswad, topswad_aero*swradcorr)
1367          CALL histwrite_phy(o_topswad0, topswad0_aero*swradcorr)
1368          CALL histwrite_phy(o_solswad, solswad_aero*swradcorr)
1369          CALL histwrite_phy(o_solswad0, solswad0_aero*swradcorr)
1370          IF (type_trac .ne. 'inca') THEN
1371             IF (config_inca .ne. 'aeNP') THEN
1372                CALL histwrite_phy(o_toplwad, toplwad_aero)
1373                CALL histwrite_phy(o_toplwad0, toplwad0_aero)
1374                CALL histwrite_phy(o_sollwad, sollwad_aero)
1375                CALL histwrite_phy(o_sollwad0, sollwad0_aero)
1376             ENDIF
1377          ENDIF
1378          !====MS forcing diagnostics
1379          IF (new_aod) THEN
1380             zx_tmp_fi2d(:)=topsw_aero(:,1)*swradcorr(:)
1381             CALL histwrite_phy(o_swtoaas_nat,zx_tmp_fi2d)
1382             zx_tmp_fi2d(:)=solsw_aero(:,1)*swradcorr(:)
1383             CALL histwrite_phy(o_swsrfas_nat,zx_tmp_fi2d)
1384             zx_tmp_fi2d(:)=topsw0_aero(:,1)*swradcorr(:)
1385             CALL histwrite_phy(o_swtoacs_nat,zx_tmp_fi2d)
1386             zx_tmp_fi2d(:)=solsw0_aero(:,1)*swradcorr(:)
1387             CALL histwrite_phy(o_swsrfcs_nat,zx_tmp_fi2d)
1388             !ant
1389             zx_tmp_fi2d(:)=topsw_aero(:,2)*swradcorr(:)
1390             CALL histwrite_phy(o_swtoaas_ant,zx_tmp_fi2d)
1391             zx_tmp_fi2d(:)=solsw_aero(:,2)*swradcorr(:)
1392             CALL histwrite_phy(o_swsrfas_ant,zx_tmp_fi2d)
1393             zx_tmp_fi2d(:)=topsw0_aero(:,2)*swradcorr(:)
1394             CALL histwrite_phy(o_swtoacs_ant,zx_tmp_fi2d)
1395             zx_tmp_fi2d(:)=solsw0_aero(:,2)*swradcorr(:)
1396             CALL histwrite_phy(o_swsrfcs_ant,zx_tmp_fi2d)
1397             !cf
1398             IF (.not. aerosol_couple) THEN
1399                zx_tmp_fi2d(:)=topswcf_aero(:,1)*swradcorr(:)
1400                CALL histwrite_phy(o_swtoacf_nat,zx_tmp_fi2d)
1401                zx_tmp_fi2d(:)=solswcf_aero(:,1)*swradcorr(:)
1402                CALL histwrite_phy(o_swsrfcf_nat,zx_tmp_fi2d)
1403                zx_tmp_fi2d(:)=topswcf_aero(:,2)*swradcorr(:)
1404                CALL histwrite_phy(o_swtoacf_ant,zx_tmp_fi2d)
1405                zx_tmp_fi2d(:)=solswcf_aero(:,2)*swradcorr(:)
1406                CALL histwrite_phy(o_swsrfcf_ant,zx_tmp_fi2d)
1407                zx_tmp_fi2d(:)=topswcf_aero(:,3)*swradcorr(:)
1408                CALL histwrite_phy(o_swtoacf_zero,zx_tmp_fi2d)
1409                zx_tmp_fi2d(:)=solswcf_aero(:,3)*swradcorr(:)
1410                CALL histwrite_phy(o_swsrfcf_zero,zx_tmp_fi2d)
1411             ENDIF
1412          ENDIF ! new_aod
1413          !====MS forcing diagnostics
1414       ENDIF
1415       IF (ok_aie) THEN
1416          CALL histwrite_phy(o_topswai, topswai_aero*swradcorr)
1417          CALL histwrite_phy(o_toplwai, toplwai_aero*swradcorr)
1418          CALL histwrite_phy(o_solswai, solswai_aero*swradcorr)
1419          CALL histwrite_phy(o_sollwai, sollwai_aero*swradcorr)
1420       ENDIF
1421       IF (flag_aerosol.GT.0.AND.ok_cdnc) THEN
1422          CALL histwrite_phy(o_scdnc, scdnc)
1423          CALL histwrite_phy(o_cldncl, cldncl)
1424          CALL histwrite_phy(o_reffclws, reffclws)
1425          CALL histwrite_phy(o_reffclwc, reffclwc)
1426          CALL histwrite_phy(o_cldnvi, cldnvi)
1427          CALL histwrite_phy(o_lcc, lcc)
1428          CALL histwrite_phy(o_lcc3d, lcc3d)
1429          CALL histwrite_phy(o_lcc3dcon, lcc3dcon)
1430          CALL histwrite_phy(o_lcc3dstra, lcc3dstra)
1431          CALL histwrite_phy(o_icc3dcon, icc3dcon)
1432          CALL histwrite_phy(o_icc3dstra, icc3dstra)
1433          CALL histwrite_phy(o_cldicemxrat, zfice)
1434          zx_tmp_fi3d(:,:)=1-zfice(:,:)
1435          CALL histwrite_phy(o_cldwatmxrat, zx_tmp_fi3d)
1436          CALL histwrite_phy(o_reffclwtop, reffclwtop)
1437       ENDIF
1438       ! Champs 3D:
1439       IF (ok_ade .OR. ok_aie) then
1440          CALL histwrite_phy(o_ec550aer, ec550aer)
1441       ENDIF
1442       CALL histwrite_phy(o_lwcon, flwc)
1443       CALL histwrite_phy(o_iwcon, fiwc)
1444       CALL histwrite_phy(o_temp, t_seri)
1445       CALL histwrite_phy(o_theta, theta)
1446       CALL histwrite_phy(o_ovapinit, qx(:,:,ivap))
1447       CALL histwrite_phy(o_ovap, q_seri)
1448       CALL histwrite_phy(o_oliq, ql_seri)
1449       CALL histwrite_phy(o_ocond, ql_seri+qs_seri)
1450       CALL histwrite_phy(o_geop, zphi)
1451       CALL histwrite_phy(o_vitu, u_seri)
1452       CALL histwrite_phy(o_vitv, v_seri)
1453       CALL histwrite_phy(o_vitw, omega)
1454       CALL histwrite_phy(o_pres, pplay)
1455       CALL histwrite_phy(o_paprs, paprs(:,1:klev))
1456       CALL histwrite_phy(o_zfull,zphi/RG)
1457
1458#ifdef CPP_XIOS
1459!solbnd begin
1460#ifdef CPP_RRTM
1461      IF (iflag_rrtm.EQ.1) THEN
1462       IF (vars_defined) THEN
1463        DO ISW=1, NSW
1464          zx_tmp_fi3dsp(:,ISW) = swdn(:,klevp1)*swradcorr(:)*RSUN(ISW)
1465        ENDDO
1466        CALL histwrite_phy(o_solbnd, zx_tmp_fi3dsp)
1467       ENDIF
1468      ENDIF
1469#endif
1470!solbnd end
1471#endif
1472
1473       IF (flag_aerosol_strat.EQ.2) THEN
1474         CALL histwrite_phy(o_stratomask, stratomask)
1475       ENDIF
1476     
1477       IF (vars_defined)  THEN
1478        zx_tmp_fi3d(:,1)= pphis(:)/RG
1479        DO k = 2, klev
1480         DO i = 1, klon
1481            zx_tmp_fi3d(i,k) = zphi(i,k)/RG + &
1482                          (zphi(i,k)-zphi(i,k-1))/RG * &
1483                          (paprs(i,k)-pplay(i,k))/(pplay(i,k)-pplay(i,k-1))
1484         ENDDO
1485        ENDDO
1486       ENDIF
1487       CALL histwrite_phy(o_zhalf, zx_tmp_fi3d)
1488       CALL histwrite_phy(o_rneb, cldfra)
1489       CALL histwrite_phy(o_rnebcon, rnebcon)
1490       CALL histwrite_phy(o_rnebls, rneb)
1491       CALL histwrite_phy(o_rneblsvol, rneblsvol)
1492       IF (vars_defined)  THEN
1493          DO k=1, klev
1494             DO i=1, klon
1495                zx_tmp_fi3d(i,k)=cldfra(i,k)*JrNt(i)
1496             ENDDO
1497          ENDDO
1498       ENDIF
1499       CALL histwrite_phy(o_rnebjn, zx_tmp_fi3d)
1500       CALL histwrite_phy(o_rhum, zx_rh)
1501       CALL histwrite_phy(o_ozone, &
1502            wo(:, :, 1) * dobson_u * 1e3 / zmasse / rmo3 * rmd)
1503
1504       IF (read_climoz == 2) THEN
1505          CALL histwrite_phy(o_ozone_light, &
1506               wo(:, :, 2) * dobson_u * 1e3 / zmasse / rmo3 * rmd)
1507       ENDIF
1508
1509       CALL histwrite_phy(o_duphy, d_u)
1510
1511       CALL histwrite_phy(o_dtphy, d_t)
1512
1513       CALL histwrite_phy(o_dqphy,  d_qx(:,:,ivap))
1514       CALL water_int(klon,klev,d_qx(:,:,ivap),zmasse,zx_tmp_fi2d)
1515       CALL histwrite_phy(o_dqphy2d,  zx_tmp_fi2d)
1516
1517       CALL histwrite_phy(o_dqlphy,  d_qx(:,:,iliq))
1518       CALL water_int(klon,klev,d_qx(:,:,iliq),zmasse,zx_tmp_fi2d)
1519       CALL histwrite_phy(o_dqlphy2d,  zx_tmp_fi2d)
1520
1521       IF (nqo.EQ.3) THEN
1522       CALL histwrite_phy(o_dqsphy,  d_qx(:,:,isol))
1523       CALL water_int(klon,klev,d_qx(:,:,isol),zmasse,zx_tmp_fi2d)
1524       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
1525       ELSE
1526       zx_tmp_fi3d=0.0
1527       CALL histwrite_phy(o_dqsphy,  zx_tmp_fi3d)
1528       zx_tmp_fi2d=0.0
1529       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
1530       ENDIF
1531
1532       DO nsrf=1, nbsrf
1533          IF (vars_defined) zx_tmp_fi2d(1 : klon) = falb1( 1 : klon, nsrf)
1534          CALL histwrite_phy(o_albe_srf(nsrf), zx_tmp_fi2d)
1535          IF (vars_defined) zx_tmp_fi2d(1 : klon) = z0m( 1 : klon, nsrf)
1536          CALL histwrite_phy(o_z0m_srf(nsrf), zx_tmp_fi2d)
1537          IF (vars_defined) zx_tmp_fi2d(1 : klon) = z0h( 1 : klon, nsrf)
1538          CALL histwrite_phy(o_z0h_srf(nsrf), zx_tmp_fi2d)
1539          IF (vars_defined) zx_tmp_fi2d(1 : klon) = agesno( 1 : klon, nsrf)
1540          CALL histwrite_phy(o_ages_srf(nsrf), zx_tmp_fi2d)
1541          IF (vars_defined) zx_tmp_fi2d(1 : klon) = snow( 1 : klon, nsrf)
1542          CALL histwrite_phy(o_snow_srf(nsrf), zx_tmp_fi2d)
1543       ENDDO !nsrf=1, nbsrf
1544       CALL histwrite_phy(o_alb1, albsol1)
1545       CALL histwrite_phy(o_alb2, albsol2)
1546       !FH Sorties pour la couche limite
1547       IF (iflag_pbl>1) THEN
1548          zx_tmp_fi3d=0.
1549          IF (vars_defined) THEN
1550             DO nsrf=1,nbsrf
1551                DO k=1,klev
1552                   zx_tmp_fi3d(:,k)=zx_tmp_fi3d(:,k) &
1553                        +pctsrf(:,nsrf)*pbl_tke(:,k,nsrf)
1554                ENDDO
1555             ENDDO
1556          ENDIF
1557          CALL histwrite_phy(o_tke, zx_tmp_fi3d)
1558
1559          CALL histwrite_phy(o_tke_max, zx_tmp_fi3d)
1560       ENDIF
1561
1562       CALL histwrite_phy(o_kz, coefh(:,:,is_ave))
1563
1564       CALL histwrite_phy(o_kz_max, coefh(:,:,is_ave))
1565
1566       CALL histwrite_phy(o_clwcon, clwcon0)
1567       CALL histwrite_phy(o_dtdyn, d_t_dyn)
1568
1569       CALL histwrite_phy(o_dqdyn, d_q_dyn)
1570
1571       CALL histwrite_phy(o_dqdyn2d,d_q_dyn2d)
1572
1573       CALL histwrite_phy(o_dqldyn, d_ql_dyn)
1574
1575       CALL histwrite_phy(o_dqldyn2d, d_ql_dyn2d)
1576
1577       CALL histwrite_phy(o_dqsdyn, d_qs_dyn)
1578
1579       CALL histwrite_phy(o_dqsdyn2d, d_qs_dyn2d)
1580
1581       CALL histwrite_phy(o_dudyn, d_u_dyn)
1582       CALL histwrite_phy(o_dvdyn, d_v_dyn)
1583
1584       IF (vars_defined) THEN
1585          zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys
1586       ENDIF
1587       CALL histwrite_phy(o_dtcon, zx_tmp_fi3d)
1588       if(iflag_thermals.eq.0)then
1589          IF (vars_defined) THEN
1590             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
1591                  d_t_ajsb(1:klon,1:klev)/pdtphys
1592          ENDIF
1593          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
1594       else if(iflag_thermals.ge.1.and.iflag_wake.EQ.1)then
1595          IF (vars_defined) THEN
1596             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
1597                  d_t_ajs(1:klon,1:klev)/pdtphys + &
1598                  d_t_wake(1:klon,1:klev)/pdtphys
1599          ENDIF
1600          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
1601       endif
1602       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_con(1:klon,1:klev)/pdtphys
1603       CALL histwrite_phy(o_ducon, zx_tmp_fi3d)
1604       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_con(1:klon,1:klev)/pdtphys
1605       CALL histwrite_phy(o_dvcon, zx_tmp_fi3d)
1606       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
1607       CALL histwrite_phy(o_dqcon, zx_tmp_fi3d)
1608       CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1609       CALL histwrite_phy(o_dqcon2d, zx_tmp_fi2d)
1610
1611       IF (iflag_thermals.EQ.0) THEN
1612          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
1613          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
1614       ELSE IF (iflag_thermals.GE.1.AND.iflag_wake.EQ.1) THEN
1615          IF (vars_defined) THEN
1616             zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys + &
1617                  d_q_ajs(1:klon,1:klev)/pdtphys + &
1618                  d_q_wake(1:klon,1:klev)/pdtphys
1619          ENDIF
1620          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
1621       ENDIF
1622
1623       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lsc(1:klon,1:klev)/pdtphys
1624       CALL histwrite_phy(o_dtlsc, zx_tmp_fi3d)
1625       IF (vars_defined) zx_tmp_fi3d(1:klon, 1:klev)=(d_t_lsc(1:klon,1:klev)+ &
1626            d_t_eva(1:klon,1:klev))/pdtphys
1627       CALL histwrite_phy(o_dtlschr, zx_tmp_fi3d)
1628       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys
1629       CALL histwrite_phy(o_dqlsc, zx_tmp_fi3d)
1630       CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1631       CALL histwrite_phy(o_dqlsc2d, zx_tmp_fi2d)
1632       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=beta_prec(1:klon,1:klev)
1633       CALL histwrite_phy(o_beta_prec, zx_tmp_fi3d)
1634!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1635       ! Sorties specifiques a la separation thermiques/non thermiques
1636       IF (iflag_thermals>=1) THEN
1637          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscth(1:klon,1:klev)/pdtphys
1638          CALL histwrite_phy(o_dtlscth, zx_tmp_fi3d)
1639          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscst(1:klon,1:klev)/pdtphys
1640          CALL histwrite_phy(o_dtlscst, zx_tmp_fi3d)
1641          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscth(1:klon,1:klev)/pdtphys
1642          CALL histwrite_phy(o_dqlscth, zx_tmp_fi3d)
1643          CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1644          CALL histwrite_phy(o_dqlscth2d, zx_tmp_fi2d)
1645          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscst(1:klon,1:klev)/pdtphys
1646          CALL histwrite_phy(o_dqlscst, zx_tmp_fi3d)
1647          CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1648          CALL histwrite_phy(o_dqlscst2d, zx_tmp_fi2d)
1649          CALL histwrite_phy(o_plulth, plul_th)
1650          CALL histwrite_phy(o_plulst, plul_st)
1651          IF (vars_defined) THEN
1652             do i=1,klon
1653                zx_tmp_fi2d(1:klon)=lmax_th(:)
1654             enddo
1655          ENDIF
1656          CALL histwrite_phy(o_lmaxth, zx_tmp_fi2d)
1657          IF (vars_defined) THEN
1658             DO k=1,klev
1659                DO i=1,klon
1660                   IF (ptconvth(i,k)) THEN
1661                      zx_tmp_fi3d(i,k)=1.
1662                   ELSE
1663                      zx_tmp_fi3d(i,k)=0.
1664                   ENDIF
1665                ENDDO
1666             ENDDO
1667          ENDIF
1668          CALL histwrite_phy(o_ptconvth, zx_tmp_fi3d)
1669       ENDIF ! iflag_thermals>=1
1670!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1671       zpt_conv = 0.
1672       WHERE (ptconv) zpt_conv = 1.
1673       CALL histwrite_phy(o_ptconv, zpt_conv)
1674!!       IF (vars_defined)         zx_tmp_fi2d=float(itau_con)/float(itap)
1675!!       CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
1676       IF (vars_defined) THEN
1677          zpt_conv2d(:) = 0.
1678          DO k=1,klev
1679            WHERE (ptconv(:,k)) zpt_conv2d(:) = 1.
1680          ENDDO
1681       ENDIF
1682       CALL histwrite_phy(o_ftime_deepcv, zpt_conv2d)
1683       IF (vars_defined) THEN
1684          zx_tmp_fi2d(:) = 0.
1685          DO k=1,klev
1686            WHERE (ptconvth(:,k)) zx_tmp_fi2d(:) = 1.
1687          ENDDO
1688       ENDIF
1689       CALL histwrite_phy(o_ftime_th, zx_tmp_fi2d)
1690       IF (vars_defined) THEN
1691           zx_tmp_fi2d(:) = max(zx_tmp_fi2d(:),zpt_conv2d(:))
1692       ENDIF
1693       CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
1694!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1695       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf(1:klon,1:klev)/pdtphys
1696       CALL histwrite_phy(o_dtvdf, zx_tmp_fi3d)
1697       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_diss(1:klon,1:klev)/pdtphys
1698       CALL histwrite_phy(o_dtdis, zx_tmp_fi3d)
1699       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf(1:klon,1:klev)/pdtphys
1700       CALL histwrite_phy(o_dqvdf, zx_tmp_fi3d)
1701       CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1702       CALL histwrite_phy(o_dqvdf2d, zx_tmp_fi2d)
1703       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_eva(1:klon,1:klev)/pdtphys
1704       CALL histwrite_phy(o_dteva, zx_tmp_fi3d)
1705       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_eva(1:klon,1:klev)/pdtphys
1706       CALL histwrite_phy(o_dqeva, zx_tmp_fi3d)
1707       CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1708       CALL histwrite_phy(o_dqeva2d, zx_tmp_fi2d)
1709       CALL histwrite_phy(o_ratqs, ratqs)
1710       IF (vars_defined) THEN
1711          zx_tmp_fi3d(1:klon,1:klev)=d_t_ajs(1:klon,1:klev)/pdtphys - &
1712               d_t_ajsb(1:klon,1:klev)/pdtphys
1713       ENDIF
1714       CALL histwrite_phy(o_dtthe, zx_tmp_fi3d)
1715       IF (vars_defined) THEN
1716          zx_tmp_fi3d(1:klon,1:klev)=d_u_ajs(1:klon,1:klev)/pdtphys
1717       ENDIF
1718       CALL histwrite_phy(o_duthe, zx_tmp_fi3d)
1719       IF (vars_defined) THEN
1720          zx_tmp_fi3d(1:klon,1:klev)=d_v_ajs(1:klon,1:klev)/pdtphys
1721       ENDIF
1722       CALL histwrite_phy(o_dvthe, zx_tmp_fi3d)
1723
1724       IF (iflag_thermals>=1) THEN
1725          ! Pour l instant 0 a y reflichir pour les thermiques
1726          ! regroupe avec ftime_deepcv et ftime_con
1727          !!zx_tmp_fi2d=0.
1728          !!CALL histwrite_phy(o_ftime_th, zx_tmp_fi2d)
1729          CALL histwrite_phy(o_f_th, fm_therm)
1730          CALL histwrite_phy(o_e_th, entr_therm)
1731          CALL histwrite_phy(o_w_th, zw2)
1732          CALL histwrite_phy(o_q_th, zqasc)
1733          CALL histwrite_phy(o_a_th, fraca)
1734          CALL histwrite_phy(o_cloudth_sth, cloudth_sth)
1735          CALL histwrite_phy(o_cloudth_senv, cloudth_senv)
1736          CALL histwrite_phy(o_cloudth_sigmath, cloudth_sigmath)
1737          CALL histwrite_phy(o_cloudth_sigmaenv, cloudth_sigmaenv)
1738          CALL histwrite_phy(o_d_th, detr_therm)
1739          CALL histwrite_phy(o_f0_th, f0)
1740          CALL histwrite_phy(o_zmax_th, zmax_th)
1741          IF (vars_defined) THEN
1742             zx_tmp_fi3d(1:klon,1:klev)=d_q_ajs(1:klon,1:klev)/pdtphys - &
1743                  d_q_ajsb(1:klon,1:klev)/pdtphys
1744          ENDIF
1745          CALL histwrite_phy(o_dqthe, zx_tmp_fi3d)
1746          CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1747          CALL histwrite_phy(o_dqthe2d, zx_tmp_fi2d)
1748       ENDIF !iflag_thermals
1749       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ajsb(1:klon,1:klev)/pdtphys
1750       CALL histwrite_phy(o_dtajs, zx_tmp_fi3d)
1751       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_ajsb(1:klon,1:klev)/pdtphys
1752       CALL histwrite_phy(o_dqajs, zx_tmp_fi3d)
1753       CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1754       CALL histwrite_phy(o_dqajs2d, zx_tmp_fi2d)
1755       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys
1756       CALL histwrite_phy(o_dtswr, zx_tmp_fi3d)
1757       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_sw0(1:klon,1:klev)/pdtphys
1758       CALL histwrite_phy(o_dtsw0, zx_tmp_fi3d)
1759       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lwr(1:klon,1:klev)/pdtphys
1760       CALL histwrite_phy(o_dtlwr, zx_tmp_fi3d)
1761       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lw0(1:klon,1:klev)/pdtphys
1762       CALL histwrite_phy(o_dtlw0, zx_tmp_fi3d)
1763       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ec(1:klon,1:klev)/pdtphys
1764       CALL histwrite_phy(o_dtec, zx_tmp_fi3d)
1765       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_vdf(1:klon,1:klev)/pdtphys
1766       CALL histwrite_phy(o_duvdf, zx_tmp_fi3d)
1767       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_vdf(1:klon,1:klev)/pdtphys
1768       CALL histwrite_phy(o_dvvdf, zx_tmp_fi3d)
1769       IF (ok_orodr) THEN
1770          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_oro(1:klon,1:klev)/pdtphys
1771          CALL histwrite_phy(o_duoro, zx_tmp_fi3d)
1772          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_oro(1:klon,1:klev)/pdtphys
1773          CALL histwrite_phy(o_dvoro, zx_tmp_fi3d)
1774          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_oro(1:klon,1:klev)/pdtphys
1775          CALL histwrite_phy(o_dtoro, zx_tmp_fi3d)
1776       ENDIF
1777       IF (ok_orolf) THEN
1778          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_lif(1:klon,1:klev)/pdtphys
1779          CALL histwrite_phy(o_dulif, zx_tmp_fi3d)
1780
1781          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_lif(1:klon,1:klev)/pdtphys
1782          CALL histwrite_phy(o_dvlif, zx_tmp_fi3d)
1783
1784          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lif(1:klon,1:klev)/pdtphys
1785          CALL histwrite_phy(o_dtlif, zx_tmp_fi3d)
1786       ENDIF
1787
1788       IF (ok_hines) THEN
1789          CALL histwrite_phy(o_du_gwd_hines, du_gwd_hines/pdtphys)
1790          CALL histwrite_phy(o_dv_gwd_hines, dv_gwd_hines/pdtphys)
1791          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_hin(1:klon,1:klev)/pdtphys
1792          CALL histwrite_phy(o_dthin, zx_tmp_fi3d)
1793          CALL histwrite_phy(o_ustr_gwd_hines, zustr_gwd_hines)
1794          CALL histwrite_phy(o_vstr_gwd_hines, zvstr_gwd_hines)
1795       ENDIF
1796
1797       IF (.not. ok_hines .and. ok_gwd_rando) THEN
1798          CALL histwrite_phy(o_du_gwd_front, du_gwd_front / pdtphys)
1799          CALL histwrite_phy(o_dv_gwd_front, dv_gwd_front / pdtphys)
1800          CALL histwrite_phy(o_ustr_gwd_front, zustr_gwd_front)
1801          CALL histwrite_phy(o_vstr_gwd_front, zvstr_gwd_front)
1802       ENDIF
1803
1804       IF (ok_gwd_rando) THEN
1805          CALL histwrite_phy(o_du_gwd_rando, du_gwd_rando / pdtphys)
1806          CALL histwrite_phy(o_dv_gwd_rando, dv_gwd_rando / pdtphys)
1807          CALL histwrite_phy(o_ustr_gwd_rando, zustr_gwd_rando)
1808          CALL histwrite_phy(o_vstr_gwd_rando, zvstr_gwd_rando)
1809          CALL histwrite_phy(o_east_gwstress, east_gwstress )
1810          CALL histwrite_phy(o_west_gwstress, west_gwstress )
1811       ENDIF
1812
1813       IF (ok_qch4) THEN
1814          CALL histwrite_phy(o_dqch4, d_q_ch4 / pdtphys)
1815       ENDIF
1816
1817       DO k=1, klevp1
1818         zx_tmp_fi3d1(:,k)=swup(:,k)*swradcorr(:)
1819       ENDDO
1820       CALL histwrite_phy(o_rsu, zx_tmp_fi3d1)
1821       DO k=1, klevp1
1822         zx_tmp_fi3d1(:,k)=swdn(:,k)*swradcorr(:)
1823       ENDDO
1824       CALL histwrite_phy(o_rsd, zx_tmp_fi3d1)
1825       DO k=1, klevp1
1826         zx_tmp_fi3d1(:,k)=swup0(:,k)*swradcorr(:)
1827       ENDDO
1828       CALL histwrite_phy(o_rsucs, zx_tmp_fi3d1)
1829       DO k=1, klevp1
1830         zx_tmp_fi3d1(:,k)=swupc0(:,k)*swradcorr(:)
1831       ENDDO
1832       CALL histwrite_phy(o_rsucsaf, zx_tmp_fi3d1)
1833       DO k=1, klevp1
1834         zx_tmp_fi3d1(:,k)=swdn0(:,k)*swradcorr(:)
1835       ENDDO
1836       CALL histwrite_phy(o_rsdcs, zx_tmp_fi3d1)
1837       DO k=1, klevp1
1838         zx_tmp_fi3d1(:,k)=swdnc0(:,k)*swradcorr(:)
1839       ENDDO
1840       CALL histwrite_phy(o_rsdcsaf, zx_tmp_fi3d1)
1841
1842       CALL histwrite_phy(o_rlu, lwup)
1843       CALL histwrite_phy(o_rld, lwdn)
1844       CALL histwrite_phy(o_rlucs, lwup0)
1845       CALL histwrite_phy(o_rldcs, lwdn0)
1846
1847       IF (vars_defined) THEN
1848          zx_tmp_fi3d(1:klon,1:klev)=d_t(1:klon,1:klev)+ &
1849               d_t_dyn(1:klon,1:klev)
1850       ENDIF
1851       CALL histwrite_phy(o_tnt, zx_tmp_fi3d)
1852
1853       IF (vars_defined) THEN
1854          zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys + &
1855               d_t_lwr(1:klon,1:klev)/pdtphys
1856       ENDIF
1857       CALL histwrite_phy(o_tntr, zx_tmp_fi3d)
1858       IF (vars_defined) THEN
1859          zx_tmp_fi3d(1:klon,1:klev)= (d_t_lsc(1:klon,1:klev)+ &
1860               d_t_eva(1:klon,1:klev)+ &
1861               d_t_vdf(1:klon,1:klev))/pdtphys
1862       ENDIF
1863       CALL histwrite_phy(o_tntscpbl, zx_tmp_fi3d)
1864       IF (vars_defined) THEN
1865          zx_tmp_fi3d(1:klon,1:klev)=d_qx(1:klon,1:klev,ivap)+ &
1866               d_q_dyn(1:klon,1:klev)
1867       ENDIF
1868       CALL histwrite_phy(o_tnhus, zx_tmp_fi3d)
1869       IF (vars_defined) THEN
1870          zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys+ &
1871               d_q_eva(1:klon,1:klev)/pdtphys
1872       ENDIF
1873       CALL histwrite_phy(o_tnhusscpbl, zx_tmp_fi3d)
1874       CALL histwrite_phy(o_evu, coefm(:,:,is_ave))
1875       IF (vars_defined) THEN
1876          zx_tmp_fi3d(1:klon,1:klev)=q_seri(1:klon,1:klev)+ &
1877               ql_seri(1:klon,1:klev)
1878       ENDIF
1879       CALL histwrite_phy(o_h2o, zx_tmp_fi3d)
1880       IF (iflag_con >= 3) THEN
1881          IF (vars_defined) THEN
1882             zx_tmp_fi3d(1:klon,1:klev)=-1 * (dnwd(1:klon,1:klev)+ &
1883                  dnwd0(1:klon,1:klev))
1884          ENDIF
1885          CALL histwrite_phy(o_mcd, zx_tmp_fi3d)
1886          IF (vars_defined) THEN
1887             zx_tmp_fi3d(1:klon,1:klev)=upwd(1:klon,1:klev) + &
1888                  dnwd(1:klon,1:klev)+ dnwd0(1:klon,1:klev)
1889          ENDIF
1890          CALL histwrite_phy(o_dmc, zx_tmp_fi3d)
1891       ELSE IF (iflag_con == 2) THEN
1892          CALL histwrite_phy(o_mcd,  pmfd)
1893          CALL histwrite_phy(o_dmc,  pmfu + pmfd)
1894       ENDIF
1895       CALL histwrite_phy(o_ref_liq, ref_liq)
1896       CALL histwrite_phy(o_ref_ice, ref_ice)
1897!
1898       IF (ok_4xCO2atm) THEN
1899          IF (vars_defined) zx_tmp_fi2d(:) = swupp(:,klevp1)*swradcorr(:)
1900          CALL histwrite_phy(o_rsut4co2, zx_tmp_fi2d)
1901          IF (vars_defined) zx_tmp_fi2d(:) = lwupp(:,klevp1)
1902          CALL histwrite_phy(o_rlut4co2, zx_tmp_fi2d)
1903          IF (vars_defined) zx_tmp_fi2d(:) = swup0p(:,klevp1)*swradcorr(:)
1904          CALL histwrite_phy(o_rsutcs4co2, zx_tmp_fi2d)
1905          IF (vars_defined) zx_tmp_fi2d(:) = lwup0p(:,klevp1)
1906          CALL histwrite_phy(o_rlutcs4co2, zx_tmp_fi2d)
1907          DO k=1, klevp1
1908            zx_tmp_fi3d1(:,k)=swupp(:,k)*swradcorr(:)
1909          ENDDO
1910          CALL histwrite_phy(o_rsu4co2, zx_tmp_fi3d1)
1911          DO k=1, klevp1
1912            zx_tmp_fi3d1(:,k)=swup0p(:,k)*swradcorr(:)
1913          ENDDO
1914          CALL histwrite_phy(o_rsucs4co2, zx_tmp_fi3d1)
1915          DO k=1, klevp1
1916            zx_tmp_fi3d1(:,k)=swdnp(:,k)*swradcorr(:)
1917          ENDDO
1918          CALL histwrite_phy(o_rsd4co2, zx_tmp_fi3d1)
1919          DO k=1, klevp1
1920            zx_tmp_fi3d1(:,k)=swdn0p(:,k)*swradcorr(:)
1921          ENDDO
1922          CALL histwrite_phy(o_rsdcs4co2, zx_tmp_fi3d1)
1923          CALL histwrite_phy(o_rlu4co2, lwupp)
1924          CALL histwrite_phy(o_rlucs4co2, lwup0p)
1925          CALL histwrite_phy(o_rld4co2, lwdnp)
1926          CALL histwrite_phy(o_rldcs4co2, lwdn0p)
1927       ENDIF !ok_4xCO2atm
1928!!!!!!!!!!!! Sorties niveaux de pression NMC !!!!!!!!!!!!!!!!!!!!
1929#ifdef CPP_IOIPSL
1930#ifndef CPP_XIOS
1931  IF (.NOT.ok_all_xml) THEN
1932       ! ATTENTION, LES ANCIENS HISTWRITE ONT ETES CONSERVES EN ATTENDANT MIEUX:
1933       ! Champs interpolles sur des niveaux de pression
1934       missing_val=missing_val_nf90
1935       DO iff=7, nfiles-1 !--OB: here we deal with files 7,8,9
1936
1937          CALL histwrite_phy(o_tnondef,tnondef(:,:,iff-6),iff)
1938          CALL histwrite_phy(o_ta,twriteSTD(:,:,iff-6),iff)
1939          CALL histwrite_phy(o_zg,phiwriteSTD(:,:,iff-6),iff)
1940          CALL histwrite_phy(o_hus,qwriteSTD(:,:,iff-6),iff)
1941          CALL histwrite_phy(o_hur,rhwriteSTD(:,:,iff-6),iff)
1942          CALL histwrite_phy(o_ua,uwriteSTD(:,:,iff-6),iff)
1943          CALL histwrite_phy(o_va,vwriteSTD(:,:,iff-6),iff)
1944          CALL histwrite_phy(o_wap,wwriteSTD(:,:,iff-6),iff)
1945          IF (vars_defined) THEN
1946             DO k=1, nlevSTD
1947                DO i=1, klon
1948                   IF (tnondef(i,k,iff-6).NE.missing_val) THEN
1949                      IF (freq_outNMC(iff-6).LT.0) THEN
1950                         freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
1951                      ELSE
1952                         freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
1953                      ENDIF
1954                      zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,iff-6))/freq_moyNMC(iff-6)
1955                   ELSE
1956                      zx_tmp_fi3d_STD(i,k) = missing_val
1957                   ENDIF
1958                ENDDO
1959             ENDDO
1960          ENDIF
1961          CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD,iff)
1962          IF (vars_defined) THEN
1963             DO k=1, nlevSTD
1964                DO i=1, klon
1965                   IF (O3sumSTD(i,k,iff-6).NE.missing_val) THEN
1966                      zx_tmp_fi3d_STD(i,k) = O3sumSTD(i,k,iff-6) * 1.e+9
1967                   ELSE
1968                      zx_tmp_fi3d_STD(i,k) = missing_val
1969                   ENDIF
1970                ENDDO
1971             ENDDO !k=1, nlevSTD
1972          ENDIF
1973          CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD,iff)
1974          IF (read_climoz == 2) THEN
1975             IF (vars_defined) THEN
1976                DO k=1, nlevSTD
1977                   DO i=1, klon
1978                      IF (O3daysumSTD(i,k,iff-6).NE.missing_val) THEN
1979                         zx_tmp_fi3d_STD(i,k) = O3daysumSTD(i,k,iff-6) * 1.e+9
1980                      ELSE
1981                         zx_tmp_fi3d_STD(i,k) = missing_val
1982                      ENDIF
1983                   ENDDO
1984                ENDDO !k=1, nlevSTD
1985             ENDIF
1986             CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD,iff)
1987          endif
1988          CALL histwrite_phy(o_uxv,uvsumSTD(:,:,iff-6),iff)
1989          CALL histwrite_phy(o_vxq,vqsumSTD(:,:,iff-6),iff)
1990          CALL histwrite_phy(o_vxT,vTsumSTD(:,:,iff-6),iff)
1991          CALL histwrite_phy(o_wxq,wqsumSTD(:,:,iff-6),iff)
1992          CALL histwrite_phy(o_vxphi,vphisumSTD(:,:,iff-6),iff)
1993          CALL histwrite_phy(o_wxT,wTsumSTD(:,:,iff-6),iff)
1994          CALL histwrite_phy(o_uxu,u2sumSTD(:,:,iff-6),iff)
1995          CALL histwrite_phy(o_vxv,v2sumSTD(:,:,iff-6),iff)
1996          CALL histwrite_phy(o_TxT,T2sumSTD(:,:,iff-6),iff)
1997       ENDDO !nfiles
1998  ENDIF
1999#endif
2000#endif
2001#ifdef CPP_XIOS
2002  IF (ok_all_xml) THEN
2003!      DO iff=7, nfiles
2004
2005!         CALL histwrite_phy(o_tnondef,tnondef(:,:,3))
2006          CALL histwrite_phy(o_ta,tlevSTD(:,:))
2007          CALL histwrite_phy(o_zg,philevSTD(:,:))
2008          CALL histwrite_phy(o_hus,qlevSTD(:,:))
2009          CALL histwrite_phy(o_hur,rhlevSTD(:,:))
2010          CALL histwrite_phy(o_ua,ulevSTD(:,:))
2011          CALL histwrite_phy(o_va,vlevSTD(:,:))
2012          CALL histwrite_phy(o_wap,wlevSTD(:,:))
2013!         IF (vars_defined) THEN
2014!            DO k=1, nlevSTD
2015!               DO i=1, klon
2016!                  IF (tnondef(i,k,3).NE.missing_val) THEN
2017!                     IF (freq_outNMC(iff-6).LT.0) THEN
2018!                        freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
2019!                     ELSE
2020!                        freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
2021!                     ENDIF
2022!                     zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,3))/freq_moyNMC(iff-6)
2023!                  ELSE
2024!                     zx_tmp_fi3d_STD(i,k) = missing_val
2025!                  ENDIF
2026!               ENDDO
2027!            ENDDO
2028!         ENDIF
2029!         CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD)
2030          IF (vars_defined) THEN
2031             DO k=1, nlevSTD
2032                DO i=1, klon
2033                   IF (O3STD(i,k).NE.missing_val) THEN
2034                      zx_tmp_fi3d_STD(i,k) = O3STD(i,k) * 1.e+9
2035                   ELSE
2036                      zx_tmp_fi3d_STD(i,k) = missing_val
2037                   ENDIF
2038                ENDDO
2039             ENDDO !k=1, nlevSTD
2040          ENDIF
2041          CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD)
2042          IF (read_climoz == 2) THEN
2043             IF (vars_defined) THEN
2044                DO k=1, nlevSTD
2045                   DO i=1, klon
2046                      IF (O3daySTD(i,k).NE.missing_val) THEN
2047                         zx_tmp_fi3d_STD(i,k) = O3daySTD(i,k) * 1.e+9
2048                      ELSE
2049                         zx_tmp_fi3d_STD(i,k) = missing_val
2050                      ENDIF
2051                   ENDDO
2052                ENDDO !k=1, nlevSTD
2053             ENDIF
2054             CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD)
2055          ENDIF
2056          CALL histwrite_phy(o_uxv,uvSTD(:,:))
2057          CALL histwrite_phy(o_vxq,vqSTD(:,:))
2058          CALL histwrite_phy(o_vxT,vTSTD(:,:))
2059          CALL histwrite_phy(o_wxq,wqSTD(:,:))
2060          CALL histwrite_phy(o_vxphi,vphiSTD(:,:))
2061          CALL histwrite_phy(o_wxT,wTSTD(:,:))
2062          CALL histwrite_phy(o_uxu,u2STD(:,:))
2063          CALL histwrite_phy(o_vxv,v2STD(:,:))
2064          CALL histwrite_phy(o_TxT,T2STD(:,:))
2065!      ENDDO !nfiles
2066  ENDIF
2067#endif
2068!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2069       IF (iflag_phytrac == 1 ) then
2070       IF (nqtot.GE.nqo+1) THEN
2071          DO iq=nqo+1, nqtot
2072            IF (type_trac == 'lmdz' .OR. type_trac == 'repr' .OR. type_trac == 'coag') THEN
2073             !--3D fields
2074             CALL histwrite_phy(o_trac(iq-nqo), tr_seri(:,:,iq-nqo))
2075             CALL histwrite_phy(o_dtr_vdf(iq-nqo),d_tr_cl(:,:,iq-nqo))
2076             CALL histwrite_phy(o_dtr_the(iq-nqo),d_tr_th(:,:,iq-nqo))
2077             CALL histwrite_phy(o_dtr_con(iq-nqo),d_tr_cv(:,:,iq-nqo))
2078             CALL histwrite_phy(o_dtr_lessi_impa(iq-nqo),d_tr_lessi_impa(:,:,iq-nqo))
2079             CALL histwrite_phy(o_dtr_lessi_nucl(iq-nqo),d_tr_lessi_nucl(:,:,iq-nqo))
2080             CALL histwrite_phy(o_dtr_insc(iq-nqo),d_tr_insc(:,:,iq-nqo))
2081             CALL histwrite_phy(o_dtr_bcscav(iq-nqo),d_tr_bcscav(:,:,iq-nqo))
2082             CALL histwrite_phy(o_dtr_evapls(iq-nqo),d_tr_evapls(:,:,iq-nqo))
2083             CALL histwrite_phy(o_dtr_ls(iq-nqo),d_tr_ls(:,:,iq-nqo))
2084             CALL histwrite_phy(o_dtr_trsp(iq-nqo),d_tr_trsp(:,:,iq-nqo))
2085             CALL histwrite_phy(o_dtr_sscav(iq-nqo),d_tr_sscav(:,:,iq-nqo))
2086             CALL histwrite_phy(o_dtr_sat(iq-nqo),d_tr_sat(:,:,iq-nqo))
2087             CALL histwrite_phy(o_dtr_uscav(iq-nqo),d_tr_uscav(:,:,iq-nqo))
2088             !--2D fields
2089             CALL histwrite_phy(o_dtr_dry(iq-nqo), flux_tr_dry(:,iq-nqo))
2090             zx_tmp_fi2d=0.
2091             IF (vars_defined) THEN
2092                DO k=1,klev
2093                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,iq-nqo)
2094                ENDDO
2095             ENDIF
2096#ifndef REPROBUS
2097             CALL histwrite_phy(o_trac_cum(iq-nqo), zx_tmp_fi2d)
2098#endif
2099            ENDIF
2100          ENDDO
2101       ENDIF
2102
2103       IF (type_trac == 'repr') THEN
2104#ifdef REPROBUS
2105           DO iq=1,nbnas
2106             CALL histwrite_phy(o_nas(iq), nas(:,:,iq))
2107           ENDDO
2108#endif
2109       ENDIF
2110
2111       ENDIF   !(iflag_phytrac==1)
2112
2113
2114       IF (.NOT.vars_defined) THEN
2115          !$OMP MASTER
2116#ifndef CPP_IOIPSL_NO_OUTPUT
2117          DO iff=1,nfiles
2118             IF (clef_files(iff)) THEN
2119                CALL histend(nid_files(iff))
2120                ndex2d = 0
2121                ndex3d = 0
2122             ENDIF ! clef_files
2123          ENDDO !  iff
2124#endif
2125#ifdef CPP_XIOS
2126          !On finalise l'initialisation:
2127          CALL wxios_closedef()
2128#endif
2129          !$OMP END MASTER
2130          !$OMP BARRIER
2131          vars_defined = .TRUE.
2132
2133       ENDIF !--.NOT.vars_defined
2134
2135    ENDDO
2136
2137    IF (vars_defined) THEN
2138       ! On synchronise les fichiers pour IOIPSL
2139#ifndef CPP_IOIPSL_NO_OUTPUT
2140       !$OMP MASTER
2141       DO iff=1,nfiles
2142          IF (ok_sync .AND. clef_files(iff)) THEN
2143             CALL histsync(nid_files(iff))
2144          ENDIF
2145       END DO
2146       !$OMP END MASTER
2147#endif
2148    ENDIF
2149
2150  END SUBROUTINE phys_output_write
2151
2152END MODULE phys_output_write_mod
Note: See TracBrowser for help on using the repository browser.