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

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

Bug fix: revert revision [3601]

Bug fix: revert revision [3601]. Procedure phys_output_write is
called a first time by physiq before the call to phyetat0, so before
ftsoil is allocated. So we cannot reference `ftsoil(:, nsoilmx,
is_ter) in phys_output_write`.

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