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

Last change on this file since 3622 was 3622, checked in by oboucher, 4 years ago

Adding a diagnostics for the 100-m wind for estimating renewables

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