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

Last change on this file since 5263 was 5252, checked in by abarral, 9 months ago

Wrap uses of cpp key REPROBUS and CPP_STRATAER
Add REPROBUS wrapper

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