Class WindFarm

All Implemented Interfaces:
Serializable, Runnable, ProcessEquipmentInterface, ProcessElementInterface, SimulationInterface, NamedInterface

public class WindFarm extends ProcessEquipmentBaseClass
Offshore/onshore wind farm model aggregating multiple turbines with power curves and wake losses.

Models a wind farm using industry-standard approaches:

  • Per-turbine power curve (cut-in, rated, cut-out wind speeds)
  • Jensen/Park wake loss factor
  • Air density correction for altitude, temperature, and pressure
  • Weibull wind speed distribution for annual energy production (AEP)
  • Time-series wind speed input for dynamic simulations

Usage Example

WindFarm farm = new WindFarm("Dogger Bank", 100);
farm.setRatedPowerPerTurbine(15.0e6); // 15 MW
farm.setRotorDiameter(236.0); // meters
farm.setHubHeight(135.0); // meters
farm.setWindSpeed(10.5);
farm.run();
double totalPower = farm.getPower(); // Watts
Version:
1.0
Author:
esol
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      Serialization version UID.
      See Also:
    • numberOfTurbines

      private int numberOfTurbines
      Number of turbines in the farm.
    • ratedPowerPerTurbine

      private double ratedPowerPerTurbine
      Rated power per turbine [W].
    • rotorDiameter

      private double rotorDiameter
      Rotor diameter [m].
    • hubHeight

      private double hubHeight
      Hub height above sea level [m].
    • windSpeed

      private double windSpeed
      Current wind speed at hub height [m/s].
    • cutInSpeed

      private double cutInSpeed
      Cut-in wind speed [m/s].
    • ratedSpeed

      private double ratedSpeed
      Rated wind speed [m/s].
    • cutOutSpeed

      private double cutOutSpeed
      Cut-out wind speed [m/s].
    • airDensity

      private double airDensity
      Air density at hub height [kg/m3].
    • airTemperature

      private double airTemperature
      Air temperature [C] for density correction.
    • atmosphericPressure

      private double atmosphericPressure
      Atmospheric pressure [Pa] for density correction.
    • maxPowerCoefficient

      private double maxPowerCoefficient
      Maximum power coefficient (Betz limit is 0.593).
    • wakeLossFactor

      private double wakeLossFactor
      Wake loss factor [0-1], typical 0.05 to 0.15 for offshore.
    • availabilityFactor

      private double availabilityFactor
      Availability factor [0-1], accounts for maintenance downtime.
    • electricalLossFactor

      private double electricalLossFactor
      Electrical losses [0-1], cables, transformers, etc.
    • power

      private double power
      Calculated total farm power output [W].
    • capacityFactor

      private double capacityFactor
      Calculated capacity factor [0-1].
    • weibullShape

      private double weibullShape
      Weibull shape parameter for AEP calculation.
    • weibullScale

      private double weibullScale
      Weibull scale parameter [m/s] for AEP calculation.
    • windSpeedTimeSeries

      private double[] windSpeedTimeSeries
      Time-series wind speeds for dynamic simulation [m/s].
    • powerTimeSeries

      private double[] powerTimeSeries
      Time-series power output [W].
    • currentTimeStep

      private int currentTimeStep
      Current time step index for dynamic simulation.
  • Constructor Details

    • WindFarm

      public WindFarm()
      Default constructor.
    • WindFarm

      public WindFarm(String name)
      Construct with name.
      Parameters:
      name - equipment name
    • WindFarm

      public WindFarm(String name, int numberOfTurbines)
      Construct with name and number of turbines.
      Parameters:
      name - equipment name
      numberOfTurbines - number of wind turbines
  • Method Details

    • calculateTurbinePower

      public double calculateTurbinePower(double speed)
      Calculate single turbine power from wind speed using cubic power curve model.

      Uses the standard regions:

      • Below cut-in: 0 W
      • Cut-in to rated: cubic interpolation P = Prated * ((v - vci)/(vr - vci))^3
      • Rated to cut-out: Prated
      • Above cut-out: 0 W
      Parameters:
      speed - wind speed at hub height [m/s]
      Returns:
      single turbine power output [W]
    • getCorrectedAirDensity

      public double getCorrectedAirDensity()
      Get corrected air density based on temperature and pressure.

      Uses ideal gas law: rho = P / (R_air * T) where R_air = 287.058 J/(kg K).

      Returns:
      corrected air density [kg/m3]
    • calculateAEP

      public double calculateAEP()
      Calculate annual energy production using Weibull distribution.

      Integrates the power curve against the Weibull probability density function using numerical integration from 0 to 35 m/s with 0.5 m/s steps.

      Returns:
      annual energy production [Wh]
    • weibullPDF

      private double weibullPDF(double v)
      Weibull probability density function.
      Parameters:
      v - wind speed [m/s]
      Returns:
      probability density [1/(m/s)]
    • setWindSpeedTimeSeries

      public void setWindSpeedTimeSeries(double[] windSpeeds)
      Set time-series wind speeds for dynamic simulation.
      Parameters:
      windSpeeds - array of wind speeds [m/s], one per time step
    • getPowerTimeSeries

      public double[] getPowerTimeSeries()
      Get time-series power output after running dynamic simulation.
      Returns:
      array of power outputs [W]
    • runTimeSeries

      public void runTimeSeries()
      Run the full time series and populate powerTimeSeries array.
    • run

      public void run(UUID id)

      In this method all thermodynamic and unit operations will be calculated in a steady state calculation.

      Parameters:
      id - UUID
    • getPower

      public double getPower()
      Get total farm power output [W].
      Returns:
      power [W]
    • getPower

      public double getPower(String unit)
      Get total farm power output in specified unit.
      Parameters:
      unit - unit string: "W", "kW", "MW", "GW"
      Returns:
      power in specified unit
    • getCapacityFactor

      public double getCapacityFactor()
      Get calculated capacity factor.
      Returns:
      capacity factor [0-1]
    • getTotalRatedPower

      public double getTotalRatedPower()
      Get total rated farm capacity [W].
      Returns:
      total rated power [W]
    • setNumberOfTurbines

      public void setNumberOfTurbines(int n)
      Set number of turbines.
      Parameters:
      n - number of turbines
    • getNumberOfTurbines

      public int getNumberOfTurbines()
      Get number of turbines.
      Returns:
      number of turbines
    • setRatedPowerPerTurbine

      public void setRatedPowerPerTurbine(double ratedPower)
      Set rated power per turbine [W].
      Parameters:
      ratedPower - rated power [W]
    • getRatedPowerPerTurbine

      public double getRatedPowerPerTurbine()
      Get rated power per turbine [W].
      Returns:
      rated power [W]
    • setRotorDiameter

      public void setRotorDiameter(double diameter)
      Set rotor diameter [m].
      Parameters:
      diameter - rotor diameter [m]
    • getRotorDiameter

      public double getRotorDiameter()
      Get rotor diameter [m].
      Returns:
      rotor diameter [m]
    • setHubHeight

      public void setHubHeight(double height)
      Set hub height [m].
      Parameters:
      height - hub height [m]
    • getHubHeight

      public double getHubHeight()
      Get hub height [m].
      Returns:
      hub height [m]
    • setWindSpeed

      public void setWindSpeed(double speed)
      Set current wind speed at hub height [m/s].
      Parameters:
      speed - wind speed [m/s]
    • getWindSpeed

      public double getWindSpeed()
      Get current wind speed [m/s].
      Returns:
      wind speed [m/s]
    • setCutInSpeed

      public void setCutInSpeed(double cutIn)
      Set cut-in wind speed [m/s].
      Parameters:
      cutIn - cut-in speed [m/s]
    • getCutInSpeed

      public double getCutInSpeed()
      Get cut-in wind speed [m/s].
      Returns:
      cut-in speed [m/s]
    • setRatedSpeed

      public void setRatedSpeed(double rated)
      Set rated wind speed [m/s].
      Parameters:
      rated - rated speed [m/s]
    • getRatedSpeed

      public double getRatedSpeed()
      Get rated wind speed [m/s].
      Returns:
      rated speed [m/s]
    • setCutOutSpeed

      public void setCutOutSpeed(double cutOut)
      Set cut-out wind speed [m/s].
      Parameters:
      cutOut - cut-out speed [m/s]
    • getCutOutSpeed

      public double getCutOutSpeed()
      Get cut-out wind speed [m/s].
      Returns:
      cut-out speed [m/s]
    • setAirTemperature

      public void setAirTemperature(double temp)
      Set air temperature for density correction [C].
      Parameters:
      temp - air temperature [C]
    • setAtmosphericPressure

      public void setAtmosphericPressure(double pressure)
      Set atmospheric pressure for density correction [Pa].
      Parameters:
      pressure - atmospheric pressure [Pa]
    • setWakeLossFactor

      public void setWakeLossFactor(double factor)
      Set wake loss factor [0-1].
      Parameters:
      factor - wake loss factor
    • getWakeLossFactor

      public double getWakeLossFactor()
      Get wake loss factor.
      Returns:
      wake loss factor [0-1]
    • setAvailabilityFactor

      public void setAvailabilityFactor(double factor)
      Set availability factor [0-1].
      Parameters:
      factor - availability factor
    • getAvailabilityFactor

      public double getAvailabilityFactor()
      Get availability factor.
      Returns:
      availability factor [0-1]
    • setElectricalLossFactor

      public void setElectricalLossFactor(double factor)
      Set electrical loss factor [0-1].
      Parameters:
      factor - electrical loss factor
    • setWeibullShape

      public void setWeibullShape(double shape)
      Set Weibull shape parameter for AEP calculation.
      Parameters:
      shape - Weibull shape parameter k [-]
    • setWeibullScale

      public void setWeibullScale(double scale)
      Set Weibull scale parameter for AEP calculation.
      Parameters:
      scale - Weibull scale parameter c [m/s]
    • getWeibullShape

      public double getWeibullShape()
      Get Weibull shape parameter.
      Returns:
      shape parameter [-]
    • getWeibullScale

      public double getWeibullScale()
      Get Weibull scale parameter.
      Returns:
      scale parameter [m/s]
    • setMaxPowerCoefficient

      public void setMaxPowerCoefficient(double cp)
      Set max power coefficient (Cp).
      Parameters:
      cp - power coefficient [-]
    • getAirDensity

      public double getAirDensity()
      Get current air density [kg/m3].
      Returns:
      air density
    • getRotorArea

      public double getRotorArea()
      Get rotor swept area [m2].
      Returns:
      swept area
    • getCurrentTimeStep

      public int getCurrentTimeStep()
      Get current time step index.
      Returns:
      time step index