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

Last change on this file since 3623 was 3623, checked in by Laurent Fairhead, 4 years ago

missing_val should really be missing_val_f90

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