source: LMDZ6/branches/Ocean_skin/libf/phylmd/phys_output_write_mod.F90 @ 3744

Last change on this file since 3744 was 3744, checked in by lguez, 4 years ago

Store delta_sst instead of sst_nff

Store as a state variable the difference between ocean-air interface
temperature and bulk SST instead of sst_nff, which can be either
interface temperature or bulk SST. This is clearer. Also, it is
analoguous to what we will do with salinity.

So replace the two dummy arguments tsurf_in and sst_nff of
procedure cpl_send_ocean_fields by a single dummy argument
delta_sst. Replace dummy argument sst_nff of procedures
ocean_cpl_noice and surf_ocean by dummy argument
delta_sst. Replace variable sst_nff of module phys_state_var_mod
by variable delta_sst. Rename local variable ysst_nff of procedure
pbl_surface to ydelta_sst. Set variable delta_sst of module
phys_state_var_mod to 0 for an appearing ocean fraction and a
missing startup field. Replace variable o_sst_nff of module
phys_output_ctrlout_mod by variable o_delta_sst.

Rename variables cpl_delta_temp and cpl_delta_temp_2D of module
cpl_mod to cpl_delta_sst and cpl_delta_sst_2D, clearer. Rename
variable ids_delta_temp of module oasis to ids_delta_sst. Change
infosend(ids_delta_temp)%name to "CODELSST".

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