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

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

Sync latest trunk changes to Ocean_skin

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