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

Last change on this file since 4523 was 4523, checked in by evignon, 13 months ago

merge de la branche blowing snow vers la trunk
premiere tentative
Etienne

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