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

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

Modify sensible heat due to rain sent to the ocean

Modify the sensible heat flux due to rain which is sent to the
ocean. Replace the computation of sens_prec_liq in procedure
calcul_fluxs by a call to sens_heat_rain. Set sens_prec_sol in
procedure calcul_fluxs to 0 because, for now, sens_heat_rain is
supposed to account for both rain and snow.

For the call to sens_heat_rain in procedure calcul_fluxs, we need
an additional dummy argument rhoa of calcul_fluxs. Add dummy
argument rhoa to ocean_cpl_noice, ocean_forced_noice,
ocean_forced_ice and ocean_cpl_ice because we need to pass it down
to calcul_fluxs.

Change the dimension of sens_prec_liq and sens_prec_sol in
procedures calcul_fluxs, ocean_cpl_noice, ocean_cpl_ice,
ocean_forced_noice, ocean_forced_ice, cpl_send_ocean_fields and
cpl_send_seaice_fields to knon.

In procedures ocean_forced_noice and ocean_cpl_noice, promote
sens_prec_liq from local variable to dummy argument because we need
it in surf_ocean. Remove useless initialization of sens_prec_liq
and sens_prec_sol in ocean_cpl_noice, ocean_cpl_ice,
ocean_forced_ice and ocean_forced_noice: they are intent out in
calcul_fluxs.

Remove variable rf of module phys_output_var_mod, we use
sens_prec_liq instead. Remove local variable yrf of procedure
pbl_surface. rf and yrf appeared in pbl_surface only to be output.
Remove variable o_rf of module phys_output_ctrlout_mod. Remove
dummy argument rf of procedure surf_ocean.

Do not call sens_heat_rain in surf_ocean since we now call it
from calcul_fluxs. Move the computation of rhoa in surf_ocean
before the calls to ocean_cpl_noice and ocean_forced_noice.

Add the computation of rhoa in surf_seaice, to pass it down to
ocean_cpl_ice and ocean_forced_ice.

If activate_ocean_skin == 1 then the results are changed because the
call to sens_heat_rain in calcul_fluxs now uses the SST from the
current time step of physics. On this point, the present revision
reverses revision [3463].

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