@staticmethod
def psychrometric_constant(p, **kwargs):
    """Return the psychrometric constant (:math:`\\gamma`) *[kPa/°C]* according to
        `FAO 56 <http://www.fao.org/tempref/SD/Reserved/Agromet/PET/FAO_Irrigation_Drainage_Paper_56.pdf>`_
        eq. 8, p. 32:

        .. math::

            \\gamma = \\frac{c_p P}{\\varepsilon \\lambda}

        or, using default values:

        .. math::

            \\gamma = a_{psy} \\cdot P

        :param p: atmospheric pressure (:math:`P`) *[kPa]*
        :type p: float or np.array

        :Keyword Arguments:

           * **lamda** (*float*) - latent heat of vaporization (:math:`\\lambda`) *[MJ/kg]*. Default :math:`lamda=2.45`.
             See Used in :meth:`latent_heat_of_vaporization`
           * **cp** (*float*) - specific heat at constant pressure (:math:`c_p`) *[MJ/kg]*. Default
             :math:`cp=1.013e^{-3}`
           * **epsilon** (*float*) - ratio molecular weight of water vapour/dry air (:math:`\\epsilon`) *[-]*.
             Default :math:`epsilon=0.622`
           * **a_psy** (*float*) - coefficient depending on the type of the ventilation of the bulb *[1/°C]*. Examples:

             * :math:`a_{psy} = 0.000665` (default)
             * :math:`a_{psy} = 0.000662` for ventilated (Asmann type) psychrometers, with an air movement of some 5
               *m/s*
             * :math:`a_{psy} = 0.000800` for natural ventilated psychrometers (about 1 *m/s*)
             * :math:`a_{psy} = 0.001200` for non-ventilated psychrometers installed indoors

        The method uses :math:`a_{psy}` if given, otherwise eq. 8 (see above) with given or default values. Default
        values correspond to :math:`a_{psy} = 0.000665` as argument.

        :return: (*float or np.array*) psychrometric constant (:math:`\\gamma`) *[kPa/°C]*
        """
    if 'a_psy' in kwargs:
        return kwargs.get('a_psy', 0.000665) * p
    else:
        return kwargs.get('cp', 0.001013) * p / (kwargs.get('epsilon', 
            0.622) * kwargs.get('lamda', 2.45))
