source: LMDZ6/branches/LMDZ_ECRad/libf/phylmd/phys_output_write_mod.F90 @ 4188

Last change on this file since 4188 was 4188, checked in by idelkadi, 2 years ago

Implementation of the Ecrad radiative transfer code in the LMD model (continued) :
Integration of aerosols (direct effect)

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