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

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