Metadata-Version: 2.4
Name: artist-csp
Version: 2.0.0
Summary: AI-enhanced Differentiable Ray Tracer for Irradiation Prediction in Solar Tower Digital Twins
Project-URL: Homepage, https://github.com/ARTIST-Association/ARTIST
Project-URL: Issues, https://github.com/ARTIST-Association/ARTIST/issues
Author-email: ARTIST Consortium <artist@lists.kit.edu>
License-File: LICENSE.md
License-File: NOTICE
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.10
Requires-Dist: colorlog
Requires-Dist: h5py
Requires-Dist: numpy
Requires-Dist: paint-csp
Requires-Dist: pillow
Requires-Dist: torch
Provides-Extra: dev
Requires-Dist: pre-commit; extra == 'dev'
Requires-Dist: pytest; extra == 'dev'
Requires-Dist: pytest-cov; extra == 'dev'
Requires-Dist: pytest-mock; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Requires-Dist: sphinx-autoapi; extra == 'dev'
Requires-Dist: sphinx-rtd-theme; extra == 'dev'
Requires-Dist: sphinxcontrib-napoleon; extra == 'dev'
Requires-Dist: sphinxemoji; extra == 'dev'
Provides-Extra: examples
Requires-Dist: matplotlib; extra == 'examples'
Requires-Dist: mpi4py; extra == 'examples'
Requires-Dist: pandas; extra == 'examples'
Requires-Dist: propulate; extra == 'examples'
Provides-Extra: tutorials
Requires-Dist: matplotlib; extra == 'tutorials'
Description-Content-Type: text/markdown

<p align="center">
<img src="https://raw.githubusercontent.com/ARTIST-Association/ARTIST/main/logos/artist_logo.svg" alt="logo" width="500"/>
</p>

# AI-Enhanced Differentiable Ray Tracer for Irradiation Prediction in Solar Tower Digital Twins

[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.21804530.svg)](https://doi.org/10.5281/zenodo.21804530)
![PyPI](https://img.shields.io/pypi/v/artist-csp)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/11131/badge)](https://www.bestpractices.dev/projects/11131)
[![fair-software.eu](https://img.shields.io/badge/fair--software.eu-%E2%97%8F%20%20%E2%97%8F%20%20%E2%97%8F%20%20%E2%97%8F%20%20%E2%97%8B-yellow)](https://fair-software.eu)
[![FAIR checklist badge](https://fairsoftwarechecklist.net/badge.svg)](https://fairsoftwarechecklist.net/v0.2?f=31&a=32113&i=32221&r=133)
[![](https://img.shields.io/badge/Python-3.10+-blue.svg)](https://www.python.org/downloads/)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
[![codecov](https://codecov.io/gh/ARTIST-Association/ARTIST/graph/badge.svg?token=AEUYvTNXz1)](https://codecov.io/gh/ARTIST-Association/ARTIST)
[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/ARTIST-Association/ARTIST/main.svg)](https://results.pre-commit.ci/latest/github/ARTIST-Association/ARTIST/main)
[![Documentation Status](https://readthedocs.org/projects/artist/badge/?version=latest)](https://artist.readthedocs.io/en/latest/?badge=latest)
[![](https://img.shields.io/badge/Contact-artist%40lists.kit.edu-orange?label=Contact)](artist@lists.kit.edu)
[![CITATION.cff](https://github.com/ARTIST-Association/ARTIST/actions/workflows/cff-validator.yml/badge.svg)](https://github.com/ARTIST-Association/ARTIST/actions/workflows/cff-validator.yml)


## What ``ARTIST`` can do for you

The ``ARTIST`` package provides an implementation of a fully differentiable ray tracer using the ``PyTorch``
machine-learning framework in ``Python``. Leveraging automatic differentiation and GPU computation, ``ARTIST`` enables
gradient-based optimization within a differentiable solar tower power plant model using smooth parametric descriptions
of heliostats. While the underlying framework is designed to support the optimization of arbitrary plant components,
including towers and receivers, the current implementation focuses on data-driven heliostat surface reconstruction and
alignment.

**Our contributions include:**

- **Efficient heliostat calibration:** ``ARTIST`` combines a differentiable geometric model of heliostat kinematics with
  parallelized computation to enable efficient heliostat reconstruction from receiver flux measurements. This results in
  a flexible and robust calibration approach.

- **Accurate surface reconstruction and flux density prediction:** Leveraging learning Non-Uniform Rational B-Splines (NURBS),
  `ARTIST` reconstructs heliostat surfaces accurately using calibration images commonly available in solar thermal power
  plants. Thus, we can achieve sub-millimeter accuracy in mirror reconstruction from focal spot images, contributing to
  improved operational safety and efficiency. The reconstructed surfaces can be used for predicting unique heliostat
  flux densities with state-of-the-art accuracy. Check out [this paper](https://doi.org/10.1038/s41467-024-51019-z) for
  more details:

  > M. Pargmann, J. Ebert, M. Götz et al. Automatic heliostat learning for in situ concentrating solar power plant
  metrology with differentiable ray tracing. Nat Commun 15, 6997 (2024). https://doi.org/10.1038/s41467-024-51019-z

- **Immediate deployment**: `ARTIST` can be deployed from the beginning of a solar thermal power plant's operation,
  enabling in situ calibration and subsequent improvements in energy efficiency and cost reduction..

- **Optimized flux density:** ``ARTIST`` enables flux density optimization across an entire heliostat field by adjusting
  heliostat motor positions to obtain an optimal flux distribution on the receiver.


## Installation
We recommend installing the `ARTIST` package in a dedicated `Python3.10+` virtual environment. You can install the
latest stable release from [PyPI](https://pypi.org/project/artist-csp/):
```bash
pip install artist-csp
```
If you need the latest updates, you can also install ``ARTIST`` directly from the main branch via:
```bash
pip install git+https://github.com/ARTIST-Association/ARTIST.git
```
To install `ARTIST` locally, there are two steps you need to follow:
1. Clone the `ARTIST` repository:
   ```bash
   git clone https://github.com/ARTIST-Association/ARTIST.git
   ```
2. Install the package from the main branch. There are multiple installation options available:
   - Install basic dependencies: ``pip install .``
   - Install with optional dependencies to run the tutorials:  ``pip install ."[tutorials]"``
   - Install an editable version with developer dependencies: ``pip install -e ."[dev]"``

## Structure
The ``ARTIST`` repository is structured as shown below:
```
.
├── artist # Parent package
│   ├── core # Core functionality of ARTIST, e.g. raytracing, optimizers etc.
│   ├── data_loader # Deals with loading data into ARTIST from different sources
│   ├── field # Objects in the field, e.g. heliostats and target areas like receivers and calibration targets
│   ├── scenario # Functionality to create and load scenarios in ARTIST.
│   ├── scene # Light sources and factors influencing the surroundings
│   └── util
├── tests
│   ├── data
│   │   ├── field_data # Real measurements from the PAINT database and STRAL that can be used in ARTIST
│   │   ├── scenarios # Scenarios describing an environment that can be loaded by ARTIST
│   │   └── ...
│   ├── core
│   ├── data_loader
│   └── ...
└── tutorials # Tutorials to help you get started with ARTIST
    ├── data # Data accessed in the tutorials
    │   ├── paint # Real measurements from the PAINT database
    │   ├── scenarios # Scenarios describing an environment that can be loaded by ARTIST
    │   └── stral Real # Measurements from STRAL
    └── ...
```

## Documentation
You can check out the full ``ARTIST`` documentation at [https://artist.readthedocs.io/en/latest/index.html](https://artist.readthedocs.io/en/latest/index.html) :rocket:!
The ``ARTIST`` documentation includes:
- Installation instructions
- Tutorials
- Some theoretical background information
- API reference

## How to contribute
Check out our [contribution guidelines](CONTRIBUTING.md) if you are interested in contributing to the `ARTIST` project :fire:.
Please also carefully check our [code of conduct](CODE_OF_CONDUCT.md) :blue_heart:.

## How to test our software
For detailed instructions on testing, please refer to point 6 of the [contribution guidelines](CONTRIBUTING.md).

## Acknowledgments
This work is supported by the [Helmholtz AI](https://www.helmholtz.ai/) platform grant.

-----------
<div align="center">
  <a href="https://www.dlr.de/EN/Home/home_node.html"><img src="https://raw.githubusercontent.com/ARTIST-Association/ARTIST/main/logos/logo_dlr.svg" height="50px" hspace="3%" vspace="25px"></a>
  <a href="https://www.fz-juelich.de/portal/EN/Home/home_node.html"><img src="https://raw.githubusercontent.com/ARTIST-Association/ARTIST/main/logos/logo_fzj.svg" height="50px" hspace="3%" vspace="25px"></a>
  <a href="http://www.kit.edu/english/index.php"><img src="https://raw.githubusercontent.com/ARTIST-Association/ARTIST/main/logos/logo_kit.svg" height="50px" hspace="3%" vspace="25px"></a>
  <a href="https://synhelion.com/"><img src="https://raw.githubusercontent.com/ARTIST-Association/ARTIST/main/logos/logo_synhelion.svg" height="50px" hspace="3%" vspace="25px"></a>
</div>

<div align="center">
<a href="https://www.helmholtz.ai/"><img src="https://raw.githubusercontent.com/ARTIST-Association/ARTIST/main/logos/logo_hai.svg" height="25px" hspace="3%" vspace="25px"></a>
</div>
