source: LMDZ6/branches/LMDZ-INCA-Dyn/libf/phylmd/phys_output_write_mod.F90 @ 5428

Last change on this file since 5428 was 3799, checked in by lguez, 4 years ago

Bug fix: no operation in arg of histwrite_phy

An operation like zx_rhl*100. in the actual argument of
histwrite_phy crashes the code if it is compiled in debug mode: at
the first call of phys_output_write_mod, zx_rhl is not defined.

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