Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .github/workflows/python-app.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,18 @@ jobs:
with:
python-version: ${{ env.PYTHON_VERSION }}

- name: Update CITATION.cff
run: |
VERSION=${GITHUB_REF#refs/tags/v}
DATE=$(date +%Y-%m-%d)
sed -i "s/^version: .*/version: $VERSION/" CITATION.cff
sed -i "s/^date-released: .*/date-released: $DATE/" CITATION.cff
git config user.name github-actions[bot]
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
git add CITATION.cff
git commit -m "Update CITATION.cff to $VERSION" || true
git push origin HEAD:main

- name: Extract release notes
run: |
VERSION=${GITHUB_REF#refs/tags/v}
Expand Down
87 changes: 87 additions & 0 deletions .zenodo.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
{
"title": "FlixOpt: Progressive Flow System Optimization",
"description": "FlixOpt (Flexible, Low-entry, Investment, X-sector OPTimization) is a comprehensive framework for modeling and optimizing energy and material flow systems in Python. It enables optimization of diverse applications including district heating networks, industrial production lines, renewable energy portfolios, and supply chain logistics. Built on modern scientific Python stack (linopy and xarray), it provides a progressive enhancement approach allowing users to start with simple models and incrementally add complexity such as multi-period investments, stochastic scenarios, and custom constraints. The framework simplifies the creation of global constraints and switching objectives through its 'effect' concept. The framework is designed for researchers and engineers in energy systems, industrial process optimization, and operations research. \\n\\nCitation Notice: If you use FlixOpt in scientific work, please cite both this software version and the following publication: Panitz, F., Behrends, T., & Stange, P. (2022). Software-supported Investment Optimization for District Heating Supply Systems. In EuroSun 2022 Proceedings. DOI: 10.18086/eurosun.2022.04.07",
"version": "{{VERSION}}",
"license": "MIT",
"access_right": "open",
"upload_type": "software",
"creators": [
{
"name": "Bumann, Felix",
"affiliation": "SachsenEnergie AG",
"orcid": "https://orcid.org/0009-0006-0765-4789"
},
{
"name": "Panitz, Felix",
"affiliation": "Fraunhofer Research Institution for Energy Infrastructures and Geotechnologies IEG",
"orcid": "https://orcid.org/0009-0007-7030-6987"
},
{
"name": "Stange, Peter",
"affiliation": "Chair of Building Energy Systems and Heat Supply, TU Dresden",
"orcid": "https://orcid.org/0009-0001-6407-1495"
}
],
"contributors": [
{
"name": "Chair of Building Energy Systems and Heat Supply, TU Dresden",
"type": "HostingInstitution"
}
],
"keywords": [
"optimization",
"energy systems",
"energy flow modeling",
"linear programming",
"mixed-integer programming",
"MILP",
"operations research",
"python",
"district heating",
"renewable energy",
"multi-period optimization",
"investment optimization",
"capacity planning",
"energy modeling",
"sector coupling",
"energy transition",
"industrial processes",
"stochastic optimization",
"linopy",
"xarray"
],
"language": "eng",
"grants": [
{"id": "03KB159B"}
],
"related_identifiers": [
{
"identifier": "https://github.com/flixOpt/flixopt",
"relation": "isSupplementTo",
"scheme": "url"
},
{
"identifier": "10.18086/eurosun.2022.04.07",
"relation": "isDocumentedBy",
"scheme": "doi"
},
{
"identifier": "https://flixopt.github.io/flixopt/",
"relation": "isDocumentedBy",
"scheme": "url"
},
{
"identifier": "https://pypi.org/project/flixopt/",
"relation": "isIdenticalTo",
"scheme": "url"
}
],
"communities": [
{
"identifier": "energy"
},
{
"identifier": "zenodo"
}
]
}
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,13 @@ If upgrading from v2.x, see the [v3.0.0 release notes](https://github.com/flixOp
### 📦 Dependencies

### 📝 Docs
- Added Zenodo DOI badge to README.md (placeholder, to be updated after first Zenodo release)

### 👷 Development
- Added Zenodo integration for automatic archival and citation
- Created `CITATION.cff` file for software citation following CFF 1.2.0 specification
- Created `.zenodo.json` file for Zenodo metadata configuration
- Repository now ready for DOI assignment upon next release

### 🚧 Known Issues

Expand Down
47 changes: 47 additions & 0 deletions CITATION.cff
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
type: software
title: "flixopt"
version: 3.1.1
date-released: 2025-10-20
url: "https://github.com/flixOpt/flixopt"
repository-code: "https://github.com/flixOpt/flixopt"
license: MIT
abstract: "Progressive flow system optimization in Python. Build simple models quickly, then incrementally add multi-period planning, stochastic scenarios, and custom constraints without refactoring."
keywords:
- optimization
- energy systems
- energy flow modeling
- linear programming
- mixed-integer programming
- MILP
- operations research
- python
- district heating
- renewable energy
- multi-period optimization
- investment optimization
- capacity planning
- energy modeling
- sector coupling
- energy transition
- industrial processes
- stochastic optimization
- linopy
- xarray
authors:
- family-names: Bumann
given-names: Felix
email: felixbumann387@gmail.com
affiliation: "SachsenEnergie AG"
orcid: "https://orcid.org/0009-0006-0765-4789"
- family-names: Panitz
given-names: Felix
email: baumbude@googlemail.com
affiliation: "Fraunhofer Research Institution for Energy Infrastructures and Geotechnologies IEG"
orcid: "https://orcid.org/0009-0007-7030-6987"
- family-names: Stange
given-names: Peter
email: peter.stange@tu-dresden.de
affiliation: "Chair of Building Energy Systems and Heat Supply, TU Dresden"
orcid: "https://orcid.org/0009-0001-6407-1495"
19 changes: 15 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
# FlixOpt: Energy and Material Flow Optimization Framework
# FlixOpt: Progressive Flow System Optimization

<p align="center">
<b>F</b>lexible &nbsp;•&nbsp; <b>L</b>ow-entry &nbsp;•&nbsp; <b>I</b>nvestment &nbsp;•&nbsp; <b>X</b>-sector &nbsp;•&nbsp; <b>OPT</b>imization
</p>

<p align="center">
<i>Model more than costs</i> · <i>Easy to prototype</i> · <i>Based on dispatch</i> · <i>Sector coupling</i> · <i>Mathematical optimization</i>
</p>

[![Documentation](https://img.shields.io/badge/docs-latest-brightgreen.svg)](https://flixopt.github.io/flixopt/latest/)
[![Build Status](https://github.com/flixOpt/flixopt/actions/workflows/python-app.yaml/badge.svg)](https://github.com/flixOpt/flixopt/actions/workflows/python-app.yaml)
Expand All @@ -9,18 +17,18 @@
[![PyPI downloads](https://img.shields.io/pypi/dm/flixopt)](https://pypi.org/project/flixopt/)
[![GitHub last commit](https://img.shields.io/github/last-commit/flixOpt/flixopt)](https://github.com/flixOpt/flixopt/commits/main)
[![GitHub issues](https://img.shields.io/github/issues/flixOpt/flixopt)](https://github.com/flixOpt/flixopt/issues)
[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/flixOpt/flixopt/main.svg)](https://results.pre-commit.ci/latest/github/flixOpt/flixopt/main)
[![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)
[![Powered by linopy](https://img.shields.io/badge/powered%20by-linopy-blue)](https://github.com/PyPSA/linopy/)
[![Powered by xarray](https://img.shields.io/badge/powered%20by-xarray-blue)](https://xarray.dev/)
[![DOI](https://zenodo.org/badge/540378857.svg)](https://doi.org/10.5281/zenodo.17448623)
[![DOI](https://img.shields.io/badge/DOI-10.18086%2Feurosun.2022.04.07-blue)](https://doi.org/10.18086/eurosun.2022.04.07)
[![GitHub stars](https://img.shields.io/github/stars/flixOpt/flixopt?style=social)](https://github.com/flixOpt/flixopt/stargazers)

---

**FlixOpt is a Python framework for optimizing energy and material flow systems** - from district heating networks to industrial production lines, from renewable energy portfolios to supply chain logistics.
**FlixOpt is a Python framework for progressive flow system optimization** - from district heating networks to industrial production lines, from renewable energy portfolios to supply chain logistics.

**Start simple, scale complex:** Build a working optimization model in minutes, then progressively add detail - multi-period investments, stochastic scenarios, custom constraints - without rewriting your code.
Build simple models quickly, then incrementally add investment decision, multi-period planning, stochastic scenarios, and custom constraints without refactoring.

---

Expand Down Expand Up @@ -185,6 +193,9 @@ If FlixOpt supports your research or project, please cite:
- **Main Citation:** [DOI:10.18086/eurosun.2022.04.07](https://doi.org/10.18086/eurosun.2022.04.07)
- **Short Overview:** [DOI:10.13140/RG.2.2.14948.24969](https://doi.org/10.13140/RG.2.2.14948.24969)

To pinpoint which version you used in your work, please reference one of these doi's here:
- [![DOI](https://zenodo.org/badge/540378857.svg)](https://doi.org/10.5281/zenodo.17448623)

---

## 📄 License
Expand Down
4 changes: 3 additions & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ hide:

<h1>flixOpt</h1>

<p class="tagline">Energy and Material Flow Optimization Framework</p>
<p class="backronym"><span class="letter">F</span>lexible · <span class="letter">L</span>ow-entry · <span class="letter">I</span>nvestment · <span class="letter">X</span>-sector · <span class="letter">OPT</span>imization</p>

<p class="backronym-desc"><em>Model more than costs</em> · <em>Easy to prototype</em> · <em>Based on dispatch</em> · <em>Sector coupling</em> · <em>Mathematical optimization</em></p>

<p>Model, optimize, and analyze complex energy systems with a powerful Python framework designed for flexibility and performance.</p>

Expand Down
24 changes: 22 additions & 2 deletions docs/stylesheets/extra.css
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* ============================================================================
flixOpt Custom Styling with Custom Palette
FlixOpt Custom Styling with Custom Palette
========================================================================= */

/* Root variables for easy customization */
Expand Down Expand Up @@ -526,10 +526,30 @@
.hero-section .tagline {
font-size: 1.5rem;
color: var(--md-default-fg-color--light);
margin-bottom: 2rem;
margin-bottom: 1rem;
font-weight: 300;
}

/* Backronym styling */
.hero-section .backronym {
font-size: 1.3rem;
font-weight: 500;
letter-spacing: 0.05em;
margin-bottom: 0.5rem;
}

.hero-section .backronym .letter {
color: var(--md-primary-fg-color);
font-weight: 700;
}

.hero-section .backronym-desc {
font-size: 0.95rem;
color: var(--md-default-fg-color--light);
margin-bottom: 2rem;
opacity: 0.85;
}

.hero-buttons {
display: flex;
gap: 1rem;
Expand Down
6 changes: 3 additions & 3 deletions mkdocs.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# flixOpt Documentation Configuration
# FlixOpt Documentation Configuration
# https://mkdocstrings.github.io/python/usage/configuration/docstrings/
# https://squidfunk.github.io/mkdocs-material/setup/

Expand Down Expand Up @@ -278,10 +278,10 @@ extra:
social:
- icon: fontawesome/brands/github
link: https://github.com/flixOpt/flixopt
name: flixOpt on GitHub
name: FlixOpt on GitHub
- icon: fontawesome/brands/python
link: https://pypi.org/project/flixopt/
name: flixOpt on PyPI
name: FlixOpt on PyPI

analytics:
provider: google
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "flixopt"
dynamic = ["version"]
description = "Vector based energy and material flow optimization framework in Python."
description = "Progressive flow system optimization in Python - start simple, scale to complex."
readme = "README.md"
requires-python = ">=3.10"
license = "MIT"
Expand Down