source: LMDZ6/branches/IPSLCM6.0.15/libf/phylmd/phys_output_write_mod.F90 @ 3826

Last change on this file since 3826 was 3826, checked in by musat, 3 years ago

Nouveaux calculs 2m/10m activables par iflag_new_t2mq2m=1
Valeur par defaut iflag_new_t2mq2m=0 (<=> anciens calculs CMIP6)

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