source: LMDZ6/branches/blowing_snow/libf/phylmd/phys_output_write_mod.F90 @ 5225

Last change on this file since 5225 was 4485, checked in by evignon, 20 months ago

premier commit pour l'ajout de la neige soufflee sur la nouvelle branche

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