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

Last change on this file since 3686 was 3666, checked in by lfalletti, 4 years ago

Adding changes for Reprobus

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