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

Last change on this file since 3458 was 3458, checked in by lguez, 5 years ago

Introduce variable activate_ocean_skin in module config_ocean_skin_m.

Bug fix in phys_state_var_end: we need to deallocate variables for
lmdz1d (although it is useless for a 3D run).

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