source: LMDZ6/branches/LMDZ-tracers/libf/phylmd/phys_output_write_mod.F90 @ 3871

Last change on this file since 3871 was 3852, checked in by dcugnet, 4 years ago

Extension of the tracers management.

The tracers files can be:

1) "traceur.def": old format, with:

  • the number of tracers on the first line
  • one line for each tracer: <tracer name> <hadv> <vadv> [<parent name>]

2) "tracer.def": new format with one section each model component.
3) "tracer_<name>.def": new format with a single section.

The formats 2 and 3 reading is driven by the "type_trac" key, which can be a

coma-separated list of components.

  • Format 2: read the sections from the "tracer.def" file.
  • format 3: read one section each "tracer_<section name>.def" file.
  • the first line of a section is "&<section name>
  • the other lines start with a tracer name followed by <key>=<val> pairs.
  • the "default" tracer name is reserved ; the other tracers of the section inherit its <key>=<val>, except for the keys that are redefined locally.

This format helps keeping the tracers files compact, thanks to the "default"
special tracer and the three levels of factorization:

  • on the tracers names: a tracer name can be a coma-separated list of tracers => all the tracers of the list have the same <key>=<val> properties
  • on the parents names: the value of the "parent" property can be a coma-separated list of tracers => only possible for geographic tagging tracers
  • on the phases: the property "phases" is [g](l][s] (gas/liquid/solid)

Read information is stored in the vector "tracers(:)", of derived type "tra".

"isotopes_params.def" is a similar file, with one section each isotopes family.
It contains a database of isotopes properties ; if there are second generation
tracers (isotopes), the corresponding sections are read.

Read information is stored in the vector "isotopes(:)", of derived type "iso".

The "getKey" function helps to get the values of the parameters stored in
"tracers" or "isotopes".

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