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

Last change on this file since 4071 was 4071, checked in by dcugnet, 2 years ago
  • Fix for unadvected tracers (iadv==0)
  • The key %isH2Ofamily, from the derived type "trac_type", is replaced with the more general

key %isInPhysics, which is TRUE for tracers both in "qx" and "tr_seri".

Currently, FALSE for tracers descending on H2O (isotopes and tagging tracers included). Could be set to FALSE
for interactive CO2 (type_trac=='inco') or ice supersaturated cloud content (tranfered to "rneb_seri")

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