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

Last change on this file since 3956 was 3940, checked in by crisi, 3 years ago

replace files by symbloic liks from phylmdiso towards phylmd.
Many files at once

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