Metadata-Version: 2.4
Name: LayOpt
Version: 0.0.1a1
Summary: Adaptive topology optimization of fail-safe trusses
Project-URL: Homepage, https://github.com/ICAIR-Sheffield/LayOpt
Project-URL: Bug Tracker, https://github.com/ICAIR-Sheffield/LayOpt/issues
Project-URL: Discussions, https://github.com/ICAIR-Sheffield/LayOpt/discussions
Project-URL: Changelog, https://github.com/ICAIR-Sheffield/LayOpt/releases
Author-email: Helen Fairclough <helen.fairclough@sheffield.ac.uk>, Andrew Fisher <andrew.fisher@sheffield.ac.uk>, Neil Shephard <n.shephard@sheffield.ac.uk>
License-Expression: GPL-3.0-or-later
License-File: COPYING.md
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering
Classifier: Typing :: Typed
Requires-Python: >=3.12
Requires-Dist: art
Requires-Dist: clarabel
Requires-Dist: cvxpy
Requires-Dist: loguru
Requires-Dist: matplotlib
Requires-Dist: numpy
Requires-Dist: pandas
Requires-Dist: pandas-stubs
Requires-Dist: pydantic
Requires-Dist: ruamel-yaml
Requires-Dist: schema
Requires-Dist: scipy
Requires-Dist: shapely
Requires-Dist: tqdm
Requires-Dist: tzdata
Description-Content-Type: text/markdown

# LayOpt

[![pre-commit.ci status][pre-commit-badge]][pre-commit-link] [![Actions Status][actions-badge]][actions-link]
[![Documentation Status][rtd-badge]][rtd-link]

<!-- [![PyPI version][pypi-version]][pypi-link] -->
<!-- [![Conda-Forge][conda-badge]][conda-link] -->
<!-- [![PyPI platforms][pypi-platforms]][pypi-link] -->

[![GitHub Discussion][github-discussions-badge]][github-discussions-link]

[![Coverage][coverage-badge]][coverage-link]

[LayOpt][layopt] is a Python package for topology optimisation of fail-safe trusses developed by the [Integrated Civil
and Infrastructure Research Centre][icair] at [The University of Sheffield][tuos]. For more detailed information about
the software please see our [website][layopt].

## Installation

## Virtual Environment

It is recommended that you use a [Python Virtual Environment][pyvenv] to install LayOpt. There are many options
available but a good choice, used in the development of LayOpt, is [uv][uv]. Create a directory for your work and after
[installing uv][uv_install] create a virtual environment.

```shell
# Create a directory
mkdir LayOpt
# Change directory
cd LayOpt
# Create a virtual Environment
uv venv
```

### PyPI

Layopt is available on [PyPI][pypi-link]. Ideally you should use a Python Virtual Environment
(see above).

```shell
# Plain virtual environment
pip install layopt
# uv virtual environment
uv pip install layopt
```

#### Pre-releases

If you wish to try pre-releases, denoted by suffixes of the form `a#` for alpha releases, `b#` for beta and `rc#` for
release candidates you should include the specific version when calling `pip`. For example to install the `0.1.0a1`
(first alpha release of version 0.1.0) you would use...

``` shell
# Plain virtual environment
pip install layopt==0.1.0a1
# uv virtual environment
uv pip install layopt==0.1.0a1
```

### GitHub

You can use [`pip`][pip] to install the package directly from GitHub. This allows you to install a specific branch or
commit to test out new functionality that is under development. In your Virtual Environment run...

```shell
# Install from HEAD of main branch
pip install git@https://github.com/ICAIR-Sheffield/LayOpt
# Install a specific <branch>
pip install git@https://github.com/ICAIR-Sheffield/LayOpt.git@<branch>
```

### Development

Contributions are welcome. If you are considering contributing to the development of LayOpt and are not a collaborator
of the repository then you should fork to your account first and then clone from there.

To find out how to contribute please see our [Contributing page][layopt_contributing]

## Documentation

We use the [Material for Mkdocs][material_mkdocs] static site generator to build a website. This is deployed on GitHub Pages.

- [GitHub Pages][gh-pages-link]

## Citing

To cite this software please refer to the `CITATION.cff` included in this repository.

## Publications

- Fairclough H.E., He L., Asfaha T.B., Rigby S. (2023) Adaptive topology optimization of fail-safe truss structures
  _Structural and Multidisciplinary Optimization_ 66(7)148
  [doi:10.1007/s00158-023-03585-x](https://www.doi.org/10.1007/s00158-023-03585-x)
- He L., Gilbert M., Song X. (2019) A Python script for adaptive layout optimization of trusses _Structural and
  Multidisciplinary Optimization_ 60(2) 835-847
  [doi:10.1007/s00158-019-02226-6](https://www.doi.org/10.1007/s00158-019-02226-6)

<!-- prettier-ignore-start -->
[actions-badge]:            https://github.com/ICAIR-Sheffield/LayOpt/workflows/CI/badge.svg
[actions-link]:             https://github.com/ICAIR-Sheffield/LayOpt/actions
<!-- [conda-badge]:              https://img.shields.io/conda/vn/conda-forge/LayOpt -->
<!-- [conda-link]:               https://github.com/conda-forge/LayOpt-feedstock -->
[coverage-badge]:           https://codecov.io/github/ICAIR-Sheffield/LayOpt/branch/main/graph/badge.svg
[coverage-link]:            https://codecov.io/github/ICAIR-Sheffield/LayOpt
[gh-pages-link]:            https://ICAIR-Sheffield.github.io/LayOpt
[github-discussions-badge]: https://img.shields.io/static/v1?label=Discussions&message=Ask&color=blue&logo=github
[github-discussions-link]:  https://github.com/ICAIR-Sheffield/LayOpt/discussions
[icair]:                    https://icair.ac.uk/
[layopt]:                   https://icair-sheffield.github.io/LayOpt/
[layopt_contributing]:      https://icair-sheffield.github.io/LayOpt/contributing/
[material_mkdocs]:          https://squidfunk.github.io/mkdocs-material/
[pip]:                      https://pip.pypa.io/en/stable/installation/
[pre-commit-badge]:         https://results.pre-commit.ci/badge/github/ICAIR-Sheffield/LayOpt/main.svg
[pre-commit-link]:          https://results.pre-commit.ci/latest/github/ICAIR-Sheffield/LayOpt/main
[pypi-link]:                https://pypi.org/project/LayOpt/
<!-- [pypi-platforms]:           https://img.shields.io/pypi/pyversions/LayOpt -->
<!-- [pypi-version]:             https://img.shields.io/pypi/v/LayOpt -->
[pyvenv]:                   https://realpython.com/python-virtual-environments-a-primer/
[rtd-badge]:                https://readthedocs.org/projects/LayOpt/badge/?version=latest
[rtd-link]:                 https://LayOpt.readthedocs.io/en/latest/?badge=latest
[tuos]:                     https://www.sheffield.ac.uk/
[uv]:                       https://docs.astral.sh/uv/
[uv_install]:               https://docs.astral.sh/uv/getting-started/installation/

<!-- prettier-ignore-end -->
