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

Last change on this file since 3981 was 3956, checked in by jyg, 3 years ago

Bug fixes concerning various variables ill-initialized, ill-used, ill-printed, or ill-placed.
+ cv_gen moved from phys_local_var_mod.F90 to phys_state_var_mod.F90; ==> changes in physiq_mod.F90
and phys_output_write.F90
+ awake_dens added in phys_state_var_mod.F90
+ cv_gen and awake_dens now initialized in phyetat0.F90 and written in phyredem.F90
+ cv_gen, awake_dens, and solswfdiff now initialized in old_lmdz1d.F90 and scm.F90
+ useless variables suppressed in pbl_surface_mod.F90.

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