Windpower

Wrapper for SAM Simulation Core model: cmod_windpower.cpp

Input Consistency Warning

As described in Possible Problems, some input parameters are interdependent but the equations that enforce consistency are not available in this PySAM module. Therefore, the onus is on the PySAM user to check that interdependencies are correctly handled. The variables which may require additional logic include:

  • system_capacity
  • wake_int_loss
  • wind_farm_wake_model
  • wind_farm_xCoordinates
  • wind_farm_yCoordinates
  • wind_resource_model_choice
  • wind_turbine_hub_ht
  • wind_turbine_max_cp
  • wind_turbine_powercurve_powerout
  • wind_turbine_powercurve_windspeeds
  • wind_turbine_rotor_diameter

Provided for each of these inputs is a list of other inputs that are potentially interdependent.

Creating an Instance

Refer to the Initializing a Model page for details on the different ways to create an instance of a PySAM class.

Windpower model description

Wind power system with one or more wind turbines

PySAM.Windpower.default(config) → Windpower

Use default attributes config options:

  • “WindPowerAllEquityPartnershipFlip”
  • “WindPowerCommercial”
  • “WindPowerLCOECalculator”
  • “WindPowerLeveragedPartnershipFlip”
  • “WindPowerMerchantPlant”
  • “WindPowerNone”
  • “WindPowerResidential”
  • “WindPowerSaleLeaseback”
  • “WindPowerSingleOwner”
PySAM.Windpower.from_existing(data, optional config) → Windpower

Share underlying data with an existing PySAM class. If config provided, default attributes are loaded otherwise.

PySAM.Windpower.new() → Windpower
PySAM.Windpower.wrap(ssc_data_t) → Windpower

Use existing PySSC data

Warning

Do not call PySSC.data_free on the ssc_data_t provided to wrap

Functions

class PySAM.Windpower.Windpower

This class contains all the variable information for running a simulation. Variables are grouped together in the subclasses as properties. If property assignments are the wrong type, an error is thrown.

assign(dict) → None

Assign attributes from nested dictionary, except for Outputs

nested_dict = { 'Resource': { var: val, ...}, ...}

execute(int verbosity) → None

Execute simulation with verbosity level 0 (default) or 1

export() → dict

Export attributes into nested dictionary

replace(dict) → None

Replace attributes from nested dictionary, except for Outputs. Unassigns all values in each Group then assigns from the input dict.

nested_dict = { 'Resource': { var: val, ...}, ...}

unassign(name) → None

Unassign a value in any of the variable groups.

value(name, optional value) → Union[None, float, dict, sequence, str]

Get or set by name a value in any of the variable groups.

Resource Group

class PySAM.Windpower.Windpower.Resource
assign(dict) → None

Assign attributes from dictionary, overwriting but not removing values

Resource_vals = { var: val, ...}

export() → dict

Export attributes into dictionary

replace(dict) → None

Replace attributes from dictionary, unassigning values not present in input dict

Resource_vals = { var: val, ...}

weibull_k_factor

Weibull K factor for wind resource

Required: True if wind_resource_model_choice=1

Type:float
weibull_reference_height

Reference height for Weibull wind speed [m]

Constraints: MIN=0

Required: If not provided, assumed to be 50

Type:float
weibull_wind_speed

Average wind speed for Weibull model

Constraints: MIN=0

Required: True if wind_resource_model_choice=1

Type:float
wind_resource_data

Wind resouce data in memory

Required: False

Type:dict
wind_resource_distribution

Wind Speed x Dir Distribution as 2-D PDF [m/s,deg]

Required: True if wind_resource_model_choice=2

Type:sequence[sequence]
wind_resource_filename

Local wind data file path

Constraints: LOCAL_FILE

Required: False

Type:str
wind_resource_model_choice

Hourly, Weibull or Distribution model [0/1/2]

Constraints: INTEGER

Required: True

Changes to this variable may require updating the values of the following:
  • wind_turbine_powercurve_powerout
  • wind_turbine_powercurve_windspeeds
Type:float

Turbine Group

class PySAM.Windpower.Windpower.Turbine
assign(dict) → None

Assign attributes from dictionary, overwriting but not removing values

Turbine_vals = { var: val, ...}

calculate_powercurve()

Calculates the power produced by a wind turbine at windspeeds incremented by 0.25 m/snnInput: var_table with key-value pairsn ‘turbine_size’: double [kW]n ‘rotor_diameter’: int [m]n ‘elevation’: double [m], required if using Weibull resource model, otherwise 0n ‘max_cp’: double max Cp [-],n ‘max_tip_speed’: double [m/s]n ‘max_tip_sp_ratio’: double max tip speed ratio [-]n ‘cut_in’: double cut in speed [m/s]n ‘cut_out’: double cut out speed [m/s]n ‘drive_train’: int 0: 3 Stage Planetary, 1: Single Stage - Low Speed Generator, 2: Multi-Generator, 3: Direct DrivennOutput: key-value pairs added to var_tablen ‘wind_turbine_powercurve_windspeeds’: array [m/s]n ‘wind_turbine_powercurve_powerout’: array [m/s]n ‘rated_wind_speed’: double [m/s[n ‘hub_efficiency’: array [m/s]

export() → dict

Export attributes into dictionary

replace(dict) → None

Replace attributes from dictionary, unassigning values not present in input dict

Turbine_vals = { var: val, ...}

wind_resource_shear

Shear exponent

Constraints: MIN=0

Required: True

Type:float
wind_turbine_hub_ht

Hub height [m]

Constraints: POSITIVE

Required: True

Changes to this variable may require updating the values of the following:
  • wind_turbine_powercurve_powerout
  • wind_turbine_powercurve_windspeeds
Type:float
wind_turbine_max_cp

Max Coefficient of Power

Constraints: MIN=0

Required: True if wind_resource_model_choice=1

Changes to this variable may require updating the values of the following:
  • wind_turbine_powercurve_powerout
  • wind_turbine_powercurve_windspeeds
Type:float
wind_turbine_powercurve_powerout

Power curve turbine output array [kW]

Constraints: LENGTH_EQUAL=wind_turbine_powercurve_windspeeds

Required: True

This variable may need to be updated if the values of the following have changed:
  • wind_resource_model_choice
  • wind_turbine_hub_ht
  • wind_turbine_max_cp
Type:sequence
wind_turbine_powercurve_windspeeds

Power curve wind speed array [m/s]

Required: True

This variable may need to be updated if the values of the following have changed:
  • wind_resource_model_choice
  • wind_turbine_hub_ht
  • wind_turbine_max_cp
Type:sequence
wind_turbine_rotor_diameter

Rotor diameter [m]

Constraints: POSITIVE

Required: True

Changes to this variable may require updating the values of the following:
  • system_capacity
  • wind_farm_xCoordinates
  • wind_farm_yCoordinates
Type:float

Farm Group

class PySAM.Windpower.Windpower.Farm
assign(dict) → None

Assign attributes from dictionary, overwriting but not removing values

Farm_vals = { var: val, ...}

export() → dict

Export attributes into dictionary

replace(dict) → None

Replace attributes from dictionary, unassigning values not present in input dict

Farm_vals = { var: val, ...}

system_capacity

Nameplate capacity [kW]

Constraints: MIN=0

Required: True

This variable may need to be updated if the values of the following have changed:
  • wind_turbine_rotor_diameter
Type:float
wind_farm_wake_model

Wake Model [Simple, Park, EV, Constant] [0/1/2/3]

Constraints: INTEGER

Required: True

Changes to this variable may require updating the values of the following:
  • wake_int_loss
Type:float
wind_farm_xCoordinates

Turbine X coordinates [m]

Required: True

This variable may need to be updated if the values of the following have changed:
  • wind_turbine_rotor_diameter
Type:sequence
wind_farm_yCoordinates

Turbine Y coordinates [m]

Constraints: LENGTH_EQUAL=wind_farm_xCoordinates

Required: True

This variable may need to be updated if the values of the following have changed:
  • wind_turbine_rotor_diameter
Type:sequence
wind_resource_turbulence_coeff

Turbulence coefficient [%]

Constraints: MIN=0

Required: True

Type:float

Losses Group

class PySAM.Windpower.Windpower.Losses
assign(dict) → None

Assign attributes from dictionary, overwriting but not removing values

Losses_vals = { var: val, ...}

export() → dict

Export attributes into dictionary

replace(dict) → None

Replace attributes from dictionary, unassigning values not present in input dict

Losses_vals = { var: val, ...}

avail_bop_loss

Balance-of-plant availability loss [%]

Constraints: MIN=0,MAX=100

Required: If not provided, assumed to be 0

Type:float
avail_grid_loss

Grid availability loss [%]

Constraints: MIN=0,MAX=100

Required: If not provided, assumed to be 0

Type:float
avail_turb_loss

Turbine availabaility loss [%]

Constraints: MIN=0,MAX=100

Required: If not provided, assumed to be 0

Type:float
elec_eff_loss

Electrical efficiency loss [%]

Constraints: MIN=0,MAX=100

Required: If not provided, assumed to be 0

Type:float
elec_parasitic_loss

Electrical parasitic consumption loss [%]

Constraints: MIN=0,MAX=100

Required: If not provided, assumed to be 0

Type:float
en_icing_cutoff

Enable Icing Cutoff [0/1]

Constraints: INTEGER

Required: If not provided, assumed to be 0

Type:float
en_low_temp_cutoff

Enable Low Temperature Cutoff [0/1]

Constraints: INTEGER

Required: If not provided, assumed to be 0

Type:float
env_degrad_loss

Environmental Degradation loss [%]

Constraints: MIN=0,MAX=100

Required: If not provided, assumed to be 0

Type:float
env_env_loss

Environmental External Conditions loss [%]

Constraints: MIN=0,MAX=100

Required: If not provided, assumed to be 0

Type:float
env_exposure_loss

Environmental Exposure loss [%]

Constraints: MIN=0,MAX=100

Required: If not provided, assumed to be 0

Type:float
env_icing_loss

Environmental Icing loss [%]

Constraints: MIN=0,MAX=100

Required: If not provided, assumed to be 0

Type:float
icing_cutoff_rh

Icing Cutoff Relative Humidity [%]

Info: ‘rh’ required in wind_resource_data

Constraints: MIN=0

Required: True if en_icing_cutoff=1

Type:float
icing_cutoff_temp

Icing Cutoff Temperature [C]

Required: True if en_icing_cutoff=1

Type:float
low_temp_cutoff

Low Temperature Cutoff [C]

Required: True if en_low_temp_cutoff=1

Type:float
ops_env_loss

Environmental/Permit Curtailment loss [%]

Constraints: MIN=0,MAX=100

Required: If not provided, assumed to be 0

Type:float
ops_grid_loss

Grid curtailment loss [%]

Constraints: MIN=0,MAX=100

Required: If not provided, assumed to be 0

Type:float
ops_load_loss

Load curtailment loss [%]

Constraints: MIN=0,MAX=100

Required: If not provided, assumed to be 0

Type:float
ops_strategies_loss

Operational strategies loss [%]

Constraints: MIN=0,MAX=100

Required: If not provided, assumed to be 0

Type:float
turb_generic_loss

Turbine Generic Powercurve loss [%]

Constraints: MIN=0,MAX=100

Required: If not provided, assumed to be 0

Type:float
turb_hysteresis_loss

Turbine High Wind Hysteresis loss [%]

Constraints: MIN=0,MAX=100

Required: If not provided, assumed to be 0

Type:float
turb_perf_loss

Turbine Sub-optimal performance loss [%]

Constraints: MIN=0,MAX=100

Required: If not provided, assumed to be 0

Type:float
turb_specific_loss

Turbine Site-specific Powercurve loss [%]

Constraints: MIN=0,MAX=100

Required: If not provided, assumed to be 0

Type:float
wake_ext_loss

External Wake loss [%]

Constraints: MIN=0,MAX=100

Required: If not provided, assumed to be 0

Type:float
wake_future_loss

Future Wake loss [%]

Constraints: MIN=0,MAX=100

Required: If not provided, assumed to be 0

Type:float
wake_int_loss

Constant Wake Model, internal wake loss [%]

Constraints: MIN=0,MAX=100

Required: True if wind_farm_wake_model=3

This variable may need to be updated if the values of the following have changed:
  • wind_farm_wake_model
Type:float

Uncertainty Group

class PySAM.Windpower.Windpower.Uncertainty
assign(dict) → None

Assign attributes from dictionary, overwriting but not removing values

Uncertainty_vals = { var: val, ...}

export() → dict

Export attributes into dictionary

replace(dict) → None

Replace attributes from dictionary, unassigning values not present in input dict

Uncertainty_vals = { var: val, ...}

total_uncert

Total uncertainty in energy production as percent of annual energy [%]

Constraints: MIN=0,MAX=100

Type:float

AdjustmentFactors Group

class PySAM.Windpower.Windpower.AdjustmentFactors
assign() → None

Assign attributes from dictionary

export() → Dict

Export attributes into dictionary

constant

float

Type:type
dc_constant

DC Constant loss adjustment [%]

dc_hourly

DC Hourly Adjustment Factors [%]

dc_periods

DC Period-based Adjustment Factors [%]

hourly

AC Hourly Adjustment Factors [%]

periods

AC Period-based Adjustment Factors [%]

sf_constant

DC Constant loss adjustment [%]

sf_hourly

DC Hourly Adjustment Factors [%]

sf_periods

DC Period-based Adjustment Factors [%]

Outputs Group

class PySAM.Windpower.Windpower.Outputs
assign(dict) → None

Assign attributes from dictionary, overwriting but not removing values

Outputs_vals = { var: val, ...}

export() → dict

Export attributes into dictionary

replace(dict) → None

Replace attributes from dictionary, unassigning values not present in input dict

Outputs_vals = { var: val, ...}

annual_energy

Annual Energy [kWh]

Type:float
annual_energy_distribution_time

Annual energy production as function of time [kW]

Type:sequence[sequence]
annual_energy_p75

Annual energy with 75% probability of exceedance [kWh]

Type:float
annual_energy_p90

Annual energy with 90% probability of exceedance [kWh]

Type:float
annual_energy_p95

Annual energy with 95% probability of exceedance [kWh]

Type:float
annual_gross_energy

Annual Gross Energy [kWh]

Type:float
avail_losses

Availability losses [%]

Type:float
capacity_factor

Capacity factor [%]

Type:float
cutoff_losses

Low temp and Icing Cutoff losses [%]

Type:float
elec_losses

Electrical losses [%]

Type:float
env_losses

Environmental losses [%]

Type:float
gen

System power generated [kW]

Type:sequence
kwh_per_kw

First year kWh/kW [kWh/kW]

Type:float
monthly_energy

Monthly Energy [kWh]

Type:sequence
ops_losses

Operational losses [%]

Type:float
pressure

Pressure [atm]

Type:sequence
temp

Air temperature [‘C]

Type:sequence
turb_losses

Turbine losses [%]

Type:float
turbine_output_by_windspeed_bin

Turbine output by wind speed bin [kW]

Type:sequence
wake_losses

Wake losses [%]

Type:float
wind_direction

Wind direction [deg]

Type:sequence
wind_speed

Wind speed [m/s]

Type:sequence
wind_speed_average

Average Wind speed [m/s]

Type:float