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

Last change on this file since 4046 was 4046, checked in by dcugnet, 2 years ago

First commit for new tracers.

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