source: LMDZ5/trunk/libf/phylmd/phys_output_write_mod.F90 @ 2665

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