source: LMDZ6/branches/contrails/libf/phylmd/phys_output_write_mod.F90 @ 5452

Last change on this file since 5452 was 5452, checked in by aborella, 39 hours ago

First implementation of the contrails parameterisation
Lacks the emission of H2O + the impact on radiative transfer

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