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

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

mettre à jour avec le cv_gen

File size: 108.6 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, cv_gen, 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         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       IF (vars_defined) THEN
861          DO i = 1, klon
862             zx_tmp_fi2d(i) = paprs(i,1)
863          ENDDO
864       ENDIF
865       CALL histwrite_phy(o_psol, zx_tmp_fi2d)
866       CALL histwrite_phy(o_mass, zmasse)
867       CALL histwrite_phy(o_qsurf, zxqsurf)
868
869       IF (.NOT. ok_veget) THEN
870          CALL histwrite_phy(o_qsol, qsol)
871       ENDIF
872
873       IF (vars_defined) THEN
874          DO i = 1, klon
875             zx_tmp_fi2d(i) = rain_fall(i) + snow_fall(i)
876          ENDDO
877       ENDIF
878
879       CALL histwrite_phy(o_precip, zx_tmp_fi2d)
880       CALL histwrite_phy(o_rain_fall, rain_fall)
881       CALL histwrite_phy(o_ndayrain, nday_rain)
882
883       ! epmax_cape:
884!       CALL histwrite_phy(o_epmax_diag, epmax_diag)
885       CALL histwrite_phy(o_ep, ep)
886
887       IF (vars_defined) THEN
888          DO i = 1, klon
889             zx_tmp_fi2d(i) = rain_lsc(i) + snow_lsc(i)
890          ENDDO
891       ENDIF
892       CALL histwrite_phy(o_plul, zx_tmp_fi2d)
893       CALL histwrite_phy(o_plun, rain_num)
894
895       IF (vars_defined) THEN
896          DO i = 1, klon
897             zx_tmp_fi2d(i) = rain_con(i) + snow_con(i)
898          ENDDO
899       ENDIF
900       CALL histwrite_phy(o_pluc, zx_tmp_fi2d)
901       CALL histwrite_phy(o_rain_con, rain_con)
902       CALL histwrite_phy(o_snow, snow_fall)
903       CALL histwrite_phy(o_msnow, zxsnow)
904       CALL histwrite_phy(o_fsnow, zfra_o)
905       CALL histwrite_phy(o_evap, evap)
906
907       IF (vars_defined) THEN
908         zx_tmp_fi2d = topsw*swradcorr
909       ENDIF
910       CALL histwrite_phy(o_tops, zx_tmp_fi2d)
911
912       IF (vars_defined) THEN
913         zx_tmp_fi2d = topsw0*swradcorr
914       ENDIF
915       CALL histwrite_phy(o_tops0, zx_tmp_fi2d)
916
917       CALL histwrite_phy(o_topl, toplw)
918       CALL histwrite_phy(o_topl0, toplw0)
919
920       IF (vars_defined) THEN
921          zx_tmp_fi2d(:) = swup(:,klevp1)*swradcorr(:)
922       ENDIF
923       CALL histwrite_phy(o_SWupTOA, zx_tmp_fi2d)
924
925       IF (vars_defined) THEN
926          zx_tmp_fi2d(:) = swup0(:,klevp1)*swradcorr(:)
927       ENDIF
928       CALL histwrite_phy(o_SWupTOAclr, zx_tmp_fi2d)
929
930       IF (vars_defined) THEN
931          zx_tmp_fi2d(:) = swupc0(:,klevp1)*swradcorr(:)
932       ENDIF
933       CALL histwrite_phy(o_SWupTOAcleanclr, zx_tmp_fi2d)
934
935       IF (vars_defined) THEN
936          zx_tmp_fi2d(:) = swdn(:,klevp1)*swradcorr(:)
937       ENDIF
938       CALL histwrite_phy(o_SWdnTOA, zx_tmp_fi2d)
939
940       IF (vars_defined) THEN
941          zx_tmp_fi2d(:) = swdn0(:,klevp1)*swradcorr(:)
942       ENDIF
943       CALL histwrite_phy(o_SWdnTOAclr, zx_tmp_fi2d)
944
945       IF (vars_defined) THEN
946          zx_tmp_fi2d(:) = topsw(:)*swradcorr(:)-toplw(:)
947       ENDIF
948       CALL histwrite_phy(o_nettop, zx_tmp_fi2d)
949       
950       IF (vars_defined) THEN
951          zx_tmp_fi2d = SWup200*swradcorr
952       ENDIF
953       CALL histwrite_phy(o_SWup200, zx_tmp_fi2d)
954       
955       IF (vars_defined) THEN
956          zx_tmp_fi2d = SWup200clr*swradcorr
957       ENDIF
958       CALL histwrite_phy(o_SWup200clr, zx_tmp_fi2d)
959       
960       IF (vars_defined) THEN
961          zx_tmp_fi2d = SWdn200*swradcorr
962       ENDIF
963       CALL histwrite_phy(o_SWdn200, zx_tmp_fi2d)
964       
965       
966       IF (vars_defined) THEN
967          zx_tmp_fi2d = SWdn200clr*swradcorr
968       ENDIF
969       CALL histwrite_phy(o_SWdn200clr, zx_tmp_fi2d)
970       
971       CALL histwrite_phy(o_LWup200, LWup200)
972       CALL histwrite_phy(o_LWup200clr, LWup200clr)
973       CALL histwrite_phy(o_LWdn200, LWdn200)
974       CALL histwrite_phy(o_LWdn200clr, LWdn200clr)
975       
976       IF (vars_defined) THEN
977          zx_tmp_fi2d = solsw*swradcorr
978       ENDIF
979       CALL histwrite_phy(o_sols, zx_tmp_fi2d)
980       
981       
982       IF (vars_defined) THEN
983          zx_tmp_fi2d = solsw0*swradcorr
984       ENDIF
985       CALL histwrite_phy(o_sols0, zx_tmp_fi2d)
986       CALL histwrite_phy(o_soll, sollw)
987       CALL histwrite_phy(o_soll0, sollw0)
988       CALL histwrite_phy(o_radsol, radsol)
989
990       IF (vars_defined) THEN
991          zx_tmp_fi2d(:) = swup(:,1)*swradcorr(:)
992       ENDIF
993       CALL histwrite_phy(o_SWupSFC, zx_tmp_fi2d)
994
995       IF (vars_defined) THEN
996          zx_tmp_fi2d(:) = swup0(:,1)*swradcorr(:)
997       ENDIF
998       CALL histwrite_phy(o_SWupSFCclr, zx_tmp_fi2d)
999
1000       IF (vars_defined) THEN
1001          zx_tmp_fi2d(:) = swupc0(:,1)*swradcorr(:)
1002       ENDIF
1003       CALL histwrite_phy(o_SWupSFCcleanclr, zx_tmp_fi2d)
1004
1005       IF (vars_defined) THEN
1006          zx_tmp_fi2d(:) = swdn(:,1)*swradcorr(:)
1007       ENDIF
1008       CALL histwrite_phy(o_SWdnSFC, zx_tmp_fi2d)
1009
1010       IF (vars_defined) THEN
1011          zx_tmp_fi2d(:) = swdn0(:,1)*swradcorr(:)
1012       ENDIF
1013       CALL histwrite_phy(o_SWdnSFCclr, zx_tmp_fi2d)
1014
1015       IF (vars_defined) THEN
1016          zx_tmp_fi2d(:) = swdnc0(:,1)*swradcorr(:)
1017       ENDIF
1018       CALL histwrite_phy(o_SWdnSFCcleanclr, zx_tmp_fi2d)
1019
1020       CALL histwrite_phy(o_fdiffSWdnSFC, solswfdiff)
1021
1022       IF (vars_defined) THEN
1023          zx_tmp_fi2d(:)=sollwdown(:)-sollw(:)
1024       ENDIF
1025       CALL histwrite_phy(o_LWupSFC, zx_tmp_fi2d)
1026       CALL histwrite_phy(o_LWdnSFC, sollwdown)
1027
1028       IF (vars_defined) THEN
1029          sollwdownclr(1:klon) = -1.*lwdn0(1:klon,1)
1030          zx_tmp_fi2d(1:klon)=sollwdownclr(1:klon)-sollw0(1:klon)
1031       ENDIF
1032       CALL histwrite_phy(o_LWupSFCclr, zx_tmp_fi2d)
1033       CALL histwrite_phy(o_LWdnSFCclr, sollwdownclr)
1034
1035       IF (vars_defined) THEN
1036          zx_tmp_fi2d(:) = lwupc0(:,klevp1)
1037       ENDIF
1038       CALL histwrite_phy(o_LWupTOAcleanclr, zx_tmp_fi2d)
1039       IF (vars_defined) THEN
1040          zx_tmp_fi2d(:) = -1.*lwdnc0(:,1)
1041       ENDIF
1042       CALL histwrite_phy(o_LWdnSFCcleanclr, zx_tmp_fi2d)
1043
1044       CALL histwrite_phy(o_bils, bils)
1045       CALL histwrite_phy(o_bils_diss, bils_diss)
1046       CALL histwrite_phy(o_bils_ec, bils_ec)
1047       CALL histwrite_phy(o_bils_ech, bils_ech)
1048       CALL histwrite_phy(o_bils_tke, bils_tke)
1049       CALL histwrite_phy(o_bils_kinetic, bils_kinetic)
1050       CALL histwrite_phy(o_bils_latent, bils_latent)
1051       CALL histwrite_phy(o_bils_enthalp, bils_enthalp)
1052
1053       IF (vars_defined) THEN
1054          zx_tmp_fi2d(1:klon)=-1*sens(1:klon)
1055       ENDIF
1056       CALL histwrite_phy(o_sens, zx_tmp_fi2d)
1057       CALL histwrite_phy(o_fder, fder)
1058       CALL histwrite_phy(o_ffonte, zxffonte)
1059       CALL histwrite_phy(o_fqcalving, zxfqcalving)
1060       CALL histwrite_phy(o_fqfonte, zxfqfonte)
1061       IF (vars_defined) THEN
1062          zx_tmp_fi2d(1:klon)=(zxfqfonte(1:klon)+rain_fall(1:klon))*pctsrf(1:klon,is_lic)
1063       ENDIF
1064       CALL histwrite_phy(o_mrroli, zx_tmp_fi2d)
1065       CALL histwrite_phy(o_runofflic, zxrunofflic)
1066       IF (vars_defined) THEN
1067          zx_tmp_fi2d=0.
1068          DO nsrf=1,nbsrf
1069             zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxu(:,1,nsrf)
1070          ENDDO
1071       ENDIF
1072       CALL histwrite_phy(o_taux, zx_tmp_fi2d)
1073
1074       IF (vars_defined) THEN
1075          zx_tmp_fi2d=0.
1076          DO nsrf=1,nbsrf
1077             zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxv(:,1,nsrf)
1078          ENDDO
1079       ENDIF
1080       CALL histwrite_phy(o_tauy, zx_tmp_fi2d)
1081
1082       ! Etienne: test sorties pour compil sur JZ
1083!       IF (landice_opt .GE. 1) THEN
1084!          CALL histwrite_phy(o_snowsrf, snow_o)
1085!          CALL histwrite_phy(o_qsnow, qsnow)
1086!          CALL histwrite_phy(o_snowhgt,snowhgt)
1087!          CALL histwrite_phy(o_toice,to_ice)
1088!          CALL histwrite_phy(o_sissnow,sissnow)
1089!          CALL histwrite_phy(o_runoff,runoff)
1090!          CALL histwrite_phy(o_albslw3,albsol3_lic)
1091!       ENDIF
1092
1093       DO nsrf = 1, nbsrf
1094
1095          IF (vars_defined)             zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)*100.
1096          CALL histwrite_phy(o_pourc_srf(nsrf), zx_tmp_fi2d)
1097          IF (vars_defined)           zx_tmp_fi2d(1 : klon) = pctsrf( 1 : klon, nsrf)
1098          CALL histwrite_phy(o_fract_srf(nsrf), zx_tmp_fi2d)
1099          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxu( 1 : klon, 1, nsrf)
1100          CALL histwrite_phy(o_taux_srf(nsrf), zx_tmp_fi2d)
1101          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxv( 1 : klon, 1, nsrf)
1102          CALL histwrite_phy(o_tauy_srf(nsrf), zx_tmp_fi2d)
1103          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = ftsol( 1 : klon, nsrf)
1104          CALL histwrite_phy(o_tsol_srf(nsrf), zx_tmp_fi2d)
1105          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = evap_pot( 1 : klon, nsrf)
1106          CALL histwrite_phy(o_evappot_srf(nsrf), zx_tmp_fi2d)
1107          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = ustar(1 : klon, nsrf)
1108          CALL histwrite_phy(o_ustar_srf(nsrf), zx_tmp_fi2d)
1109          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = u10m(1 : klon, nsrf)
1110          CALL histwrite_phy(o_u10m_srf(nsrf), zx_tmp_fi2d)
1111          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = v10m(1 : klon, nsrf)
1112          CALL histwrite_phy(o_v10m_srf(nsrf), zx_tmp_fi2d)
1113          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = t2m(1 : klon, nsrf)
1114          CALL histwrite_phy(o_t2m_srf(nsrf), zx_tmp_fi2d)
1115          IF (vars_defined)       zx_tmp_fi2d(1 : klon) = fevap(1 : klon, nsrf)
1116          CALL histwrite_phy(o_evap_srf(nsrf), zx_tmp_fi2d)
1117          IF (vars_defined)        zx_tmp_fi2d(1 : klon) = fluxt( 1 : klon, 1, nsrf)
1118          CALL histwrite_phy(o_sens_srf(nsrf), zx_tmp_fi2d)
1119          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fluxlat( 1 : klon, nsrf)
1120          CALL histwrite_phy(o_lat_srf(nsrf), zx_tmp_fi2d)
1121          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fsollw( 1 : klon, nsrf)
1122          CALL histwrite_phy(o_flw_srf(nsrf), zx_tmp_fi2d)
1123          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, nsrf)
1124          CALL histwrite_phy(o_fsw_srf(nsrf), zx_tmp_fi2d)
1125          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfbils( 1 : klon, nsrf)
1126          CALL histwrite_phy(o_wbils_srf(nsrf), zx_tmp_fi2d)
1127          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfbilo( 1 : klon, nsrf)
1128          CALL histwrite_phy(o_wbilo_srf(nsrf), zx_tmp_fi2d)
1129          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfevap( 1 : klon, nsrf)
1130          CALL histwrite_phy(o_wevap_srf(nsrf), zx_tmp_fi2d)
1131          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfrain( 1 : klon, nsrf)
1132          CALL histwrite_phy(o_wrain_srf(nsrf), zx_tmp_fi2d)
1133          IF (vars_defined)         zx_tmp_fi2d(1 : klon) = wfsnow( 1 : klon, nsrf)
1134          CALL histwrite_phy(o_wsnow_srf(nsrf), zx_tmp_fi2d)
1135
1136          IF (iflag_pbl > 1) THEN
1137             CALL histwrite_phy(o_tke_srf(nsrf),  pbl_tke(:,1:klev,nsrf))
1138             !CALL histwrite_phy(o_l_mix(nsrf),  l_mix(:,1:klev,nsrf))
1139             CALL histwrite_phy(o_l_mixmin(nsrf),  l_mixmin(:,1:klev,nsrf))
1140             CALL histwrite_phy(o_tke_max_srf(nsrf),  pbl_tke(:,1:klev,nsrf))
1141
1142                         
1143          ENDIF
1144!jyg<
1145          IF (iflag_pbl > 1 .AND. iflag_wake>=1  .AND. iflag_pbl_split >=1) THEN
1146             CALL histwrite_phy(o_dltpbltke_srf(nsrf), wake_delta_pbl_TKE(:,1:klev,nsrf))
1147          ENDIF
1148!>jyg
1149!          IF (iflag_pbl > 1 .AND. ifl_pbltree  >=1 ) THEN
1150!       CALL histwrite_phy(o_treedrg_srf(nsrf), treedrg(:,1:klev,nsrf))
1151!            ENDIF
1152
1153       ENDDO
1154       
1155               
1156        IF (iflag_pbl > 1) THEN
1157          zx_tmp_fi3d=0.
1158          IF (vars_defined) THEN
1159             DO nsrf=1,nbsrf
1160                DO k=1,klev
1161                   zx_tmp_fi3d(:,k)=zx_tmp_fi3d(:,k) &
1162                        +pctsrf(:,nsrf)*tke_dissip(:,k,nsrf)
1163                ENDDO
1164             ENDDO
1165          ENDIF
1166         
1167          CALL histwrite_phy(o_tke_dissip, zx_tmp_fi3d)   
1168       ENDIF
1169
1170       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_liq_o(1 : klon, 1)
1171       CALL histwrite_phy(o_sens_prec_liq_oce, zx_tmp_fi2d)       
1172       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_liq_o(1 : klon, 2)
1173       CALL histwrite_phy(o_sens_prec_liq_sic, zx_tmp_fi2d)       
1174       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_sol_o(1 : klon, 1)
1175       CALL histwrite_phy(o_sens_prec_sol_oce, zx_tmp_fi2d)       
1176       IF (vars_defined) zx_tmp_fi2d(1 : klon) = sens_prec_sol_o(1 : klon, 2)
1177       CALL histwrite_phy(o_sens_prec_sol_sic, zx_tmp_fi2d)       
1178
1179       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_liq_o(1 : klon, 1)
1180       CALL histwrite_phy(o_lat_prec_liq_oce, zx_tmp_fi2d)       
1181       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_liq_o(1 : klon, 2)
1182       CALL histwrite_phy(o_lat_prec_liq_sic, zx_tmp_fi2d)       
1183       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_sol_o(1 : klon, 1)
1184       CALL histwrite_phy(o_lat_prec_sol_oce, zx_tmp_fi2d)       
1185       IF (vars_defined) zx_tmp_fi2d(1 : klon) = lat_prec_sol_o(1 : klon, 2)
1186       CALL histwrite_phy(o_lat_prec_sol_sic, zx_tmp_fi2d)       
1187
1188       DO nsrf=1,nbsrf+1
1189          CALL histwrite_phy(o_wstar(nsrf), wstar(1 : klon, nsrf))
1190       ENDDO
1191
1192       CALL histwrite_phy(o_cdrm, cdragm)
1193       CALL histwrite_phy(o_cdrh, cdragh)
1194       CALL histwrite_phy(o_cldl, cldl)
1195       CALL histwrite_phy(o_cldm, cldm)
1196       CALL histwrite_phy(o_cldh, cldh)
1197       CALL histwrite_phy(o_cldt, cldt)
1198       CALL histwrite_phy(o_JrNt, JrNt)
1199       
1200       IF (vars_defined)  zx_tmp_fi2d=cldl*JrNt     
1201       CALL histwrite_phy(o_cldljn, zx_tmp_fi2d)
1202       
1203       IF (vars_defined)  zx_tmp_fi2d=cldm*JrNt     
1204       CALL histwrite_phy(o_cldmjn, zx_tmp_fi2d)
1205       
1206       IF (vars_defined)  zx_tmp_fi2d=cldh*JrNt
1207       CALL histwrite_phy(o_cldhjn, zx_tmp_fi2d)
1208       
1209       IF (vars_defined)  zx_tmp_fi2d=cldt*JrNt
1210       CALL histwrite_phy(o_cldtjn, zx_tmp_fi2d)
1211       
1212       CALL histwrite_phy(o_cldq, cldq)
1213       IF (vars_defined)       zx_tmp_fi2d(1:klon) = flwp(1:klon)
1214       CALL histwrite_phy(o_lwp, zx_tmp_fi2d)
1215       IF (vars_defined)       zx_tmp_fi2d(1:klon) = fiwp(1:klon)
1216       CALL histwrite_phy(o_iwp, zx_tmp_fi2d)
1217       CALL histwrite_phy(o_ue, ue)
1218       CALL histwrite_phy(o_ve, ve)
1219       CALL histwrite_phy(o_uq, uq)
1220       CALL histwrite_phy(o_vq, vq)
1221       CALL histwrite_phy(o_uwat, uwat)
1222       CALL histwrite_phy(o_vwat, vwat)
1223       IF (iflag_con.GE.3) THEN ! sb
1224          CALL histwrite_phy(o_cape, cape)
1225          CALL histwrite_phy(o_pbase, ema_pcb)
1226          CALL histwrite_phy(o_ptop, ema_pct)
1227          CALL histwrite_phy(o_fbase, ema_cbmf)
1228          IF (iflag_con /= 30) THEN
1229             CALL histwrite_phy(o_plcl, plcl)
1230             CALL histwrite_phy(o_plfc, plfc)
1231             CALL histwrite_phy(o_wbeff, wbeff)
1232             CALL histwrite_phy(o_convoccur, convoccur)
1233          ENDIF
1234
1235          CALL histwrite_phy(o_cape_max, cape)
1236
1237          CALL histwrite_phy(o_upwd, upwd)
1238          CALL histwrite_phy(o_Ma, Ma)
1239          CALL histwrite_phy(o_dnwd, dnwd)
1240          CALL histwrite_phy(o_dnwd0, dnwd0)
1241          !! The part relative to the frequency of occurence of convection
1242          !! is now grouped with the part relative to thermals and shallow
1243          !! convection (output of the 3 fields: ftime_deepcv, ftime_th and
1244          !!  ftime_con).
1245          IF (vars_defined) THEN
1246             IF (iflag_thermals>=1)THEN
1247                zx_tmp_fi3d=-dnwd+dnwd0+upwd+fm_therm(:,1:klev)
1248             ELSE
1249                zx_tmp_fi3d=-dnwd+dnwd0+upwd
1250             ENDIF
1251          ENDIF
1252          CALL histwrite_phy(o_mc, zx_tmp_fi3d)
1253       ENDIF !iflag_con .GE. 3
1254       CALL histwrite_phy(o_prw, prw)
1255       CALL histwrite_phy(o_prlw, prlw)
1256       CALL histwrite_phy(o_prsw, prsw)
1257       CALL histwrite_phy(o_s_pblh, s_pblh)
1258       CALL histwrite_phy(o_s_pblt, s_pblt)
1259       CALL histwrite_phy(o_s_lcl, s_lcl)
1260       CALL histwrite_phy(o_s_therm, s_therm)
1261       !IM : Les champs suivants (s_capCL, s_oliqCL, s_cteiCL, s_trmb1, s_trmb2, s_trmb3) ne sont pas definis dans HBTM.F
1262       !       IF (o_s_capCL%flag(iff)<=lev_files(iff)) THEN
1263       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1264       !    $o_s_capCL%name,itau_w,s_capCL)
1265       !       ENDIF
1266       !       IF (o_s_oliqCL%flag(iff)<=lev_files(iff)) THEN
1267       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1268       !    $o_s_oliqCL%name,itau_w,s_oliqCL)
1269       !       ENDIF
1270       !       IF (o_s_cteiCL%flag(iff)<=lev_files(iff)) THEN
1271       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1272       !    $o_s_cteiCL%name,itau_w,s_cteiCL)
1273       !       ENDIF
1274       !       IF (o_s_trmb1%flag(iff)<=lev_files(iff)) THEN
1275       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1276       !    $o_s_trmb1%name,itau_w,s_trmb1)
1277       !       ENDIF
1278       !       IF (o_s_trmb2%flag(iff)<=lev_files(iff)) THEN
1279       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1280       !    $o_s_trmb2%name,itau_w,s_trmb2)
1281       !       ENDIF
1282       !       IF (o_s_trmb3%flag(iff)<=lev_files(iff)) THEN
1283       !     CALL histwrite_phy(nid_files(iff),clef_stations(iff),
1284       !    $o_s_trmb3%name,itau_w,s_trmb3)
1285       !       ENDIF
1286
1287#ifdef CPP_IOIPSL
1288#ifndef CPP_XIOS
1289  IF (.NOT.ok_all_xml) THEN
1290       ! ATTENTION, LES ANCIENS HISTWRITE ONT ETES CONSERVES EN ATTENDANT MIEUX:
1291       ! Champs interpolles sur des niveaux de pression
1292       DO iff=1, nfiles
1293          ll=0
1294          DO k=1, nlevSTD
1295             bb2=clevSTD(k)
1296             IF (bb2.EQ."850".OR.bb2.EQ."700".OR. &
1297                  bb2.EQ."500".OR.bb2.EQ."200".OR. &
1298                  bb2.EQ."100".OR. &
1299                  bb2.EQ."50".OR.bb2.EQ."10") THEN
1300
1301                ! a refaire correctement !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1302                ll=ll+1
1303                CALL histwrite_phy(o_uSTDlevs(ll),uwriteSTD(:,k,iff), iff)
1304                CALL histwrite_phy(o_vSTDlevs(ll),vwriteSTD(:,k,iff), iff)
1305                CALL histwrite_phy(o_wSTDlevs(ll),wwriteSTD(:,k,iff), iff)
1306                CALL histwrite_phy(o_zSTDlevs(ll),phiwriteSTD(:,k,iff), iff)
1307                CALL histwrite_phy(o_qSTDlevs(ll),qwriteSTD(:,k,iff), iff)
1308                CALL histwrite_phy(o_tSTDlevs(ll),twriteSTD(:,k,iff), iff)
1309
1310             ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
1311          ENDDO
1312       ENDDO
1313  ENDIF
1314#endif
1315#endif
1316#ifdef CPP_XIOS
1317  IF (ok_all_xml) THEN
1318!XIOS  CALL xios_get_field_attr("u850",default_value=missing_val)
1319!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1320          ll=0
1321          DO k=1, nlevSTD
1322             bb2=clevSTD(k)
1323             IF (bb2.EQ."850".OR.bb2.EQ."700".OR. &
1324                bb2.EQ."500".OR.bb2.EQ."200".OR. &
1325                bb2.EQ."100".OR. &
1326                bb2.EQ."50".OR.bb2.EQ."10") THEN
1327                ll=ll+1
1328                CALL histwrite_phy(o_uSTDlevs(ll),ulevSTD(:,k))
1329                CALL histwrite_phy(o_vSTDlevs(ll),vlevSTD(:,k))
1330                CALL histwrite_phy(o_wSTDlevs(ll),wlevSTD(:,k))
1331                CALL histwrite_phy(o_zSTDlevs(ll),philevSTD(:,k))
1332                CALL histwrite_phy(o_qSTDlevs(ll),qlevSTD(:,k))
1333                CALL histwrite_phy(o_tSTDlevs(ll),tlevSTD(:,k))
1334             ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR.
1335          ENDDO
1336  ENDIF
1337#endif
1338       IF (vars_defined) THEN
1339          DO i=1, klon
1340             IF (pctsrf(i,is_oce).GT.epsfra.OR. &
1341                  pctsrf(i,is_sic).GT.epsfra) THEN
1342                zx_tmp_fi2d(i) = (ftsol(i, is_oce) * pctsrf(i,is_oce)+ &
1343                     ftsol(i, is_sic) * pctsrf(i,is_sic))/ &
1344                     (pctsrf(i,is_oce)+pctsrf(i,is_sic))
1345             ELSE
1346                zx_tmp_fi2d(i) = 273.15
1347             ENDIF
1348          ENDDO
1349       ENDIF
1350       CALL histwrite_phy(o_t_oce_sic, zx_tmp_fi2d)
1351
1352       ! Couplage convection-couche limite
1353       IF (iflag_con.GE.3) THEN
1354          IF (iflag_coupl>=1) THEN
1355             CALL histwrite_phy(o_ale_bl, ale_bl)
1356             CALL histwrite_phy(o_alp_bl, alp_bl)
1357          ENDIF !iflag_coupl>=1
1358       ENDIF !(iflag_con.GE.3)
1359       ! Wakes
1360       IF (iflag_con.EQ.3) THEN
1361          CALL histwrite_phy(o_Mipsh, Mipsh)
1362          IF (iflag_wake>=1) THEN
1363             CALL histwrite_phy(o_ale_wk, ale_wake)
1364             CALL histwrite_phy(o_alp_wk, alp_wake)
1365             IF (iflag_pbl_split>=1) THEN
1366!!               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dtvdf_x(1:klon,1:klev)/pdtphys
1367!!               CALL histwrite_phy(o_dtvdf_x    ,zx_tmp_fi3d)
1368!!               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dtvdf_w(1:klon,1:klev)/pdtphys
1369!!               CALL histwrite_phy(o_dtvdf_w    ,zx_tmp_fi3d)
1370!!               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dqvdf_x(1:klon,1:klev)/pdtphys
1371!!               CALL histwrite_phy(o_dqvdf_x    ,zx_tmp_fi3d)
1372!!               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=dqvdf_w(1:klon,1:klev)/pdtphys
1373!
1374               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf_x(1:klon,1:klev)/pdtphys
1375               CALL histwrite_phy(o_dtvdf_x    ,zx_tmp_fi3d)
1376               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf_w(1:klon,1:klev)/pdtphys
1377               CALL histwrite_phy(o_dtvdf_w    ,zx_tmp_fi3d)
1378               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf_x(1:klon,1:klev)/pdtphys
1379               CALL histwrite_phy(o_dqvdf_x    ,zx_tmp_fi3d)
1380               IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf_w(1:klon,1:klev)/pdtphys
1381!
1382               CALL histwrite_phy(o_dqvdf_w    ,zx_tmp_fi3d)
1383       IF (vars_defined)  zx_tmp_fi2d(1:klon)=-1*sens_x(1:klon)
1384               CALL histwrite_phy(o_sens_x     ,zx_tmp_fi2d)
1385       IF (vars_defined)  zx_tmp_fi2d(1:klon)=-1*sens_w(1:klon)
1386               CALL histwrite_phy(o_sens_w     ,zx_tmp_fi2d)
1387               CALL histwrite_phy(o_flat_x     ,zxfluxlat_x)
1388               CALL histwrite_phy(o_flat_w     ,zxfluxlat_w)
1389          zx_tmp_fi2d=0.
1390          IF (vars_defined) THEN
1391             DO nsrf=1,nbsrf
1392                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:) &
1393                        +pctsrf(:,nsrf)*delta_tsurf(:,nsrf)
1394             ENDDO
1395          ENDIF
1396               CALL histwrite_phy(o_delta_tsurf,zx_tmp_fi2d)
1397               CALL histwrite_phy(o_cdragh_x   ,cdragh_x   )
1398               CALL histwrite_phy(o_cdragh_w   ,cdragh_w   )
1399               CALL histwrite_phy(o_cdragm_x   ,cdragm_x   )
1400               CALL histwrite_phy(o_cdragm_w   ,cdragm_w   )
1401               CALL histwrite_phy(o_kh         ,kh         )
1402               CALL histwrite_phy(o_kh_x       ,kh_x       )
1403               CALL histwrite_phy(o_kh_w       ,kh_w       )
1404             ENDIF   ! (iflag_pbl_split>=1)
1405             CALL histwrite_phy(o_ale, ale)
1406             CALL histwrite_phy(o_alp, alp)
1407             CALL histwrite_phy(o_cin, cin)
1408             CALL histwrite_phy(o_WAPE, wake_pe)
1409             CALL histwrite_phy(o_cv_gen, cv_gen)
1410             CALL histwrite_phy(o_wake_h, wake_h)
1411             CALL histwrite_phy(o_wake_dens, wake_dens)
1412             CALL histwrite_phy(o_wake_s, wake_s)
1413             CALL histwrite_phy(o_wake_deltat, wake_deltat)
1414             CALL histwrite_phy(o_wake_deltaq, wake_deltaq)
1415             CALL histwrite_phy(o_wake_omg, wake_omg)
1416             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_wake(1:klon,1:klev) &
1417                  /pdtphys
1418             CALL histwrite_phy(o_dtwak, zx_tmp_fi3d)
1419             IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_wake(1:klon,1:klev)/pdtphys
1420             CALL histwrite_phy(o_dqwak, zx_tmp_fi3d)
1421             IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1422             CALL histwrite_phy(o_dqwak2d, zx_tmp_fi2d)
1423          ENDIF ! iflag_wake>=1
1424          CALL histwrite_phy(o_ftd, ftd)
1425          CALL histwrite_phy(o_fqd, fqd)
1426       ENDIF !(iflag_con.EQ.3)
1427       IF (iflag_con.EQ.3.OR.iflag_con.EQ.30) THEN
1428          ! sortie RomP convection descente insaturee iflag_con=30
1429          ! etendue a iflag_con=3 (jyg)
1430          CALL histwrite_phy(o_Vprecip, Vprecip)
1431          CALL histwrite_phy(o_qtaa, qtaa)
1432          CALL histwrite_phy(o_clwaa, clw)
1433          CALL histwrite_phy(o_wdtrainA, wdtrainA)
1434          CALL histwrite_phy(o_wdtrainS, wdtrainS)
1435          CALL histwrite_phy(o_wdtrainM, wdtrainM)
1436       ENDIF !(iflag_con.EQ.3.or.iflag_con.EQ.30)
1437!!! nrlmd le 10/04/2012
1438       IF (iflag_trig_bl>=1) THEN
1439          CALL histwrite_phy(o_n2, n2)
1440          CALL histwrite_phy(o_s2, s2)
1441          CALL histwrite_phy(o_proba_notrig, proba_notrig)
1442          CALL histwrite_phy(o_random_notrig, random_notrig)
1443          CALL histwrite_phy(o_ale_bl_stat, ale_bl_stat)
1444          CALL histwrite_phy(o_ale_bl_trig, ale_bl_trig)
1445       ENDIF  !(iflag_trig_bl>=1)
1446       IF (iflag_clos_bl>=1) THEN
1447          CALL histwrite_phy(o_alp_bl_det, alp_bl_det)
1448          CALL histwrite_phy(o_alp_bl_fluct_m, alp_bl_fluct_m)
1449          CALL histwrite_phy(o_alp_bl_fluct_tke,  &
1450               alp_bl_fluct_tke)
1451          CALL histwrite_phy(o_alp_bl_conv, alp_bl_conv)
1452          CALL histwrite_phy(o_alp_bl_stat, alp_bl_stat)
1453       ENDIF  !(iflag_clos_bl>=1)
1454!!! fin nrlmd le 10/04/2012
1455       ! Output of slab ocean variables
1456       IF (type_ocean=='slab ') THEN
1457          CALL histwrite_phy(o_slab_bils, slab_wfbils)
1458          IF (nslay.EQ.1) THEN
1459              IF (vars_defined) zx_tmp_fi2d(:)=tslab(:,1)
1460              CALL histwrite_phy(o_tslab, zx_tmp_fi2d)
1461              IF (vars_defined) zx_tmp_fi2d(:)=dt_qflux(:,1)
1462              CALL histwrite_phy(o_slab_qflux, zx_tmp_fi2d)
1463          ELSE
1464              CALL histwrite_phy(o_tslab, tslab(:,1:nslay))
1465              CALL histwrite_phy(o_slab_qflux, dt_qflux(:,1:nslay))
1466          ENDIF
1467          IF (version_ocean=='sicINT') THEN
1468              CALL histwrite_phy(o_slab_bilg, slab_bilg)
1469              CALL histwrite_phy(o_slab_tice, tice)
1470              CALL histwrite_phy(o_slab_sic, seaice)
1471          ENDIF
1472          IF (slab_gm) THEN
1473             CALL histwrite_phy(o_slab_gm, dt_gm(:,1:nslay))
1474          ENDIF
1475          IF (slab_hdiff) THEN
1476            IF (nslay.EQ.1) THEN
1477                IF (vars_defined) zx_tmp_fi2d(:)=dt_hdiff(:,1)
1478                CALL histwrite_phy(o_slab_hdiff, zx_tmp_fi2d)
1479            ELSE
1480                CALL histwrite_phy(o_slab_hdiff, dt_hdiff(:,1:nslay))
1481            ENDIF
1482          ENDIF
1483          IF (slab_ekman.GT.0) THEN
1484            IF (nslay.EQ.1) THEN
1485                IF (vars_defined) zx_tmp_fi2d(:)=dt_ekman(:,1)
1486                CALL histwrite_phy(o_slab_ekman, zx_tmp_fi2d)
1487            ELSE
1488                CALL histwrite_phy(o_slab_ekman, dt_ekman(:,1:nslay))
1489            ENDIF
1490          ENDIF
1491       ENDIF !type_ocean == force/slab
1492       CALL histwrite_phy(o_weakinv, weak_inversion)
1493       CALL histwrite_phy(o_dthmin, dthmin)
1494       CALL histwrite_phy(o_cldtau, cldtau)
1495       CALL histwrite_phy(o_cldemi, cldemi)
1496       CALL histwrite_phy(o_pr_con_l, pmflxr(:,1:klev))
1497       CALL histwrite_phy(o_pr_con_i, pmflxs(:,1:klev))
1498       CALL histwrite_phy(o_pr_lsc_l, prfl(:,1:klev))
1499       CALL histwrite_phy(o_pr_lsc_i, psfl(:,1:klev))
1500       CALL histwrite_phy(o_re, re)
1501       CALL histwrite_phy(o_fl, fl)
1502       IF (vars_defined) THEN
1503          DO i=1, klon
1504             IF (zt2m(i).LE.273.15) then
1505                zx_tmp_fi2d(i)=MAX(0.,rh2m(i)*100.)
1506             ELSE
1507                zx_tmp_fi2d(i)=MAX(0.,MIN(100.,rh2m(i)*100.))
1508             ENDIF
1509          ENDDO
1510       ENDIF
1511       CALL histwrite_phy(o_rh2m, zx_tmp_fi2d)
1512
1513!       IF (vars_defined) THEN
1514!          DO i=1, klon
1515!             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1516!          ENDDO
1517!       ENDIF
1518!       CALL histwrite_phy(o_rh2m_min, zx_tmp_fi2d)
1519
1520!       IF (vars_defined) THEN
1521!          DO i=1, klon
1522!             zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.)
1523!          ENDDO
1524!       ENDIF
1525!       CALL histwrite_phy(o_rh2m_max, zx_tmp_fi2d)
1526
1527       CALL histwrite_phy(o_qsat2m, qsat2m)
1528       CALL histwrite_phy(o_tpot, tpot)
1529       CALL histwrite_phy(o_tpote, tpote)
1530       IF (vars_defined) zx_tmp_fi2d(1 : klon) = fsolsw( 1 : klon, is_ter)
1531       CALL histwrite_phy(o_SWnetOR,  zx_tmp_fi2d)
1532       CALL histwrite_phy(o_LWdownOR, sollwdown)
1533       CALL histwrite_phy(o_snowl, snow_lsc)
1534       CALL histwrite_phy(o_solldown, sollwdown)
1535       CALL histwrite_phy(o_dtsvdfo, d_ts(:,is_oce))
1536       CALL histwrite_phy(o_dtsvdft, d_ts(:,is_ter))
1537       CALL histwrite_phy(o_dtsvdfg,  d_ts(:,is_lic))
1538       CALL histwrite_phy(o_dtsvdfi, d_ts(:,is_sic))
1539       CALL histwrite_phy(o_z0m, z0m(:,nbsrf+1))
1540       CALL histwrite_phy(o_z0h, z0h(:,nbsrf+1))
1541
1542       ! od550 per species
1543!--OLIVIER
1544!This is warranted by treating INCA aerosols as offline aerosols
1545       IF (flag_aerosol.GT.0) THEN
1546          CALL histwrite_phy(o_od443aer, od443aer)
1547          CALL histwrite_phy(o_od550aer, od550aer)
1548          CALL histwrite_phy(o_od865aer, od865aer)
1549          CALL histwrite_phy(o_abs550aer, abs550aer)
1550          CALL histwrite_phy(o_od550lt1aer, od550lt1aer)
1551          CALL histwrite_phy(o_sconcso4, sconcso4)
1552          CALL histwrite_phy(o_sconcno3, sconcno3)
1553          CALL histwrite_phy(o_sconcoa, sconcoa)
1554          CALL histwrite_phy(o_sconcbc, sconcbc)
1555          CALL histwrite_phy(o_sconcss, sconcss)
1556          CALL histwrite_phy(o_sconcdust, sconcdust)
1557          CALL histwrite_phy(o_concso4, concso4)
1558          CALL histwrite_phy(o_concno3, concno3)
1559          CALL histwrite_phy(o_concoa, concoa)
1560          CALL histwrite_phy(o_concbc, concbc)
1561          CALL histwrite_phy(o_concss, concss)
1562          CALL histwrite_phy(o_concdust, concdust)
1563          CALL histwrite_phy(o_loadso4, loadso4)
1564          CALL histwrite_phy(o_loadoa, loadoa)
1565          CALL histwrite_phy(o_loadbc, loadbc)
1566          CALL histwrite_phy(o_loadss, loadss)
1567          CALL histwrite_phy(o_loaddust, loaddust)
1568          CALL histwrite_phy(o_loadno3, loadno3)
1569          CALL histwrite_phy(o_dryod550aer, dryod550aer)
1570          DO naero = 1, naero_tot-1
1571             CALL histwrite_phy(o_drytausumaero(naero),drytausum_aero(:,naero))
1572          END DO
1573       ENDIF
1574       !--STRAT AER
1575       IF (flag_aerosol.GT.0.OR.flag_aerosol_strat.GT.0) THEN
1576          DO naero = 1, naero_tot
1577             CALL histwrite_phy(o_tausumaero(naero),tausum_aero(:,2,naero))
1578          END DO
1579       ENDIF
1580       IF (flag_aerosol_strat.GT.0) THEN
1581          CALL histwrite_phy(o_tausumaero_lw,tausum_aero(:,6,id_STRAT_phy))
1582       ENDIF
1583
1584       CALL histwrite_phy(o_p_tropopause, p_tropopause)
1585       CALL histwrite_phy(o_t_tropopause, t_tropopause)
1586       CALL histwrite_phy(o_z_tropopause, z_tropopause)
1587
1588! ThL -- In the following, we assume read_climoz == 1
1589       IF (vars_defined) THEN
1590         zx_tmp_fi2d = 0.0    ! Computation for strato, added ThL
1591         DO k=1, klev
1592            zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + wo(:,k,1) * stratomask(:,k) * 1.e3
1593         END DO
1594       ENDIF
1595       CALL histwrite_phy(o_col_O3_strato, zx_tmp_fi2d) ! Added ThL
1596
1597       IF (vars_defined) THEN
1598         zx_tmp_fi2d = 0.0    ! Computation for tropo, added ThL
1599         DO k=1, klev
1600            zx_tmp_fi2d(:) = zx_tmp_fi2d(:) + wo(:,k,1) * (1.0-stratomask(:,k)) * 1.e3
1601         END DO
1602       ENDIF
1603       CALL histwrite_phy(o_col_O3_tropo, zx_tmp_fi2d)   ! Added ThL
1604! end add ThL
1605
1606#ifdef CPP_StratAer
1607       IF (type_trac=='coag') THEN
1608          CALL histwrite_phy(o_R2SO4, R2SO4)
1609          CALL histwrite_phy(o_OCS_lifetime, OCS_lifetime)
1610          CALL histwrite_phy(o_SO2_lifetime, SO2_lifetime)
1611          CALL histwrite_phy(o_budg_3D_backgr_ocs,   budg_3D_backgr_ocs)
1612          CALL histwrite_phy(o_budg_3D_backgr_so2,   budg_3D_backgr_so2)
1613          CALL histwrite_phy(o_budg_3D_ocs_to_so2,   budg_3D_ocs_to_so2)
1614          CALL histwrite_phy(o_budg_3D_so2_to_h2so4, budg_3D_so2_to_h2so4)
1615          CALL histwrite_phy(o_budg_3D_nucl,         budg_3D_nucl)
1616          CALL histwrite_phy(o_budg_3D_cond_evap,    budg_3D_cond_evap)
1617          CALL histwrite_phy(o_budg_dep_dry_ocs,     budg_dep_dry_ocs)
1618          CALL histwrite_phy(o_budg_dep_wet_ocs,     budg_dep_wet_ocs)
1619          CALL histwrite_phy(o_budg_dep_dry_so2,     budg_dep_dry_so2)
1620          CALL histwrite_phy(o_budg_dep_wet_so2,     budg_dep_wet_so2)
1621          CALL histwrite_phy(o_budg_dep_dry_h2so4,   budg_dep_dry_h2so4)
1622          CALL histwrite_phy(o_budg_dep_wet_h2so4,   budg_dep_wet_h2so4)
1623          CALL histwrite_phy(o_budg_dep_dry_part,    budg_dep_dry_part)
1624          CALL histwrite_phy(o_budg_dep_wet_part,    budg_dep_wet_part)
1625          CALL histwrite_phy(o_budg_emi_ocs,         budg_emi_ocs)
1626          CALL histwrite_phy(o_budg_emi_so2,         budg_emi_so2)
1627          CALL histwrite_phy(o_budg_emi_h2so4,       budg_emi_h2so4)
1628          CALL histwrite_phy(o_budg_emi_part,        budg_emi_part)
1629          CALL histwrite_phy(o_budg_ocs_to_so2,      budg_ocs_to_so2)
1630          CALL histwrite_phy(o_budg_so2_to_h2so4,    budg_so2_to_h2so4)
1631          CALL histwrite_phy(o_budg_h2so4_to_part,   budg_h2so4_to_part)
1632          CALL histwrite_phy(o_budg_sed_part,        budg_sed_part)
1633          CALL histwrite_phy(o_surf_PM25_sulf, surf_PM25_sulf)
1634          CALL histwrite_phy(o_vsed_aer, vsed_aer)
1635          CALL histwrite_phy(o_f_r_wet, f_r_wet)
1636          CALL histwrite_phy(o_ext_strat_550, tau_strat_550)
1637          CALL histwrite_phy(o_ext_strat_1020, tau_strat_1020)
1638          CALL histwrite_phy(o_tau_strat_550, tausum_strat(:,1))
1639          CALL histwrite_phy(o_tau_strat_1020, tausum_strat(:,2))
1640       ENDIF
1641#endif
1642       !NL
1643       IF (ok_volcan .AND. ok_ade) THEN
1644          DO k=1, klev
1645             IF (vars_defined) zx_tmp_fi3d(:,k)=heat_volc(:,k)*swradcorr(:)
1646          ENDDO
1647          CALL histwrite_phy(o_heat_volc, zx_tmp_fi3d)
1648          DO k=1, klev
1649             IF (vars_defined) zx_tmp_fi3d(:,k)=cool_volc(:,k)
1650          ENDDO
1651          CALL histwrite_phy(o_cool_volc, zx_tmp_fi3d)
1652       ENDIF
1653       IF (ok_ade) THEN
1654          IF (vars_defined) zx_tmp_fi2d(:)=topswad_aero*swradcorr
1655          CALL histwrite_phy(o_topswad, zx_tmp_fi2d)
1656         
1657          IF (vars_defined) zx_tmp_fi2d(:)=topswad0_aero*swradcorr
1658          CALL histwrite_phy(o_topswad0, zx_tmp_fi2d)
1659                   
1660          IF (vars_defined) zx_tmp_fi2d(:)=solswad_aero*swradcorr
1661          CALL histwrite_phy(o_solswad, zx_tmp_fi2d)
1662                   
1663          IF (vars_defined) zx_tmp_fi2d(:)=solswad0_aero*swradcorr
1664          CALL histwrite_phy(o_solswad0, zx_tmp_fi2d)
1665         
1666          CALL histwrite_phy(o_toplwad, toplwad_aero)
1667          CALL histwrite_phy(o_toplwad0, toplwad0_aero)
1668          CALL histwrite_phy(o_sollwad, sollwad_aero)
1669          CALL histwrite_phy(o_sollwad0, sollwad0_aero)
1670          !====MS forcing diagnostics
1671          !ym warning : topsw_aero, solsw_aero, topsw0_aero, solsw0_aero are not defined by model
1672          !ym => init to 0 in radlwsw_m.F90 ztopsw_aero, zsolsw_aero, ztopsw0_aero, zsolsw0_aero
1673
1674          IF (vars_defined) zx_tmp_fi2d(:)=topsw_aero(:,1)*swradcorr(:)
1675          CALL histwrite_phy(o_swtoaas_nat,zx_tmp_fi2d)
1676          IF (vars_defined) zx_tmp_fi2d(:)=solsw_aero(:,1)*swradcorr(:)
1677          CALL histwrite_phy(o_swsrfas_nat,zx_tmp_fi2d)
1678          IF (vars_defined) zx_tmp_fi2d(:)=topsw0_aero(:,1)*swradcorr(:)
1679          CALL histwrite_phy(o_swtoacs_nat,zx_tmp_fi2d)
1680          IF (vars_defined) zx_tmp_fi2d(:)=solsw0_aero(:,1)*swradcorr(:)
1681          CALL histwrite_phy(o_swsrfcs_nat,zx_tmp_fi2d)
1682          !ant
1683          IF (vars_defined) zx_tmp_fi2d(:)=topsw_aero(:,2)*swradcorr(:)
1684          CALL histwrite_phy(o_swtoaas_ant,zx_tmp_fi2d)
1685          IF (vars_defined) zx_tmp_fi2d(:)=solsw_aero(:,2)*swradcorr(:)
1686          CALL histwrite_phy(o_swsrfas_ant,zx_tmp_fi2d)
1687          IF (vars_defined) zx_tmp_fi2d(:)=topsw0_aero(:,2)*swradcorr(:)
1688          CALL histwrite_phy(o_swtoacs_ant,zx_tmp_fi2d)
1689          IF (vars_defined) zx_tmp_fi2d(:)=solsw0_aero(:,2)*swradcorr(:)
1690          CALL histwrite_phy(o_swsrfcs_ant,zx_tmp_fi2d)
1691          !cf
1692          IF (.not. aerosol_couple) THEN
1693             IF (vars_defined) zx_tmp_fi2d(:)=topswcf_aero(:,1)*swradcorr(:)
1694             CALL histwrite_phy(o_swtoacf_nat,zx_tmp_fi2d)
1695             IF (vars_defined) zx_tmp_fi2d(:)=solswcf_aero(:,1)*swradcorr(:)
1696             CALL histwrite_phy(o_swsrfcf_nat,zx_tmp_fi2d)
1697             IF (vars_defined) zx_tmp_fi2d(:)=topswcf_aero(:,2)*swradcorr(:)
1698             CALL histwrite_phy(o_swtoacf_ant,zx_tmp_fi2d)
1699             IF (vars_defined) zx_tmp_fi2d(:)=solswcf_aero(:,2)*swradcorr(:)
1700             CALL histwrite_phy(o_swsrfcf_ant,zx_tmp_fi2d)
1701             IF (vars_defined) zx_tmp_fi2d(:)=topswcf_aero(:,3)*swradcorr(:)
1702             CALL histwrite_phy(o_swtoacf_zero,zx_tmp_fi2d)
1703             IF (vars_defined) zx_tmp_fi2d(:)=solswcf_aero(:,3)*swradcorr(:)
1704             CALL histwrite_phy(o_swsrfcf_zero,zx_tmp_fi2d)
1705          ENDIF
1706          !====MS forcing diagnostics
1707       ENDIF
1708       IF (ok_aie) THEN
1709          IF (vars_defined) zx_tmp_fi2d(:)= topswai_aero*swradcorr
1710          CALL histwrite_phy(o_topswai, zx_tmp_fi2d)
1711         
1712          IF (vars_defined) zx_tmp_fi2d(:)=toplwai_aero*swradcorr
1713          CALL histwrite_phy(o_toplwai, zx_tmp_fi2d)
1714         
1715          IF (vars_defined) zx_tmp_fi2d(:)=solswai_aero*swradcorr
1716          CALL histwrite_phy(o_solswai, zx_tmp_fi2d)
1717         
1718          IF (vars_defined) zx_tmp_fi2d(:)=sollwai_aero*swradcorr
1719          CALL histwrite_phy(o_sollwai, zx_tmp_fi2d)
1720       ENDIF
1721       IF (flag_aerosol.GT.0.AND.ok_cdnc) THEN
1722          CALL histwrite_phy(o_scdnc, scdnc)
1723          CALL histwrite_phy(o_cldncl, cldncl)
1724          CALL histwrite_phy(o_reffclws, reffclws)
1725          CALL histwrite_phy(o_reffclwc, reffclwc)
1726          CALL histwrite_phy(o_cldnvi, cldnvi)
1727          CALL histwrite_phy(o_lcc, lcc)
1728          CALL histwrite_phy(o_lcc3d, lcc3d)
1729          CALL histwrite_phy(o_lcc3dcon, lcc3dcon)
1730          CALL histwrite_phy(o_lcc3dstra, lcc3dstra)
1731          CALL histwrite_phy(o_icc3dcon, icc3dcon)
1732          CALL histwrite_phy(o_icc3dstra, icc3dstra)
1733          CALL histwrite_phy(o_cldicemxrat, zfice)
1734          IF (vars_defined) zx_tmp_fi3d(:,:)=1-zfice(:,:)
1735          CALL histwrite_phy(o_cldwatmxrat, zx_tmp_fi3d)
1736          CALL histwrite_phy(o_reffclwtop, reffclwtop)
1737       ENDIF
1738       ! Champs 3D:
1739       IF (ok_ade .OR. ok_aie) then
1740          CALL histwrite_phy(o_ec550aer, ec550aer)
1741       ENDIF
1742       CALL histwrite_phy(o_lwcon, flwc)
1743       CALL histwrite_phy(o_iwcon, fiwc)
1744       CALL histwrite_phy(o_temp, t_seri)
1745       CALL histwrite_phy(o_theta, theta)
1746       CALL histwrite_phy(o_ovapinit, qx(:,:,ivap))
1747       CALL histwrite_phy(o_ovap, q_seri)
1748       CALL histwrite_phy(o_oliq, ql_seri)
1749
1750       IF (vars_defined) zx_tmp_fi3d = ql_seri+qs_seri
1751       CALL histwrite_phy(o_ocond, zx_tmp_fi3d)
1752
1753       CALL histwrite_phy(o_geop, zphi)
1754       CALL histwrite_phy(o_vitu, u_seri)
1755       CALL histwrite_phy(o_vitv, v_seri)
1756       CALL histwrite_phy(o_vitw, omega)
1757       CALL histwrite_phy(o_pres, pplay)
1758       CALL histwrite_phy(o_paprs, paprs(:,1:klev))
1759       
1760       IF (vars_defined) zx_tmp_fi3d = zphi/RG
1761       CALL histwrite_phy(o_zfull,zx_tmp_fi3d)
1762
1763#ifdef CPP_XIOS
1764!solbnd begin
1765#ifdef CPP_RRTM
1766      IF (iflag_rrtm.EQ.1) THEN
1767       IF (vars_defined) THEN
1768        DO ISW=1, NSW
1769          zx_tmp_fi3dsp(:,ISW) = swdn(:,klevp1)*swradcorr(:)*RSUN(ISW)
1770        ENDDO
1771        CALL histwrite_phy(o_solbnd, zx_tmp_fi3dsp)
1772       ENDIF
1773      ENDIF
1774#endif
1775!solbnd end
1776#endif
1777
1778       IF (flag_aerosol_strat.EQ.2) THEN
1779         CALL histwrite_phy(o_stratomask, stratomask)
1780       ENDIF
1781     
1782       IF (vars_defined)  THEN
1783        zx_tmp_fi3d(:,1)= pphis(:)/RG
1784        DO k = 2, klev
1785         DO i = 1, klon
1786            zx_tmp_fi3d(i,k) = zphi(i,k-1)/RG + &
1787                          (zphi(i,k)-zphi(i,k-1))/RG * &
1788                          (paprs(i,k)-pplay(i,k-1))/(pplay(i,k)-pplay(i,k-1))
1789         ENDDO
1790        ENDDO
1791       ENDIF
1792       CALL histwrite_phy(o_zhalf, zx_tmp_fi3d)
1793       CALL histwrite_phy(o_rneb, cldfra)
1794       CALL histwrite_phy(o_rnebcon, rnebcon)
1795       CALL histwrite_phy(o_rnebls, rneb)
1796       CALL histwrite_phy(o_rneblsvol, rneblsvol)
1797       IF (vars_defined)  THEN
1798          DO k=1, klev
1799             DO i=1, klon
1800                zx_tmp_fi3d(i,k)=cldfra(i,k)*JrNt(i)
1801             ENDDO
1802          ENDDO
1803       ENDIF
1804       CALL histwrite_phy(o_rnebjn, zx_tmp_fi3d)
1805       CALL histwrite_phy(o_rhum, zx_rh)
1806       IF (iflag_ice_thermo .GT. 0) THEN
1807          IF (vars_defined) zx_tmp_fi3d = zx_rhl * 100.
1808          CALL histwrite_phy(o_rhl, zx_tmp_fi3d)
1809          IF (vars_defined) zx_tmp_fi3d = zx_rhi * 100.
1810          CALL histwrite_phy(o_rhi, zx_tmp_fi3d)
1811       ENDIF
1812
1813       
1814       IF (vars_defined) zx_tmp_fi3d = wo(:, :, 1) * dobson_u * 1e3 / zmasse / rmo3 * rmd
1815       CALL histwrite_phy(o_ozone, zx_tmp_fi3d)
1816
1817       IF (read_climoz == 2) THEN
1818         IF (vars_defined) zx_tmp_fi3d = wo(:, :, 2) * dobson_u * 1e3 / zmasse / rmo3 * rmd
1819         CALL histwrite_phy(o_ozone_light, zx_tmp_fi3d)
1820       ENDIF
1821
1822       CALL histwrite_phy(o_duphy, d_u)
1823
1824       CALL histwrite_phy(o_dtphy, d_t)
1825
1826       CALL histwrite_phy(o_dqphy,  d_qx(:,:,ivap))
1827       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,ivap),zmasse,zx_tmp_fi2d)
1828       CALL histwrite_phy(o_dqphy2d,  zx_tmp_fi2d)
1829
1830       CALL histwrite_phy(o_dqlphy,  d_qx(:,:,iliq))
1831       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,iliq),zmasse,zx_tmp_fi2d)
1832       CALL histwrite_phy(o_dqlphy2d,  zx_tmp_fi2d)
1833
1834       IF (nqo.EQ.3) THEN
1835       CALL histwrite_phy(o_dqsphy,  d_qx(:,:,isol))
1836       IF (vars_defined) CALL water_int(klon,klev,d_qx(:,:,isol),zmasse,zx_tmp_fi2d)
1837       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
1838       ELSE
1839       zx_tmp_fi3d=0.0
1840       CALL histwrite_phy(o_dqsphy,  zx_tmp_fi3d)
1841       zx_tmp_fi2d=0.0
1842       CALL histwrite_phy(o_dqsphy2d,  zx_tmp_fi2d)
1843       ENDIF
1844
1845       DO nsrf=1, nbsrf
1846          IF (vars_defined) zx_tmp_fi2d(1 : klon) = falb1( 1 : klon, nsrf)
1847          CALL histwrite_phy(o_albe_srf(nsrf), zx_tmp_fi2d)
1848          IF (vars_defined) zx_tmp_fi2d(1 : klon) = z0m( 1 : klon, nsrf)
1849          CALL histwrite_phy(o_z0m_srf(nsrf), zx_tmp_fi2d)
1850          IF (vars_defined) zx_tmp_fi2d(1 : klon) = z0h( 1 : klon, nsrf)
1851          CALL histwrite_phy(o_z0h_srf(nsrf), zx_tmp_fi2d)
1852          IF (vars_defined) zx_tmp_fi2d(1 : klon) = agesno( 1 : klon, nsrf)
1853          CALL histwrite_phy(o_ages_srf(nsrf), zx_tmp_fi2d)
1854          IF (vars_defined) zx_tmp_fi2d(1 : klon) = snow( 1 : klon, nsrf)
1855          CALL histwrite_phy(o_snow_srf(nsrf), zx_tmp_fi2d)
1856       ENDDO !nsrf=1, nbsrf
1857       CALL histwrite_phy(o_alb1, albsol1)
1858       CALL histwrite_phy(o_alb2, albsol2)
1859       !FH Sorties pour la couche limite
1860       IF (iflag_pbl>1) THEN
1861          zx_tmp_fi3d=0.
1862          IF (vars_defined) THEN
1863             DO nsrf=1,nbsrf
1864                DO k=1,klev
1865                   zx_tmp_fi3d(:,k)=zx_tmp_fi3d(:,k) &
1866                        +pctsrf(:,nsrf)*pbl_tke(:,k,nsrf)
1867                ENDDO
1868             ENDDO
1869          ENDIF
1870          CALL histwrite_phy(o_tke, zx_tmp_fi3d)
1871          CALL histwrite_phy(o_tke_max, zx_tmp_fi3d) 
1872
1873       ENDIF
1874
1875       CALL histwrite_phy(o_kz, coefh(:,:,is_ave))
1876
1877       CALL histwrite_phy(o_kz_max, coefh(:,:,is_ave))
1878
1879       CALL histwrite_phy(o_clwcon, clwcon0)
1880       CALL histwrite_phy(o_dtdyn, d_t_dyn)
1881
1882       CALL histwrite_phy(o_dqdyn, d_q_dyn)
1883
1884       CALL histwrite_phy(o_dqdyn2d,d_q_dyn2d)
1885
1886       CALL histwrite_phy(o_dqldyn, d_ql_dyn)
1887
1888       CALL histwrite_phy(o_dqldyn2d, d_ql_dyn2d)
1889
1890       CALL histwrite_phy(o_dqsdyn, d_qs_dyn)
1891
1892       CALL histwrite_phy(o_dqsdyn2d, d_qs_dyn2d)
1893
1894       CALL histwrite_phy(o_dudyn, d_u_dyn)
1895       CALL histwrite_phy(o_dvdyn, d_v_dyn)
1896
1897       IF (vars_defined) THEN
1898          zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys
1899       ENDIF
1900       CALL histwrite_phy(o_dtcon, zx_tmp_fi3d)
1901       IF (iflag_thermals.EQ.0) THEN
1902          IF (vars_defined) THEN
1903             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
1904                  d_t_ajsb(1:klon,1:klev)/pdtphys
1905          ENDIF
1906          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
1907       ELSE IF(iflag_thermals.GE.1.AND.iflag_wake.EQ.1) THEN
1908          IF (vars_defined) THEN
1909             zx_tmp_fi3d(1:klon,1:klev)=d_t_con(1:klon,1:klev)/pdtphys + &
1910                  d_t_ajs(1:klon,1:klev)/pdtphys + &
1911                  d_t_wake(1:klon,1:klev)/pdtphys
1912          ENDIF
1913          CALL histwrite_phy(o_tntc, zx_tmp_fi3d)
1914       ENDIF
1915       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_con(1:klon,1:klev)/pdtphys
1916       CALL histwrite_phy(o_ducon, zx_tmp_fi3d)
1917       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_con(1:klon,1:klev)/pdtphys
1918       CALL histwrite_phy(o_dvcon, zx_tmp_fi3d)
1919       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
1920       CALL histwrite_phy(o_dqcon, zx_tmp_fi3d)
1921       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1922       CALL histwrite_phy(o_dqcon2d, zx_tmp_fi2d)
1923
1924       IF (iflag_thermals.EQ.0) THEN
1925          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys
1926          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
1927       ELSE IF (iflag_thermals.GE.1.AND.iflag_wake.EQ.1) THEN
1928          IF (vars_defined) THEN
1929             zx_tmp_fi3d(1:klon,1:klev)=d_q_con(1:klon,1:klev)/pdtphys + &
1930                  d_q_ajs(1:klon,1:klev)/pdtphys + &
1931                  d_q_wake(1:klon,1:klev)/pdtphys
1932          ENDIF
1933          CALL histwrite_phy(o_tnhusc, zx_tmp_fi3d)
1934       ENDIF
1935
1936       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lsc(1:klon,1:klev)/pdtphys
1937       CALL histwrite_phy(o_dtlsc, zx_tmp_fi3d)
1938       IF (vars_defined) zx_tmp_fi3d(1:klon, 1:klev)=(d_t_lsc(1:klon,1:klev)+ &
1939            d_t_eva(1:klon,1:klev))/pdtphys
1940       CALL histwrite_phy(o_dtlschr, zx_tmp_fi3d)
1941       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys
1942       CALL histwrite_phy(o_dqlsc, zx_tmp_fi3d)
1943       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1944       CALL histwrite_phy(o_dqlsc2d, zx_tmp_fi2d)
1945       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=beta_prec(1:klon,1:klev)
1946       CALL histwrite_phy(o_beta_prec, zx_tmp_fi3d)
1947!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1948       ! Sorties specifiques a la separation thermiques/non thermiques
1949       IF (iflag_thermals>=1) THEN
1950          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscth(1:klon,1:klev)/pdtphys
1951          CALL histwrite_phy(o_dtlscth, zx_tmp_fi3d)
1952          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lscst(1:klon,1:klev)/pdtphys
1953          CALL histwrite_phy(o_dtlscst, zx_tmp_fi3d)
1954          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscth(1:klon,1:klev)/pdtphys
1955          CALL histwrite_phy(o_dqlscth, zx_tmp_fi3d)
1956          IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1957          CALL histwrite_phy(o_dqlscth2d, zx_tmp_fi2d)
1958          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_lscst(1:klon,1:klev)/pdtphys
1959          CALL histwrite_phy(o_dqlscst, zx_tmp_fi3d)
1960          IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
1961          CALL histwrite_phy(o_dqlscst2d, zx_tmp_fi2d)
1962          CALL histwrite_phy(o_plulth, plul_th)
1963          CALL histwrite_phy(o_plulst, plul_st)
1964          IF (vars_defined) THEN
1965             DO i=1,klon
1966                zx_tmp_fi2d(1:klon)=lmax_th(:)
1967             ENDDO
1968          ENDIF
1969          CALL histwrite_phy(o_lmaxth, zx_tmp_fi2d)
1970          IF (vars_defined) THEN
1971             DO k=1,klev
1972                DO i=1,klon
1973                   IF (ptconvth(i,k)) THEN
1974                      zx_tmp_fi3d(i,k)=1.
1975                   ELSE
1976                      zx_tmp_fi3d(i,k)=0.
1977                   ENDIF
1978                ENDDO
1979             ENDDO
1980          ENDIF
1981          CALL histwrite_phy(o_ptconvth, zx_tmp_fi3d)
1982       ENDIF ! iflag_thermals>=1
1983!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1984       zpt_conv = 0.
1985       WHERE (ptconv) zpt_conv = 1.
1986       CALL histwrite_phy(o_ptconv, zpt_conv)
1987!!       IF (vars_defined)         zx_tmp_fi2d=float(itau_con)/float(itap)
1988!!       CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
1989       IF (vars_defined) THEN
1990          zpt_conv2d(:) = 0.
1991          DO k=1,klev
1992            WHERE (ptconv(:,k)) zpt_conv2d(:) = 1.
1993          ENDDO
1994       ENDIF
1995       CALL histwrite_phy(o_ftime_deepcv, zpt_conv2d)
1996       IF (vars_defined) THEN
1997          zx_tmp_fi2d(:) = 0.
1998          DO k=1,klev
1999            WHERE (ptconvth(:,k)) zx_tmp_fi2d(:) = 1.
2000          ENDDO
2001       ENDIF
2002       CALL histwrite_phy(o_ftime_th, zx_tmp_fi2d)
2003       IF (vars_defined) THEN
2004           zx_tmp_fi2d(:) = max(zx_tmp_fi2d(:),zpt_conv2d(:))
2005       ENDIF
2006       CALL histwrite_phy(o_ftime_con, zx_tmp_fi2d)
2007!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2008       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf(1:klon,1:klev)/pdtphys
2009       CALL histwrite_phy(o_dtvdf, zx_tmp_fi3d)
2010       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_diss(1:klon,1:klev)/pdtphys
2011       CALL histwrite_phy(o_dtdis, zx_tmp_fi3d)
2012       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_vdf(1:klon,1:klev)/pdtphys
2013       CALL histwrite_phy(o_dqvdf, zx_tmp_fi3d)
2014       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2015       CALL histwrite_phy(o_dqvdf2d, zx_tmp_fi2d)
2016       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_eva(1:klon,1:klev)/pdtphys
2017       CALL histwrite_phy(o_dteva, zx_tmp_fi3d)
2018       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_eva(1:klon,1:klev)/pdtphys
2019       CALL histwrite_phy(o_dqeva, zx_tmp_fi3d)
2020       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2021       CALL histwrite_phy(o_dqeva2d, zx_tmp_fi2d)
2022       CALL histwrite_phy(o_ratqs, ratqs)
2023       IF (vars_defined) THEN
2024          zx_tmp_fi3d(1:klon,1:klev)=d_t_ajs(1:klon,1:klev)/pdtphys - &
2025               d_t_ajsb(1:klon,1:klev)/pdtphys
2026       ENDIF
2027       CALL histwrite_phy(o_dtthe, zx_tmp_fi3d)
2028       IF (vars_defined) THEN
2029          zx_tmp_fi3d(1:klon,1:klev)=d_u_ajs(1:klon,1:klev)/pdtphys
2030       ENDIF
2031       CALL histwrite_phy(o_duthe, zx_tmp_fi3d)
2032       IF (vars_defined) THEN
2033          zx_tmp_fi3d(1:klon,1:klev)=d_v_ajs(1:klon,1:klev)/pdtphys
2034       ENDIF
2035       CALL histwrite_phy(o_dvthe, zx_tmp_fi3d)
2036
2037       IF (iflag_thermals>=1) THEN
2038          ! Pour l instant 0 a y reflichir pour les thermiques
2039          ! regroupe avec ftime_deepcv et ftime_con
2040          !!zx_tmp_fi2d=0.
2041          !!CALL histwrite_phy(o_ftime_th, zx_tmp_fi2d)
2042          CALL histwrite_phy(o_f_th, fm_therm)
2043          CALL histwrite_phy(o_e_th, entr_therm)
2044          CALL histwrite_phy(o_w_th, zw2)
2045          CALL histwrite_phy(o_q_th, zqasc)
2046          CALL histwrite_phy(o_a_th, fraca)
2047          CALL histwrite_phy(o_cloudth_sth, cloudth_sth)
2048          CALL histwrite_phy(o_cloudth_senv, cloudth_senv)
2049          CALL histwrite_phy(o_cloudth_sigmath, cloudth_sigmath)
2050          CALL histwrite_phy(o_cloudth_sigmaenv, cloudth_sigmaenv)
2051          CALL histwrite_phy(o_d_th, detr_therm)
2052          CALL histwrite_phy(o_f0_th, f0)
2053          CALL histwrite_phy(o_zmax_th, zmax_th)
2054          IF (vars_defined) THEN
2055             zx_tmp_fi3d(1:klon,1:klev)=d_q_ajs(1:klon,1:klev)/pdtphys - &
2056                  d_q_ajsb(1:klon,1:klev)/pdtphys
2057          ENDIF
2058          CALL histwrite_phy(o_dqthe, zx_tmp_fi3d)
2059          IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2060          CALL histwrite_phy(o_dqthe2d, zx_tmp_fi2d)
2061       ENDIF !iflag_thermals
2062       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ajsb(1:klon,1:klev)/pdtphys
2063       CALL histwrite_phy(o_dtajs, zx_tmp_fi3d)
2064       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_q_ajsb(1:klon,1:klev)/pdtphys
2065       CALL histwrite_phy(o_dqajs, zx_tmp_fi3d)
2066       IF (vars_defined) CALL water_int(klon,klev,zx_tmp_fi3d,zmasse,zx_tmp_fi2d)
2067       CALL histwrite_phy(o_dqajs2d, zx_tmp_fi2d)
2068       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys
2069       CALL histwrite_phy(o_dtswr, zx_tmp_fi3d)
2070       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_sw0(1:klon,1:klev)/pdtphys
2071       CALL histwrite_phy(o_dtsw0, zx_tmp_fi3d)
2072       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lwr(1:klon,1:klev)/pdtphys
2073       CALL histwrite_phy(o_dtlwr, zx_tmp_fi3d)
2074       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lw0(1:klon,1:klev)/pdtphys
2075       CALL histwrite_phy(o_dtlw0, zx_tmp_fi3d)
2076       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_ec(1:klon,1:klev)/pdtphys
2077       CALL histwrite_phy(o_dtec, zx_tmp_fi3d)
2078       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_vdf(1:klon,1:klev)/pdtphys
2079       CALL histwrite_phy(o_duvdf, zx_tmp_fi3d)
2080       IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_vdf(1:klon,1:klev)/pdtphys
2081       CALL histwrite_phy(o_dvvdf, zx_tmp_fi3d)
2082       IF (ok_orodr) THEN
2083          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_oro(1:klon,1:klev)/pdtphys
2084          CALL histwrite_phy(o_duoro, zx_tmp_fi3d)
2085          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_oro(1:klon,1:klev)/pdtphys
2086          CALL histwrite_phy(o_dvoro, zx_tmp_fi3d)
2087          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_oro(1:klon,1:klev)/pdtphys
2088          CALL histwrite_phy(o_dtoro, zx_tmp_fi3d)
2089       ENDIF
2090       IF (ok_orolf) THEN
2091          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_u_lif(1:klon,1:klev)/pdtphys
2092          CALL histwrite_phy(o_dulif, zx_tmp_fi3d)
2093
2094          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_v_lif(1:klon,1:klev)/pdtphys
2095          CALL histwrite_phy(o_dvlif, zx_tmp_fi3d)
2096
2097          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_lif(1:klon,1:klev)/pdtphys
2098          CALL histwrite_phy(o_dtlif, zx_tmp_fi3d)
2099       ENDIF
2100
2101       IF (ok_hines) THEN
2102          IF (vars_defined) zx_tmp_fi3d=du_gwd_hines/pdtphys
2103          CALL histwrite_phy(o_du_gwd_hines, zx_tmp_fi3d)
2104
2105          IF (vars_defined) zx_tmp_fi3d= dv_gwd_hines/pdtphys         
2106          CALL histwrite_phy(o_dv_gwd_hines, zx_tmp_fi3d)
2107         
2108          IF (vars_defined) zx_tmp_fi3d(1:klon,1:klev)=d_t_hin(1:klon,1:klev)/pdtphys
2109          CALL histwrite_phy(o_dthin, zx_tmp_fi3d)
2110          CALL histwrite_phy(o_ustr_gwd_hines, zustr_gwd_hines)
2111          CALL histwrite_phy(o_vstr_gwd_hines, zvstr_gwd_hines)
2112       ENDIF
2113
2114       IF (.not. ok_hines .and. ok_gwd_rando) THEN
2115          IF (vars_defined)  zx_tmp_fi3d=du_gwd_front / pdtphys
2116          CALL histwrite_phy(o_du_gwd_front, zx_tmp_fi3d)
2117         
2118          IF (vars_defined)  zx_tmp_fi3d=dv_gwd_front / pdtphys
2119          CALL histwrite_phy(o_dv_gwd_front, zx_tmp_fi3d)
2120         
2121          CALL histwrite_phy(o_ustr_gwd_front, zustr_gwd_front)
2122          CALL histwrite_phy(o_vstr_gwd_front, zvstr_gwd_front)
2123       ENDIF
2124
2125       IF (ok_gwd_rando) THEN
2126          IF (vars_defined)  zx_tmp_fi3d=du_gwd_rando / pdtphys
2127          CALL histwrite_phy(o_du_gwd_rando, zx_tmp_fi3d)
2128         
2129          IF (vars_defined)  zx_tmp_fi3d=dv_gwd_rando / pdtphys
2130          CALL histwrite_phy(o_dv_gwd_rando, zx_tmp_fi3d)
2131          CALL histwrite_phy(o_ustr_gwd_rando, zustr_gwd_rando)
2132          CALL histwrite_phy(o_vstr_gwd_rando, zvstr_gwd_rando)
2133          CALL histwrite_phy(o_east_gwstress, east_gwstress )
2134          CALL histwrite_phy(o_west_gwstress, west_gwstress )
2135       ENDIF
2136
2137       IF (ok_qch4) THEN
2138          IF (vars_defined) zx_tmp_fi3d=d_q_ch4 / pdtphys
2139          CALL histwrite_phy(o_dqch4, zx_tmp_fi3d)
2140       ENDIF
2141       
2142       IF (vars_defined) THEN
2143         DO k=1, klevp1
2144           zx_tmp_fi3d1(:,k)=swup(:,k)*swradcorr(:)
2145         ENDDO
2146       ENDIF
2147       
2148       CALL histwrite_phy(o_rsu, zx_tmp_fi3d1)
2149
2150
2151       IF (vars_defined) THEN
2152         DO k=1, klevp1
2153           zx_tmp_fi3d1(:,k)=swdn(:,k)*swradcorr(:)
2154         ENDDO
2155       ENDIF
2156       
2157       CALL histwrite_phy(o_rsd, zx_tmp_fi3d1)
2158
2159       IF (vars_defined) THEN
2160         DO k=1, klevp1
2161           zx_tmp_fi3d1(:,k)=swup0(:,k)*swradcorr(:)
2162         ENDDO
2163       ENDIF
2164       
2165       CALL histwrite_phy(o_rsucs, zx_tmp_fi3d1)
2166
2167       IF (vars_defined) THEN
2168         DO k=1, klevp1
2169           zx_tmp_fi3d1(:,k)=swupc0(:,k)*swradcorr(:)
2170         ENDDO
2171       ENDIF
2172       CALL histwrite_phy(o_rsucsaf, zx_tmp_fi3d1)
2173
2174       IF (vars_defined) THEN
2175         DO k=1, klevp1
2176           zx_tmp_fi3d1(:,k)=swdn0(:,k)*swradcorr(:)
2177         ENDDO
2178       ENDIF
2179       CALL histwrite_phy(o_rsdcs, zx_tmp_fi3d1)
2180
2181
2182       IF (vars_defined) THEN
2183         DO k=1, klevp1
2184           zx_tmp_fi3d1(:,k)=swdnc0(:,k)*swradcorr(:)
2185         ENDDO
2186       ENDIF
2187       CALL histwrite_phy(o_rsdcsaf, zx_tmp_fi3d1)
2188
2189       CALL histwrite_phy(o_rlu, lwup)
2190       CALL histwrite_phy(o_rld, lwdn)
2191       CALL histwrite_phy(o_rlucs, lwup0)
2192       CALL histwrite_phy(o_rldcs, lwdn0)
2193
2194       IF (vars_defined) THEN
2195          zx_tmp_fi3d(1:klon,1:klev)=d_t(1:klon,1:klev)+ &
2196               d_t_dyn(1:klon,1:klev)
2197       ENDIF
2198       CALL histwrite_phy(o_tnt, zx_tmp_fi3d)
2199
2200       IF (vars_defined) THEN
2201          zx_tmp_fi3d(1:klon,1:klev)=d_t_swr(1:klon,1:klev)/pdtphys + &
2202               d_t_lwr(1:klon,1:klev)/pdtphys
2203       ENDIF
2204       CALL histwrite_phy(o_tntr, zx_tmp_fi3d)
2205       IF (vars_defined) THEN
2206          zx_tmp_fi3d(1:klon,1:klev)= (d_t_lsc(1:klon,1:klev)+ &
2207               d_t_eva(1:klon,1:klev)+ &
2208               d_t_vdf(1:klon,1:klev))/pdtphys
2209       ENDIF
2210       CALL histwrite_phy(o_tntscpbl, zx_tmp_fi3d)
2211       IF (vars_defined) THEN
2212          zx_tmp_fi3d(1:klon,1:klev)=d_qx(1:klon,1:klev,ivap)+ &
2213               d_q_dyn(1:klon,1:klev)
2214       ENDIF
2215       CALL histwrite_phy(o_tnhus, zx_tmp_fi3d)
2216       IF (vars_defined) THEN
2217          zx_tmp_fi3d(1:klon,1:klev)=d_q_lsc(1:klon,1:klev)/pdtphys+ &
2218               d_q_eva(1:klon,1:klev)/pdtphys
2219       ENDIF
2220       CALL histwrite_phy(o_tnhusscpbl, zx_tmp_fi3d)
2221       CALL histwrite_phy(o_evu, coefm(:,:,is_ave))
2222       IF (vars_defined) THEN
2223          zx_tmp_fi3d(1:klon,1:klev)=q_seri(1:klon,1:klev)+ &
2224               ql_seri(1:klon,1:klev)
2225       ENDIF
2226       CALL histwrite_phy(o_h2o, zx_tmp_fi3d)
2227       IF (iflag_con >= 3) THEN
2228          IF (vars_defined) THEN
2229             zx_tmp_fi3d(1:klon,1:klev)=-1 * (dnwd(1:klon,1:klev)+ &
2230                  dnwd0(1:klon,1:klev))
2231          ENDIF
2232          CALL histwrite_phy(o_mcd, zx_tmp_fi3d)
2233          IF (vars_defined) THEN
2234             zx_tmp_fi3d(1:klon,1:klev)=upwd(1:klon,1:klev) + &
2235                  dnwd(1:klon,1:klev)+ dnwd0(1:klon,1:klev)
2236          ENDIF
2237          CALL histwrite_phy(o_dmc, zx_tmp_fi3d)
2238       ELSE IF (iflag_con == 2) THEN
2239          CALL histwrite_phy(o_mcd,  pmfd)
2240          IF (vars_defined) zx_tmp_fi3d = pmfu + pmfd
2241          CALL histwrite_phy(o_dmc,  zx_tmp_fi3d)
2242       ENDIF
2243       CALL histwrite_phy(o_ref_liq, ref_liq)
2244       CALL histwrite_phy(o_ref_ice, ref_ice)
2245!
2246       IF (ok_4xCO2atm) THEN
2247          IF (vars_defined) zx_tmp_fi2d(:) = swupp(:,klevp1)*swradcorr(:)
2248          CALL histwrite_phy(o_rsut4co2, zx_tmp_fi2d)
2249          IF (vars_defined) zx_tmp_fi2d(:) = lwupp(:,klevp1)
2250          CALL histwrite_phy(o_rlut4co2, zx_tmp_fi2d)
2251          IF (vars_defined) zx_tmp_fi2d(:) = swup0p(:,klevp1)*swradcorr(:)
2252          CALL histwrite_phy(o_rsutcs4co2, zx_tmp_fi2d)
2253          IF (vars_defined) zx_tmp_fi2d(:) = lwup0p(:,klevp1)
2254          CALL histwrite_phy(o_rlutcs4co2, zx_tmp_fi2d)
2255          IF (vars_defined) THEN
2256            DO k=1, klevp1
2257              zx_tmp_fi3d1(:,k)=swupp(:,k)*swradcorr(:)
2258            ENDDO
2259          ENDIF
2260          CALL histwrite_phy(o_rsu4co2, zx_tmp_fi3d1)
2261          IF (vars_defined) THEN
2262            DO k=1, klevp1
2263              zx_tmp_fi3d1(:,k)=swup0p(:,k)*swradcorr(:)
2264            ENDDO
2265          ENDIF
2266          CALL histwrite_phy(o_rsucs4co2, zx_tmp_fi3d1)
2267          IF (vars_defined) THEN
2268            DO k=1, klevp1
2269              zx_tmp_fi3d1(:,k)=swdnp(:,k)*swradcorr(:)
2270            ENDDO
2271          ENDIF
2272          CALL histwrite_phy(o_rsd4co2, zx_tmp_fi3d1)
2273          IF (vars_defined) THEN
2274            DO k=1, klevp1
2275              zx_tmp_fi3d1(:,k)=swdn0p(:,k)*swradcorr(:)
2276            ENDDO
2277          ENDIF
2278          CALL histwrite_phy(o_rsdcs4co2, zx_tmp_fi3d1)
2279          CALL histwrite_phy(o_rlu4co2, lwupp)
2280          CALL histwrite_phy(o_rlucs4co2, lwup0p)
2281          CALL histwrite_phy(o_rld4co2, lwdnp)
2282          CALL histwrite_phy(o_rldcs4co2, lwdn0p)
2283       ENDIF !ok_4xCO2atm
2284!!!!!!!!!!!! Sorties niveaux de pression NMC !!!!!!!!!!!!!!!!!!!!
2285#ifdef CPP_IOIPSL
2286#ifndef CPP_XIOS
2287  IF (.NOT.ok_all_xml) THEN
2288       ! ATTENTION, LES ANCIENS HISTWRITE ONT ETES CONSERVES EN ATTENDANT MIEUX:
2289       ! Champs interpolles sur des niveaux de pression
2290       DO iff=7, nfiles-1 !--OB: here we deal with files 7,8,9
2291
2292          CALL histwrite_phy(o_tnondef,tnondef(:,:,iff-6),iff)
2293          CALL histwrite_phy(o_ta,twriteSTD(:,:,iff-6),iff)
2294          CALL histwrite_phy(o_zg,phiwriteSTD(:,:,iff-6),iff)
2295          CALL histwrite_phy(o_hus,qwriteSTD(:,:,iff-6),iff)
2296          CALL histwrite_phy(o_hur,rhwriteSTD(:,:,iff-6),iff)
2297          CALL histwrite_phy(o_ua,uwriteSTD(:,:,iff-6),iff)
2298          CALL histwrite_phy(o_va,vwriteSTD(:,:,iff-6),iff)
2299          CALL histwrite_phy(o_wap,wwriteSTD(:,:,iff-6),iff)
2300          IF (vars_defined) THEN
2301             DO k=1, nlevSTD
2302                DO i=1, klon
2303                   IF (tnondef(i,k,iff-6).NE.missing_val) THEN
2304                      IF (freq_outNMC(iff-6).LT.0) THEN
2305                         freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
2306                      ELSE
2307                         freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
2308                      ENDIF
2309                      zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,iff-6))/freq_moyNMC(iff-6)
2310                   ELSE
2311                      zx_tmp_fi3d_STD(i,k) = missing_val
2312                   ENDIF
2313                ENDDO
2314             ENDDO
2315          ENDIF
2316          CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD,iff)
2317          IF (vars_defined) THEN
2318             DO k=1, nlevSTD
2319                DO i=1, klon
2320                   IF (O3sumSTD(i,k,iff-6).NE.missing_val) THEN
2321                      zx_tmp_fi3d_STD(i,k) = O3sumSTD(i,k,iff-6) * 1.e+9
2322                   ELSE
2323                      zx_tmp_fi3d_STD(i,k) = missing_val
2324                   ENDIF
2325                ENDDO
2326             ENDDO !k=1, nlevSTD
2327          ENDIF
2328          CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD,iff)
2329          IF (read_climoz == 2) THEN
2330             IF (vars_defined) THEN
2331                DO k=1, nlevSTD
2332                   DO i=1, klon
2333                      IF (O3daysumSTD(i,k,iff-6).NE.missing_val) THEN
2334                         zx_tmp_fi3d_STD(i,k) = O3daysumSTD(i,k,iff-6) * 1.e+9
2335                      ELSE
2336                         zx_tmp_fi3d_STD(i,k) = missing_val
2337                      ENDIF
2338                   ENDDO
2339                ENDDO !k=1, nlevSTD
2340             ENDIF
2341             CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD,iff)
2342          endif
2343          CALL histwrite_phy(o_uxv,uvsumSTD(:,:,iff-6),iff)
2344          CALL histwrite_phy(o_vxq,vqsumSTD(:,:,iff-6),iff)
2345          CALL histwrite_phy(o_vxT,vTsumSTD(:,:,iff-6),iff)
2346          CALL histwrite_phy(o_wxq,wqsumSTD(:,:,iff-6),iff)
2347          CALL histwrite_phy(o_vxphi,vphisumSTD(:,:,iff-6),iff)
2348          CALL histwrite_phy(o_wxT,wTsumSTD(:,:,iff-6),iff)
2349          CALL histwrite_phy(o_uxu,u2sumSTD(:,:,iff-6),iff)
2350          CALL histwrite_phy(o_vxv,v2sumSTD(:,:,iff-6),iff)
2351          CALL histwrite_phy(o_TxT,T2sumSTD(:,:,iff-6),iff)
2352       ENDDO !nfiles
2353  ENDIF
2354#endif
2355#endif
2356#ifdef CPP_XIOS
2357  IF (ok_all_xml) THEN
2358!      DO iff=7, nfiles
2359
2360!         CALL histwrite_phy(o_tnondef,tnondef(:,:,3))
2361          CALL histwrite_phy(o_ta,tlevSTD(:,:))
2362          CALL histwrite_phy(o_zg,philevSTD(:,:))
2363          CALL histwrite_phy(o_hus,qlevSTD(:,:))
2364          CALL histwrite_phy(o_hur,rhlevSTD(:,:))
2365          CALL histwrite_phy(o_ua,ulevSTD(:,:))
2366          CALL histwrite_phy(o_va,vlevSTD(:,:))
2367          CALL histwrite_phy(o_wap,wlevSTD(:,:))
2368!         IF (vars_defined) THEN
2369!            DO k=1, nlevSTD
2370!               DO i=1, klon
2371!                  IF (tnondef(i,k,3).NE.missing_val) THEN
2372!                     IF (freq_outNMC(iff-6).LT.0) THEN
2373!                        freq_moyNMC(iff-6)=(mth_len*un_jour)/freq_calNMC(iff-6)
2374!                     ELSE
2375!                        freq_moyNMC(iff-6)=freq_outNMC(iff-6)/freq_calNMC(iff-6)
2376!                     ENDIF
2377!                     zx_tmp_fi3d_STD(i,k) = (100.*tnondef(i,k,3))/freq_moyNMC(iff-6)
2378!                  ELSE
2379!                     zx_tmp_fi3d_STD(i,k) = missing_val
2380!                  ENDIF
2381!               ENDDO
2382!            ENDDO
2383!         ENDIF
2384!         CALL histwrite_phy(o_psbg,zx_tmp_fi3d_STD)
2385          IF (vars_defined) THEN
2386             DO k=1, nlevSTD
2387                DO i=1, klon
2388                   IF (O3STD(i,k).NE.missing_val) THEN
2389                      zx_tmp_fi3d_STD(i,k) = O3STD(i,k) * 1.e+9
2390                   ELSE
2391                      zx_tmp_fi3d_STD(i,k) = missing_val
2392                   ENDIF
2393                ENDDO
2394             ENDDO !k=1, nlevSTD
2395          ENDIF
2396          CALL histwrite_phy(o_tro3,zx_tmp_fi3d_STD)
2397          IF (read_climoz == 2) THEN
2398             IF (vars_defined) THEN
2399                DO k=1, nlevSTD
2400                   DO i=1, klon
2401                      IF (O3daySTD(i,k).NE.missing_val) THEN
2402                         zx_tmp_fi3d_STD(i,k) = O3daySTD(i,k) * 1.e+9
2403                      ELSE
2404                         zx_tmp_fi3d_STD(i,k) = missing_val
2405                      ENDIF
2406                   ENDDO
2407                ENDDO !k=1, nlevSTD
2408             ENDIF
2409             CALL histwrite_phy(o_tro3_daylight,zx_tmp_fi3d_STD)
2410          ENDIF
2411          CALL histwrite_phy(o_uxv,uvSTD(:,:))
2412          CALL histwrite_phy(o_vxq,vqSTD(:,:))
2413          CALL histwrite_phy(o_vxT,vTSTD(:,:))
2414          CALL histwrite_phy(o_wxq,wqSTD(:,:))
2415          CALL histwrite_phy(o_vxphi,vphiSTD(:,:))
2416          CALL histwrite_phy(o_wxT,wTSTD(:,:))
2417          CALL histwrite_phy(o_uxu,u2STD(:,:))
2418          CALL histwrite_phy(o_vxv,v2STD(:,:))
2419          CALL histwrite_phy(o_TxT,T2STD(:,:))
2420!      ENDDO !nfiles
2421  ENDIF
2422#endif
2423!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2424       IF (iflag_phytrac == 1 ) then
2425         IF (type_trac == 'lmdz' .OR. type_trac == 'coag') THEN
2426!           DO iq=nqo+1, nqtot
2427        ! C Risi: modif boucle
2428            DO itr=1,nqtottr
2429                write(*,*) 'phys_output_write_mod 2337: itr=',itr
2430                iq=itr_indice(itr)
2431             !--3D fields
2432             CALL histwrite_phy(o_trac(itr), tr_seri(:,:,itr))
2433             CALL histwrite_phy(o_dtr_vdf(itr),d_tr_cl(:,:,itr))
2434             CALL histwrite_phy(o_dtr_the(itr),d_tr_th(:,:,itr))
2435             CALL histwrite_phy(o_dtr_con(itr),d_tr_cv(:,:,itr))
2436             CALL histwrite_phy(o_dtr_lessi_impa(itr),d_tr_lessi_impa(:,:,itr))
2437             CALL histwrite_phy(o_dtr_lessi_nucl(itr),d_tr_lessi_nucl(:,:,itr))
2438             CALL histwrite_phy(o_dtr_insc(itr),d_tr_insc(:,:,itr))
2439             CALL histwrite_phy(o_dtr_bcscav(itr),d_tr_bcscav(:,:,itr))
2440             CALL histwrite_phy(o_dtr_evapls(itr),d_tr_evapls(:,:,itr))
2441             CALL histwrite_phy(o_dtr_ls(itr),d_tr_ls(:,:,itr))
2442             CALL histwrite_phy(o_dtr_trsp(itr),d_tr_trsp(:,:,itr))
2443             CALL histwrite_phy(o_dtr_sscav(itr),d_tr_sscav(:,:,itr))
2444             CALL histwrite_phy(o_dtr_sat(itr),d_tr_sat(:,:,itr))
2445             CALL histwrite_phy(o_dtr_uscav(itr),d_tr_uscav(:,:,itr))
2446            !--2D fields
2447             CALL histwrite_phy(o_dtr_dry(itr), flux_tr_dry(:,itr))
2448             zx_tmp_fi2d=0.
2449             IF (vars_defined) THEN
2450                DO k=1,klev
2451                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,itr)
2452                ENDDO
2453             ENDIF
2454             CALL histwrite_phy(o_trac_cum(itr), zx_tmp_fi2d)
2455           ENDDO !--iq
2456         ENDIF   !--type_trac
2457!
2458         IF (type_trac == 'co2i') THEN
2459           !DO iq=nqo+1, nqtot
2460        ! C Risi: modif boucle
2461            DO itr=1,nqtottr
2462             write(*,*) 'phys_output_write_mod 2370: itr=',itr
2463             iq=itr_indice(itr)
2464             !--3D fields
2465             CALL histwrite_phy(o_trac(itr), tr_seri(:,:,itr))
2466             CALL histwrite_phy(o_dtr_vdf(itr),d_tr_cl(:,:,itr))
2467             CALL histwrite_phy(o_dtr_the(itr),d_tr_th(:,:,itr))
2468             CALL histwrite_phy(o_dtr_con(itr),d_tr_cv(:,:,itr))
2469             !--2D fields
2470             !--CO2 burden
2471             zx_tmp_fi2d=0.
2472             IF (vars_defined) THEN
2473                DO k=1,klev
2474                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,itr)
2475                ENDDO
2476             ENDIF
2477             CALL histwrite_phy(o_trac_cum(itr), zx_tmp_fi2d)
2478           ENDDO !--iq
2479           !--CO2 net fluxes
2480           CALL histwrite_phy(o_flx_co2_land,  fco2_land)
2481           CALL histwrite_phy(o_flx_co2_ocean, fco2_ocean)
2482           CALL histwrite_phy(o_flx_co2_ocean_cor, fco2_ocean_cor)
2483           CALL histwrite_phy(o_flx_co2_land_cor, fco2_land_cor)
2484           CALL histwrite_phy(o_flx_co2_ff,    fco2_ff)
2485           CALL histwrite_phy(o_flx_co2_bb,    fco2_bb)
2486         ENDIF !--type_trac co2i
2487
2488         IF (type_trac == 'inco') THEN
2489           nqup = nqo+1
2490           DO iq=nqo+1, nqup
2491             !--3D fields
2492             CALL histwrite_phy(o_trac(iq-nqo), tr_seri(:,:,iq-nqo))
2493             CALL histwrite_phy(o_dtr_vdf(iq-nqo),d_tr_cl(:,:,iq-nqo))
2494             CALL histwrite_phy(o_dtr_the(iq-nqo),d_tr_th(:,:,iq-nqo))
2495             CALL histwrite_phy(o_dtr_con(iq-nqo),d_tr_cv(:,:,iq-nqo))
2496             !--2D fields
2497             !--CO2 burden
2498             zx_tmp_fi2d=0.
2499             IF (vars_defined) THEN
2500                DO k=1,klev
2501                   zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+zmasse(:,k)*tr_seri(:,k,iq-nqo)
2502                ENDDO
2503             ENDIF
2504             CALL histwrite_phy(o_trac_cum(iq-nqo), zx_tmp_fi2d)
2505           ENDDO !--iq
2506           !--CO2 net fluxes
2507           CALL histwrite_phy(o_flx_co2_land,  fco2_land)
2508           CALL histwrite_phy(o_flx_co2_ocean, fco2_ocean)
2509           CALL histwrite_phy(o_flx_co2_ocean_cor, fco2_ocean_cor)
2510           CALL histwrite_phy(o_flx_co2_land_cor, fco2_land_cor)
2511           CALL histwrite_phy(o_flx_co2_ff,    fco2_ff)
2512           CALL histwrite_phy(o_flx_co2_bb,    fco2_bb)
2513         ENDIF !--type_trac inco
2514
2515       ENDIF   !(iflag_phytrac==1)
2516
2517       if (activate_ocean_skin >= 1) then
2518          CALL histwrite_phy(o_delta_sst, delta_sst)
2519          CALL histwrite_phy(o_delta_sal, delta_sal)
2520          CALL histwrite_phy(o_ds_ns, ds_ns)
2521          CALL histwrite_phy(o_dt_ns, dt_ns)
2522          CALL histwrite_phy(o_dter, dter)
2523          CALL histwrite_phy(o_dser, dser)
2524          CALL histwrite_phy(o_tkt, tkt)
2525          CALL histwrite_phy(o_tks, tks)
2526          CALL histwrite_phy(o_taur, taur)
2527          CALL histwrite_phy(o_sss, sss)
2528       end if
2529
2530#ifdef ISO
2531    do ixt=1,ntraciso
2532        write(*,*) 'ixt'
2533        IF (vars_defined) THEN
2534             zx_tmp_fi2d(:) = xtrain_fall(ixt,:) + xtsnow_fall(ixt,:)
2535        ENDIF
2536        CALL histwrite_phy(o_xtprecip(ixt), zx_tmp_fi2d)
2537
2538        IF (vars_defined) THEN
2539             zx_tmp_fi2d(:) = xtrain_lsc(ixt,:) + xtsnow_lsc(ixt,:)
2540       ENDIF
2541       CALL histwrite_phy(o_xtplul(ixt), zx_tmp_fi2d)
2542
2543        IF (vars_defined) THEN
2544             zx_tmp_fi2d(:) = xtrain_con(ixt,:) + xtsnow_con(ixt,:)
2545        ENDIF
2546       CALL histwrite_phy(o_xtpluc(ixt), zx_tmp_fi2d)
2547
2548       CALL histwrite_phy(o_xtevap(ixt), xtevap(ixt,:))
2549       CALL histwrite_phy(o_xtovap(ixt), xt_seri(ixt,:,:))
2550       CALL histwrite_phy(o_xtoliq(ixt), xtl_seri(ixt,:,:))
2551
2552        IF (vars_defined) THEN
2553             zx_tmp_fi3d(:,:)=xtl_seri(ixt,:,:)+xts_seri(ixt,:,:)
2554        ENDIF
2555        CALL histwrite_phy(o_xtcond(ixt), zx_tmp_fi3d)
2556
2557        CALL histwrite_phy(o_dxtdyn(ixt), d_xt_dyn(ixt,:,:))
2558        CALL histwrite_phy(o_dxtldyn(ixt), d_xtl_dyn(ixt,:,:))
2559
2560        IF (vars_defined) THEN
2561             zx_tmp_fi3d(:,:)=d_xt_con(ixt,:,:)/pdtphys
2562        ENDIF
2563        CALL histwrite_phy(o_dxtcon(ixt), zx_tmp_fi3d)
2564
2565        IF (vars_defined) THEN
2566             zx_tmp_fi3d(:,:)=d_xt_lsc(ixt,:,:)/pdtphys
2567        ENDIF
2568        CALL histwrite_phy(o_dxtlsc(ixt), zx_tmp_fi3d)
2569
2570        IF (vars_defined) THEN
2571             zx_tmp_fi3d(:,:)=d_xt_eva(ixt,:,:)/pdtphys
2572        ENDIF
2573        CALL histwrite_phy(o_dxteva(ixt), zx_tmp_fi3d)
2574
2575        IF (vars_defined) THEN
2576             zx_tmp_fi3d(:,:)=d_xt_vdf(ixt,:,:)/pdtphys
2577        ENDIF
2578        CALL histwrite_phy(o_dxtvdf(ixt), zx_tmp_fi3d)
2579
2580        IF (vars_defined) THEN
2581             zx_tmp_fi3d(:,:)=d_xt_ajsb(ixt,:,:)/pdtphys
2582        ENDIF
2583        CALL histwrite_phy(o_dxtajs(ixt), zx_tmp_fi3d)
2584
2585        IF (vars_defined) THEN
2586             zx_tmp_fi3d(:,:)=d_xt_ajs(ixt,:,:)/pdtphys - &
2587                  d_xt_ajsb(ixt,:,:)/pdtphys
2588        ENDIF
2589        CALL histwrite_phy(o_dxtthe(ixt), zx_tmp_fi3d)
2590
2591        IF (ok_qch4) then
2592        IF (vars_defined) THEN
2593             zx_tmp_fi3d(:,:)=d_xt_ch4(ixt,:,:)/pdtphys
2594        ENDIF
2595        CALL histwrite_phy(o_dxtch4(ixt), zx_tmp_fi3d)
2596        ENDIF !IF (ok_qch4) then
2597
2598        IF (ixt.eq.iso_HTO) then
2599        IF (vars_defined) THEN
2600             zx_tmp_fi3d(:,:)=d_xt_prod_nucl(ixt,:,:)/pdtphys
2601        ENDIF
2602        CALL histwrite_phy(o_dxtprod_nucl(ixt), zx_tmp_fi3d)
2603
2604        IF (vars_defined) THEN
2605             zx_tmp_fi3d(:,:)=d_xt_cosmo(ixt,:,:)/pdtphys
2606        ENDIF
2607        CALL histwrite_phy(o_dxtcosmo(ixt), zx_tmp_fi3d)
2608
2609        IF (vars_defined) THEN
2610             zx_tmp_fi3d(:,:)=d_xt_decroiss(ixt,:,:)/pdtphys
2611        ENDIF
2612        CALL histwrite_phy(o_dxtdecroiss(ixt), zx_tmp_fi3d)
2613        ENDIF !IF (iso_HTO.gt.0) then
2614
2615    !write(*,*) 'phys_output_write_mod 2531'
2616    enddo !do ixt=1,ntraciso   
2617    !write(*,*) 'phys_output_write_mod 1777'   
2618#endif
2619
2620       IF (.NOT.vars_defined) THEN
2621          !$OMP MASTER
2622#ifndef CPP_IOIPSL_NO_OUTPUT
2623          DO iff=1,nfiles
2624             IF (clef_files(iff)) THEN
2625                CALL histend(nid_files(iff))
2626                ndex2d = 0
2627                ndex3d = 0
2628             ENDIF ! clef_files
2629          ENDDO !  iff
2630#endif
2631#ifdef CPP_XIOS
2632          !On finalise l'initialisation:
2633          CALL wxios_closedef()
2634#endif
2635          !$OMP END MASTER
2636          !$OMP BARRIER
2637          vars_defined = .TRUE.
2638
2639       ENDIF !--.NOT.vars_defined
2640
2641    ENDDO
2642
2643    IF (vars_defined) THEN
2644       ! On synchronise les fichiers pour IOIPSL
2645#ifndef CPP_IOIPSL_NO_OUTPUT
2646       !$OMP MASTER
2647       DO iff=1,nfiles
2648          IF (ok_sync .AND. clef_files(iff)) THEN
2649             CALL histsync(nid_files(iff))
2650          ENDIF
2651       END DO
2652       !$OMP END MASTER
2653#endif
2654    ENDIF
2655
2656  END SUBROUTINE phys_output_write
2657
2658END MODULE phys_output_write_mod
Note: See TracBrowser for help on using the repository browser.