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

Last change on this file since 3654 was 3630, checked in by Laurent Fairhead, 5 years ago

Parameter new_aod is not needed anymore as it is assumed to be true
all the time. This means that we cannot replay AR4 simulations with new
LMDZ sources (we probably couldn't anyway)
LF, OB

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