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

Last change on this file since 4799 was 4773, checked in by idelkadi, 19 months ago
  • Update of Ecrad in LMDZ The same organization of the Ecrad offline version is retained in order to facilitate the updating of Ecrad in LMDZ and the comparison between online and offline results. version 1.6.1 of Ecrad (https://github.com/lguez/ecrad.git)
  • Implementation of the double call of Ecrad in LMDZ


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