source: LMDZ6/branches/Ocean_skin/libf/phylmd/phys_output_write_mod.F90

Last change on this file was 4368, checked in by lguez, 18 months ago

Sync latest trunk changes to Ocean_skin

  • 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 4368 2022-12-05 23:01:16Z 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, type_trac, 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, dter, dser
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, 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    CHARACTER(LEN=maxlen) :: unt
484#endif
485    REAL,DIMENSION(klon,klev) :: z, dz
486    REAL,DIMENSION(klon)      :: zrho, zt
487
488    ! On calcul le nouveau tau:
489    itau_w = itau_phy + itap
490    ! On le donne à iophy pour que les histwrite y aient accès:
491    CALL set_itau_iophy(itau_w)
492
493 !   IF (.NOT.vars_defined) THEN
494       iinitend = 1
495 !   ELSE
496 !      iinitend = 1
497 !   ENDIF
498
499#ifdef CPP_XIOS
500    CALL wxios_set_context
501#endif
502
503#ifndef CPP_XIOS
504    missing_val=missing_val_nf90
505#endif
506
507    IF (.NOT.vars_defined) THEN
508      kmax_100m=1
509      DO k=1, klev-1
510        IF (presnivs(k).GT.0.97*101325.) kmax_100m = k !--finding out max level for 100 m with a good margin
511      ENDDO
512    ENDIF
513
514    Ahyb_bounds(1,1) = 0.
515    Ahyb_bounds(1,2) = aps(1)
516    Bhyb_bounds(1,1) = 1.
517    Bhyb_bounds(1,2) = bps(1)   
518    DO ilev=2,klev
519      Ahyb_bounds(ilev,1) = aps(ilev-1)
520      Ahyb_bounds(ilev,2) = aps(ilev)
521      Bhyb_bounds(ilev,1) = bps(ilev-1)
522      Bhyb_bounds(ilev,2) = bps(ilev)
523    ENDDO
524     Ahyb_bounds(klev+1,1) = aps(klev)
525     Ahyb_bounds(klev+1,2) = 0.
526     Bhyb_bounds(klev+1,1) = bps(klev)
527     Bhyb_bounds(klev+1,2) = 0.
528
529    DO ilev=1, klev
530      Ahyb_mid_bounds(ilev,1) = ap(ilev)
531      Ahyb_mid_bounds(ilev,2) = ap(ilev+1)
532      Bhyb_mid_bounds(ilev,1) = bp(ilev)
533      Bhyb_mid_bounds(ilev,2) = bp(ilev+1)
534    END DO
535
536#ifdef CPP_XIOS
537#ifdef CPP_StratAer
538!$OMP MASTER
539   IF (.NOT.vars_defined) THEN
540          !On ajoute les variables 3D traceurs par l interface fortran
541          CALL xios_get_handle("fields_strataer_trac_3D", group_handle)
542          ! On boucle sur les traceurs pour les ajouter au groupe puis fixer les attributs
543          DO iq = 1, nqtot
544            IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
545            dn = 'd'//TRIM(tracers(iq)%name)//'_'
546            WRITE (lunout,*) 'XIOS var=', nqo, iq, nqtot, tracers(iq)%name
547
548            unt = "kg kg-1"
549            varname=trim(tracers(iq)%name)
550            CALL xios_add_child(group_handle, child, varname)
551            CALL xios_set_attr(child, name=varname, unit=unt)
552
553            unt = "kg kg-1 s-1"
554            varname=TRIM(dn)//'vdf'
555            CALL xios_add_child(group_handle, child, varname)
556            CALL xios_set_attr(child, name=varname, unit=unt)
557            varname=TRIM(dn)//'the'
558            CALL xios_add_child(group_handle, child, varname)
559            CALL xios_set_attr(child, name=varname, unit=unt)
560            varname=TRIM(dn)//'con'
561            CALL xios_add_child(group_handle, child, varname)
562            CALL xios_set_attr(child, name=varname, unit=unt)
563            varname=TRIM(dn)//'lessi_impa'
564            CALL xios_add_child(group_handle, child, varname)
565            CALL xios_set_attr(child, name=varname, unit=unt)
566            varname=TRIM(dn)//'lessi_nucl'
567            CALL xios_add_child(group_handle, child, varname)
568            CALL xios_set_attr(child, name=varname, unit=unt)
569            varname=TRIM(dn)//'insc'
570            CALL xios_add_child(group_handle, child, varname)
571            CALL xios_set_attr(child, name=varname, unit=unt)
572            varname=TRIM(dn)//'bcscav'
573            CALL xios_add_child(group_handle, child, varname)
574            CALL xios_set_attr(child, name=varname, unit=unt)
575            varname=TRIM(dn)//'evapls'
576            CALL xios_add_child(group_handle, child, varname)
577            CALL xios_set_attr(child, name=varname, unit=unt)
578            varname=TRIM(dn)//'ls'
579            CALL xios_add_child(group_handle, child, varname)
580            CALL xios_set_attr(child, name=varname, unit=unt)
581            varname=TRIM(dn)//'trsp'
582            CALL xios_add_child(group_handle, child, varname)
583            CALL xios_set_attr(child, name=varname, unit=unt)
584            varname=TRIM(dn)//'sscav'
585            CALL xios_add_child(group_handle, child, varname)
586            CALL xios_set_attr(child, name=varname, unit=unt)
587            varname=TRIM(dn)//'sat'
588            CALL xios_add_child(group_handle, child, varname)
589            CALL xios_set_attr(child, name=varname, unit=unt)
590            varname=TRIM(dn)//'uscav'
591            CALL xios_add_child(group_handle, child, varname)
592            CALL xios_set_attr(child, name=varname, unit=unt)
593          END DO
594          !On ajoute les variables 2D traceurs par l interface fortran
595          CALL xios_get_handle("fields_strataer_trac_2D", group_handle)
596          ! On boucle sur les traceurs pour les ajouter au groupe puis fixer les attributs
597          DO iq = 1, nqtot
598            IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
599
600            unt = "kg m-2"
601            varname='cum'//trim(tracers(iq)%name)
602            WRITE (lunout,*) 'XIOS var=', iq, nqtot, varname
603            CALL xios_add_child(group_handle, child, varname)
604            CALL xios_set_attr(child, name=varname, unit=unt)
605
606            unt = "kg m-2 s-1"
607            varname='cumd'//trim(tracers(iq)%name)//'_dry'
608            CALL xios_add_child(group_handle, child, varname)
609            CALL xios_set_attr(child, name=varname, unit=unt)
610          ENDDO
611    ENDIF
612!$OMP END MASTER
613#endif
614#endif
615
616    ! ug la boucle qui suit ne sert qu'une fois, pour l'initialisation, sinon il n'y a toujours qu'un seul passage:
617    DO iinit=1, iinitend
618!      print *,'IFF iinit=', iinit, iinitend
619#ifdef CPP_XIOS
620       !$OMP MASTER
621       IF (vars_defined) THEN
622          IF (prt_level >= 10) then
623             write(lunout,*)"phys_output_write: call xios_update_calendar, itau_w=",itau_w
624          ENDIF
625!          CALL xios_update_calendar(itau_w)
626          CALL xios_update_calendar(itap)
627       ENDIF
628       !$OMP END MASTER
629       !$OMP BARRIER
630#endif
631       ! On procède à l'écriture ou à la définition des nombreuses variables:
632!!! Champs 1D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
633       CALL histwrite_phy(o_phis, pphis)
634
635       zx_tmp_fi2d = cell_area
636       IF (is_north_pole_phy) then
637         zx_tmp_fi2d(1) = cell_area(1)/nbp_lon
638       ENDIF
639       IF (is_south_pole_phy) then
640         zx_tmp_fi2d(klon) = cell_area(klon)/nbp_lon
641       ENDIf
642       CALL histwrite_phy(o_aire, zx_tmp_fi2d)
643
644       IF (vars_defined) THEN
645          DO i=1, klon
646             zx_tmp_fi2d(i)=pctsrf(i,is_ter)+pctsrf(i,is_lic)
647          ENDDO
648       ENDIF
649
650       CALL histwrite_phy(o_contfracATM, zx_tmp_fi2d)
651       CALL histwrite_phy(o_contfracOR, pctsrf(:,is_ter))
652!
653#ifdef CPP_XIOS
654       CALL histwrite_phy("R_ecc",R_ecc)
655       CALL histwrite_phy("R_peri",R_peri)
656       CALL histwrite_phy("R_incl",R_incl)
657       CALL histwrite_phy("solaire",solaire)
658       CALL histwrite_phy(o_Ahyb, ap)
659       CALL histwrite_phy(o_Bhyb, bp)
660       CALL histwrite_phy(o_Ahyb_bounds, Ahyb_bounds)
661       CALL histwrite_phy(o_Bhyb_bounds, Bhyb_bounds)
662       CALL histwrite_phy(o_Ahyb_mid, aps)
663       CALL histwrite_phy(o_Bhyb_mid, bps)
664       CALL histwrite_phy(o_Ahyb_mid_bounds, Ahyb_mid_bounds)
665       CALL histwrite_phy(o_Bhyb_mid_bounds, Bhyb_mid_bounds)
666       CALL histwrite_phy(o_longitude, longitude_deg)
667       CALL histwrite_phy(o_latitude, latitude_deg)
668!
669#ifdef CPP_RRTM
670      IF (iflag_rrtm.EQ.1) THEN
671        DO ISW=1, NSW
672          WRITE(ch1,'(i1)') ISW
673!         zx_tmp_0d=RSUN(ISW)
674!         CALL histwrite_phy("rsun"//ch1,zx_tmp_0d)
675          CALL histwrite_phy("rsun"//ch1,RSUN(ISW))
676        ENDDO
677      ENDIF
678#endif
679!
680       CALL histwrite_phy("co2_ppm",co2_ppm)
681       CALL histwrite_phy("CH4_ppb",CH4_ppb)
682       CALL histwrite_phy("N2O_ppb",N2O_ppb)
683       CALL histwrite_phy("CFC11_ppt",CFC11_ppt)
684       CALL histwrite_phy("CFC12_ppt",CFC12_ppt)
685!
686#endif
687
688!!! Champs 2D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
689! Simulateur AIRS
690     IF (ok_airs) then
691      CALL histwrite_phy(o_alt_tropo,alt_tropo)
692 
693      CALL histwrite_phy(o_map_prop_hc,map_prop_hc)
694      CALL histwrite_phy(o_map_prop_hist,map_prop_hist)
695
696      CALL histwrite_phy(o_map_emis_hc,map_emis_hc)
697      CALL histwrite_phy(o_map_iwp_hc,map_iwp_hc)
698      CALL histwrite_phy(o_map_deltaz_hc,map_deltaz_hc)
699      CALL histwrite_phy(o_map_pcld_hc,map_pcld_hc)
700      CALL histwrite_phy(o_map_tcld_hc,map_tcld_hc)
701
702      CALL histwrite_phy(o_map_emis_hist,map_emis_hist)
703      CALL histwrite_phy(o_map_iwp_hist,map_iwp_hist)
704      CALL histwrite_phy(o_map_deltaz_hist,map_deltaz_hist)
705
706      CALL histwrite_phy(o_map_ntot,map_ntot)
707      CALL histwrite_phy(o_map_hc,map_hc)
708      CALL histwrite_phy(o_map_hist,map_hist)
709
710      CALL histwrite_phy(o_map_Cb,map_Cb)
711      CALL histwrite_phy(o_map_ThCi,map_ThCi)
712      CALL histwrite_phy(o_map_Anv,map_Anv)
713
714      CALL histwrite_phy(o_map_emis_Cb,map_emis_Cb)
715      CALL histwrite_phy(o_map_pcld_Cb,map_pcld_Cb)
716      CALL histwrite_phy(o_map_tcld_Cb,map_tcld_Cb)
717
718      CALL histwrite_phy(o_map_emis_ThCi,map_emis_ThCi)
719      CALL histwrite_phy(o_map_pcld_ThCi,map_pcld_ThCi)
720      CALL histwrite_phy(o_map_tcld_ThCi,map_tcld_ThCi)
721
722      CALL histwrite_phy(o_map_emis_Anv,map_emis_Anv)
723      CALL histwrite_phy(o_map_pcld_Anv,map_pcld_Anv)
724      CALL histwrite_phy(o_map_tcld_Anv,map_tcld_Anv)
725     ENDIF
726
727       CALL histwrite_phy(o_sza, sza_o)
728       CALL histwrite_phy(o_flat, zxfluxlat)
729       CALL histwrite_phy(o_ptstar, ptstar)
730       CALL histwrite_phy(o_pt0, pt0)
731       CALL histwrite_phy(o_slp, slp)
732       CALL histwrite_phy(o_tsol, zxtsol)
733       CALL histwrite_phy(o_t2m, zt2m)
734       CALL histwrite_phy(o_t2m_min, zt2m)
735       CALL histwrite_phy(o_t2m_max, zt2m)
736       CALL histwrite_phy(o_t2m_max_mon, t2m_max_mon)
737       CALL histwrite_phy(o_t2m_min_mon, t2m_min_mon)
738
739       IF (vars_defined) THEN
740          DO i=1, klon
741             zx_tmp_fi2d(i)=real(zn2mout(i,1))
742          ENDDO
743       ENDIF
744       CALL histwrite_phy(o_nt2mout, zx_tmp_fi2d)
745
746       IF (vars_defined) THEN
747          DO i=1, klon
748             zx_tmp_fi2d(i)=real(zn2mout(i,2))
749          ENDDO
750       ENDIF
751       CALL histwrite_phy(o_nt2moutfg, zx_tmp_fi2d)
752
753       IF (vars_defined) THEN
754          DO i=1, klon
755             zx_tmp_fi2d(i)=real(zn2mout(i,3))
756          ENDDO
757       ENDIF
758       CALL histwrite_phy(o_nq2mout, zx_tmp_fi2d)
759
760       IF (vars_defined) THEN
761          DO i=1, klon
762             zx_tmp_fi2d(i)=real(zn2mout(i,4))
763          ENDDO
764       ENDIF
765       CALL histwrite_phy(o_nq2moutfg, zx_tmp_fi2d)
766
767       IF (vars_defined) THEN
768          DO i=1, klon
769             zx_tmp_fi2d(i)=real(zn2mout(i,5))
770          ENDDO
771       ENDIF
772       CALL histwrite_phy(o_nu2mout, zx_tmp_fi2d)
773
774       IF (vars_defined) THEN
775          DO i=1, klon
776             zx_tmp_fi2d(i)=real(zn2mout(i,6))
777          ENDDO
778       ENDIF
779       CALL histwrite_phy(o_nu2moutfg, zx_tmp_fi2d)
780
781       IF (vars_defined) THEN
782          DO i=1, klon
783             zx_tmp_fi2d(i)=SQRT(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i))
784          ENDDO
785       ENDIF
786       CALL histwrite_phy(o_wind10m, zx_tmp_fi2d)
787
788       IF (vars_defined) THEN
789          DO i=1, klon
790             zx_tmp_fi2d(i)=SQRT(zu10m(i)*zu10m(i)+zv10m(i)*zv10m(i))
791          ENDDO
792       ENDIF
793       CALL histwrite_phy(o_wind10max, zx_tmp_fi2d)
794
795       CALL histwrite_phy(o_gusts, gustiness)
796
797       IF (vars_defined) THEN
798          DO k = 1, kmax_100m                                      !--we could stop much lower
799            zrho(:) = pplay(:,k)/t_seri(:,k)/RD                    ! air density in kg/m3
800            dz(:,k) = (paprs(:,k)-paprs(:,k+1))/zrho(:)/RG         ! layer thickness in m
801            IF (k==1) THEN
802              z(:,1) = (paprs(:,1)-pplay(:,1))/zrho(:)/RG          ! altitude middle of first layer in m
803              zt(:)  = dz(:,1)                                     ! altitude top of first layer in m
804            ELSE
805              z(:,k) = zt(:) + (paprs(:,k)-pplay(:,k))/zrho(:)/RG  ! altitude middle of layer k in m
806              zt(:)  = zt(:) + dz(:,k)                             ! altitude top of layer k in m
807            ENDIF
808          ENDDO
809          wind100m(:)=missing_val
810          DO k=1, kmax_100m-1                                      !--we could stop much lower
811            DO i=1,klon
812              IF (z(i,k).LT.100..AND.z(i,k+1).GE.100.) THEN
813                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 + &
814                                  (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 )
815              ENDIF
816            ENDDO
817          ENDDO
818       ENDIF
819       CALL histwrite_phy(o_wind100m, wind100m)
820
821       IF (vars_defined) THEN
822         !--polynomial fit for 14,Vestas,1074,V136/3450 kW windmill - Olivier
823         DO i=1,klon
824           IF (pctsrf(i,is_ter).GT.0.05 .AND. wind100m(i).NE.missing_val) THEN
825             x=wind100m(i)
826             IF (x.LE.3.0 .OR. x.GE.22.5) THEN
827               zx_tmp_fi2d(i)=0.0
828             ELSE IF (x.GE.10.0) THEN
829               zx_tmp_fi2d(i)=1.0
830             ELSE
831               zx_tmp_fi2d(i)= 10.73 + x*(-14.69 + x*(8.339 + x*(-2.59 + x*(0.4893 + x*(-0.05898 + x*(0.004627 + &
832                               x*(-0.0002352 + x*(7.478e-06 + x*(-1.351e-07 + x*(1.059e-09))))))))))
833               zx_tmp_fi2d(i)=MIN(MAX(zx_tmp_fi2d(i),0.0),1.0)
834             ENDIF
835           ELSE
836             zx_tmp_fi2d(i)=missing_val
837           ENDIF
838         ENDDO
839       ENDIF
840       CALL histwrite_phy(o_loadfactor_wind_onshore, zx_tmp_fi2d)
841
842       IF (vars_defined) THEN
843         !--polynomial fit for 14,Vestas,867,V164/8000 kW - Olivier
844         DO i=1,klon
845           IF (pctsrf(i,is_oce).GT.0.05 .AND. wind100m(i).NE.missing_val) THEN
846             x=wind100m(i)
847             IF (x.LE.3.0 .OR. x.GE.25.5) THEN
848               zx_tmp_fi2d(i)=0.0
849             ELSE IF (x.GE.12.5) THEN
850               zx_tmp_fi2d(i)=1.0
851             ELSE
852               zx_tmp_fi2d(i)= 20.59 + x*(-22.39 + x*(10.25 + x*(-2.601 + x*(0.4065 + x*(-0.04099 + x*(0.002716 + &
853                               x*(-0.0001175 + x*(3.195e-06 + x*(-4.959e-08 + x*(3.352e-10))))))))))
854               zx_tmp_fi2d(i)=MIN(MAX(zx_tmp_fi2d(i),0.0),1.0)
855             ENDIF
856           ELSE
857             zx_tmp_fi2d(i)=missing_val
858           ENDIF
859         ENDDO
860       ENDIF
861       CALL histwrite_phy(o_loadfactor_wind_offshore, zx_tmp_fi2d)
862
863       IF (vars_defined) THEN
864          DO i = 1, klon
865             zx_tmp_fi2d(i) = pctsrf(i,is_sic)
866          ENDDO
867       ENDIF
868       CALL histwrite_phy(o_sicf, zx_tmp_fi2d)
869       CALL histwrite_phy(o_q2m, zq2m)
870       IF (vars_defined) zx_tmp_fi2d = zustar
871       CALL histwrite_phy(o_ustar, zx_tmp_fi2d)
872       CALL histwrite_phy(o_u10m, zu10m)
873       CALL histwrite_phy(o_v10m, zv10m)
874
875       IF (vars_defined) THEN
876          DO i = 1, klon
877             zx_tmp_fi2d(i) = paprs(i,1)
878          ENDDO
879       ENDIF
880       CALL histwrite_phy(o_psol, zx_tmp_fi2d)
881       CALL histwrite_phy(o_mass, zmasse)
882       CALL histwrite_phy(o_qsurf, zxqsurf)
883
884       IF (.NOT. ok_veget) THEN
885          CALL histwrite_phy(o_qsol, qsol)
886       ENDIF
887
888       IF (vars_defined) THEN
889          DO i = 1, klon
890             zx_tmp_fi2d(i) = rain_fall(i) + snow_fall(i)
891          ENDDO
892       ENDIF
893
894       CALL histwrite_phy(o_precip, zx_tmp_fi2d)
895       CALL histwrite_phy(o_rain_fall, rain_fall)
896       CALL histwrite_phy(o_ndayrain, nday_rain)
897
898       ! epmax_cape:
899!       CALL histwrite_phy(o_epmax_diag, epmax_diag)
900       CALL histwrite_phy(o_ep, ep)
901
902       IF (vars_defined) THEN
903          DO i = 1, klon
904             zx_tmp_fi2d(i) = rain_lsc(i) + snow_lsc(i)
905          ENDDO
906       ENDIF
907       CALL histwrite_phy(o_plul, zx_tmp_fi2d)
908       CALL histwrite_phy(o_plun, rain_num)
909
910       IF (vars_defined) THEN
911          DO i = 1, klon
912             zx_tmp_fi2d(i) = rain_con(i) + snow_con(i)
913          ENDDO
914       ENDIF
915       CALL histwrite_phy(o_pluc, zx_tmp_fi2d)
916       CALL histwrite_phy(o_rain_con, rain_con)
917       CALL histwrite_phy(o_snow, snow_fall)
918       CALL histwrite_phy(o_msnow, zxsnow)
919       CALL histwrite_phy(o_fsnow, zfra_o)
920       CALL histwrite_phy(o_evap, evap)
921
922       IF (vars_defined) THEN
923         zx_tmp_fi2d = topsw*swradcorr
924       ENDIF
925       CALL histwrite_phy(o_tops, zx_tmp_fi2d)
926
927       IF (vars_defined) THEN
928         zx_tmp_fi2d = topsw0*swradcorr
929       ENDIF
930       CALL histwrite_phy(o_tops0, zx_tmp_fi2d)
931
932       CALL histwrite_phy(o_topl, toplw)
933       CALL histwrite_phy(o_topl0, toplw0)
934
935       IF (vars_defined) THEN
936          zx_tmp_fi2d(:) = swup(:,klevp1)*swradcorr(:)
937       ENDIF
938       CALL histwrite_phy(o_SWupTOA, zx_tmp_fi2d)
939
940       IF (vars_defined) THEN
941          zx_tmp_fi2d(:) = swup0(:,klevp1)*swradcorr(:)
942       ENDIF
943       CALL histwrite_phy(o_SWupTOAclr, zx_tmp_fi2d)
944
945       IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN
946          IF (vars_defined) THEN
947             zx_tmp_fi2d(:) = swupc0(:,klevp1)*swradcorr(:)
948          ENDIF
949          CALL histwrite_phy(o_SWupTOAcleanclr, zx_tmp_fi2d)
950       ENDIF
951
952       IF (vars_defined) THEN
953          zx_tmp_fi2d(:) = swdn(:,klevp1)*swradcorr(:)
954       ENDIF
955       CALL histwrite_phy(o_SWdnTOA, zx_tmp_fi2d)
956
957       IF (vars_defined) THEN
958          zx_tmp_fi2d(:) = swdn0(:,klevp1)*swradcorr(:)
959       ENDIF
960       CALL histwrite_phy(o_SWdnTOAclr, zx_tmp_fi2d)
961
962       IF (vars_defined) THEN
963          zx_tmp_fi2d(:) = topsw(:)*swradcorr(:)-toplw(:)
964       ENDIF
965       CALL histwrite_phy(o_nettop, zx_tmp_fi2d)
966       
967       IF (vars_defined) THEN
968          zx_tmp_fi2d = SWup200*swradcorr
969       ENDIF
970       CALL histwrite_phy(o_SWup200, zx_tmp_fi2d)
971       
972       IF (vars_defined) THEN
973          zx_tmp_fi2d = SWup200clr*swradcorr
974       ENDIF
975       CALL histwrite_phy(o_SWup200clr, zx_tmp_fi2d)
976       
977       IF (vars_defined) THEN
978          zx_tmp_fi2d = SWdn200*swradcorr
979       ENDIF
980       CALL histwrite_phy(o_SWdn200, zx_tmp_fi2d)
981       
982       
983       IF (vars_defined) THEN
984          zx_tmp_fi2d = SWdn200clr*swradcorr
985       ENDIF
986       CALL histwrite_phy(o_SWdn200clr, zx_tmp_fi2d)
987       
988       CALL histwrite_phy(o_LWup200, LWup200)
989       CALL histwrite_phy(o_LWup200clr, LWup200clr)
990       CALL histwrite_phy(o_LWdn200, LWdn200)
991       CALL histwrite_phy(o_LWdn200clr, LWdn200clr)
992       
993       IF (vars_defined) THEN
994          zx_tmp_fi2d = solsw*swradcorr
995       ENDIF
996       CALL histwrite_phy(o_sols, zx_tmp_fi2d)
997       
998       
999       IF (vars_defined) THEN
1000          zx_tmp_fi2d = solsw0*swradcorr
1001       ENDIF
1002       CALL histwrite_phy(o_sols0, zx_tmp_fi2d)
1003       CALL histwrite_phy(o_soll, sollw)
1004       CALL histwrite_phy(o_soll0, sollw0)
1005       CALL histwrite_phy(o_radsol, radsol)
1006
1007       IF (vars_defined) THEN
1008          zx_tmp_fi2d(:) = swup(:,1)*swradcorr(:)
1009       ENDIF
1010       CALL histwrite_phy(o_SWupSFC, zx_tmp_fi2d)
1011
1012       IF (vars_defined) THEN
1013          zx_tmp_fi2d(:) = swup0(:,1)*swradcorr(:)
1014       ENDIF
1015       CALL histwrite_phy(o_SWupSFCclr, zx_tmp_fi2d)
1016
1017       IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN
1018          IF (vars_defined) THEN
1019             zx_tmp_fi2d(:) = swupc0(:,1)*swradcorr(:)
1020          ENDIF
1021          CALL histwrite_phy(o_SWupSFCcleanclr, zx_tmp_fi2d)
1022       ENDIF
1023
1024       IF (vars_defined) THEN
1025          zx_tmp_fi2d(:) = swdn(:,1)*swradcorr(:)
1026       ENDIF
1027       CALL histwrite_phy(o_SWdnSFC, zx_tmp_fi2d)
1028
1029       IF (vars_defined) THEN
1030          zx_tmp_fi2d(:) = swdn0(:,1)*swradcorr(:)
1031       ENDIF
1032       CALL histwrite_phy(o_SWdnSFCclr, zx_tmp_fi2d)
1033
1034       IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN
1035          IF (vars_defined) THEN
1036             zx_tmp_fi2d(:) = swdnc0(:,1)*swradcorr(:)
1037          ENDIF
1038          CALL histwrite_phy(o_SWdnSFCcleanclr, zx_tmp_fi2d)
1039       ENDIF
1040
1041       CALL histwrite_phy(o_fdiffSWdnSFC, solswfdiff)
1042
1043       IF (vars_defined) THEN
1044          zx_tmp_fi2d(:)=sollwdown(:)-sollw(:)
1045       ENDIF
1046       CALL histwrite_phy(o_LWupSFC, zx_tmp_fi2d)
1047       CALL histwrite_phy(o_LWdnSFC, sollwdown)
1048
1049       IF (vars_defined) THEN
1050          sollwdownclr(1:klon) = -1.*lwdn0(1:klon,1)
1051          zx_tmp_fi2d(1:klon)=sollwdownclr(1:klon)-sollw0(1:klon)
1052       ENDIF
1053       CALL histwrite_phy(o_LWupSFCclr, zx_tmp_fi2d)
1054       CALL histwrite_phy(o_LWdnSFCclr, sollwdownclr)
1055
1056       IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN
1057          IF (vars_defined) THEN
1058             zx_tmp_fi2d(:) = lwupc0(:,klevp1)
1059          ENDIF
1060          CALL histwrite_phy(o_LWupTOAcleanclr, zx_tmp_fi2d)
1061       ENDIF
1062
1063       IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN
1064          IF (vars_defined) THEN
1065             zx_tmp_fi2d(:) = -1.*lwdnc0(:,1)
1066          ENDIF
1067          CALL histwrite_phy(o_LWdnSFCcleanclr, zx_tmp_fi2d)
1068       ENDIF
1069
1070       CALL histwrite_phy(o_bils, bils)
1071       CALL histwrite_phy(o_bils_diss, bils_diss)
1072       CALL histwrite_phy(o_bils_ec, bils_ec)
1073       CALL histwrite_phy(o_bils_ech, bils_ech)
1074       CALL histwrite_phy(o_bils_tke, bils_tke)
1075       CALL histwrite_phy(o_bils_kinetic, bils_kinetic)
1076       CALL histwrite_phy(o_bils_latent, bils_latent)
1077       CALL histwrite_phy(o_bils_enthalp, bils_enthalp)
1078
1079       IF (vars_defined) THEN
1080          zx_tmp_fi2d(1:klon)=-1*sens(1:klon)
1081       ENDIF
1082       CALL histwrite_phy(o_sens, zx_tmp_fi2d)
1083       CALL histwrite_phy(o_fder, fder)
1084       CALL histwrite_phy(o_ffonte, zxffonte)
1085       CALL histwrite_phy(o_fqcalving, zxfqcalving)
1086       CALL histwrite_phy(o_fqfonte, zxfqfonte)
1087       IF (vars_defined) THEN
1088          zx_tmp_fi2d(1:klon)=(zxfqfonte(1:klon)+rain_fall(1:klon))*pctsrf(1:klon,is_lic)
1089       ENDIF
1090       CALL histwrite_phy(o_mrroli, zx_tmp_fi2d)
1091       CALL histwrite_phy(o_runofflic, zxrunofflic)
1092       IF (vars_defined) THEN
1093          zx_tmp_fi2d=0.
1094          DO nsrf=1,nbsrf
1095             zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxu(:,1,nsrf)
1096          ENDDO
1097       ENDIF
1098       CALL histwrite_phy(o_taux, zx_tmp_fi2d)
1099
1100       IF (vars_defined) THEN
1101          zx_tmp_fi2d=0.
1102          DO nsrf=1,nbsrf
1103             zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxv(:,1,nsrf)
1104          ENDDO
1105       ENDIF
1106       CALL histwrite_phy(o_tauy, zx_tmp_fi2d)
1107
1108       ! Etienne: test sorties pour compil sur JZ
1109!       IF (landice_opt .GE. 1) THEN
1110!          CALL histwrite_phy(o_snowsrf, snow_o)
1111!          CALL histwrite_phy(o_qsnow, qsnow)
1112!          CALL histwrite_phy(o_snowhgt,snowhgt)
1113!          CALL histwrite_phy(o_toice,to_ice)
1114!          CALL histwrite_phy(o_sissnow,sissnow)
1115!          CALL histwrite_phy(o_runoff,runoff)
1116!          CALL histwrite_phy(o_albslw3,albsol3_lic)
1117!       ENDIF
1118
1119       DO nsrf = 1, nbsrf
1120
1121          IF (vars_defined)             zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)*100.
1122          CALL histwrite_phy(o_pourc_srf(nsrf), zx_tmp_fi2d)
1123          IF (vars_defined)           zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)
1124          CALL histwrite_phy(o_fract_srf(nsrf), zx_tmp_fi2d)
1125          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxu( 1 : klon, 1, nsrf)
1126          CALL histwrite_phy(o_taux_srf(nsrf), zx_tmp_fi2d)
1127          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxv( 1 : klon, 1, nsrf)
1128          CALL histwrite_phy(o_tauy_srf(nsrf), zx_tmp_fi2d)
1129          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = ftsol( 1 : klon, nsrf)
1130          CALL histwrite_phy(o_tsol_srf(nsrf), zx_tmp_fi2d)
1131          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = evap_pot( 1 : klon, nsrf)
1132          CALL histwrite_phy(o_evappot_srf(nsrf), zx_tmp_fi2d)
1133          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = ustar(1 : klon, nsrf)
1134          CALL histwrite_phy(o_ustar_srf(nsrf), zx_tmp_fi2d)
1135          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = u10m(1 : klon, nsrf)
1136          CALL histwrite_phy(o_u10m_srf(nsrf), zx_tmp_fi2d)
1137          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = v10m(1 : klon, nsrf)
1138          CALL histwrite_phy(o_v10m_srf(nsrf), zx_tmp_fi2d)
1139          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = t2m(1 : klon, nsrf)
1140          CALL histwrite_phy(o_t2m_srf(nsrf), zx_tmp_fi2d)
1141          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = fevap(1 : klon, nsrf)
1142          CALL histwrite_phy(o_evap_srf(nsrf), zx_tmp_fi2d)
1143          IF (vars_defined)        zx_tmp_fi2d(1 : klon) = fluxt( 1 : klon, 1, nsrf)
1144          CALL histwrite_phy(o_sens_srf(nsrf), zx_tmp_fi2d)
1145          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxlat( 1 : klon, nsrf)
1146          CALL histwrite_phy(o_lat_srf(nsrf), zx_tmp_fi2d)
1147          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fsollw( 1 : klon, nsrf)
1148          CALL histwrite_phy(o_flw_srf(nsrf), zx_tmp_fi2d)
1149          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, nsrf)
1150          CALL histwrite_phy(o_fsw_srf(nsrf), zx_tmp_fi2d)
1151          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfbils( 1 : klon, nsrf)
1152          CALL histwrite_phy(o_wbils_srf(nsrf), zx_tmp_fi2d)
1153          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfbilo( 1 : klon, nsrf)
1154          CALL histwrite_phy(o_wbilo_srf(nsrf), zx_tmp_fi2d)
1155          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfevap( 1 : klon, nsrf)
1156          CALL histwrite_phy(o_wevap_srf(nsrf), zx_tmp_fi2d)
1157          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfrain( 1 : klon, nsrf)
1158          CALL histwrite_phy(o_wrain_srf(nsrf), zx_tmp_fi2d)
1159          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfsnow( 1 : klon, nsrf)
1160          CALL histwrite_phy(o_wsnow_srf(nsrf), zx_tmp_fi2d)
1161
1162          IF (iflag_pbl > 1) THEN
1163             CALL histwrite_phy(o_tke_srf(nsrf),  pbl_tke(:,1:klev,nsrf))
1164             !CALL histwrite_phy(o_l_mix(nsrf),  l_mix(:,1:klev,nsrf))
1165             CALL histwrite_phy(o_l_mixmin(nsrf),  l_mixmin(:,1:klev,nsrf))
1166             CALL histwrite_phy(o_tke_max_srf(nsrf),  pbl_tke(:,1:klev,nsrf))
1167
1168                         
1169          ENDIF
1170!jyg<
1171          IF (iflag_pbl > 1 .AND. iflag_wake>=1  .AND. iflag_pbl_split >=1) THEN
1172             CALL histwrite_phy(o_dltpbltke_srf(nsrf), wake_delta_pbl_TKE(:,1:klev,nsrf))
1173          ENDIF
1174!>jyg
1175!          IF (iflag_pbl > 1 .AND. ifl_pbltree  >=1 ) THEN
1176!       CALL histwrite_phy(o_treedrg_srf(nsrf), treedrg(:,1:klev,nsrf))
1177!            ENDIF
1178
1179       ENDDO
1180       
1181               
1182        IF (iflag_pbl > 1) THEN
1183          zx_tmp_fi3d=0.
1184          IF (vars_defined) THEN
1185             DO nsrf=1,nbsrf
1186                DO k=1,klev
1187                   zx_tmp_fi3d(:,k)=zx_tmp_fi3d(:,k) &
1188                        +pctsrf(:,nsrf)*tke_dissip(:,k,nsrf)
1189                ENDDO
1190             ENDDO
1191          ENDIF
1192         
1193          CALL histwrite_phy(o_tke_dissip, zx_tmp_fi3d)   
1194       ENDIF
1195
1196       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_liq_o(1 : klon, 1)
1197       CALL histwrite_phy(o_sens_prec_liq_oce, zx_tmp_fi2d)       
1198       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_liq_o(1 : klon, 2)
1199       CALL histwrite_phy(o_sens_prec_liq_sic, zx_tmp_fi2d)       
1200       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_sol_o(1 : klon, 1)
1201       CALL histwrite_phy(o_sens_prec_sol_oce, zx_tmp_fi2d)       
1202       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_sol_o(1 : klon, 2)
1203       CALL histwrite_phy(o_sens_prec_sol_sic, zx_tmp_fi2d)       
1204
1205       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_liq_o(1 : klon, 1)
1206       CALL histwrite_phy(o_lat_prec_liq_oce, zx_tmp_fi2d)       
1207       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_liq_o(1 : klon, 2)
1208       CALL histwrite_phy(o_lat_prec_liq_sic, zx_tmp_fi2d)       
1209       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_sol_o(1 : klon, 1)
1210       CALL histwrite_phy(o_lat_prec_sol_oce, zx_tmp_fi2d)       
1211       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_sol_o(1 : klon, 2)
1212       CALL histwrite_phy(o_lat_prec_sol_sic, zx_tmp_fi2d)       
1213
1214       DO nsrf=1,nbsrf+1
1215          CALL histwrite_phy(o_wstar(nsrf), wstar(1 : klon, nsrf))
1216       ENDDO
1217
1218       CALL histwrite_phy(o_cdrm, cdragm)
1219       CALL histwrite_phy(o_cdrh, cdragh)
1220       CALL histwrite_phy(o_cldl, cldl)
1221       CALL histwrite_phy(o_cldm, cldm)
1222       CALL histwrite_phy(o_cldh, cldh)
1223       CALL histwrite_phy(o_cldt, cldt)
1224       CALL histwrite_phy(o_JrNt, JrNt)
1225       
1226       IF (vars_defined)  zx_tmp_fi2d=cldl*JrNt     
1227       CALL histwrite_phy(o_cldljn, zx_tmp_fi2d)
1228       
1229       IF (vars_defined)  zx_tmp_fi2d=cldm*JrNt     
1230       CALL histwrite_phy(o_cldmjn, zx_tmp_fi2d)
1231       
1232       IF (vars_defined)  zx_tmp_fi2d=cldh*JrNt
1233       CALL histwrite_phy(o_cldhjn, zx_tmp_fi2d)
1234       
1235       IF (vars_defined)  zx_tmp_fi2d=cldt*JrNt
1236       CALL histwrite_phy(o_cldtjn, zx_tmp_fi2d)
1237       
1238       CALL histwrite_phy(o_cldq, cldq)
1239       IF (vars_defined)       zx_tmp_fi2d(1:klon) = flwp(1:klon)
1240       CALL histwrite_phy(o_lwp, zx_tmp_fi2d)
1241       IF (vars_defined)       zx_tmp_fi2d(1:klon) = fiwp(1:klon)
1242       CALL histwrite_phy(o_iwp, zx_tmp_fi2d)
1243       CALL histwrite_phy(o_ue, ue)
1244       CALL histwrite_phy(o_ve, ve)
1245       CALL histwrite_phy(o_uq, uq)
1246       CALL histwrite_phy(o_vq, vq)
1247       CALL histwrite_phy(o_uwat, uwat)
1248       CALL histwrite_phy(o_vwat, vwat)
1249       IF (iflag_con.GE.3) THEN ! sb
1250          CALL histwrite_phy(o_cape, cape)
1251          CALL histwrite_phy(o_pbase, ema_pcb)
1252          CALL histwrite_phy(o_ptop, ema_pct)
1253          CALL histwrite_phy(o_fbase, ema_cbmf)
1254          IF (iflag_con /= 30) THEN
1255             CALL histwrite_phy(o_plcl, plcl)
1256             CALL histwrite_phy(o_plfc, plfc)
1257             CALL histwrite_phy(o_wbeff, wbeff)
1258             CALL histwrite_phy(o_convoccur, convoccur)
1259          ENDIF
1260
1261          CALL histwrite_phy(o_cape_max, cape)
1262
1263          CALL histwrite_phy(o_upwd, upwd)
1264          CALL histwrite_phy(o_Ma, Ma)
1265          CALL histwrite_phy(o_dnwd, dnwd)
1266          CALL histwrite_phy(o_dnwd0, dnwd0)
1267          !! The part relative to the frequency of occurence of convection
1268          !! is now grouped with the part relative to thermals and shallow
1269          !! convection (output of the 3 fields: ftime_deepcv, ftime_th and
1270          !!  ftime_con).
1271          IF (vars_defined) THEN
1272             IF (iflag_thermals>=1)THEN
1273                zx_tmp_fi3d=dnwd+dnwd0+upwd+fm_therm(:,1:klev)
1274             ELSE
1275                zx_tmp_fi3d=dnwd+dnwd0+upwd
1276             ENDIF
1277          ENDIF
1278          CALL histwrite_phy(o_mc, zx_tmp_fi3d)
1279       ENDIF !iflag_con .GE. 3
1280       CALL histwrite_phy(o_prw, prw)
1281       CALL histwrite_phy(o_prlw, prlw)
1282       CALL histwrite_phy(o_prsw, prsw)
1283       CALL histwrite_phy(o_s_pblh, s_pblh)
1284       CALL histwrite_phy(o_s_pblt, s_pblt)
1285       CALL histwrite_phy(o_s_lcl, s_lcl)
1286       CALL histwrite_phy(o_s_therm, s_therm)
1287       !IM : Les champs suivants (s_capCL, s_oliqCL, s_cteiCL, s_trmb1, s_trmb2, s_trmb3) ne sont pas definis dans HBTM.F
1288       !       IF (o_s_capCL%flag(iff)<=lev_files(iff)) THEN
1289       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1290       !    $o_s_capCL%name,itau_w,s_capCL)
1291       !       ENDIF
1292       !       IF (o_s_oliqCL%flag(iff)<=lev_files(iff)) THEN
1293       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1294       !    $o_s_oliqCL%name,itau_w,s_oliqCL)
1295       !       ENDIF
1296       !       IF (o_s_cteiCL%flag(iff)<=lev_files(iff)) THEN
1297       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1298       !    $o_s_cteiCL%name,itau_w,s_cteiCL)
1299       !       ENDIF
1300       !       IF (o_s_trmb1%flag(iff)<=lev_files(iff)) THEN
1301       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1302       !    $o_s_trmb1%name,itau_w,s_trmb1)
1303       !       ENDIF
1304       !       IF (o_s_trmb2%flag(iff)<=lev_files(iff)) THEN
1305       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1306       !    $o_s_trmb2%name,itau_w,s_trmb2)
1307       !       ENDIF
1308       !       IF (o_s_trmb3%flag(iff)<=lev_files(iff)) THEN
1309       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1310       !    $o_s_trmb3%name,itau_w,s_trmb3)
1311       !       ENDIF
1312
1313#ifdef CPP_IOIPSL
1314#ifndef CPP_XIOS
1315  IF (.NOT.ok_all_xml) THEN
1316       ! ATTENTION, LES ANCIENS HISTWRITE ONT ETES CONSERVES EN ATTENDANT MIEUX:
1317       ! Champs interpolles sur des niveaux de pression
1318       DO iff=1, nfiles
1319          ll=0
1320          DO k=1, nlevSTD
1321             bb2=clevSTD(k)
1322             IF (bb2.EQ."850".OR.bb2.EQ."700".OR. &
1323                  bb2.EQ."500".OR.bb2.EQ."200".OR. &
1324                  bb2.EQ."100".OR. &
1325                  bb2.EQ."50".OR.bb2.EQ."10") THEN
1326
1327                ! a refaire correctement !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1328                ll=ll+1
1329                CALL histwrite_phy(o_uSTDlevs(ll),uwriteSTD(:,k,iff), iff)
1330                CALL histwrite_phy(o_vSTDlevs(ll),vwriteSTD(:,k,iff), iff)
1331                CALL histwrite_phy(o_wSTDlevs(ll),wwriteSTD(:,k,iff), iff)
1332                CALL histwrite_phy(o_zSTDlevs(ll),phiwriteSTD(:,k,iff), iff)
1333                CALL histwrite_phy(o_qSTDlevs(ll),qwriteSTD(:,k,iff), iff)
1334                CALL histwrite_phy(o_tSTDlevs(ll),twriteSTD(:,k,iff), iff)
1335
1336             ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
1337          ENDDO
1338       ENDDO
1339  ENDIF
1340#endif
1341#endif
1342#ifdef CPP_XIOS
1343  IF (ok_all_xml) THEN
1344!XIOS  CALL xios_get_field_attr("u850",default_value=missing_val)
1345!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1346          ll=0
1347          DO k=1, nlevSTD
1348             bb2=clevSTD(k)
1349             IF (bb2.EQ."850".OR.bb2.EQ."700".OR. &
1350                bb2.EQ."500".OR.bb2.EQ."200".OR. &
1351                bb2.EQ."100".OR. &
1352                bb2.EQ."50".OR.bb2.EQ."10") THEN
1353                ll=ll+1
1354                CALL histwrite_phy(o_uSTDlevs(ll),ulevSTD(:,k))
1355                CALL histwrite_phy(o_vSTDlevs(ll),vlevSTD(:,k))
1356                CALL histwrite_phy(o_wSTDlevs(ll),wlevSTD(:,k))
1357                CALL histwrite_phy(o_zSTDlevs(ll),philevSTD(:,k))
1358                CALL histwrite_phy(o_qSTDlevs(ll),qlevSTD(:,k))
1359                CALL histwrite_phy(o_tSTDlevs(ll),tlevSTD(:,k))
1360             ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
1361          ENDDO
1362  ENDIF
1363#endif
1364       IF (vars_defined) THEN
1365          DO i=1, klon
1366             IF (pctsrf(i,is_oce).GT.epsfra.OR. &
1367                  pctsrf(i,is_sic).GT.epsfra) THEN
1368                zx_tmp_fi2d(i) = (ftsol(i, is_oce) * pctsrf(i,is_oce)+ &
1369                     ftsol(i, is_sic) * pctsrf(i,is_sic))/ &
1370                     (pctsrf(i,is_oce)+pctsrf(i,is_sic))
1371             ELSE
1372                zx_tmp_fi2d(i) = 273.15
1373             ENDIF
1374          ENDDO
1375       ENDIF
1376       CALL histwrite_phy(o_t_oce_sic, zx_tmp_fi2d)
1377
1378       ! Couplage convection-couche limite
1379       IF (iflag_con.GE.3) THEN
1380          IF (iflag_coupl>=1) THEN
1381             CALL histwrite_phy(o_ale_bl, ale_bl)
1382             CALL histwrite_phy(o_alp_bl, alp_bl)
1383          ENDIF !iflag_coupl>=1
1384       ENDIF !(iflag_con.GE.3)
1385       ! Wakes
1386       IF (iflag_con.EQ.3) THEN
1387          CALL histwrite_phy(o_Mipsh, Mipsh)
1388          IF (iflag_wake>=1) THEN
1389             CALL histwrite_phy(o_ale_wk, ale_wake)
1390             CALL histwrite_phy(o_alp_wk, alp_wake)
1391             IF (iflag_pbl_split>=1) THEN
1392!!               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dtvdf_x(1:klon,1:klev)/pdtphys
1393!!               CALL histwrite_phy(o_dtvdf_x    ,zx_tmp_fi3d)
1394!!               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dtvdf_w(1:klon,1:klev)/pdtphys
1395!!               CALL histwrite_phy(o_dtvdf_w    ,zx_tmp_fi3d)
1396!!               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dqvdf_x(1:klon,1:klev)/pdtphys
1397!!               CALL histwrite_phy(o_dqvdf_x    ,zx_tmp_fi3d)
1398!!               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dqvdf_w(1:klon,1:klev)/pdtphys
1399!
1400               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf_x(1:klon,1:klev)/pdtphys
1401               CALL histwrite_phy(o_dtvdf_x    ,zx_tmp_fi3d)
1402               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf_w(1:klon,1:klev)/pdtphys
1403               CALL histwrite_phy(o_dtvdf_w    ,zx_tmp_fi3d)
1404               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf_x(1:klon,1:klev)/pdtphys
1405               CALL histwrite_phy(o_dqvdf_x    ,zx_tmp_fi3d)
1406               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf_w(1:klon,1:klev)/pdtphys
1407!
1408               CALL histwrite_phy(o_dqvdf_w    ,zx_tmp_fi3d)
1409       IF (vars_defined)  zx_tmp_fi2d(1:klon)=-1*sens_x(1:klon)
1410               CALL histwrite_phy(o_sens_x     ,zx_tmp_fi2d)
1411       IF (vars_defined)  zx_tmp_fi2d(1:klon)=-1*sens_w(1:klon)
1412               CALL histwrite_phy(o_sens_w     ,zx_tmp_fi2d)
1413               CALL histwrite_phy(o_flat_x     ,zxfluxlat_x)
1414               CALL histwrite_phy(o_flat_w     ,zxfluxlat_w)
1415          zx_tmp_fi2d=0.
1416          IF (vars_defined) THEN
1417             DO nsrf=1,nbsrf
1418                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:) &
1419                        +pctsrf(:,nsrf)*delta_tsurf(:,nsrf)
1420             ENDDO
1421          ENDIF
1422               CALL histwrite_phy(o_delta_tsurf,zx_tmp_fi2d)
1423               CALL histwrite_phy(o_cdragh_x   ,cdragh_x   )
1424               CALL histwrite_phy(o_cdragh_w   ,cdragh_w   )
1425               CALL histwrite_phy(o_cdragm_x   ,cdragm_x   )
1426               CALL histwrite_phy(o_cdragm_w   ,cdragm_w   )
1427               CALL histwrite_phy(o_kh         ,kh         )
1428               CALL histwrite_phy(o_kh_x       ,kh_x       )
1429               CALL histwrite_phy(o_kh_w       ,kh_w       )
1430             ENDIF   ! (iflag_pbl_split>=1)
1431             CALL histwrite_phy(o_ale, ale)
1432             CALL histwrite_phy(o_alp, alp)
1433             CALL histwrite_phy(o_cin, cin)
1434             CALL histwrite_phy(o_WAPE, wake_pe)
1435             CALL histwrite_phy(o_cv_gen, cv_gen)
1436             CALL histwrite_phy(o_wake_h, wake_h)
1437             CALL histwrite_phy(o_wake_dens, wake_dens)
1438             CALL histwrite_phy(o_wake_s, wake_s)
1439             CALL histwrite_phy(o_wake_deltat, wake_deltat)
1440             CALL histwrite_phy(o_wake_deltaq, wake_deltaq)
1441             CALL histwrite_phy(o_wake_omg, wake_omg)
1442             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_wake(1:klon,1:klev) &
1443                  /pdtphys
1444             CALL histwrite_phy(o_dtwak, zx_tmp_fi3d)
1445             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_wake(1:klon,1:klev)/pdtphys
1446             CALL histwrite_phy(o_dqwak, zx_tmp_fi3d)
1447             IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1448             CALL histwrite_phy(o_dqwak2d, zx_tmp_fi2d)
1449          ENDIF ! iflag_wake>=1
1450          CALL histwrite_phy(o_ftd, ftd)
1451          CALL histwrite_phy(o_fqd, fqd)
1452       ENDIF !(iflag_con.EQ.3)
1453       IF (iflag_con.EQ.3.OR.iflag_con.EQ.30) THEN
1454          ! sortie RomP convection descente insaturee iflag_con=30
1455          ! etendue a iflag_con=3 (jyg)
1456          CALL histwrite_phy(o_Vprecip, Vprecip)
1457          CALL histwrite_phy(o_qtaa, qtaa)
1458          CALL histwrite_phy(o_clwaa, clw)
1459          CALL histwrite_phy(o_wdtrainA, wdtrainA)
1460          CALL histwrite_phy(o_wdtrainS, wdtrainS)
1461          CALL histwrite_phy(o_wdtrainM, wdtrainM)
1462       ENDIF !(iflag_con.EQ.3.or.iflag_con.EQ.30)
1463!!! nrlmd le 10/04/2012
1464       IF (iflag_trig_bl>=1) THEN
1465          CALL histwrite_phy(o_n2, n2)
1466          CALL histwrite_phy(o_s2, s2)
1467          CALL histwrite_phy(o_proba_notrig, proba_notrig)
1468          CALL histwrite_phy(o_random_notrig, random_notrig)
1469          CALL histwrite_phy(o_ale_bl_stat, ale_bl_stat)
1470          CALL histwrite_phy(o_ale_bl_trig, ale_bl_trig)
1471       ENDIF  !(iflag_trig_bl>=1)
1472       IF (iflag_clos_bl>=1) THEN
1473          CALL histwrite_phy(o_alp_bl_det, alp_bl_det)
1474          CALL histwrite_phy(o_alp_bl_fluct_m, alp_bl_fluct_m)
1475          CALL histwrite_phy(o_alp_bl_fluct_tke,  &
1476               alp_bl_fluct_tke)
1477          CALL histwrite_phy(o_alp_bl_conv, alp_bl_conv)
1478          CALL histwrite_phy(o_alp_bl_stat, alp_bl_stat)
1479       ENDIF  !(iflag_clos_bl>=1)
1480!!! fin nrlmd le 10/04/2012
1481       ! Output of slab ocean variables
1482       IF (type_ocean=='slab ') THEN
1483          CALL histwrite_phy(o_slab_bils, slab_wfbils)
1484          IF (nslay.EQ.1) THEN
1485              IF (vars_defined) zx_tmp_fi2d(:)=tslab(:,1)
1486              CALL histwrite_phy(o_tslab, zx_tmp_fi2d)
1487              IF (vars_defined) zx_tmp_fi2d(:)=dt_qflux(:,1)
1488              CALL histwrite_phy(o_slab_qflux, zx_tmp_fi2d)
1489          ELSE
1490              CALL histwrite_phy(o_tslab, tslab(:,1:nslay))
1491              CALL histwrite_phy(o_slab_qflux, dt_qflux(:,1:nslay))
1492          ENDIF
1493          IF (version_ocean=='sicINT') THEN
1494              CALL histwrite_phy(o_slab_bilg, slab_bilg)
1495              CALL histwrite_phy(o_slab_tice, tice)
1496              CALL histwrite_phy(o_slab_sic, seaice)
1497          ENDIF
1498          IF (slab_gm) THEN
1499             CALL histwrite_phy(o_slab_gm, dt_gm(:,1:nslay))
1500          ENDIF
1501          IF (slab_hdiff) THEN
1502            IF (nslay.EQ.1) THEN
1503                IF (vars_defined) zx_tmp_fi2d(:)=dt_hdiff(:,1)
1504                CALL histwrite_phy(o_slab_hdiff, zx_tmp_fi2d)
1505            ELSE
1506                CALL histwrite_phy(o_slab_hdiff, dt_hdiff(:,1:nslay))
1507            ENDIF
1508          ENDIF
1509          IF (slab_ekman.GT.0) THEN
1510            IF (nslay.EQ.1) THEN
1511                IF (vars_defined) zx_tmp_fi2d(:)=dt_ekman(:,1)
1512                CALL histwrite_phy(o_slab_ekman, zx_tmp_fi2d)
1513            ELSE
1514                CALL histwrite_phy(o_slab_ekman, dt_ekman(:,1:nslay))
1515            ENDIF
1516          ENDIF
1517       ENDIF !type_ocean == force/slab
1518       CALL histwrite_phy(o_weakinv, weak_inversion)
1519       CALL histwrite_phy(o_dthmin, dthmin)
1520       CALL histwrite_phy(o_cldtau, cldtau)
1521       CALL histwrite_phy(o_cldemi, cldemi)
1522       CALL histwrite_phy(o_pr_con_l, pmflxr(:,1:klev))
1523       CALL histwrite_phy(o_pr_con_i, pmflxs(:,1:klev))
1524       CALL histwrite_phy(o_pr_lsc_l, prfl(:,1:klev))
1525       CALL histwrite_phy(o_pr_lsc_i, psfl(:,1:klev))
1526       CALL histwrite_phy(o_re, re)
1527       CALL histwrite_phy(o_fl, fl)
1528       IF (vars_defined) THEN
1529          DO i=1, klon
1530             IF (zt2m(i).LE.273.15) then
1531                zx_tmp_fi2d(i)=MAX(0.,rh2m(i)*100.)
1532             ELSE
1533                zx_tmp_fi2d(i)=MAX(0.,MIN(100.,rh2m(i)*100.))
1534             ENDIF
1535          ENDDO
1536       ENDIF
1537       CALL histwrite_phy(o_rh2m, zx_tmp_fi2d)
1538
1539!       IF (vars_defined) THEN
1540!          DO i=1, klon
1541!             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1542!          ENDDO
1543!       ENDIF
1544!       CALL histwrite_phy(o_rh2m_min, zx_tmp_fi2d)
1545
1546!       IF (vars_defined) THEN
1547!          DO i=1, klon
1548!             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1549!          ENDDO
1550!       ENDIF
1551!       CALL histwrite_phy(o_rh2m_max, zx_tmp_fi2d)
1552
1553       CALL histwrite_phy(o_qsat2m, qsat2m)
1554       CALL histwrite_phy(o_tpot, tpot)
1555       CALL histwrite_phy(o_tpote, tpote)
1556       IF (vars_defined) zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, is_ter)
1557       CALL histwrite_phy(o_SWnetOR,  zx_tmp_fi2d)
1558       CALL histwrite_phy(o_LWdownOR, sollwdown)
1559       CALL histwrite_phy(o_snowl, snow_lsc)
1560       CALL histwrite_phy(o_solldown, sollwdown)
1561       CALL histwrite_phy(o_dtsvdfo, d_ts(:,is_oce))
1562       CALL histwrite_phy(o_dtsvdft, d_ts(:,is_ter))
1563       CALL histwrite_phy(o_dtsvdfg,  d_ts(:,is_lic))
1564       CALL histwrite_phy(o_dtsvdfi, d_ts(:,is_sic))
1565       CALL histwrite_phy(o_z0m, z0m(:,nbsrf+1))
1566       CALL histwrite_phy(o_z0h, z0h(:,nbsrf+1))
1567
1568       ! od550 per species
1569!--OLIVIER
1570!This is warranted by treating INCA aerosols as offline aerosols
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       CALL histwrite_phy(o_lwcon, flwc)
1777       CALL histwrite_phy(o_iwcon, fiwc)
1778       CALL histwrite_phy(o_temp, t_seri)
1779       CALL histwrite_phy(o_theta, theta)
1780       CALL histwrite_phy(o_ovapinit, qx(:,:,ivap))
1781       CALL histwrite_phy(o_ovap, q_seri)
1782       CALL histwrite_phy(o_oliq, ql_seri)
1783
1784       IF (vars_defined) zx_tmp_fi3d = ql_seri+qs_seri
1785       CALL histwrite_phy(o_ocond, zx_tmp_fi3d)
1786
1787       CALL histwrite_phy(o_geop, zphi)
1788       CALL histwrite_phy(o_vitu, u_seri)
1789       CALL histwrite_phy(o_vitv, v_seri)
1790       CALL histwrite_phy(o_vitw, omega)
1791       CALL histwrite_phy(o_pres, pplay)
1792       CALL histwrite_phy(o_paprs, paprs(:,1:klev))
1793       
1794       IF (vars_defined) zx_tmp_fi3d = zphi/RG
1795       CALL histwrite_phy(o_zfull,zx_tmp_fi3d)
1796
1797#ifdef CPP_XIOS
1798!solbnd begin
1799#ifdef CPP_RRTM
1800      IF (iflag_rrtm.EQ.1) THEN
1801       IF (vars_defined) THEN
1802        DO ISW=1, NSW
1803          zx_tmp_fi3dsp(:,ISW) = swdn(:,klevp1)*swradcorr(:)*RSUN(ISW)
1804        ENDDO
1805        CALL histwrite_phy(o_solbnd, zx_tmp_fi3dsp)
1806       ENDIF
1807      ENDIF
1808#endif
1809!solbnd end
1810#endif
1811
1812       IF (flag_aerosol_strat.EQ.2) THEN
1813         CALL histwrite_phy(o_stratomask, stratomask)
1814       ENDIF
1815     
1816       IF (vars_defined)  THEN
1817        zx_tmp_fi3d(:,1)= pphis(:)/RG
1818        DO k = 2, klev
1819         DO i = 1, klon
1820            zx_tmp_fi3d(i,k) = zphi(i,k-1)/RG + &
1821                          (zphi(i,k)-zphi(i,k-1))/RG * &
1822                          (paprs(i,k)-pplay(i,k-1))/(pplay(i,k)-pplay(i,k-1))
1823         ENDDO
1824        ENDDO
1825       ENDIF
1826       CALL histwrite_phy(o_zhalf, zx_tmp_fi3d)
1827       CALL histwrite_phy(o_rneb, cldfra)
1828       CALL histwrite_phy(o_rnebcon, rnebcon)
1829       CALL histwrite_phy(o_rnebls, rneb)
1830       CALL histwrite_phy(o_rneblsvol, rneblsvol)
1831       IF (vars_defined)  THEN
1832          DO k=1, klev
1833             DO i=1, klon
1834                zx_tmp_fi3d(i,k)=cldfra(i,k)*JrNt(i)
1835             ENDDO
1836          ENDDO
1837       ENDIF
1838       CALL histwrite_phy(o_rnebjn, zx_tmp_fi3d)
1839       CALL histwrite_phy(o_rhum, zx_rh)
1840       IF (iflag_ice_thermo .GT. 0) THEN
1841          IF (vars_defined) zx_tmp_fi3d = zx_rhl * 100.
1842          CALL histwrite_phy(o_rhl, zx_tmp_fi3d)
1843          IF (vars_defined) zx_tmp_fi3d = zx_rhi * 100.
1844          CALL histwrite_phy(o_rhi, zx_tmp_fi3d)
1845       ENDIF
1846
1847!--aviation & supersaturation
1848       IF (ok_ice_sursat) THEN
1849         CALL histwrite_phy(o_oclr, qclr)
1850         CALL histwrite_phy(o_ocld, qcld)
1851         CALL histwrite_phy(o_oss, qss)
1852         CALL histwrite_phy(o_ovc, qvc)
1853         CALL histwrite_phy(o_rnebclr, rnebclr)
1854         CALL histwrite_phy(o_rnebss, rnebss)
1855         CALL histwrite_phy(o_rnebseri, rneb_seri)
1856         CALL histwrite_phy(o_gammass, gamma_ss)
1857         CALL histwrite_phy(o_N1_ss, N1_ss)
1858         CALL histwrite_phy(o_N2_ss, N2_ss)
1859         CALL histwrite_phy(o_drnebsub, drneb_sub)
1860         CALL histwrite_phy(o_drnebcon, drneb_con)
1861         CALL histwrite_phy(o_drnebtur, drneb_tur)
1862         CALL histwrite_phy(o_drnebavi, drneb_avi)
1863         CALL histwrite_phy(o_qsatl, zqsatl)
1864         CALL histwrite_phy(o_qsats, zqsats)
1865         CALL histwrite_phy(o_Tcontr, Tcontr)
1866         CALL histwrite_phy(o_qcontr, qcontr)
1867         CALL histwrite_phy(o_qcontr2, qcontr2)
1868         CALL histwrite_phy(o_fcontrN, fcontrN)
1869         CALL histwrite_phy(o_fcontrP, fcontrP)
1870       ENDIF
1871       IF (ok_plane_contrail) THEN
1872         CALL histwrite_phy(o_flight_m, flight_m)
1873       ENDIF
1874       IF (ok_plane_h2o) THEN
1875         CALL histwrite_phy(o_flight_h2o, flight_h2o)
1876       ENDIF
1877       
1878       IF (vars_defined) zx_tmp_fi3d = wo(:, :, 1) * dobson_u * 1e3 / zmasse / rmo3 * rmd
1879       CALL histwrite_phy(o_ozone, zx_tmp_fi3d)
1880
1881       IF (read_climoz == 2) THEN
1882         IF (vars_defined) zx_tmp_fi3d = wo(:, :, 2) * dobson_u * 1e3 / zmasse / rmo3 * rmd
1883         CALL histwrite_phy(o_ozone_light, zx_tmp_fi3d)
1884       ENDIF
1885
1886       CALL histwrite_phy(o_duphy, d_u)
1887
1888       CALL histwrite_phy(o_dtphy, d_t)
1889
1890       CALL histwrite_phy(o_dqphy,  d_qx(:,:,ivap))
1891       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,ivap),zmasse,zx_tmp_fi2d)
1892       CALL histwrite_phy(o_dqphy2d,  zx_tmp_fi2d)
1893
1894       CALL histwrite_phy(o_dqlphy,  d_qx(:,:,iliq))
1895       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,iliq),zmasse,zx_tmp_fi2d)
1896       CALL histwrite_phy(o_dqlphy2d,  zx_tmp_fi2d)
1897
1898       IF (nqo.EQ.3) THEN
1899       CALL histwrite_phy(o_dqsphy,  d_qx(:,:,isol))
1900       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,isol),zmasse,zx_tmp_fi2d)
1901       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
1902       ELSE
1903       zx_tmp_fi3d=0.0
1904       CALL histwrite_phy(o_dqsphy,  zx_tmp_fi3d)
1905       zx_tmp_fi2d=0.0
1906       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
1907       ENDIF
1908
1909       DO nsrf=1, nbsrf
1910          IF (vars_defined) zx_tmp_fi2d(1 : klon) = falb1( 1 : klon, nsrf)
1911          CALL histwrite_phy(o_albe_srf(nsrf), zx_tmp_fi2d)
1912          IF (vars_defined) zx_tmp_fi2d(1 : klon) = z0m( 1 : klon, nsrf)
1913          CALL histwrite_phy(o_z0m_srf(nsrf), zx_tmp_fi2d)
1914          IF (vars_defined) zx_tmp_fi2d(1 : klon) = z0h( 1 : klon, nsrf)
1915          CALL histwrite_phy(o_z0h_srf(nsrf), zx_tmp_fi2d)
1916          IF (vars_defined) zx_tmp_fi2d(1 : klon) = agesno( 1 : klon, nsrf)
1917          CALL histwrite_phy(o_ages_srf(nsrf), zx_tmp_fi2d)
1918          IF (vars_defined) zx_tmp_fi2d(1 : klon) = snow( 1 : klon, nsrf)
1919          CALL histwrite_phy(o_snow_srf(nsrf), zx_tmp_fi2d)
1920       ENDDO !nsrf=1, nbsrf
1921       CALL histwrite_phy(o_alb1, albsol1)
1922       CALL histwrite_phy(o_alb2, albsol2)
1923       !FH Sorties pour la couche limite
1924       IF (iflag_pbl>1) THEN
1925          zx_tmp_fi3d=0.
1926          IF (vars_defined) THEN
1927             DO nsrf=1,nbsrf
1928                DO k=1,klev
1929                   zx_tmp_fi3d(:,k)=zx_tmp_fi3d(:,k) &
1930                        +pctsrf(:,nsrf)*pbl_tke(:,k,nsrf)
1931                ENDDO
1932             ENDDO
1933          ENDIF
1934          CALL histwrite_phy(o_tke, zx_tmp_fi3d)
1935          CALL histwrite_phy(o_tke_max, zx_tmp_fi3d) 
1936
1937       ENDIF
1938
1939       CALL histwrite_phy(o_kz, coefh(:,:,is_ave))
1940
1941       CALL histwrite_phy(o_kz_max, coefh(:,:,is_ave))
1942
1943       CALL histwrite_phy(o_clwcon, clwcon0)
1944       CALL histwrite_phy(o_dtdyn, d_t_dyn)
1945
1946       CALL histwrite_phy(o_dqdyn, d_q_dyn)
1947
1948       CALL histwrite_phy(o_dqdyn2d,d_q_dyn2d)
1949
1950       CALL histwrite_phy(o_dqldyn, d_ql_dyn)
1951
1952       CALL histwrite_phy(o_dqldyn2d, d_ql_dyn2d)
1953
1954       CALL histwrite_phy(o_dqsdyn, d_qs_dyn)
1955
1956       CALL histwrite_phy(o_dqsdyn2d, d_qs_dyn2d)
1957
1958       CALL histwrite_phy(o_dudyn, d_u_dyn)
1959       CALL histwrite_phy(o_dvdyn, d_v_dyn)
1960
1961       IF (vars_defined) THEN
1962          zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys
1963       ENDIF
1964       CALL histwrite_phy(o_dtcon, zx_tmp_fi3d)
1965       IF (iflag_thermals.EQ.0) THEN
1966          IF (vars_defined) THEN
1967             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
1968                  d_t_ajsb(1:klon,1:klev)/pdtphys
1969          ENDIF
1970          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
1971       ELSE IF(iflag_thermals.GE.1.AND.iflag_wake.EQ.1) THEN
1972          IF (vars_defined) THEN
1973             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
1974                  d_t_ajs(1:klon,1:klev)/pdtphys + &
1975                  d_t_wake(1:klon,1:klev)/pdtphys
1976          ENDIF
1977          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
1978       ENDIF
1979       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_con(1:klon,1:klev)/pdtphys
1980       CALL histwrite_phy(o_ducon, zx_tmp_fi3d)
1981       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_con(1:klon,1:klev)/pdtphys
1982       CALL histwrite_phy(o_dvcon, zx_tmp_fi3d)
1983       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
1984       CALL histwrite_phy(o_dqcon, zx_tmp_fi3d)
1985       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1986       CALL histwrite_phy(o_dqcon2d, zx_tmp_fi2d)
1987
1988       IF (iflag_thermals.EQ.0) THEN
1989          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
1990          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
1991       ELSE IF (iflag_thermals.GE.1.AND.iflag_wake.EQ.1) THEN
1992          IF (vars_defined) THEN
1993             zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys + &
1994                  d_q_ajs(1:klon,1:klev)/pdtphys + &
1995                  d_q_wake(1:klon,1:klev)/pdtphys
1996          ENDIF
1997          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
1998       ENDIF
1999
2000       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lsc(1:klon,1:klev)/pdtphys
2001       CALL histwrite_phy(o_dtlsc, zx_tmp_fi3d)
2002       IF (vars_defined) zx_tmp_fi3d(1:klon, 1:klev)=(d_t_lsc(1:klon,1:klev)+ &
2003            d_t_eva(1:klon,1:klev))/pdtphys
2004       CALL histwrite_phy(o_dtlschr, zx_tmp_fi3d)
2005       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys
2006       CALL histwrite_phy(o_dqlsc, zx_tmp_fi3d)
2007       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2008       CALL histwrite_phy(o_dqlsc2d, zx_tmp_fi2d)
2009       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=beta_prec(1:klon,1:klev)
2010       CALL histwrite_phy(o_beta_prec, zx_tmp_fi3d)
2011!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2012       ! Sorties specifiques a la separation thermiques/non thermiques
2013       IF (iflag_thermals>=1) THEN
2014          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscth(1:klon,1:klev)/pdtphys
2015          CALL histwrite_phy(o_dtlscth, zx_tmp_fi3d)
2016          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscst(1:klon,1:klev)/pdtphys
2017          CALL histwrite_phy(o_dtlscst, zx_tmp_fi3d)
2018          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscth(1:klon,1:klev)/pdtphys
2019          CALL histwrite_phy(o_dqlscth, zx_tmp_fi3d)
2020          IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2021          CALL histwrite_phy(o_dqlscth2d, zx_tmp_fi2d)
2022          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscst(1:klon,1:klev)/pdtphys
2023          CALL histwrite_phy(o_dqlscst, zx_tmp_fi3d)
2024          IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2025          CALL histwrite_phy(o_dqlscst2d, zx_tmp_fi2d)
2026          CALL histwrite_phy(o_plulth, plul_th)
2027          CALL histwrite_phy(o_plulst, plul_st)
2028          IF (vars_defined) THEN
2029             DO i=1,klon
2030                zx_tmp_fi2d(1:klon)=lmax_th(:)
2031             ENDDO
2032          ENDIF
2033          CALL histwrite_phy(o_lmaxth, zx_tmp_fi2d)
2034          IF (vars_defined) THEN
2035             DO k=1,klev
2036                DO i=1,klon
2037                   IF (ptconvth(i,k)) THEN
2038                      zx_tmp_fi3d(i,k)=1.
2039                   ELSE
2040                      zx_tmp_fi3d(i,k)=0.
2041                   ENDIF
2042                ENDDO
2043             ENDDO
2044          ENDIF
2045          CALL histwrite_phy(o_ptconvth, zx_tmp_fi3d)
2046       ENDIF ! iflag_thermals>=1
2047!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2048       zpt_conv = 0.
2049       WHERE (ptconv) zpt_conv = 1.
2050       CALL histwrite_phy(o_ptconv, zpt_conv)
2051!!       IF (vars_defined)         zx_tmp_fi2d=float(itau_con)/float(itap)
2052!!       CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
2053       IF (vars_defined) THEN
2054          zpt_conv2d(:) = 0.
2055          DO k=1,klev
2056            WHERE (ptconv(:,k)) zpt_conv2d(:) = 1.
2057          ENDDO
2058       ENDIF
2059       CALL histwrite_phy(o_ftime_deepcv, zpt_conv2d)
2060       IF (vars_defined) THEN
2061          zx_tmp_fi2d(:) = 0.
2062          DO k=1,klev
2063            WHERE (ptconvth(:,k)) zx_tmp_fi2d(:) = 1.
2064          ENDDO
2065       ENDIF
2066       CALL histwrite_phy(o_ftime_th, zx_tmp_fi2d)
2067       IF (vars_defined) THEN
2068           zx_tmp_fi2d(:) = max(zx_tmp_fi2d(:),zpt_conv2d(:))
2069       ENDIF
2070       CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
2071!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2072       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf(1:klon,1:klev)/pdtphys
2073       CALL histwrite_phy(o_dtvdf, zx_tmp_fi3d)
2074       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_diss(1:klon,1:klev)/pdtphys
2075       CALL histwrite_phy(o_dtdis, zx_tmp_fi3d)
2076       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf(1:klon,1:klev)/pdtphys
2077       CALL histwrite_phy(o_dqvdf, zx_tmp_fi3d)
2078       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2079       CALL histwrite_phy(o_dqvdf2d, zx_tmp_fi2d)
2080       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_eva(1:klon,1:klev)/pdtphys
2081       CALL histwrite_phy(o_dteva, zx_tmp_fi3d)
2082       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_eva(1:klon,1:klev)/pdtphys
2083       CALL histwrite_phy(o_dqeva, zx_tmp_fi3d)
2084       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2085       CALL histwrite_phy(o_dqeva2d, zx_tmp_fi2d)
2086       CALL histwrite_phy(o_ratqs, ratqs)
2087       IF (vars_defined) THEN
2088          zx_tmp_fi3d(1:klon,1:klev)=d_t_ajs(1:klon,1:klev)/pdtphys - &
2089               d_t_ajsb(1:klon,1:klev)/pdtphys
2090       ENDIF
2091       CALL histwrite_phy(o_dtthe, zx_tmp_fi3d)
2092       IF (vars_defined) THEN
2093          zx_tmp_fi3d(1:klon,1:klev)=d_u_ajs(1:klon,1:klev)/pdtphys
2094       ENDIF
2095       CALL histwrite_phy(o_duthe, zx_tmp_fi3d)
2096       IF (vars_defined) THEN
2097          zx_tmp_fi3d(1:klon,1:klev)=d_v_ajs(1:klon,1:klev)/pdtphys
2098       ENDIF
2099       CALL histwrite_phy(o_dvthe, zx_tmp_fi3d)
2100
2101       IF (iflag_thermals>=1) THEN
2102          ! Pour l instant 0 a y reflichir pour les thermiques
2103          ! regroupe avec ftime_deepcv et ftime_con
2104          !!zx_tmp_fi2d=0.
2105          !!CALL histwrite_phy(o_ftime_th, zx_tmp_fi2d)
2106          CALL histwrite_phy(o_f_th, fm_therm)
2107          CALL histwrite_phy(o_e_th, entr_therm)
2108          CALL histwrite_phy(o_w_th, zw2)
2109          CALL histwrite_phy(o_q_th, zqasc)
2110          CALL histwrite_phy(o_a_th, fraca)
2111          CALL histwrite_phy(o_cloudth_sth, cloudth_sth)
2112          CALL histwrite_phy(o_cloudth_senv, cloudth_senv)
2113          CALL histwrite_phy(o_cloudth_sigmath, cloudth_sigmath)
2114          CALL histwrite_phy(o_cloudth_sigmaenv, cloudth_sigmaenv)
2115          CALL histwrite_phy(o_d_th, detr_therm)
2116          CALL histwrite_phy(o_f0_th, f0)
2117          CALL histwrite_phy(o_zmax_th, zmax_th)
2118          IF (vars_defined) THEN
2119             zx_tmp_fi3d(1:klon,1:klev)=d_q_ajs(1:klon,1:klev)/pdtphys - &
2120                  d_q_ajsb(1:klon,1:klev)/pdtphys
2121          ENDIF
2122          CALL histwrite_phy(o_dqthe, zx_tmp_fi3d)
2123          IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2124          CALL histwrite_phy(o_dqthe2d, zx_tmp_fi2d)
2125       ENDIF !iflag_thermals
2126       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ajsb(1:klon,1:klev)/pdtphys
2127       CALL histwrite_phy(o_dtajs, zx_tmp_fi3d)
2128       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_ajsb(1:klon,1:klev)/pdtphys
2129       CALL histwrite_phy(o_dqajs, zx_tmp_fi3d)
2130       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2131       CALL histwrite_phy(o_dqajs2d, zx_tmp_fi2d)
2132       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys
2133       CALL histwrite_phy(o_dtswr, zx_tmp_fi3d)
2134       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_sw0(1:klon,1:klev)/pdtphys
2135       CALL histwrite_phy(o_dtsw0, zx_tmp_fi3d)
2136       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lwr(1:klon,1:klev)/pdtphys
2137       CALL histwrite_phy(o_dtlwr, zx_tmp_fi3d)
2138       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lw0(1:klon,1:klev)/pdtphys
2139       CALL histwrite_phy(o_dtlw0, zx_tmp_fi3d)
2140       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ec(1:klon,1:klev)/pdtphys
2141       CALL histwrite_phy(o_dtec, zx_tmp_fi3d)
2142       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_vdf(1:klon,1:klev)/pdtphys
2143       CALL histwrite_phy(o_duvdf, zx_tmp_fi3d)
2144       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_vdf(1:klon,1:klev)/pdtphys
2145       CALL histwrite_phy(o_dvvdf, zx_tmp_fi3d)
2146       IF (ok_orodr) THEN
2147          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_oro(1:klon,1:klev)/pdtphys
2148          CALL histwrite_phy(o_duoro, zx_tmp_fi3d)
2149          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_oro(1:klon,1:klev)/pdtphys
2150          CALL histwrite_phy(o_dvoro, zx_tmp_fi3d)
2151          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_oro(1:klon,1:klev)/pdtphys
2152          CALL histwrite_phy(o_dtoro, zx_tmp_fi3d)
2153       ENDIF
2154       IF (ok_orolf) THEN
2155          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_lif(1:klon,1:klev)/pdtphys
2156          CALL histwrite_phy(o_dulif, zx_tmp_fi3d)
2157
2158          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_lif(1:klon,1:klev)/pdtphys
2159          CALL histwrite_phy(o_dvlif, zx_tmp_fi3d)
2160
2161          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lif(1:klon,1:klev)/pdtphys
2162          CALL histwrite_phy(o_dtlif, zx_tmp_fi3d)
2163       ENDIF
2164
2165       IF (ok_hines) THEN
2166          IF (vars_defined) zx_tmp_fi3d=du_gwd_hines/pdtphys
2167          CALL histwrite_phy(o_du_gwd_hines, zx_tmp_fi3d)
2168
2169          IF (vars_defined) zx_tmp_fi3d= dv_gwd_hines/pdtphys         
2170          CALL histwrite_phy(o_dv_gwd_hines, zx_tmp_fi3d)
2171         
2172          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_hin(1:klon,1:klev)/pdtphys
2173          CALL histwrite_phy(o_dthin, zx_tmp_fi3d)
2174          CALL histwrite_phy(o_ustr_gwd_hines, zustr_gwd_hines)
2175          CALL histwrite_phy(o_vstr_gwd_hines, zvstr_gwd_hines)
2176       ENDIF
2177
2178       IF (.not. ok_hines .and. ok_gwd_rando) THEN
2179          IF (vars_defined)  zx_tmp_fi3d=du_gwd_front / pdtphys
2180          CALL histwrite_phy(o_du_gwd_front, zx_tmp_fi3d)
2181         
2182          IF (vars_defined)  zx_tmp_fi3d=dv_gwd_front / pdtphys
2183          CALL histwrite_phy(o_dv_gwd_front, zx_tmp_fi3d)
2184         
2185          CALL histwrite_phy(o_ustr_gwd_front, zustr_gwd_front)
2186          CALL histwrite_phy(o_vstr_gwd_front, zvstr_gwd_front)
2187       ENDIF
2188
2189       IF (ok_gwd_rando) THEN
2190          IF (vars_defined)  zx_tmp_fi3d=du_gwd_rando / pdtphys
2191          CALL histwrite_phy(o_du_gwd_rando, zx_tmp_fi3d)
2192         
2193          IF (vars_defined)  zx_tmp_fi3d=dv_gwd_rando / pdtphys
2194          CALL histwrite_phy(o_dv_gwd_rando, zx_tmp_fi3d)
2195          CALL histwrite_phy(o_ustr_gwd_rando, zustr_gwd_rando)
2196          CALL histwrite_phy(o_vstr_gwd_rando, zvstr_gwd_rando)
2197          CALL histwrite_phy(o_east_gwstress, east_gwstress )
2198          CALL histwrite_phy(o_west_gwstress, west_gwstress )
2199       ENDIF
2200
2201       IF (ok_qch4) THEN
2202          IF (vars_defined) zx_tmp_fi3d=d_q_ch4 / pdtphys
2203          CALL histwrite_phy(o_dqch4, zx_tmp_fi3d)
2204       ENDIF
2205       
2206       IF (vars_defined) THEN
2207         DO k=1, klevp1
2208           zx_tmp_fi3d1(:,k)=swup(:,k)*swradcorr(:)
2209         ENDDO
2210       ENDIF
2211       
2212       CALL histwrite_phy(o_rsu, zx_tmp_fi3d1)
2213
2214
2215       IF (vars_defined) THEN
2216         DO k=1, klevp1
2217           zx_tmp_fi3d1(:,k)=swdn(:,k)*swradcorr(:)
2218         ENDDO
2219       ENDIF
2220       
2221       CALL histwrite_phy(o_rsd, zx_tmp_fi3d1)
2222
2223       IF (vars_defined) THEN
2224         DO k=1, klevp1
2225           zx_tmp_fi3d1(:,k)=swup0(:,k)*swradcorr(:)
2226         ENDDO
2227       ENDIF
2228       
2229       CALL histwrite_phy(o_rsucs, zx_tmp_fi3d1)
2230
2231       IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN
2232          IF (vars_defined) THEN
2233             DO k=1, klevp1
2234                zx_tmp_fi3d1(:,k)=swupc0(:,k)*swradcorr(:)
2235             ENDDO
2236          ENDIF
2237          CALL histwrite_phy(o_rsucsaf, zx_tmp_fi3d1)
2238       ENDIF
2239
2240       IF (vars_defined) THEN
2241         DO k=1, klevp1
2242           zx_tmp_fi3d1(:,k)=swdn0(:,k)*swradcorr(:)
2243         ENDDO
2244       ENDIF
2245       CALL histwrite_phy(o_rsdcs, zx_tmp_fi3d1)
2246
2247       IF (ALL(types_trac/='inca') .OR. config_inca=='aeNP') THEN
2248          IF (vars_defined) THEN
2249             DO k=1, klevp1
2250                zx_tmp_fi3d1(:,k)=swdnc0(:,k)*swradcorr(:)
2251             ENDDO
2252          ENDIF
2253          CALL histwrite_phy(o_rsdcsaf, zx_tmp_fi3d1)
2254       ENDIF
2255
2256       CALL histwrite_phy(o_rlu, lwup)
2257       CALL histwrite_phy(o_rld, lwdn)
2258       CALL histwrite_phy(o_rlucs, lwup0)
2259       CALL histwrite_phy(o_rldcs, lwdn0)
2260
2261       IF (vars_defined) THEN
2262          zx_tmp_fi3d(1:klon,1:klev)=d_t(1:klon,1:klev)+ &
2263               d_t_dyn(1:klon,1:klev)
2264       ENDIF
2265       CALL histwrite_phy(o_tnt, zx_tmp_fi3d)
2266
2267       IF (vars_defined) THEN
2268          zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys + &
2269               d_t_lwr(1:klon,1:klev)/pdtphys
2270       ENDIF
2271       CALL histwrite_phy(o_tntr, zx_tmp_fi3d)
2272       IF (vars_defined) THEN
2273          zx_tmp_fi3d(1:klon,1:klev)= (d_t_lsc(1:klon,1:klev)+ &
2274               d_t_eva(1:klon,1:klev)+ &
2275               d_t_vdf(1:klon,1:klev))/pdtphys
2276       ENDIF
2277       CALL histwrite_phy(o_tntscpbl, zx_tmp_fi3d)
2278       IF (vars_defined) THEN
2279          zx_tmp_fi3d(1:klon,1:klev)=d_qx(1:klon,1:klev,ivap)+ &
2280               d_q_dyn(1:klon,1:klev)
2281       ENDIF
2282       CALL histwrite_phy(o_tnhus, zx_tmp_fi3d)
2283       IF (vars_defined) THEN
2284          zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys+ &
2285               d_q_eva(1:klon,1:klev)/pdtphys
2286       ENDIF
2287       CALL histwrite_phy(o_tnhusscpbl, zx_tmp_fi3d)
2288       CALL histwrite_phy(o_evu, coefm(:,:,is_ave))
2289       IF (vars_defined) THEN
2290          zx_tmp_fi3d(1:klon,1:klev)=q_seri(1:klon,1:klev)+ &
2291               ql_seri(1:klon,1:klev)
2292       ENDIF
2293       CALL histwrite_phy(o_h2o, zx_tmp_fi3d)
2294       IF (iflag_con >= 3) THEN
2295          IF (vars_defined) THEN
2296             zx_tmp_fi3d(1:klon,1:klev)=-1 * (dnwd(1:klon,1:klev)+ &
2297                  dnwd0(1:klon,1:klev))
2298          ENDIF
2299          CALL histwrite_phy(o_mcd, zx_tmp_fi3d)
2300          IF (vars_defined) THEN
2301             zx_tmp_fi3d(1:klon,1:klev)=upwd(1:klon,1:klev) + &
2302                  dnwd(1:klon,1:klev)+ dnwd0(1:klon,1:klev)
2303          ENDIF
2304          CALL histwrite_phy(o_dmc, zx_tmp_fi3d)
2305       ELSE IF (iflag_con == 2) THEN
2306          CALL histwrite_phy(o_mcd,  pmfd)
2307          IF (vars_defined) zx_tmp_fi3d = pmfu + pmfd
2308          CALL histwrite_phy(o_dmc,  zx_tmp_fi3d)
2309       ENDIF
2310       CALL histwrite_phy(o_ref_liq, ref_liq)
2311       CALL histwrite_phy(o_ref_ice, ref_ice)
2312!
2313       IF (ok_4xCO2atm) THEN
2314          IF (vars_defined) zx_tmp_fi2d(:) = swupp(:,klevp1)*swradcorr(:)
2315          CALL histwrite_phy(o_rsut4co2, zx_tmp_fi2d)
2316          IF (vars_defined) zx_tmp_fi2d(:) = lwupp(:,klevp1)
2317          CALL histwrite_phy(o_rlut4co2, zx_tmp_fi2d)
2318          IF (vars_defined) zx_tmp_fi2d(:) = swup0p(:,klevp1)*swradcorr(:)
2319          CALL histwrite_phy(o_rsutcs4co2, zx_tmp_fi2d)
2320          IF (vars_defined) zx_tmp_fi2d(:) = lwup0p(:,klevp1)
2321          CALL histwrite_phy(o_rlutcs4co2, zx_tmp_fi2d)
2322          IF (vars_defined) THEN
2323            DO k=1, klevp1
2324              zx_tmp_fi3d1(:,k)=swupp(:,k)*swradcorr(:)
2325            ENDDO
2326          ENDIF
2327          CALL histwrite_phy(o_rsu4co2, zx_tmp_fi3d1)
2328          IF (vars_defined) THEN
2329            DO k=1, klevp1
2330              zx_tmp_fi3d1(:,k)=swup0p(:,k)*swradcorr(:)
2331            ENDDO
2332          ENDIF
2333          CALL histwrite_phy(o_rsucs4co2, zx_tmp_fi3d1)
2334          IF (vars_defined) THEN
2335            DO k=1, klevp1
2336              zx_tmp_fi3d1(:,k)=swdnp(:,k)*swradcorr(:)
2337            ENDDO
2338          ENDIF
2339          CALL histwrite_phy(o_rsd4co2, zx_tmp_fi3d1)
2340          IF (vars_defined) THEN
2341            DO k=1, klevp1
2342              zx_tmp_fi3d1(:,k)=swdn0p(:,k)*swradcorr(:)
2343            ENDDO
2344          ENDIF
2345          CALL histwrite_phy(o_rsdcs4co2, zx_tmp_fi3d1)
2346          CALL histwrite_phy(o_rlu4co2, lwupp)
2347          CALL histwrite_phy(o_rlucs4co2, lwup0p)
2348          CALL histwrite_phy(o_rld4co2, lwdnp)
2349          CALL histwrite_phy(o_rldcs4co2, lwdn0p)
2350       ENDIF !ok_4xCO2atm
2351!!!!!!!!!!!! Sorties niveaux de pression NMC !!!!!!!!!!!!!!!!!!!!
2352#ifdef CPP_IOIPSL
2353#ifndef CPP_XIOS
2354  IF (.NOT.ok_all_xml) THEN
2355       ! ATTENTION, LES ANCIENS HISTWRITE ONT ETES CONSERVES EN ATTENDANT MIEUX:
2356       ! Champs interpolles sur des niveaux de pression
2357       DO iff=7, nfiles-1 !--OB: here we deal with files 7,8,9
2358
2359          CALL histwrite_phy(o_tnondef,tnondef(:,:,iff-6),iff)
2360          CALL histwrite_phy(o_ta,twriteSTD(:,:,iff-6),iff)
2361          CALL histwrite_phy(o_zg,phiwriteSTD(:,:,iff-6),iff)
2362          CALL histwrite_phy(o_hus,qwriteSTD(:,:,iff-6),iff)
2363          CALL histwrite_phy(o_hur,rhwriteSTD(:,:,iff-6),iff)
2364          CALL histwrite_phy(o_ua,uwriteSTD(:,:,iff-6),iff)
2365          CALL histwrite_phy(o_va,vwriteSTD(:,:,iff-6),iff)
2366          CALL histwrite_phy(o_wap,wwriteSTD(:,:,iff-6),iff)
2367          IF (vars_defined) THEN
2368             DO k=1, nlevSTD
2369                DO i=1, klon
2370                   IF (tnondef(i,k,iff-6).NE.missing_val) THEN
2371                      IF (freq_outNMC(iff-6).LT.0) THEN
2372                         freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
2373                      ELSE
2374                         freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
2375                      ENDIF
2376                      zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,iff-6))/freq_moyNMC(iff-6)
2377                   ELSE
2378                      zx_tmp_fi3d_STD(i,k) = missing_val
2379                   ENDIF
2380                ENDDO
2381             ENDDO
2382          ENDIF
2383          CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD,iff)
2384          IF (vars_defined) THEN
2385             DO k=1, nlevSTD
2386                DO i=1, klon
2387                   IF (O3sumSTD(i,k,iff-6).NE.missing_val) THEN
2388                      zx_tmp_fi3d_STD(i,k) = O3sumSTD(i,k,iff-6) * 1.e+9
2389                   ELSE
2390                      zx_tmp_fi3d_STD(i,k) = missing_val
2391                   ENDIF
2392                ENDDO
2393             ENDDO !k=1, nlevSTD
2394          ENDIF
2395          CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD,iff)
2396          IF (read_climoz == 2) THEN
2397             IF (vars_defined) THEN
2398                DO k=1, nlevSTD
2399                   DO i=1, klon
2400                      IF (O3daysumSTD(i,k,iff-6).NE.missing_val) THEN
2401                         zx_tmp_fi3d_STD(i,k) = O3daysumSTD(i,k,iff-6) * 1.e+9
2402                      ELSE
2403                         zx_tmp_fi3d_STD(i,k) = missing_val
2404                      ENDIF
2405                   ENDDO
2406                ENDDO !k=1, nlevSTD
2407             ENDIF
2408             CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD,iff)
2409          endif
2410          CALL histwrite_phy(o_uxv,uvsumSTD(:,:,iff-6),iff)
2411          CALL histwrite_phy(o_vxq,vqsumSTD(:,:,iff-6),iff)
2412          CALL histwrite_phy(o_vxT,vTsumSTD(:,:,iff-6),iff)
2413          CALL histwrite_phy(o_wxq,wqsumSTD(:,:,iff-6),iff)
2414          CALL histwrite_phy(o_vxphi,vphisumSTD(:,:,iff-6),iff)
2415          CALL histwrite_phy(o_wxT,wTsumSTD(:,:,iff-6),iff)
2416          CALL histwrite_phy(o_uxu,u2sumSTD(:,:,iff-6),iff)
2417          CALL histwrite_phy(o_vxv,v2sumSTD(:,:,iff-6),iff)
2418          CALL histwrite_phy(o_TxT,T2sumSTD(:,:,iff-6),iff)
2419       ENDDO !nfiles
2420  ENDIF
2421#endif
2422#endif
2423#ifdef CPP_XIOS
2424  IF (ok_all_xml) THEN
2425!      DO iff=7, nfiles
2426
2427!         CALL histwrite_phy(o_tnondef,tnondef(:,:,3))
2428          CALL histwrite_phy(o_ta,tlevSTD(:,:))
2429          CALL histwrite_phy(o_zg,philevSTD(:,:))
2430          CALL histwrite_phy(o_hus,qlevSTD(:,:))
2431          CALL histwrite_phy(o_hur,rhlevSTD(:,:))
2432          CALL histwrite_phy(o_ua,ulevSTD(:,:))
2433          CALL histwrite_phy(o_va,vlevSTD(:,:))
2434          CALL histwrite_phy(o_wap,wlevSTD(:,:))
2435!         IF (vars_defined) THEN
2436!            DO k=1, nlevSTD
2437!               DO i=1, klon
2438!                  IF (tnondef(i,k,3).NE.missing_val) THEN
2439!                     IF (freq_outNMC(iff-6).LT.0) THEN
2440!                        freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
2441!                     ELSE
2442!                        freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
2443!                     ENDIF
2444!                     zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,3))/freq_moyNMC(iff-6)
2445!                  ELSE
2446!                     zx_tmp_fi3d_STD(i,k) = missing_val
2447!                  ENDIF
2448!               ENDDO
2449!            ENDDO
2450!         ENDIF
2451!         CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD)
2452          IF (vars_defined) THEN
2453             DO k=1, nlevSTD
2454                DO i=1, klon
2455                   IF (O3STD(i,k).NE.missing_val) THEN
2456                      zx_tmp_fi3d_STD(i,k) = O3STD(i,k) * 1.e+9
2457                   ELSE
2458                      zx_tmp_fi3d_STD(i,k) = missing_val
2459                   ENDIF
2460                ENDDO
2461             ENDDO !k=1, nlevSTD
2462          ENDIF
2463          CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD)
2464          IF (read_climoz == 2) THEN
2465             IF (vars_defined) THEN
2466                DO k=1, nlevSTD
2467                   DO i=1, klon
2468                      IF (O3daySTD(i,k).NE.missing_val) THEN
2469                         zx_tmp_fi3d_STD(i,k) = O3daySTD(i,k) * 1.e+9
2470                      ELSE
2471                         zx_tmp_fi3d_STD(i,k) = missing_val
2472                      ENDIF
2473                   ENDDO
2474                ENDDO !k=1, nlevSTD
2475             ENDIF
2476             CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD)
2477          ENDIF
2478          CALL histwrite_phy(o_uxv,uvSTD(:,:))
2479          CALL histwrite_phy(o_vxq,vqSTD(:,:))
2480          CALL histwrite_phy(o_vxT,vTSTD(:,:))
2481          CALL histwrite_phy(o_wxq,wqSTD(:,:))
2482          CALL histwrite_phy(o_vxphi,vphiSTD(:,:))
2483          CALL histwrite_phy(o_wxT,wTSTD(:,:))
2484          CALL histwrite_phy(o_uxu,u2STD(:,:))
2485          CALL histwrite_phy(o_vxv,v2STD(:,:))
2486          CALL histwrite_phy(o_TxT,T2STD(:,:))
2487!      ENDDO !nfiles
2488  ENDIF
2489#endif
2490!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2491       IF (iflag_phytrac == 1 ) then
2492!
2493         IF (ANY(types_trac == 'co2i')) THEN
2494           itr = 0
2495           DO iq = 1, nqtot
2496             IF(.NOT.tracers(iq)%isInPhysics) CYCLE
2497             itr = itr + 1
2498!            write(*,*) 'phys_output_write_mod 2370: itr=',itr
2499             !--3D fields
2500             CALL histwrite_phy(o_trac(itr), tr_seri(:,:,itr))
2501             CALL histwrite_phy(o_dtr_vdf(itr),d_tr_cl(:,:,itr))
2502             CALL histwrite_phy(o_dtr_the(itr),d_tr_th(:,:,itr))
2503             CALL histwrite_phy(o_dtr_con(itr),d_tr_cv(:,:,itr))
2504             !--2D fields
2505             !--CO2 burden
2506             zx_tmp_fi2d=0.
2507             IF (vars_defined) THEN
2508                DO k=1,klev
2509                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,itr)
2510                ENDDO
2511             ENDIF
2512             CALL histwrite_phy(o_trac_cum(itr), zx_tmp_fi2d)
2513           ENDDO !--iq
2514           !--CO2 net fluxes
2515           CALL histwrite_phy(o_flx_co2_land,  fco2_land)
2516           CALL histwrite_phy(o_flx_co2_ocean, fco2_ocean)
2517           CALL histwrite_phy(o_flx_co2_ocean_cor, fco2_ocean_cor)
2518           CALL histwrite_phy(o_flx_co2_land_cor, fco2_land_cor)
2519           CALL histwrite_phy(o_flx_co2_ff,    fco2_ff)
2520           CALL histwrite_phy(o_flx_co2_bb,    fco2_bb)
2521
2522         ELSE IF (ANY(types_trac == 'inco')) THEN
2523           itr = 0
2524           DO iq = 1, nqtot
2525             IF(.NOT.tracers(iq)%isInPhysics) CYCLE
2526             itr = itr+1
2527             IF(tracers(iq)%component /= 'co2i') CYCLE
2528             !--3D fields
2529             CALL histwrite_phy(o_trac   (itr),tr_seri(:,:,itr))
2530             CALL histwrite_phy(o_dtr_vdf(itr),d_tr_cl(:,:,itr))
2531             CALL histwrite_phy(o_dtr_the(itr),d_tr_th(:,:,itr))
2532             CALL histwrite_phy(o_dtr_con(itr),d_tr_cv(:,:,itr))
2533             !--2D fields
2534             !--CO2 burden
2535             zx_tmp_fi2d=0.
2536             IF (vars_defined) THEN
2537                DO k=1,klev
2538                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,itr)
2539                ENDDO
2540             ENDIF
2541             CALL histwrite_phy(o_trac_cum(itr), zx_tmp_fi2d)
2542           ENDDO !--iq
2543           !--CO2 net fluxes
2544           CALL histwrite_phy(o_flx_co2_land,  fco2_land)
2545           CALL histwrite_phy(o_flx_co2_ocean, fco2_ocean)
2546           CALL histwrite_phy(o_flx_co2_ocean_cor, fco2_ocean_cor)
2547           CALL histwrite_phy(o_flx_co2_land_cor, fco2_land_cor)
2548           CALL histwrite_phy(o_flx_co2_ff,    fco2_ff)
2549           CALL histwrite_phy(o_flx_co2_bb,    fco2_bb)
2550
2551         ELSE IF (ANY(type_trac==['lmdz|coag','lmdz     ','coag     '])) THEN
2552           itr = 0
2553           DO iq = 1, nqtot
2554             IF(.NOT.tracers(iq)%isInPhysics) CYCLE
2555             itr = itr + 1
2556!            write(*,*) 'phys_output_write_mod 2337: itr=',itr
2557             !--3D fields
2558             CALL histwrite_phy(o_trac(itr), tr_seri(:,:,itr))
2559             CALL histwrite_phy(o_dtr_vdf(itr),d_tr_cl(:,:,itr))
2560             CALL histwrite_phy(o_dtr_the(itr),d_tr_th(:,:,itr))
2561             CALL histwrite_phy(o_dtr_con(itr),d_tr_cv(:,:,itr))
2562             CALL histwrite_phy(o_dtr_lessi_impa(itr),d_tr_lessi_impa(:,:,itr))
2563             CALL histwrite_phy(o_dtr_lessi_nucl(itr),d_tr_lessi_nucl(:,:,itr))
2564             CALL histwrite_phy(o_dtr_insc(itr),d_tr_insc(:,:,itr))
2565             CALL histwrite_phy(o_dtr_bcscav(itr),d_tr_bcscav(:,:,itr))
2566             CALL histwrite_phy(o_dtr_evapls(itr),d_tr_evapls(:,:,itr))
2567             CALL histwrite_phy(o_dtr_ls(itr),d_tr_ls(:,:,itr))
2568             CALL histwrite_phy(o_dtr_trsp(itr),d_tr_trsp(:,:,itr))
2569             CALL histwrite_phy(o_dtr_sscav(itr),d_tr_sscav(:,:,itr))
2570             CALL histwrite_phy(o_dtr_sat(itr),d_tr_sat(:,:,itr))
2571             CALL histwrite_phy(o_dtr_uscav(itr),d_tr_uscav(:,:,itr))
2572            !--2D fields
2573             CALL histwrite_phy(o_dtr_dry(itr), flux_tr_dry(:,itr))
2574             zx_tmp_fi2d=0.
2575             IF (vars_defined) THEN
2576                DO k=1,klev
2577                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,itr)
2578                ENDDO
2579             ENDIF
2580             CALL histwrite_phy(o_trac_cum(itr), zx_tmp_fi2d)
2581           ENDDO !--iq
2582         ENDIF   !--type_trac
2583       ENDIF   !(iflag_phytrac==1)
2584
2585       if (activate_ocean_skin >= 1) then
2586          CALL histwrite_phy(o_delta_sst, delta_sst)
2587          CALL histwrite_phy(o_delta_sal, delta_sal)
2588          CALL histwrite_phy(o_ds_ns, ds_ns)
2589          CALL histwrite_phy(o_dt_ns, dt_ns)
2590          CALL histwrite_phy(o_dter, dter)
2591          CALL histwrite_phy(o_dser, dser)
2592          CALL histwrite_phy(o_tkt, tkt)
2593          CALL histwrite_phy(o_tks, tks)
2594          CALL histwrite_phy(o_taur, taur)
2595          CALL histwrite_phy(o_sss, sss)
2596       end if
2597
2598#ifdef ISO
2599    do ixt=1,ntiso
2600!        write(*,*) 'ixt'
2601        IF (vars_defined) zx_tmp_fi2d(:) = xtrain_fall(ixt,:) + xtsnow_fall(ixt,:)
2602        CALL histwrite_phy(o_xtprecip(ixt), zx_tmp_fi2d)
2603
2604        IF (vars_defined) zx_tmp_fi2d(:) = xtrain_lsc(ixt,:) + xtsnow_lsc(ixt,:)
2605        CALL histwrite_phy(o_xtplul(ixt), zx_tmp_fi2d)
2606
2607        IF (vars_defined) zx_tmp_fi2d(:) = xtrain_con(ixt,:) + xtsnow_con(ixt,:)
2608        CALL histwrite_phy(o_xtpluc(ixt), zx_tmp_fi2d)
2609        CALL histwrite_phy(o_xtevap(ixt),   xtevap(ixt,:))
2610        CALL histwrite_phy(o_xtovap(ixt),  xt_seri(ixt,:,:))
2611        CALL histwrite_phy(o_xtoliq(ixt), xtl_seri(ixt,:,:))
2612
2613        IF (vars_defined) zx_tmp_fi3d(:,:)=xtl_seri(ixt,:,:)+xts_seri(ixt,:,:)
2614        CALL histwrite_phy(o_xtcond(ixt), zx_tmp_fi3d)
2615        CALL histwrite_phy(o_dxtdyn(ixt),   d_xt_dyn(ixt,:,:))
2616        CALL histwrite_phy(o_dxtldyn(ixt), d_xtl_dyn(ixt,:,:))
2617
2618        IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_con(ixt,:,:)/pdtphys
2619        CALL histwrite_phy(o_dxtcon(ixt), zx_tmp_fi3d)
2620
2621        IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_lsc(ixt,:,:)/pdtphys
2622        CALL histwrite_phy(o_dxtlsc(ixt), zx_tmp_fi3d)
2623
2624        IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_eva(ixt,:,:)/pdtphys
2625        CALL histwrite_phy(o_dxteva(ixt), zx_tmp_fi3d)
2626
2627        IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_vdf(ixt,:,:)/pdtphys
2628        CALL histwrite_phy(o_dxtvdf(ixt), zx_tmp_fi3d)
2629
2630        IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_ajsb(ixt,:,:)/pdtphys
2631        CALL histwrite_phy(o_dxtajs(ixt), zx_tmp_fi3d)
2632
2633        IF (vars_defined) zx_tmp_fi3d(:,:)=(d_xt_ajs(ixt,:,:)-d_xt_ajsb(ixt,:,:))/pdtphys
2634        CALL histwrite_phy(o_dxtthe(ixt), zx_tmp_fi3d)
2635
2636        IF (ok_qch4) THEN
2637          IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_ch4(ixt,:,:)/pdtphys
2638          CALL histwrite_phy(o_dxtch4(ixt), zx_tmp_fi3d)
2639        END IF
2640
2641        IF (ixt == iso_HTO) THEN
2642          IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_prod_nucl(ixt,:,:)/pdtphys
2643          CALL histwrite_phy(o_dxtprod_nucl(ixt), zx_tmp_fi3d)
2644
2645          IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_cosmo(ixt,:,:)/pdtphys
2646          CALL histwrite_phy(o_dxtcosmo(ixt), zx_tmp_fi3d)
2647
2648          IF (vars_defined) zx_tmp_fi3d(:,:)=d_xt_decroiss(ixt,:,:)/pdtphys
2649          CALL histwrite_phy(o_dxtdecroiss(ixt), zx_tmp_fi3d)
2650        END IF
2651
2652    !write(*,*) 'phys_output_write_mod 2531'
2653    enddo
2654#endif
2655
2656       IF (.NOT.vars_defined) THEN
2657          !$OMP MASTER
2658#ifndef CPP_IOIPSL_NO_OUTPUT
2659          DO iff=1,nfiles
2660             IF (clef_files(iff)) THEN
2661                CALL histend(nid_files(iff))
2662                ndex2d = 0
2663                ndex3d = 0
2664             ENDIF ! clef_files
2665          ENDDO !  iff
2666#endif
2667#ifdef CPP_XIOS
2668          !On finalise l'initialisation:
2669          CALL wxios_closedef()
2670#endif
2671          !$OMP END MASTER
2672          !$OMP BARRIER
2673          vars_defined = .TRUE.
2674
2675       ENDIF !--.NOT.vars_defined
2676
2677    ENDDO
2678
2679    IF (vars_defined) THEN
2680       ! On synchronise les fichiers pour IOIPSL
2681#ifndef CPP_IOIPSL_NO_OUTPUT
2682       !$OMP MASTER
2683       DO iff=1,nfiles
2684          IF (ok_sync .AND. clef_files(iff)) THEN
2685             CALL histsync(nid_files(iff))
2686          ENDIF
2687       END DO
2688       !$OMP END MASTER
2689#endif
2690    ENDIF
2691
2692  END SUBROUTINE phys_output_write
2693
2694END MODULE phys_output_write_mod
Note: See TracBrowser for help on using the repository browser.