@staticmethod
def clear_sky_shortwave_radiation(ra, elevation=0.0, a_s=0.25, b_s=0.5):
    """Return the clear-sky shortwave radiation (:math:`R_{so}`) *[MJ/m²day]*. It is required for computing
        :meth:`net_longwave_radiation`.

        For near sea level or when calibrated values for :math:`a_s` and :math:`b_s` are available
        (`FAO 56 <http://www.fao.org/tempref/SD/Reserved/Agromet/PET/FAO_Irrigation_Drainage_Paper_56.pdf>`_, eq. 36,
        p. 51):

        .. math::

           R_{so} = (a_s + b_s ) R_a

        When calibrated values for :math:`a_s` and :math:`b_s` are not available
        (`FAO 56 <http://www.fao.org/tempref/SD/Reserved/Agromet/PET/FAO_Irrigation_Drainage_Paper_56.pdf>`_,
        eq. 37, p. 51):

        .. math::

           R_{so} = (0.75 + 2 * 10^{−5} z) R_a

        where :math:`z` is the station elevation above sea level *[m]*.

        :param ra: extraterrestrial radiation (:math:`R_a`) *[MJ/m²day]*. See :meth:`extraterrestrial_radiation`
        :type ra: float or np.numpy
        :param elevation: meters above sea level see (:math:`z`) [m]. See :attr:`elevation`
        :type elevation: float or np.numpy
        :param a_s: regression constant (:math:`a_s`) *[-]*. Default :math:`a_s=0.25`. It expresses the fraction of
            extraterrestrial radiation reaching the earth on overcast days (:math:`n = 0`)
        :type a_s: float or np.numpy
        :param b_s: regression constant (:math:`b_s`) *[-]*. Default :math:`b_s=0.50`. The expression
            :math:`a_s+b_s` indicates the fraction of extraterrestrial radiation reaching the earth on clear days
            (:math:`n = N`)
        :type b_s: float or np.numpy
        :return: (*float or np.numpy*) daily clear-sky shortwave radiation (:math:`R_{so}`) *[MJ/m²day]*
        """
    rs0 = (a_s + b_s + 2e-05 * elevation) * ra
    return rs0
