# Path: windpowerlib/tools.py
# class WindpowerlibUserWarning(UserWarning):
# def linear_interpolation_extrapolation(df, target_height):
# def logarithmic_interpolation_extrapolation(df, target_height):
# def gauss_distribution(function_variable, standard_deviation, mean=0):
# def estimate_turbulence_intensity(height, roughness_length):


import numpy as np
import pandas as pd
from windpowerlib import tools
"""
The ``power_curves`` module contains functions for applying alterations like
power curve smoothing or reducing power values by an efficiency to the power
curve of a wind turbine, wind farm or wind turbine cluster.

SPDX-FileCopyrightText: 2019 oemof developer group <contact@oemof.org>
SPDX-License-Identifier: MIT
"""


def smooth_power_curve(
    power_curve_wind_speeds,
    power_curve_values,
    block_width=0.5,
    wind_speed_range=15.0,
    standard_deviation_method="turbulence_intensity",
    mean_gauss=0,
    **kwargs,
):
    r"""
    Smoothes a power curve by using a Gauss distribution.

    The smoothing serves for taking the distribution of wind speeds over space
    into account.

    Parameters
    ----------
    power_curve_wind_speeds : :pandas:`pandas.Series<series>` or numpy.array

# Path: windpowerlib/tools.py
# class WindpowerlibUserWarning(UserWarning):
# def linear_interpolation_extrapolation(df, target_height):
# def logarithmic_interpolation_extrapolation(df, target_height):
# def gauss_distribution(function_variable, standard_deviation, mean=0):
# def estimate_turbulence_intensity(height, roughness_length):


# Path: windpowerlib/power_curves.py
import numpy as np
import pandas as pd
from windpowerlib import tools

"""
The ``power_curves`` module contains functions for applying alterations like
power curve smoothing or reducing power values by an efficiency to the power
curve of a wind turbine, wind farm or wind turbine cluster.

SPDX-FileCopyrightText: 2019 oemof developer group <contact@oemof.org>
SPDX-License-Identifier: MIT
"""


def smooth_power_curve(
    power_curve_wind_speeds,
    power_curve_values,
    block_width=0.5,
    wind_speed_range=15.0,
    standard_deviation_method="turbulence_intensity",
    mean_gauss=0,
    **kwargs,
):
    r"""
    Smoothes a power curve by using a Gauss distribution.

    The smoothing serves for taking the distribution of wind speeds over space
    into account.

    Parameters
    ----------
    power_curve_wind_speeds : :pandas:`pandas.Series<series>` or numpy.array

        Wind speeds in m/s for which the power curve values are provided in