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

Last change on this file since 5489 was 5489, checked in by aborella, 9 days ago

Merge with trunk

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