source: LMDZ6/branches/DYNAMICO-conv/libf/phylmd/phys_output_write_mod.F90 @ 3405

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

First attempt at merging with trunk

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