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

Last change on this file since 3622 was 3622, checked in by oboucher, 4 years ago

Adding a diagnostics for the 100-m wind for estimating renewables

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