def bird(zenith, airmass_relative, aod380, aod500, precipitable_water,<EOL>ozone=<NUM_LIT>, pressure=<NUM_LIT>, dni_extra=<NUM_LIT>, asymmetry=<NUM_LIT>,<EOL>albedo=<NUM_LIT>):
etr = dni_extra  <EOL>ze_rad = np.deg2rad(zenith)  <EOL>airmass = airmass_relative<EOL>am_press = atmosphere.get_absolute_airmass(airmass, pressure)<EOL>t_rayleigh = (<EOL>np.exp(-<NUM_LIT> * am_press ** <NUM_LIT> * (<EOL><NUM_LIT:1.0> + am_press - am_press ** <NUM_LIT><EOL>))<EOL>)<EOL>am_o3 = ozone*airmass<EOL>t_ozone = (<EOL><NUM_LIT:1.0> - <NUM_LIT> * am_o3 * (<NUM_LIT:1.0> + <NUM_LIT> * am_o3) ** -<NUM_LIT> -<EOL><NUM_LIT> * am_o3 / (<NUM_LIT:1.0> + <NUM_LIT> * am_o3 + <NUM_LIT> * am_o3 ** <NUM_LIT>)<EOL>)<EOL>t_gases = np.exp(-<NUM_LIT> * am_press ** <NUM_LIT>)<EOL>am_h2o = airmass * precipitable_water<EOL>t_water = (<EOL><NUM_LIT:1.0> - <NUM_LIT> * am_h2o / (<EOL>(<NUM_LIT:1.0> + <NUM_LIT> * am_h2o) ** <NUM_LIT> + <NUM_LIT> * am_h2o<EOL>)<EOL>)<EOL>bird_huldstrom = atmosphere.bird_hulstrom80_aod_bb(aod380, aod500)<EOL>t_aerosol = np.exp(<EOL>-(bird_huldstrom ** <NUM_LIT>) *<EOL>(<NUM_LIT:1.0> + bird_huldstrom - bird_huldstrom ** <NUM_LIT>) * airmass ** <NUM_LIT><EOL>)<EOL>taa = <NUM_LIT:1.0> - <NUM_LIT:0.1> * (<NUM_LIT:1.0> - airmass + airmass ** <NUM_LIT>) * (<NUM_LIT:1.0> - t_aerosol)<EOL>rs = <NUM_LIT> + (<NUM_LIT:1.0> - asymmetry) * (<NUM_LIT:1.0> - t_aerosol / taa)<EOL>id_ = <NUM_LIT> * etr * t_aerosol * t_water * t_gases * t_ozone * t_rayleigh<EOL>ze_cos = np.where(zenith < <NUM_LIT>, np.cos(ze_rad), <NUM_LIT:0.0>)<EOL>id_nh = id_ * ze_cos<EOL>ias = (<EOL>etr * ze_cos * <NUM_LIT> * t_ozone * t_gases * t_water * taa *<EOL>(<NUM_LIT:0.5> * (<NUM_LIT:1.0> - t_rayleigh) + asymmetry * (<NUM_LIT:1.0> - (t_aerosol / taa))) / (<EOL><NUM_LIT:1.0> - airmass + airmass ** <NUM_LIT><EOL>)<EOL>)<EOL>gh = (id_nh + ias) / (<NUM_LIT:1.0> - albedo * rs)<EOL>diffuse_horiz = gh - id_nh<EOL>irrads = OrderedDict()<EOL>irrads['<STR_LIT>'] = id_nh<EOL>irrads['<STR_LIT>'] = gh<EOL>irrads['<STR_LIT>'] = id_<EOL>irrads['<STR_LIT>'] = diffuse_horiz<EOL>if isinstance(irrads['<STR_LIT>'], pd.Series):<EOL><INDENT>irrads = pd.DataFrame.from_dict(irrads)<EOL><DEDENT>return irrads<EOL>
Bird Simple Clear Sky Broadband Solar Radiation Model

Based on NREL Excel implementation by Daryl R. Myers [1, 2].

Bird and Hulstrom define the zenith as the "angle between a line to
the sun and the local zenith". There is no distinction in the paper
between solar zenith and apparent (or refracted) zenith, but the
relative airmass is defined using the Kasten 1966 expression, which
requires apparent zenith. Although the formulation for calculated
zenith is never explicitly defined in the report, since the purpose
was to compare existing clear sky models with "rigorous radiative
transfer models" (RTM) it is possible that apparent zenith was
obtained as output from the RTM. However, the implentation presented
in PVLIB is tested against the NREL Excel implementation by Daryl
Myers which uses an analytical expression for solar zenith instead
of apparent zenith.

Parameters
----------
zenith : numeric
    Solar or apparent zenith angle in degrees - see note above
airmass_relative : numeric
    Relative airmass
aod380 : numeric
    Aerosol optical depth [cm] measured at 380[nm]
aod500 : numeric
    Aerosol optical depth [cm] measured at 500[nm]
precipitable_water : numeric
    Precipitable water [cm]
ozone : numeric
    Atmospheric ozone [cm], defaults to 0.3[cm]
pressure : numeric
    Ambient pressure [Pa], defaults to 101325[Pa]
dni_extra : numeric
    Extraterrestrial radiation [W/m^2], defaults to 1364[W/m^2]
asymmetry : numeric
    Asymmetry factor, defaults to 0.85
albedo : numeric
    Albedo, defaults to 0.2

Returns
-------
clearsky : DataFrame (if Series input) or OrderedDict of arrays
    DataFrame/OrderedDict contains the columns/keys
    ``'dhi', 'dni', 'ghi', 'direct_horizontal'`` in  [W/m^2].

See also
--------
pvlib.atmosphere.bird_hulstrom80_aod_bb
pvlib.atmosphere.relativeairmass

References
----------
[1] R. E. Bird and R. L Hulstrom, "A Simplified Clear Sky model for Direct
and Diffuse Insolation on Horizontal Surfaces" SERI Technical Report
SERI/TR-642-761, Feb 1981. Solar Energy Research Institute, Golden, CO.

[2] Daryl R. Myers, "Solar Radiation: Practical Modeling for Renewable
Energy Applications", pp. 46-51 CRC Press (2013)

`NREL Bird Clear Sky Model <http://rredc.nrel.gov/solar/models/clearsky/>`_

`SERI/TR-642-761 <http://rredc.nrel.gov/solar/pubs/pdfs/tr-642-761.pdf>`_

`Error Reports <http://rredc.nrel.gov/solar/models/clearsky/error_reports.html>`_