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

Last change on this file since 3412 was 3381, checked in by oboucher, 6 years ago

toplwad diagnostic works with INCA aeNP aerosols as well

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