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

Last change on this file since 3523 was 3523, checked in by fhourdin, 6 years ago

Sortie specifique de iflag_con==3

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