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

Last change on this file since 3702 was 3702, checked in by oboucher, 4 years ago

Shorten variable names and make polynom calculation faster for onshort/offshore wind capacity factors

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