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

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

Correcting initialisation of missing_val for the computation of wind100m
Then other initialisations lower down in the code are removed.

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