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

Last change on this file since 4617 was 4608, checked in by acozic, 2 years ago

Add of an output file containing mass flow when offline parameter is to "yes"
this file will be on horizontal grid with vertical level klev
When LMDZ is coupled to Inca, we don't call anymore the routine phystoken if offline=y

Anne Cozic

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