source: LMDZ6/trunk/libf/phylmdiso/phys_output_write_mod.F90 @ 3927

Last change on this file since 3927 was 3927, checked in by Laurent Fairhead, 3 years ago

Initial import of the physics wih isotopes from Camille Risi
CR

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