Onshore and offshore wind layout generation.
Reason this release was yanked:
reserving of name space
Project description
OOWL
Onshore and Offshore Wind Layouts (OOWL) generates diverse, exact-count wind-farm layouts from composable geometry and placement methods.
The Python package is currently imported as oowl.
import oowl
from oowl import boundaries as B
from oowl import layouts as L
boundary = B.Rectangle(9000, 5000).with_channels(
n_channels=2, width=500, seed=3
)
farm = oowl.generate_farm(
boundary,
L.GridLayout(n_turbines=92, lattice_angle=60, seed=4),
)
farm.plot()
Model
The public API has three independent layers:
boundariesdefine the allowed polygonal farm area. AMultiPolygonremains one logical farm;BoundaryClusterexplicitly represents multiple farms.stringsdefine optional ordered line guides. Breaks and meanders compose as non-mutating geometry modifiers.layoutsplace an exact turbine count. Grids occupy selected intersections of an aligned parallelogram grid, circular layouts select from boundary- clipped concentric rings, contour layouts follow nested inward copies of the farm boundary and retain a central point by default, Poisson layouts provide blue-noise patterns, and string farms distribute turbines along guides.
oowl.generate_farm(...) is the single entry point for ordinary boundaries,
multipart farms, clusters, and standalone string layouts.
contours = oowl.generate_farm(
boundary,
L.ContourLayout(n_turbines=80, include_center=True),
)
Strings and clusters
from oowl import strings as S
guide = S.Parallel(S.Straight(), n_strings=5, spacing=0.18)
guide = guide.with_meander(roughness=0.03, seed=2)
string_farm = oowl.generate_farm(
B.Circle(3000),
L.StringLayout(60, strings=guide),
)
cluster = B.BoundaryCluster.from_components(boundary)
mixed = oowl.generate_farm(
cluster,
L.MixedLayout(
n_turbines=92,
layouts=[L.GridLayout(), L.StringLayout(strings=S.Straight())],
seed=8,
),
)
Units and windIO
Realized boundary and turbine coordinates are interpreted as metres. String
guide lengths and spacing are relative shape parameters when fitted to a
boundary; standalone StringLayout.spacing is dimensional.
Farm.positions is an ordered (N, 2) array that maps directly to windIO's
coordinates.x and coordinates.y. Cluster provenance stores contiguous farm
slices so a future adapter can emit windIO's array of wind-farm objects. The
package does not currently depend on windIO or model turbines, substations, or
electrical collection arrays.
Randomness and provenance
Explicit seeds reproduce a farm. An unseeded generation call receives fresh
entropy and records the resolved seed in Farm.provenance, so it can be
replayed later:
farm = oowl.generate_farm(boundary, L.GridLayout(92))
replay = oowl.generate_farm(
boundary,
L.GridLayout(92),
seed=farm.provenance["seed"],
)
Random boundaries and guides resolve their seed when constructed. Reusing one such object therefore reuses the same realized geometry, while constructing a new unseeded object produces a new geometry.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file oowl-0.0.1.tar.gz.
File metadata
- Download URL: oowl-0.0.1.tar.gz
- Upload date:
- Size: 40.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b0826923d0501ecb67d4dc86ad9410c01c7d657947c11ee829534ad24f6fabb
|
|
| MD5 |
d99ed760943b8a8684af8bcfaaaf1038
|
|
| BLAKE2b-256 |
d456a7b6fbc79036cf65c24efc51c93a9f644888969092f626407d110bdc2604
|
File details
Details for the file oowl-0.0.1-py3-none-any.whl.
File metadata
- Download URL: oowl-0.0.1-py3-none-any.whl
- Upload date:
- Size: 54.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3859b263885fc87fcf1079f63399c4d2bc7b66b7c27fda5f8f3f91e2f2a5be4a
|
|
| MD5 |
380076e827c98f22ab02379abc928d3e
|
|
| BLAKE2b-256 |
a3f4dbfed89fd112b68f8aaebaa8340537890f4aaa1f2c7fdb67c032b735c672
|