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

Last change on this file since 5272 was 5267, checked in by abarral, 45 hours ago

Remove CPP_IOIPSL cpp keys uses

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