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

Last change on this file since 3842 was 3842, checked in by acaubel, 3 years ago

Reported commit [3748] on branch IPSL-CM6A-MR to allow XIOS to detect missing value correctly.

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