flasc.utilities.floris_tools.calc_floris_approx_table

flasc.utilities.floris_tools.calc_floris_approx_table#

flasc.utilities.floris_tools.calc_floris_approx_table(fm, wd_array=array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13., 14., 15., 16., 17., 18., 19., 20., 21., 22., 23., 24., 25., 26., 27., 28., 29., 30., 31., 32., 33., 34., 35., 36., 37., 38., 39., 40., 41., 42., 43., 44., 45., 46., 47., 48., 49., 50., 51., 52., 53., 54., 55., 56., 57., 58., 59., 60., 61., 62., 63., 64., 65., 66., 67., 68., 69., 70., 71., 72., 73., 74., 75., 76., 77., 78., 79., 80., 81., 82., 83., 84., 85., 86., 87., 88., 89., 90., 91., 92., 93., 94., 95., 96., 97., 98., 99., 100., 101., 102., 103., 104., 105., 106., 107., 108., 109., 110., 111., 112., 113., 114., 115., 116., 117., 118., 119., 120., 121., 122., 123., 124., 125., 126., 127., 128., 129., 130., 131., 132., 133., 134., 135., 136., 137., 138., 139., 140., 141., 142., 143., 144., 145., 146., 147., 148., 149., 150., 151., 152., 153., 154., 155., 156., 157., 158., 159., 160., 161., 162., 163., 164., 165., 166., 167., 168., 169., 170., 171., 172., 173., 174., 175., 176., 177., 178., 179., 180., 181., 182., 183., 184., 185., 186., 187., 188., 189., 190., 191., 192., 193., 194., 195., 196., 197., 198., 199., 200., 201., 202., 203., 204., 205., 206., 207., 208., 209., 210., 211., 212., 213., 214., 215., 216., 217., 218., 219., 220., 221., 222., 223., 224., 225., 226., 227., 228., 229., 230., 231., 232., 233., 234., 235., 236., 237., 238., 239., 240., 241., 242., 243., 244., 245., 246., 247., 248., 249., 250., 251., 252., 253., 254., 255., 256., 257., 258., 259., 260., 261., 262., 263., 264., 265., 266., 267., 268., 269., 270., 271., 272., 273., 274., 275., 276., 277., 278., 279., 280., 281., 282., 283., 284., 285., 286., 287., 288., 289., 290., 291., 292., 293., 294., 295., 296., 297., 298., 299., 300., 301., 302., 303., 304., 305., 306., 307., 308., 309., 310., 311., 312., 313., 314., 315., 316., 317., 318., 319., 320., 321., 322., 323., 324., 325., 326., 327., 328., 329., 330., 331., 332., 333., 334., 335., 336., 337., 338., 339., 340., 341., 342., 343., 344., 345., 346., 347., 348., 349., 350., 351., 352., 353., 354., 355., 356., 357., 358., 359.]), ws_array=array([1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13., 14., 15., 16., 17., 18., 19., 20., 21., 22., 23., 24., 25.]), ti_array=array([0.03, 0.06, 0.09, 0.12, 0.15, 0.18]), save_turbine_inflow_conditions_to_df=False)[source]#

Calculate the FLORIS approximate table from a FlorisModel object.

This function calculates a large number of floris solutions for a rectangular grid of wind directions ('wd_array'), wind speeds ('ws_array'), and optionally turbulence intensities ('ti_array'). The variables that are saved are each turbine's power production, and optionally also each turbine's inflow wind direction, wind speed and turbulence intensity if 'save_turbine_inflow_conditions_to_df==True'.

Parameters:
  • fm (FlorisModel) -- FlorisModel object.

  • wd_array (array, optional) -- Array of wind directions to evaluate in [deg]. This expands with the number of wind speeds and turbulence intensities. Defaults to np.arange(0.0, 360.0, 1.0).

  • ws_array (array, optional) -- Array of wind speeds to evaluate in [m/s]. This expands with the number of wind directions and turbulence intensities. Defaults to np.arange(1.0, 25.01, 1.0).

  • ti_array (array, optional) -- Array of turbulence intensities to evaluate in [-]. This expands with the number of wind directions and wind speeds. Defaults to np.arange(0.03, 0.1801, 0.03).

  • save_turbine_inflow_conditions_to_df (bool, optional) -- When set to True, will also write each turbine's

  • direction (inflow wind)

  • the (wind speed and turbulence intensity to the output dataframe. This increases)

  • False. (dataframe size but can provide useful information. Defaults to)

Returns:

A Pandas DataFrame containing the floris simulation results for all wind

direction, wind speed and turbulence intensity combinations. The outputs are the power production for each turbine, 'pow_000' until 'pow_{nturbs-1}', and optionally als each turbine's inflow wind direction, wind speed and turbulence intensity when save_turbine_inflow_conditions_to_df==True.

Example for a 7-turbine floris object with

wd_array=np.arange(0.0, 360.0, 3.0) ws_array=np.arange(1.0, 25.001, 1.0) ti_array=np.arange(0.03, 0.1801, 0.03) save_turbine_inflow_conditions_to_df=True

Return type:

pd.DataFrame

Yields:
df_approx=

wd ws ti pow_000 ws_000 wd_000 ti_000 pow_001 ... pow_006 ws_006 wd_006 ti_006

0 0.0 1.0 0.03 0.0 1.0 0.0 0.03 0.0 ... 0.0 1.0 0.0 0.03 1 3.0 1.0 0.03 0.0 1.0 3.0 0.03 0.0 ... 0.0 1.0 3.0 0.03 2 6.0 1.0 0.03 0.0 1.0 6.0 0.03 0.0 ... 0.0 1.0 6.0 0.03 3 9.0 1.0 0.03 0.0 1.0 9.0 0.03 0.0 ... 0.0 1.0 9.0 0.03 4 12.0 1.0 0.03 0.0 1.0 12.0 0.03 0.0 ... 0.0 1.0 12.0 0.03 ... ... ... ... ... ... ... ... ... ... ... ... ... 32395 345.0 25.0 0.18 0.0 24.880843 345.0 0.18 0.0 ... 0.0 24.881165 345.0 0.18 32396 348.0 25.0 0.18 0.0 24.880781 348.0 0.18 0.0 ... 0.0 24.881165 348.0 0.18 32397 351.0 25.0 0.18 0.0 24.880755 351.0 0.18 0.0 ... 0.0 24.881165 351.0 0.18 32398 354.0 25.0 0.18 0.0 24.880772 354.0 0.18 0.0 ... 0.0 24.881165 354.0 0.18 32399 357.0 25.0 0.18 0.0 24.880829 357.0 0.18 0.0 ... 0.0 24.881165 357.0 0.18 32400 360.0 25.0 0.18 0.0 24.880829 360.0 0.18 0.0 ... 0.0 24.881165 360.0 0.18