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

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

Most of the changes are intended to help to eventually remove the constraints about the tracers assumptions, in particular water tracers.

  • Remove index tables itr_indice and niadv, replaced by tracers(:)%isAdvected and tracers(:)%isH2OFamily. Most of the loops are now from 1 to nqtot:
    • DO iq=nqo+1,nqtot loops are replaced with: DO iq=1,nqtot

IF(tracers(iq)%isH2Ofamily) CYCLE

  • DO it=1,nbtr; iq=niadv(it+nqo)

and DO it=1,nqtottr; iq=itr_indice(it) loops are replaced with:

it = 0
DO iq = 1, nqtot

IF(.NOT.tracers(iq)%isAdvected .OR. tracers(iq)%isH2Ofamily) CYCLE
it = it+1

  • Move some StratAer? related code from infotrac to infotrac_phy
  • Remove "nqperes" variable:

DO iq=1,nqpere loops are replaced with:
DO iq=1,nqtot

IF(tracers(iq)%parent/='air') CYCLE

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