Metadata-Version: 2.4
Name: wecopttool
Version: 3.1.0
Summary: WEC Design Optimization Toolbox
Author: Sandia National Laboratories
License: GNU General Public License v3 (GPLv3)
Project-URL: Documentation, https://sandialabs.github.io/WecOptTool/
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: NOTICE
Requires-Dist: numpy<2.0,>=1.20
Requires-Dist: scipy
Requires-Dist: xarray
Requires-Dist: autograd
Requires-Dist: capytaine
Requires-Dist: joblib
Requires-Dist: wavespectra>=4.0
Requires-Dist: netcdf4
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: sphinx<8.2.0; extra == "dev"
Requires-Dist: sphinxcontrib-bibtex; extra == "dev"
Requires-Dist: sphinx_rtd_theme; extra == "dev"
Requires-Dist: jupyter; extra == "dev"
Requires-Dist: nbsphinx; extra == "dev"
Requires-Dist: pandoc; extra == "dev"
Requires-Dist: imageio; extra == "dev"
Requires-Dist: pygifsicle; extra == "dev"
Requires-Dist: jinja2; extra == "dev"
Requires-Dist: nbconvert; extra == "dev"
Provides-Extra: geometry
Requires-Dist: matplotlib; extra == "geometry"
Requires-Dist: meshio; extra == "geometry"
Requires-Dist: gmsh; extra == "geometry"
Requires-Dist: pygmsh; extra == "geometry"
Dynamic: license-file

[![Test-WecOptTool](https://github.com/sandialabs/WecOptTool/actions/workflows/push.yml/badge.svg)](https://github.com/sandialabs/WecOptTool/actions/workflows/push.yml)
[![Coverage Status](https://coveralls.io/repos/github/sandialabs/WecOptTool/badge.svg?branch=main)](https://coveralls.io/github/sandialabs/WecOptTool?branch=main)

# WecOptTool
The Wave Energy Converter Design Optimization Toolbox (WecOptTool) allows users to perform wave energy converter (WEC) device design optimization studies with constrained optimal control.

**NOTE:** If you are looking for the WecOptTool code used in previous published work (MATLAB version) please see [WecOptTool-MATLAB](https://github.com/SNL-WaterPower/WecOptTool-MATLAB).

## Project Information
Refer to [WecOptTool documentation](https://sandialabs.github.io/WecOptTool/) for more information, including project overview, tutorials, theory, and API documentation.

## Getting started
**If you are brand new to Python and/or want detailed installation instructions, [click here](https://github.com/sandialabs/WecOptTool/blob/main/INSTALLATION.md).**

WecOptTool requires Python >= 3.8. Python 3.11 & 3.12 are supported.
It is strongly recommended you create a dedicated virtual environment (e.g., using [`conda`](https://www.anaconda.com/), [`mamba`](https://mamba.readthedocs.io/en/latest/), `venv`, etc.) before installing WecOptTool.

From your dedicated environment, you can install WecOptTool via `conda`, `pip`, or `mamba`:

**Option 1** - using `Conda`:

```bash
conda install -c conda-forge wecopttool
```

**Option 2** - using `pip` (requires Fortran compilers on your system):

```bash
pip install wecopttool
```

**Option 3** - using `Mamba`:

```bash
mamba install wecopttool
```

**Geometry module and tutorials**

To use our geometry examples, including for running the tutorials, you will need to install some additional dependencies. 
For the tutorials you will also need to install `jupyter`. 

```bash
pip install wecopttool[geometry] jupyter
```

or on a Mac (`Zsh` shell)

```bash
pip install wecopttool\[geometry] jupyter
```

## Tutorials
The tutorials can be found in the `examples` directory and are written as [Jupyter Notebooks](https://jupyter.org/).
To run the tutorials, first download the notebook files and then, from the directory containing the notebooks, run `jupyter notebook`.
Using `git` to obtain the notebooks this can be done by running

```bash
git clone https://github.com/sandialabs/WecOptTool.git
cd WecOptTool/examples
jupyter notebook
```

## Getting help
To report bugs, use WecOptTool's [issues page](https://github.com/sandialabs/WecOptTool/issues).
For general discussion, use WecOptTool's [discussion page](https://github.com/sandialabs/WecOptTool/discussions)

## Contributing
If you are interested in contributing to WecOptTool, see our [contribution guidelines](https://github.com/sandialabs/WecOptTool/blob/main/.github/CONTRIBUTING.md).
