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

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

Adding proper hybrid coordinates coefficients as per rhe CMIP6 data request

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