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

Last change on this file since 5007 was 5007, checked in by evignon, 2 months ago

ajout de la nouvelle paramétrisation du partitonnement de phase
dans les nuages de phase mixte de Lea Raillard
La parametrisation s'active avec iflag_icefrac=1 et est fondé
sur la theorie de creation et maintien de sursaturation en atmosphere
turbulente avec ou sans presence de cristaux de glace

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