History¶
v0.1.0-alpha¶
This is the initial release of foxes - ready for testing.
So far not many models have been transferred from the Fraunhofer IWES in-house predecessor flappy, they will be added in the following versions. Also optimization is not yet included. We are just getting started here!
Enjoy - we are awaiting comments and issues, thanks for testing.
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.1.0
v0.1.1-alpha¶
New code style, created by black
Small fixes, discovered by flake8
Tests now via pytest instead of unittest
Introducing github workflow for automatic testing
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.1.1
v0.1.2-alpha¶
Adding support for Python 3.9, 3.10
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.1.2
v0.1.3-alpha¶
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.1.3
v0.1.4-alpha¶
Fixes
Static data: Adding missing data
wind_rotation.nc
to manifest
Models
New wake model added:
TurbOParkWake
from OrstedNew turbine type added:
PCtSingleFiles
, reads power and thrust curves from two separate filesNew turbulence intensity wake model added:
IECTI2019
/Frandsen
andIECTI2005
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.1.4
v0.2.0-alpha¶
Core
Introducing the concept of runners
Opt
New sub package:
foxes.opt
, install bypip install foxes[opt]
. This introduces the capability to run wind farm optimizations. As examples layout optimization for simple cases are given, see below.
Models
New turbine model:
Thrust2Ct
, calculates ct from thrust valuesNew turbine type:
NullType
, a turbine type with only rotor diameter and hub height dataRenamed
PCtSingleFiles
intoPCtTwoFiles
Output
New output:
WindRoseOutput
, providing a plotly figure that shows a rose-type histogramNew output:
AmbientWindRoseOutput
, providing rose-type plotly figures of ambient data (no wake calculation involved)
Algorithms
Improved
Downwind
: Now with option for ambient runs (no wakes)
Utils
New utility:
show_plotly_fig
, opens a window that shows a plotly figure (instead of browser)New runners:
DefaultRunner
,DaskRunner
. The latter features parallel runs via dask
Examples
Introducing two sub-folders of examples:
foxes
andfoxes.opt
New example:
wind_rose
, calculation of wind rose states dataNew example:
layout_single_state
, wind farm layout optimization for a single wind stateNew example:
layout_wind_rose
, wind farm layout optimization for wind rose states
Notebooks
New notebook:
layout_opt.ipynb
, demonstrating a simple layout optimization case
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.2.0
v0.2.1-alpha¶
Input:
New input:
MultiHeightStates
andMultiHeightTimeseries
, for input data at several height levels, e.g. WRF results at one point
Output:
New output:
FarmResultsEval
, calculates sum, mean, min, max over states or turbines for the whole wind farm. Also calculates capacity, efficiency, yield, P75, P90.New output:
ResultsWriter
, writes farm results or pandas data to csv fileRenaming:
AmbientRosePlotOutput
is now calledStatesRosePlotOutput
Notebooks:
New notebook:
multi_height.ipynb
, demonstrating the usage of multi-height wind input data
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.2.1
v0.2.2-alpha¶
Bug fixes
Bug fixed in
MultiHeightStates
for wind veer cases
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.2.2
v0.2.3-alpha¶
Input states
Improved:
SingleStateStates
now supports profiles
Turbine models
New model
PowerMask
: Derates or boosts a turbine
Examples
New:
power_mask
, demonstrates derating and boost
Utils
New:
cubic_roots
, solves a cubic equation
Output
New:
StateTurbineMap
, creates heat maps for state-turbine dataNew:
TurbineTypeCurves
, creates power and thrust curve plotsImproved:
FarmLayoutOutput
now supports scatter color by variable
Documentation
Adding forgotten
foxes.opt
to API
Notebooks:
Now including results as colored layout plots
New notebook:
wind_rose.ipynb
, demonstrating how to calculate wind rosesNew notebook:
power_mask.ipynb
, showing derating and boost via a power mask
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.2.3
v0.2.4-alpha¶
Bug fixes
Hotfix for bug in
TurbineTypeCurves
output
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.2.4
v0.2.5-alpha¶
Core:
New:
ExtendedStates
, allows for adding point data models to states
Input:
Improved:
FieldDataNC
, now with support for spatially uniform variables
Turbine types:
New:
WsRho2PCtTwoFiles
, air density dependent power and ct curves
Turbine models:
New:
SectorManagement
, sets variables by range rules on other variables
Point models:
New:
SetUniformData
, set uniform variables (optionally state dependent)
Examples:
New:
sector_management
, demonstrates how to model wind sector management
Notebooks:
New:
sector_man.ipynb
, demonstrates how to model wind sector managementNew:
data.ipynb
, lists and shows the static data
Bug fixes:
Fix for bug with option
col_models
in farm layout from csv
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.2.5
v0.2.6-alpha¶
Output:
Improved:
FarmResultsEval
can now handle NaN data in Einstein sumsImproved:
ResultsWriter
can now also write turbine names
Turbine models:
New:
TableFactors
, multiplies variables with data from a two dimensional tableNew:
YAW2YAWM
, calculates yaw deltas from absolute yaw and wind directionNew
YAWM2YAW
, calculates absolute yaw from yaw deltas and wind directionGeneralized:
kTI
, now includes optional offsetkb
Turbine types:
Changed: Now yaw correction of
P
andCT
switched on by default
Point models:
New:
TKE2TI
, calculates turbulence intensity from TKE
Wake models:
New:
PorteAgel
, calculates wakes based on the Bastankhah PorteAgel 2016 wake model
Wake frames:
New:
YawedWake
, bends wakes in yawed conditions
Wake superposition models:
Improved:
LinearSuperposition
, now includes options for lower/higher limits of total wake deltas
Examples:
New:
compare_wakes
, compares wake models along horizontal linesNew:
yawed_wake
, demonstrates wake bending by yawing a rotor
Notebooks:
New:
yawed_wake.ipynb
, demonstrates wake bending by yawing a rotor
Bug fixes:
Fix for bug with
ExtendedStates
, now it is actually workingFix for bug with wake width in
CrespoHernandezTIWake
Fix for bug with YAW and WD when using the
YAWM2YAW
turbine modelFix for bug in
TurbOPark
wake model, double counting constant offset in sigma
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.2.6
v0.3.0-alpha¶
Core:
Models now with simplified structure, reduces memory load during calculations
Algorithms:
New:
Iterative
, iterative wind farm calculation until convergence has been reached
Input:
Improved:
FieldDataNC
now accepts xarray Dataset or file pattern str as inputNew:
ShearedProfile
, Vertical WS profile can be determined with shear exponent
Output:
Improved:
FlowPlots2D
replacing horizontal/vertical –> xy, xz, yz, more intuitive
Wake models:
New:
TurbOParkIX
, integrates wake corrected TI along centreline for wake width sigma.
Wake frames:
Improved: All yawed wake frames now also support centreline data integration
Notebooks:
New:
overview.ipynb
, summarizes the setup steps
Bug fixes:
Fix for bug in
TurbOPark
wake model: Brackets in Eq. (4) were wrongFix for bug with long streamlines
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.3.0
v0.3.1-alpha¶
Input states:
Improved:
FieldDataNC
now supports states subset selection
Wake frames:
Improved:
Streamlines
now with maximal length option
Turbine models:
New:
Calculator
, simple variable calculation via user function
Opt:
Now two abstract problems in core:
FarmOptProblem
andFarmVarsProblem
, the latter invokes theSetFarmVars
turbine modelNew opt problem:
RegularLayoutOptProblem
, searches for a regular grid layoutNew opt problem:
GeomRegGrids
, finds regular grid layout by purely geometrical means (no wind farm calculation)New opt problem:
GeomLayout
, turbine positioning based on xy variables, also purely geometricalNew opt problem:
GeomLayoutGridded
, a purely geometrical optimization on a gridded background
Examples:
New in
foxes.opt
: Examplelayout_regular_grid
, demonstrates regular grid layout optimizationNew in
foxes.opt
: Examplegeom_reggrids
, purely geometrical regular layout optimization
Utils:
New functions for shape file handling:
read_shp
,shp2csv
,read_shp_polygons
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.3.1
v0.3.2-alpha¶
Bug fixes:
Fix for bug in
FarmResultsEval
that affected time range calculations under WindowsBug fixes for
FarmResultsEval
with time series data
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.3.2
v0.3.3-alpha¶
Utils:
Now
geopandas_helpers
can handle interior areas
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.3.3
v0.3.4-alpha¶
Installation:
foxes
now supports Python 3.11
Input:
New layout input option:
add_from_df
, adding turbines from a pandas DataFrameNew interface to windIO case yaml files
Turbine types:
New turbine type
CpCtFile
, reads CP and CT data from file or pandas DataFrameNew turbine type
CpCtFromTwo
, reads CP and CT data from two files or pandas DataFramesImproved: Turbine types now calculate
P_nominal
as maximum, if not explicitely given
Constants:
Introducing
P_UNITS
, used in turbine types and output evaluation
States:
Bug fixed in
FieldDataNC
with loading multiple files
Core:
Improved
DataCalcModel
: Now cleaner treatment of runs withprogress_bar=False
. Also now slimmer fordistributed
scheduler
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.3.4
v0.3.5-alpha¶
General:
Moving identifier-type entries from
foxes.variables
tofoxes.constants
Models:
New wake superposition model
ProductSuperposition
, computing factorized wake deltasNew turbine model:
RotorCentreCalc
, calculates data at rotor centre, irrespective of rotor model
Bug fixes:
Bug fixed that caused problems when restarting the
SectorManagement
turbine model, e.g. for flow plots
Documentation:
Completely new style, fixing issues with incomplete API entries
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.3.5
v0.4.0¶
Models:
Improved: New option to specify wake growth variable name, such that multiple
kTI
models could be used, resulting in differentk
‘s for different wake modelsNew turbine model:
LookupTable
, interpolates data based on a multi-dimensional lookup table
Utils:
Improved
DaskRunner
: Now supports clusters that run the Slurm queueing system
Examples:
New:
timeseries_slurm
, shows how to run foxes on a HPC with Slurm queueing system
Optimization:
Improved:
foxes.opt
is now able to optimize for flow variables (at selected points in space) in addition to turbine variables
Documentation:
Improved API docu, now based on
python-apigen
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.4.0
v0.4.1¶
Algorithms:
Improved:
Iterative
now iterates through outer loop instead of within chunk
Models:
New wake frame:
Timelines
, propagates wakes for spatially uniform time series
Tests:
New test:
consistency/iterative
, checks if iterative algorithm gives same result
Examples:
New example:
timelines
, demonstrates the usage of theTimelines
wake frameImproved: All examples were update for the correct usage of the
DaskRunner
Notebooks:
New notebook:
timelines.ipynb
, showing how to use theTimelines
wake frame in a notebook
Data:
New states data
timeseries_100.csv.gz
, a short timeseries with timestep 1 min, varying wind direction only
Output:
Improved:
FlowPlots2D
now has the optional argumentrunner
, for computing plots with the chosen parallelization settings
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.4.1
v0.4.2¶
Bug fixes:
Fix of bug that slowed down
TurbOParkIX
by considering all TI wakes instead of only source turbine wake during integrationFix of bug that prevented plotly wind roses to be shown in the documentation
Fix in docu that excluded the algorithm models from the API
Output:
New:
Animator
, creates animations based on generators that yield lists of artists
Examples:
Improved:
timelines
now includes turbine REWS signal in animations
Notebooks:
Improved:
timelines.ipynb
now includes turbine REWS signal in animations
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.4.2
v0.4.3¶
Output:
Improved:
RosePlotOutput
andStatesRosePlotOutput
now optionally return the binned data
Models:
New vertical profile:
DataProfile
, data based profile from file or pandas DataFrameImproved ti superposition: Now supporting n-th power superposition
Improved wake model
TurbOParkIX
: New option for consideration of all wakes in ti integral
Bug fixes:
Fixed bug with
windio
input that resulted in wrong wind rose weightsFixed bug with
FlowPlots2D
with value bounds in contour plots
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.4.3
v0.4.4¶
Testing automated publishing to PyPi via workflow
v0.4.5¶
Models:
New rotor model:
LevelRotor
, calculates the REWS from different height levelsNew turbine type:
WsTI2PCtFromTwo
, reads turbulence-dependent ct- and power curves
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.4.5