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

Last change on this file since 3817 was 3817, checked in by musat, 4 years ago

Nouvelle formulation des calculs a 2m

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