source: LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90 @ 3439

Last change on this file since 3439 was 3435, checked in by Laurent Fairhead, 5 years ago

"Historic" :-) commit merging the physics branch used for DYNAMICO with the LMDZ trunk.
The same physics branch can now be used seamlessly with the traditional lon-lat LMDZ
dynamical core and DYNAMICO.
Testing consisted in running a lon-lat LMDZ bucket simulation with the NPv6.1 physics package
with the original trunk sources and the merged sources. Tests were succesful in the sense that
numeric continuity was preserved in the restart files from both simulation. Further tests
included running both versions of the physics codes for one year in a LMDZOR setting in which
the restart files also came out identical.

Caution:

  • as the physics package now manages unstructured grids, grid information needs to be transmitted

to the surface scheme ORCHIDEE. This means that the interface defined in surf_land_orchidee_mod.F90
is only compatible with ORCHIDEE version orchidee2.1 and later versions. If previous versions of
ORCHIDEE need to be used, the CPP key ORCHIDEE_NOUNSTRUCT needs to be set at compilation time.
This is done automatically if makelmdz/makelmdz_fcm are called with the veget orchidee2.0 switch

  • due to a limitation in XIOS, the time at which limit conditions will be read in by DYNAMICO will be

delayed by one physic timestep with respect to the time it is read in by the lon-lat model. This is caused
by the line

IF (MOD(itime-1, lmt_pas) == 0 .OR. (jour_lu /= jour .AND. grid_type /= unstructured)) THEN ! time to read

in limit_read_mod.F90

Work still needed on COSP integration and XML files for DYNAMICO

EM, YM, LF

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