Recent Releases of FOXES
FOXES -
- Now all examples are making use of an engine via the
withcontext, as it should be done in scripts- Bug fixes:
- Bug fixed that caused a reset in the
dyn_wakeswake frame when callingcalc_points - Bug fixed with
write_ncutility, concerning string type coordinate arrays
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v1.5.1
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] 7 months ago
FOXES - v1.5
- Dependencies:
- Introducing minimal package versions of dependencies to pyproject.toml
- Inputs:
- New abstract states class
DatasetStates, serving as a common base for NetCDF type input data - Renamed
FieldDataNCasFieldData, now with improved data handling - New states class
PointCloudData, interpolating data with irregular point cloud support - New states class
WeibullField, representing Weibull sector data on a regular grid - New states class
WeibullPointCloud, representing Weibull sector data with irregular point cloud support - New farm layout input function
add_from_arrays, for directly adding turbines through one dimensional data lists or arrays - Advancing
windioto version 2.0
- New abstract states class
- Models:
- New turbine type
CalculatorType, for direct infusion of farm data at a turbine through a user function - New rotor model
DirectMDataInfusion, piping stored model data directly into turbines - Generalizing the
Calculatorturbine model, now additionally passingalgo, mdata, fdatato the user function
- New turbine type
- Examples:
- New example
point_cloud, demonstrating the useage of thePointCloudambient states class - New example
weibull_grid, demonstrating the useage of theWeibullFieldambient states class - New example
weibull_cloud, demonstrating the useage of theWeibullPointCloudambient states class - New example
direct_mdata_infusion, demonstrating how to infuse states data dirctly into rotor data without interpolation
- New example
- Bug fixes:
- Bug fixed with turbine model
SetFarmVarsthat mixed up the turbine ordering - Bug fixed with turbine models that are marked as
pre_rotorthat mixed up the turbine ordering
- Bug fixed with turbine model
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v1.5
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] 7 months ago
FOXES - v1.4
- Core:
- This version introduces
WakeDeflectionmodels. This replaces and generalizes theYawedWakeswake frame, such that now any choice of wake frame can be combined with yawed wakes, for example streamlines or dynamic wakes. The wake deflection model is selected through the parameterwake_deflectionor the algorithm and then applies to all wakes. - Wake models, wake deflections or wake superpositions can now induce a horizontal rotation of the waked wind vector. This is realized by inhternally switching from a
(WS, WD)description to aUVvector, and vice-versa at the end of calculations. - A new abstract class
WindVectorWakeSuperpositionwas instroduced for the purpose of handlingUVwind wake effects.
- This version introduces
- Inputs:
- New states
WeibullSectors, reading and interpreting spatially homogeneous Weibull scale and shape parameters for wind direction sectors, from csv or nc files
- New states
- Models:
- New wake deflection model
Bastankhah2016Deflection, replacing the previousYawedWakeswake frame. Notice that this model does not modify the wind speed deficit or the wind direction in the wake, it only changes the wake path. Meant to be used together with theBastankhah2016wake model. - New wake deflection model
JimenezDeflection, which bends the wake and optionally also rotates the waked wind vector along the path. If that option is chosen, this model requires a vector type superposition of the wind deficit. - New wake deflection model
NoDeflection, which switches off wake bending and should be used if no yaw misalignment occurs in the simulation (default). - New wake superposition model
WindVectorLinear, realizing linear vector type wind vector superposition.
- New wake deflection model
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v1.4
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] 8 months ago
FOXES -
- Core:
- The statistical weights of the states are now no longer required to be known a-priori, but they are computed at target points during the states calculation. So in principle, weights can now depend on the evaluation point, as it is required by the new
WRGStates, see below.
- The statistical weights of the states are now no longer required to be known a-priori, but they are computed at target points during the states calculation. So in principle, weights can now depend on the evaluation point, as it is required by the new
- Input:
- Introducing
WRGStates, reading and running Wind Resource Grid (WRG) data files which describe Weibull factors on a regular horizontal grid.
- Introducing
- Examples:
- New example
quickstart, demonstrating foxes in a minimal script
- New example
- Bug fixes:
- Bug fixed with
xarray.Datasetinput instead of file forFieldDataNCstates
- Bug fixed with
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v1.3
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] about 1 year ago
FOXES -
- Models:
- Fix for bug in
VortexSheetturbine induction wake model. Thanks @MellBeli
- Fix for bug in
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v1.2.5
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] about 1 year ago
FOXES -
- Config:
- Fix for bug with
nc_enginefor Python 3.8
- Fix for bug with
- Utils:
- New util
ReaderWRG, reading WRG files. Thanks @HassanKassem
- New util
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v1.2.4
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] about 1 year ago
FOXES -
- Dependencies:
- Switching
windIOsupport to fork at https://github.com/EUFLOW/windIO - Removing dependency
netcdf4, since this orh5netcdfare now a dynamic choice, called when NetCDF files are being used
- Switching
- Config:
- Now three directories are defined:
work_dir,input_dir,output_dir. If not defined, falling back towork_dir, defaulting to cwd.
- Now three directories are defined:
- Inputs:
- Removing
SliceDataNC, since nowFieldDataNCcan handle data without height dependency - Enhancing
FieldDataNCfor more efficient parallel loading of large data, replacingpre_loadflag with load mode optionspreload,lazy,fly - Enhancing
windioinputs for output generation
- Removing
- Outputs:
- New output
SlicesDatawhich combines slices fromSliceDatainto a single NetCDF file, resulting in full 3d field output (or 4d, with time/states dimension)
- New output
- Models:
- New point model
Ustar2TI, estimates TI from friction velocity
- New point model
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v1.2.3
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] about 1 year ago
FOXES -
- Developments required by
foxes_optv0.3, related to running also wind farm optimizations by yaml parameter files
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v1.2.2
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] about 1 year ago
FOXES -
- Dependencies:
- Removing dependency on
windrosepackage
- Removing dependency on
- Outputs:
- Output
FarmResultsEval: Renaming contraction rulemeanintoweights. Introducing new rulemean_no_weights. - New Output
WindRoseBinPlot, for example showing variable mean values for wind rose bins - Re-implementation of
WindRosePlot, no longer needs thewindrosepackage
- Output
- Inputs:
- Generalizing
ScanWSstates toScanStates, for arbitrary tensor products of variable lists - States
FieldDataNCnow also accepts fields without heights, signature (state, x, y) and (state, y, x)
- Generalizing
- Bug fixes:
- Fixing some examples that were computing the turbine efficiency incorrectly
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v1.2.1
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] about 1 year ago
FOXES -
- Command line applications:
- New command line application:
foxes_yaml, runs foxes by interpreting ayamlinput parameter file (no script neccessary) - New command line application:
foxes_windio, runs foxes by interpreting a windioyamlinput parameter file (no script neccessary)
- New command line application:
- Config:
- Introducing a dictionary-like configuration object
foxes.config, setting default data types, the directory choices, etc.
- Introducing a dictionary-like configuration object
- Inputs:
- New input package
foxes.input.yaml, realizing the run via yaml parameter files. This is not followingwindio, but a foxes specific structure. - Reworked
windioinput package, now atfoxes.input.yaml.windioand based onfoxes.input.yaml
- New input package
- Outputs:
- Introducing the idea of a default output directory, accessible via
foxes.config.out_dir. The file writing output classes now refer to this, or a output specific output directory that is given as an argument to the constructor of the output class.
- Introducing the idea of a default output directory, accessible via
- Examples:
- New example
yaml_input, demonstrating the command line applicationfoxes_yamland the new yaml parameter file
- New example
- Bug fixes:
- Fix for
TurbOParkIXwake model: Nowkis trulyk, such that onlyambkaorkachoices fromWakeKcorrespond to multiplication withAMB_TIorTI, respectively.
- Fix for
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v1.2
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES -
- Dependencies:
- Removing optional dependencies
io. The installation advice will be printed when trying to use thefoxes.input.windiosub package. The reason is that for now this depends on a personal fork by kilojoules, and the inclusion of such dependencies is not supported by PyPi.
- Removing optional dependencies
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v1.1.1
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - v1.1.0.2
- Python versions:
- Adding support for Python3.13
- Engines:
- Default number of processes is now os.cpucount(), or os.processcpu_count() for python3.13
- New engine:
RayEngine(short nameray), runs parallel computations based on the Ray package
- Inputs:
- New states
SliceDataNC, much likeFieldDataNCbut without height dependency
- New states
- Models:
- New turbine type
TBLFile: Reads power, ct, D, H, P_rated from a *.tbl file - Turbine induction models
SelfSimilar,SelfSimilar2020,Rathmann,VortexSheetnow optionally accept any wind speed superposition model, i.e., they are no longer based on hard-coded linear superposition
- New turbine type
- Bug fixes:
- Bug fixed in
WSProduct, causing zero wind speed at regions not touched by wakes - Bugs fixes in
FarmLayoutOutput, concerning the writing of the layout csv file
- Bug fixed in
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v1.1
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES -
This major version introduces the concept of Engines which handle the chunking and parallelization of all foxes calculations. The default choice now prefers the concurrent.futures package and provides a significant speedup compared to previous versions. See the documentation for more details and all engine choices. The Engines replace the Runners of previous versions.
- Engines
- New engine
ThreadsEngine(shortthreads): Sends chunks to threads, based onconcurrent.futures - New engine
ProcessEngine(shortprocess): Sends chunks to processes, based onconcurrent.futures - New engine
MultiprocessEngine(shortmultiprocess): Sends chunks to a multiprocessing pool - New engine
XArrayEngine(shortxarray): Runs parallelization via xarray.apply_ufunc - New engine
DaskEngine(shortdask): Submits chunk calculation functions todask - New engine
LocalClusterEngine(shortlocal_cluster): Creates a virtual cluster on the local machine - New engine
MPIEngine(shortmpi): Parallel computation viampi4py, also multi-node - New engine
SlurmClusterEngine(shortslurm_cluster): Submits jobs to a SLURM system - New engine
NumpyEngine(shortnumpy): Runs a loop over chunks - New engine
SingleChunkEngine(shortsingle): Runs single-chunk calculations - New engine
DefaultEngine(shortdefault): Switches betweensingleandprocess, depending on the case size
- New engine
- Inputs:
- New states
OnePointFlowStates,OnePointFlowTimeseries,OnePointFlowMultiHeightTimeseries,OnePointFlowMultiHeightNCTimeseries: Generating horizontally inhomogeneous inflow from horizontally homogeneous input data - New farm layout option:
add_ring, adding a ring of turbines
- New states
- Models:
- Wake frame
Timelinesnow also accept spatially uniform multi-height states - New wake frame
DynamicWakes: Dynamic wakes for any kind of timeseries states, compatible with chunking - New turbine type
FromLookupTable, computes power and thrust coefficient from a lookup table
- Wake frame
- Outputs:
- New sub package
seq_plugins, in case more of these will be added in the future - New sequential plugin
SeqWakeDebugPlugin, adding wake centres and velocity vectors to flow animations, for debugging
- New sub package
- Examples:
- New example:
dyn_wakes, similar totimelinesbut with dynamic wakes andOnePointFlowTimeseriesinflow
- New example:
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v1.0
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES -
- Removing
plotly_helpers.pyfromutils - Updating dependencies
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.8.2
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES -
- Updated requirements.txt
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.8.1
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - v0.8
Starting with this version, the previous foxes.opt sub-package is is now its own package at github, pypi and conda-forge: foxes-opt, with its own documentation.
If you are planning to run wind farm optimizations, install it via
console
pip install foxes[opt]
or
console
pip install foxes-opt
or
console
conda install foxes-opt -c conda-forge
Compared to older versions, replace foxes.opt by foxes_opt in all your scripts - then everything should just run as before.
If you are not running any optimizations, just don't do any of the above and enjoy the lighter version with less dependencies.
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.8
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.4.25
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.4.24
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.4.23
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.4.22
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.4.21
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.4.20
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.4.19
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.4.18
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.4.17
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.4.16
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.4.15
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.4.14
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.4.13
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.4.12
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.4.11
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.4.10
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.4.9
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.4.8
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.4.7
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.4.6
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.4.5
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.4.4
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.4.3
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - v0.7.4
- Input:
- Adding output options to
windio
- Adding output options to
- Output:
- New output
StateTurbineTable, exporting state-turbine data to NetCDF
- New output
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.7.4
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - v0.7.3.1
- Dependencies:
- Restriction to
numpy<2due to an incompatibility of dependecyautograd
- Restriction to
- Core:
- New model type
GroundModel, which manages the call of the partial wakes models in case of farm calculations and wake models in case of point calculations
- New model type
- Inputs:
- New height dependent states:
MultiHeightNCStatesandMultiHeightNCTimeseries, same asMultiHeightStatesandMultiHeightTimeseries, but starting from a netCDF file orxarray.Datasetinput
- New height dependent states:
- Models:
- New wake model helper class
WakeK, handling thek,ka,kbchoices for all wake models - New ground model
NoGround, plain call of the partial wakes and wakes models - New ground models
WakeMirrorandGroundMirror, replacing the equivalent former wake models. Realizing wake reflection at horizontal planes. - New induction model
VortexSheet, which is a radial implementation of the centreline deficit model in Medici 2012 https://doi.org/10.1002/we.451
- New wake model helper class
- Utils:
- New utility
WakeKFactoryclass, enabling the choice of eitherkorka, kbdirectly from the wake model names in the model book.
- New utility
- Inputs:
- Work on
windio, but unfinished on their side when it comes to analysis requests
- Work on
- Examples:
- Example
multi_height: Now based onMultiHeightNCTimeseries
- Example
- Bug fixes:
- Fox for bug with wake mirrors and partial wakes
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.7.3.1
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - v0.7.2
- Bug fixes:
- Fix for bug with
Factorythat confused templatesA_B<..>type withB<..>type templates
- Fix for bug with
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.7.2
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - v0.7.1
- Models:
- Improved
ModelBook, adding some smartness thanks to model factories. Parameters are parsed from model name strings that follow given patterns. E.g.,Jensen_<superposition>_k<k>represents allJensenWakemodels with any superposition model choice and and choice of k, andJensen_linear_k0075would be an accepted name choice by the user. - New wind speed superpositions
WSLinearLocal,WSQuadraticLocal,WSPowLocal,WSMaxLocal: Adding dimensionless wind deficits, and then evaluating the overall effect for the ambient results at evaluation points (no scaling with rotor effective data)
- Improved
- Utils:
- New utility
Factory, creating class instances from selections of allowed parameter choises - New utility
FDict, a dictionary that supports factories
- New utility
- Bug fixes:
- Bug fixed with
TurbOParkIX, that prevented it from running
- Bug fixed with
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.7.1
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] over 1 year ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.0.6
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] almost 2 years ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.0.5
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] almost 2 years ago
FOXES - https://github.com/FraunhoferIWES/foxes/releases/tag/v0.7.0.4-trigger
Scientific Software - Peer-reviewed
- Python
Published by github-actions[bot] almost 2 years ago
FOXES -
testing new pypi workflow
Scientific Software - Peer-reviewed
- Python
Published by SchmJo almost 2 years ago
FOXES - v0.7
- Python versions:
- Now supporting Python 3.12
- Documentation:
- New page
Models, summarizing and explaining the foxes model choices.
- New page
- Core:
- Speed-up in comparison with version 0.6.x, by internally handling all turbine data in downwind order, and then translating it back to farm order once computations are complete.
- Internally, all point evaluation data is now translated into so called "target" data, where each target is understood as being composed of a certain number of target points. During wake computations, these are the points per rotor (as defined by partial wakes models). For computations at user given points, the points are interpreted as targets with a single target point each. Final point output data is then given to the user again with point index coodinates, i.e., in the same format as in previous versions.
- New data classes:
MData,FData,TData, all derived from the foxesDataclass. These specialize model, farm and target data, respectively, during model calculations.
- Algorithms:
- All algorithm constructors now take
farm, states, wake_modelsas the first three arguments. If no model book is given, the defaultModelBook()will be used. - Partial wakes are now chosen either
- by a dictionary, which maps wake model names to model choices (or default choices, if not found),
- or by a list, where the mapping to the wake models is in order of appearance,
- or by a string, in which case all models are either mapped to the given model, or, if that fails with
TypeError, to their defaults, - or by
None, which means all models are mapped to the default choice.
- All algorithm constructors now take
- Partial wakes:
- New
PartialSegregatedabstract model, from which thePartialGridmodel is derived. Segregated models now average background results and wake deltas separatly, and then add the results. Notice that with the choice ofRotorPointspartial wakes, the mathematically correct average over a discretized rotor is calculated. This is more accurate, but it may be slower than some models (e.g. forPartialAxiWakemodels) or not applicable for some rotor choices (e.g. theLevelRotor, where a wake average makes no sense).
- New
- Outputs:
- New output
RotorPointPlot, creating rotor point plots.
- New output
- Notebooks:
- New notebook
rotor_models.ipynb, visualizing rotor points. - New notebook
partial_wakes.ipynb, verifying partial wakes models.
- New notebook
- Bug fixes:
- Various fixes here and there.
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.7
Scientific Software - Peer-reviewed
- Python
Published by SchmJo almost 2 years ago
FOXES - v0.6.2
- Models:
- New partial wakes model:
PartialCentre, evaluating wake deltas at the rotor centre point only
- New partial wakes model:
- Inputs:
- New farm layout input:
add_random, adds turbines at random positions, respecting a minimal distance - New states creation:
random_timseries_data, creates uniform random timeseries data
- New farm layout input:
- Utils:
- New function
random_xy_square, generates random xy positions with minimal distance
- New function
- Examples:
- New example:
random_timeseries, computes a random farm in a random timeseries. Both sizes are defined by user input
- New example:
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.6.2
Scientific Software - Peer-reviewed
- Python
Published by SchmJo almost 2 years ago
FOXES - v0.6.1
- Input:
- New ambient states:
TabStates, single tab-file input
- New ambient states:
- Data
- New static data:
winds100.tab, an example tab file
- New static data:
- Examples:
- New example:
tab_file, demonstrating the usage of theTabStates
- New example:
- Bug fixes:
- Bug fixed for
RankineHalfBodyturbine induction model that produced wrong results for wind directions unequal 270 degrees
- Bug fixed for
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.6.1
Scientific Software - Peer-reviewed
- Python
Published by SchmJo about 2 years ago
FOXES - v0.6
- Dependencies:
- Replacing dependency on
plotlyby dependency onwindrose, since the latter is lighter
- Replacing dependency on
- Core:
- This version introduces
AxialInductionModelclasses, computing the axial induction factora(ct)
- This version introduces
- Wake models:
- Reformulating
betain terms of induction inBastankhah2014andCrespoHernandez - New default:
Bastankhah2014,Bastankhah2016,TurbOParkandTurbOParkIXnow with default axial induction modelMadsen - New induction wake models:
Rathmann,SelfSimilarandSelfSimilar2020, for blockage modelling - Introducing
WakeMirrorwrapper around wake models, modelling wake reflection from ground or horizontal plane via virtual mirrored turbines
- Reformulating
- Wake frames:
- Renaming
StreamlinestoStreamlines2D, no changes in model book names
- Renaming
- Axial induction models:
- New induction model:
BetzAxialInduction, the classica = 0.5(1 - sqrt(1-ct))relation. In the model book this is calledBetz. - New induction model:
MadsenAxialInduction, a third-order polynomial approximation ofa(ct). In the model book this is calledMadsen.
- New induction model:
- Output:
- Improved:
FlowPlots2Dnow includes an option for indicating the rotor disk by a colored line - Improved:
RosePlotOutputno longer depends onplotly, but on the new utilityTabWindroseAxes
- Improved:
- Utils:
- New:
TabWindroseAxes, a derivative ofwindrose.WindroseAxesfor input data that is based on bins with weights (and not timeseries)
- New:
- Notebooks:
- New:
blockage_comparison.ipynb, comparing four turbine induction models
- New:
- Bug fixes:
- Fix for bug in
Streamlines2Dwhen used in combination withWakeMirror
- Fix for bug in
- Tests:
- Fresh
flappyv0.6.2 test data for all Bastankhah and CrespoHernandez wakes, also without thesbetalimitation
- Fresh
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.6
Scientific Software - Peer-reviewed
- Python
Published by SchmJo about 2 years ago
FOXES - v0.5.2.1
- Bug fixes:
- Bugs fixed that messed up the colorbar and the title in animations
- Notebooks:
- Improved animations in
timelines.ipynbandsequential.ipynb
- Improved animations in
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.5.2.1
Scientific Software - Peer-reviewed
- Python
Published by SchmJo about 2 years ago
FOXES - v0.5.2
- Algorithms:
- Improved
Downwind: Now optional arguments that allow calculation of subsets in calcfarm and calcpoints, e.g. a selection of states
- Improved
- Output:
- New output:
PointCalculator, a wrapper for the calc_points function of the algorithm - New output:
SliceData, creating arrays, DataFrames or Datasets from 2D slices - Improved
FlowPlots2D: Completely refactored, data based onSliceData. New option for creating figures for subsets of states only.
- New output:
- Vertical profiles:
- Now optional support for
ustarinput data instead of reference data
- Now optional support for
- Turbine types:
- Fix for
Cp-based models with interpolation within sparse input data
- Fix for
- Wake models:
- Renaming:
BastankhahWakeclass now calledBastankhah2014. Models in the model book are also renamed fromBastankhahtoBastankhah2014 - Renaming:
PorteAgelWakeclass now calledBastankhah2016. Models in the model book are also renamed fromPorteAgeltoBastankhah2016 - Renaming:
RHBclass now calledRankineHalfBody - Fix:
RankineHalfBodyno longer shows a jump at the rotor disc, but a small region of constant deficit instead - New default values:
Bastankhah2014now has default valuesbeta_factor=0.2(previously 0.25). Models with the previous value are available in the model book asBastankhah025etc.
- Renaming:
- Wake superpositions:
- Restructured: Now simplified classes for WS or TI superposition only (less general but simpler), e.g.
WSLinearorTIQuadratic, etc. Also in the model book the models are now calledws_linearorti_quadratic, etc.
- Restructured: Now simplified classes for WS or TI superposition only (less general but simpler), e.g.
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.5.2
Scientific Software - Peer-reviewed
- Python
Published by SchmJo about 2 years ago
FOXES - v0.5.1
- Dependencies:
- The
windiopackage is now an optional dependency, to be installed by hand if needed. This is due to windio being not available at conda-forge
- The
- Notebooks:
- New notebook:
sequential.ipynb, creating an animation showing state-by-state wake propagation
- New notebook:
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.5.1
Scientific Software - Peer-reviewed
- Python
Published by SchmJo about 2 years ago
FOXES - v0.5
- Dependencies:
- Dropping support for Python 3.7, due to
netcdf4dependency
- Dropping support for Python 3.7, due to
- Core:
- Simplified model initialization/finalization. Removing the
keep_modelsidea, instead all models are now kept in the algorithm's idata memory until finalization. Adding a new model now mostly requires that thesub_modelsand theload_datafunctions are overloaded, if applicable. Theinitializeandfinalizeonly need to be addressed explicitly in non-standard cases.
- Simplified model initialization/finalization. Removing the
- Algorithms:
- New algorithm:
Sequential, step wise evaluation of states for simulation environments that do not support chunking - Improved:
Iterativenow supports under-relaxation of parameters
- New algorithm:
- Output:
- New sub package:
output.flow_plots_2dis now a package instead of a module
- New sub package:
- Models:
- This version introduces induction models for modelling blockage effects.
- New induction model:
RHB, the classic Rankine-half-body model.
- Examples:
- New example:
sequential, demonstrating the usage of the sequential algorithm - New example:
induction_RHB, showing the Rankine-half-body model for blockage
- New example:
- Notebooks:
- New notebook:
blockage.ipynb, demonstrating how to apply the RHB induction model to a wind farm
- New notebook:
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.5
Scientific Software - Peer-reviewed
- Python
Published by SchmJo about 2 years ago
FOXES - v0.4.5
- Models:
- New rotor model:
LevelRotor, calculates the REWS from different height levels - New turbine type:
WsTI2PCtFromTwo, reads turbulence-dependent ct- and power curves
- New rotor model:
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.4.5
Scientific Software - Peer-reviewed
- Python
Published by SchmJo over 2 years ago
FOXES - v0.4.4.2-test
Testing publishing to pypi via pypi.yml
Scientific Software - Peer-reviewed
- Python
Published by SchmJo over 2 years ago
FOXES - v0.4.4-test
Testing publication workflow pypi.yml
Scientific Software - Peer-reviewed
- Python
Published by SchmJo over 2 years ago
FOXES - v0.4.3.1-test
Testing publication workflow pypi.yml
Scientific Software - Peer-reviewed
- Python
Published by SchmJo over 2 years ago
FOXES - v0.4.3
- Output:
- Improved:
RosePlotOutputandStatesRosePlotOutputnow optionally return the binned data
- Improved:
- Models:
- New vertical profile:
DataProfile, data based profile from file or pandas DataFrame - Improved ti superposition: Now supporting n-th power superposition
- Improved wake model
TurbOParkIX: New option for consideration of all wakes in ti integral
- New vertical profile:
- Bug fixes:
- Fixed bug with
windioinput that resulted in wrong wind rose weights - Fixed bug with
FlowPlots2Dwith value bounds in contour plots
- Fixed bug with
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.4.3
Scientific Software - Peer-reviewed
- Python
Published by SchmJo over 2 years ago
FOXES - v0.4.2
- Bug fixes:
- Fix of bug that slowed down
TurbOParkIXby considering all TI wakes instead of only source turbine wake during integration - Fix of bug that prevented plotly wind roses to be shown in the documentation
- Fix in docu that excluded the algorithm models from the API
- Fix of bug that slowed down
- Output:
- New:
Animator, creates animations based on generators that yield lists of artists
- New:
- Examples:
- Improved:
timelinesnow includes turbine REWS signal in animations
- Improved:
- Notebooks:
- Improved:
timelines.ipynbnow includes turbine REWS signal in animations
- Improved:
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.4.2
Scientific Software - Peer-reviewed
- Python
Published by SchmJo over 2 years ago
FOXES - v0.4.1
- Algorithms:
- Improved:
Iterativenow iterates through outer loop instead of within chunk
- Improved:
- Models:
- New wake frame:
Timelines, propagates wakes for spatially uniform time series
- New wake frame:
- Tests:
- New test:
consistency/iterative, checks if iterative algorithm gives same result
- New test:
- Examples:
- New example:
timelines, demonstrates the usage of theTimelineswake frame - Improved: All examples were update for the correct usage of the
DaskRunner
- New example:
- Notebooks:
- New notebook:
timelines.ipynb, showing how to use theTimelineswake frame in a notebook
- New notebook:
- Data:
- New states data
timeseries_100.csv.gz, a short timeseries with timestep 1 min, varying wind direction only
- New states data
- Output:
- Improved:
FlowPlots2Dnow has the optional argumentrunner, for computing plots with the chosen parallelization settings
- Improved:
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.4.1
Scientific Software - Peer-reviewed
- Python
Published by SchmJo over 2 years ago
FOXES - v0.4.0
- Models:
- Improved: New option to specify wake growth variable name, such that multiple
kTImodels could be used, resulting in differentk's for different wake models - New turbine model:
LookupTable, interpolates data based on a multi-dimensional lookup table
- Improved: New option to specify wake growth variable name, such that multiple
- Utils:
- Improved
DaskRunner: Now supports clusters that run the Slurm queueing system
- Improved
- Examples:
- New:
timeseries_slurm, shows how to run foxes on a HPC with Slurm queueing system
- New:
- Optimization:
- Improved:
foxes.optis now able to optimize for flow variables (at selected points in space) in addition to turbine variables
- Improved:
- Documentation:
- Improved API docu, now based on
python-apigen
- Improved API docu, now based on
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.4.0
Scientific Software - Peer-reviewed
- Python
Published by SchmJo over 2 years ago
FOXES - v0.3.5-alpha
- General:
- Moving identifier-type entries from
foxes.variablestofoxes.constants
- Moving identifier-type entries from
- Models:
- New wake superposition model
ProductSuperposition, computing factorized wake deltas - New turbine model:
RotorCentreCalc, calculates data at rotor centre, irrespective of rotor model
- New wake superposition model
- Bug fixes:
- Bug fixed that caused problems when restarting the
SectorManagementturbine model, e.g. for flow plots
- Bug fixed that caused problems when restarting the
- Documentation:
- Completely new style, fixing issues with incomplete API entries
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.3.5
Scientific Software - Peer-reviewed
- Python
Published by SchmJo over 2 years ago
FOXES - v0.3.4-alpha-doi
Triggering DOI generation by zenodo
Scientific Software - Peer-reviewed
- Python
Published by SchmJo almost 3 years ago
FOXES - v0.3.4-alpha
- Installation:
foxesnow supports Python 3.11
- Input:
- New layout input option:
add_from_df, adding turbines from a pandas DataFrame - New interface to windIO case yaml files
- New layout input option:
- Turbine types:
- New turbine type
CpCtFile, reads CP and CT data from file or pandas DataFrame - New turbine type
CpCtFromTwo, reads CP and CT data from two files or pandas DataFrames - Improved: Turbine types now calculate
P_nominalas maximum, if not explicitely given
- New turbine type
- Constants:
- Introducing
P_UNITS, used in turbine types and output evaluation
- Introducing
- States:
- Bug fixed in
FieldDataNCwith loading multiple files
- Bug fixed in
- Core:
- Improved
DataCalcModel: Now cleaner treatment of runs withprogress_bar=False. Also now slimmer fordistributedscheduler
- Improved
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.3.4
Scientific Software - Peer-reviewed
- Python
Published by SchmJo almost 3 years ago
FOXES - v0.3.3-alpha
- Utils:
- Now
geopandas_helperscan handle interior areas
- Now
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.3.3
Scientific Software - Peer-reviewed
- Python
Published by SchmJo almost 3 years ago
FOXES - v0.3.2-alpha
- Bug fixes:
- Fix for bug in
FarmResultsEvalthat affected time range calculations under Windows - Bug fixes for
FarmResultsEvalwith time series data
- Fix for bug in
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.3.2
Scientific Software - Peer-reviewed
- Python
Published by SchmJo almost 3 years ago
FOXES - v0.3.1-alpha
- Input states:
- Improved:
FieldDataNCnow supports states subset selection
- Improved:
- Wake frames:
- Improved:
Streamlinesnow with maximal length option
- Improved:
- Turbine models:
- New:
Calculator, simple variable calculation via user function
- New:
- Opt:
- Now two abstract problems in core:
FarmOptProblemandFarmVarsProblem, the latter invokes theSetFarmVarsturbine model - New opt problem:
RegularLayoutOptProblem, searches for a regular grid layout - New 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 geometrical - New opt problem:
GeomLayoutGridded, a purely geometrical optimization on a gridded background
- Now two abstract problems in core:
- Examples:
- New in
foxes.opt: Examplelayout_regular_grid, demonstrates regular grid layout optimization - New in
foxes.opt: Examplegeom_reggrids, purely geometrical regular layout optimization
- New in
- Utils:
- New functions for shape file handling:
read_shp,shp2csv,read_shp_polygons
- New functions for shape file handling:
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.3.1
Scientific Software - Peer-reviewed
- Python
Published by SchmJo almost 3 years ago
FOXES - 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
- New:
- Input:
- Improved:
FieldDataNCnow accepts xarray Dataset or file pattern str as input - New:
ShearedProfile, Vertical WS profile can be determined with shear exponent
- Improved:
- Output:
- Improved:
FlowPlots2Dreplacing horizontal/vertical --> xy, xz, yz, more intuitive
- Improved:
- Wake models:
- New:
TurbOParkIX, integrates wake corrected TI along centreline for wake width sigma.
- New:
- Wake frames:
- Improved: All yawed wake frames now also support centreline data integration
- Notebooks:
- New:
overview.ipynb, summarizes the setup steps
- New:
- Bug fixes:
- Fix for bug in
TurbOParkwake model: Brackets in Eq. (4) were wrong - Fix for bug with long streamlines
- Fix for bug in
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.3.0
Scientific Software - Peer-reviewed
- Python
Published by SchmJo about 3 years ago
FOXES - v0.2.6-alpha
- Output:
- Improved:
FarmResultsEvalcan now handle NaN data in Einstein sums - Improved:
ResultsWritercan now also write turbine names
- Improved:
- Turbine models:
- New:
TableFactors, multiplies variables with data from a two dimensional table - New:
YAW2YAWM, calculates yaw deltas from absolute yaw and wind direction - New
YAWM2YAW, calculates absolute yaw from yaw deltas and wind direction - Generalized:
kTI, now includes optional offsetkb
- New:
- Turbine types:
- Changed: Now yaw correction of
PandCTswitched on by default
- Changed: Now yaw correction of
- Point models:
- New:
TKE2TI, calculates turbulence intensity from TKE
- New:
- Wake models:
- New:
PorteAgel, calculates wakes based on the Bastankhah PorteAgel 2016 wake model
- New:
- Wake frames:
- New:
YawedWake, bends wakes in yawed conditions
- New:
- Wake superposition models:
- Improved:
LinearSuperposition, now includes options for lower/higher limits of total wake deltas
- Improved:
- Examples:
- New:
compare_wakes, compares wake models along horizontal lines - New:
yawed_wake, demonstrates wake bending by yawing a rotor
- New:
- Notebooks:
- New:
yawed_wake.ipynb, demonstrates wake bending by yawing a rotor
- New:
- Bug fixes:
- Fix for bug with
ExtendedStates, now it is actually working - Fix for bug with wake width in
CrespoHernandezTIWake - Fix for bug with YAW and WD when using the
YAWM2YAWturbine model - Fix for bug in
TurbOParkwake model, double counting constant offset in sigma
- Fix for bug with
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.2.6
Scientific Software - Peer-reviewed
- Python
Published by SchmJo about 3 years ago
FOXES - v0.2.5-alpha
- Core:
- New:
ExtendedStates, allows for adding point data models to states
- New:
- Input:
- Improved:
FieldDataNC, now with support for spatially uniform variables
- Improved:
- Turbine types:
- New:
WsRho2PCtTwoFiles, air density dependent power and ct curves
- New:
- Turbine models:
- New:
SectorManagement, sets variables by range rules on other variables
- New:
- Point models:
- New:
SetUniformData, set uniform variables (optionally state dependent)
- New:
- Examples:
- New:
sector_management, demonstrates how to model wind sector management
- New:
- Notebooks:
- New:
sector_man.ipynb, demonstrates how to model wind sector management - New:
data.ipynb, lists and shows the static data
- New:
- Bug fixes:
- Fix for bug with option
col_modelsin farm layout from csv
- Fix for bug with option
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.2.5
Scientific Software - Peer-reviewed
- Python
Published by SchmJo about 3 years ago
FOXES - v0.2.4-alpha
- Bug fixes
- Hotfix for bug in
TurbineTypeCurvesoutput
- Hotfix for bug in
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.2.4)
Scientific Software - Peer-reviewed
- Python
Published by SchmJo over 3 years ago
FOXES - v0.2.3-alpha
- Input states
- Improved:
SingleStateStatesnow supports profiles
- Improved:
- Turbine models
- New model
PowerMask: Derates or boosts a turbine
- New model
- Examples
- New:
power_mask, demonstrates derating and boost
- New:
- Utils
- New:
cubic_roots, solves a cubic equation
- New:
- Output
- New:
StateTurbineMap, creates heat maps for state-turbine data - New:
TurbineTypeCurves, creates power and thrust curve plots - Improved:
FarmLayoutOutputnow supports scatter color by variable
- New:
- Documentation
- Adding forgotten
foxes.optto API
- Adding forgotten
- Notebooks:
- Now including results as colored layout plots
- New notebook:
wind_rose.ipynb, demonstrating how to calculate wind roses - New notebook:
power_mask.ipynb, showing derating and boost via a power mask
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.2.3
Scientific Software - Peer-reviewed
- Python
Published by SchmJo over 3 years ago
FOXES - v0.2.2-alpha
- Bug fixes
- Bug fixed in
MultiHeightStatesfor wind veer cases
- Bug fixed in
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.2.2
Scientific Software - Peer-reviewed
- Python
Published by SchmJo over 3 years ago
FOXES - v0.2.1-alpha
- Input:
- New input:
MultiHeightStatesandMultiHeightTimeseries, for input data at several height levels, e.g. WRF results at one point
- New input:
- Output:
- New output:
FarmResultsEval, calculates sum, mean, min, max over states or turbines for the whole wind farm - New output:
ResultsWriter, writes farm results or pandas data to csv file - Renaming:
AmbientRosePlotOutputis now calledStatesRosePlotOutput
- New output:
- Notebooks:
- New notebook:
multi_height.ipynb, demonstrating the usage of multi-height wind input data
- New notebook:
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.2.1
Scientific Software - Peer-reviewed
- Python
Published by SchmJo over 3 years ago
FOXES - 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.
- New sub package:
- Models
- New turbine model:
Thrust2Ct, calculates ct from thrust values - New turbine type:
NullType, a turbine type with only rotor diameter and hub height data - Renamed
PCtSingleFilesintoPCtTwoFiles
- New turbine model:
- Output
- New output:
WindRoseOutput, providing a plotly figure that shows a rose-type histogram - New output:
AmbientWindRoseOutput, providing rose-type plotly figures of ambient data (no wake calculation involved)
- New output:
- Algorithms
- Improved
Downwind: Now with option for ambient runs (no wakes)
- Improved
- 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
- New utility:
- Examples
- Introducing two sub-folders of examples:
foxesandfoxes.opt - New example:
wind_rose, calculation of wind rose states data - New example:
layout_single_state, wind farm layout optimization for a single wind state - New example:
layout_wind_rose, wind farm layout optimization for wind rose states
- Introducing two sub-folders of examples:
- Notebooks
- New notebook:
layout_opt.ipynb, demonstrating a simple layout optimization case
- New notebook:
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.2.0
Scientific Software - Peer-reviewed
- Python
Published by SchmJo over 3 years ago
FOXES - v0.1.4-alpha
- Fixes
- Static data: Adding missing data
wind_rotation.ncto manifest
- Static data: Adding missing data
- Models
- New wake model added:
TurbOParkWakefrom Orsted - New turbine type added:
PCtSingleFiles, reads power and thrust curves from two separate files
- New wake model added:
Full Changelog: https://github.com/FraunhoferIWES/foxes/commits/v0.1.4
Scientific Software - Peer-reviewed
- Python
Published by SchmJo over 3 years ago
FOXES - v0.1.3-alpha
- Adding docu: https://fraunhoferiwes.github.io/foxes.docs/index.html
Scientific Software - Peer-reviewed
- Python
Published by SchmJo over 3 years ago
FOXES - v0.1.2-alpha
- Adding support for Python 3.9, 3.10
Scientific Software - Peer-reviewed
- Python
Published by SchmJo over 3 years ago
FOXES - 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
Scientific Software - Peer-reviewed
- Python
Published by SchmJo over 3 years ago
FOXES - 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
Scientific Software - Peer-reviewed
- Python
Published by SchmJo over 3 years ago