source: LMDZ6/branches/LMDZ_DECOUPLE/libf/phylmd/phys_output_write_mod.F90 @ 5006

Last change on this file since 5006 was 4795, checked in by nfevrier, 11 months ago

First save of N. Février's modifications

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