You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The primary objective for the next major version of FLORIS is to enable order of magnitude performance improvements for wind farm simulations over many atmospheric conditions by redesigning the underlying data structures to leverage CPU vectorization (SIMD) and support further speedups and algorithmic development in the future.
Multi wind direction vectorization - wind rose calculation
Solver
Iterative full-farm
Cython implementation of one simple model
Other areas of interest
Improvements to the input file structure
How to specify wind speed and wind direction combinations
Wind rose input; what do the following inputs mean?
[ 270, 360 ] # wind directions
[ 10.0, 8.0 ] # wind speeds
Data Structure
The data is structured entirely in Numpy arrays where some helper classes and functions are available for accessing the arrays in an intuitive form. The principal arrays are
x, y, z: These hold the coordinates of the grid-type. They are dimensioned as (n wind directions, n wind speeds, n turbines, n grid points, m grid points) for the TurbineGrid
u, v, w: These are the values of the velocity components at each grid point. Therefore, they have shape (n wind directions, n wind speeds, n turbines, n grid points, m grid points). After the first two dimensions, this is the same shape as the grid arrays (x,y,z).
The first place where data structures start to take form is in the Grid classes. Here, we create the x, y, z arrays that establish the shape (dimensions) and size of the grid. Then, FlowField.initialize_velocity_field uses the Grid's dimensions to size the velocity arrays. It also adds on dimensions for the wind speeds and wind directions.
Other considerations
Support for analytic gradients - @bayc
Automatic differentiation - @bayc
Interesting ideas
Julia backend
Other language implementation of particular models (C++, Julia, Cython)
Questions for later
The thrust curve we use for NREL 5MW has lowest wind speed of 2 m/s and the Ct is greater than 1. Is this correct? If so, we also bound Ct to 0-1 in the code, so is that correct? What does a Ct > 1 mean?
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Methods and objectives
The primary objective for the next major version of FLORIS is to enable order of magnitude performance improvements for wind farm simulations over many atmospheric conditions by redesigning the underlying data structures to leverage CPU vectorization (SIMD) and support further speedups and algorithmic development in the future.
Parity with v2
Not in FLORIS v2, but work in progress for v3
Other areas of interest
Improvements to the input file structure
How to specify wind speed and wind direction combinations
Data Structure
The data is structured entirely in Numpy arrays where some helper classes and functions are available for accessing the arrays in an intuitive form. The principal arrays are
The first place where data structures start to take form is in the Grid classes. Here, we create the x, y, z arrays that establish the shape (dimensions) and size of the grid. Then,
FlowField.initialize_velocity_field
uses the Grid's dimensions to size the velocity arrays. It also adds on dimensions for the wind speeds and wind directions.Other considerations
Support for analytic gradients - @bayc
Automatic differentiation - @bayc
Interesting ideas
Julia backend
Other language implementation of particular models (C++, Julia, Cython)
Questions for later
The thrust curve we use for NREL 5MW has lowest wind speed of 2 m/s and the Ct is greater than 1. Is this correct? If so, we also bound Ct to 0-1 in the code, so is that correct? What does a Ct > 1 mean?
Beta Was this translation helpful? Give feedback.
All reactions