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

Last change on this file since 3913 was 3900, checked in by evignon, 3 years ago

Commission de la nouvelle interface LMDZ-SISVAT
la prochaine commission consistera a supprimer l'ancien repertoire sisvat
et a faire un peu de nettoyage.

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