source: LMDZ6/branches/IPSL-CM6A-MR/libf/phylmd/phys_output_write_mod.F90 @ 3823

Last change on this file since 3823 was 3823, checked in by musat, 3 years ago

Nouveaux calculs a 2m et 10m

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