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

Last change on this file since 3601 was 3601, checked in by lguez, 4 years ago

Add output variable tsoil_deep_land.

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