Skip to content

Commit 7446d76

Browse files
FBumannPStangebaumbude
authored
Added Zenodo to repository for citations (#433)
* Added Zenodo to repository for citations * Update zenodo and README.md * Update zenodo and CITATION.cff * Update ORCID * Improve and synchronize keywords * Improve and synchronize keywords * Add 'open' status to feature/zenodo * Use full orcid links * Update project description * Update .zenodo.json grant no. added * Update .zenodo.json * Update .zenodo.json * Add citation notice to FlixOpt description Eurosun at the moment and ASAP new paper. * Fix JSON description formatting in .zenodo.json \\n instead of \n * Incorporate Backronym into docs and README.md * Change backronym translation * Change backronym translation * Add workflow to update the citation version and date * Update README.md --------- Co-authored-by: PStange <60431226+PStange@users.noreply.github.com> Co-authored-by: Felix Panitz <baumbude@gmail.com>
1 parent d006231 commit 7446d76

9 files changed

Lines changed: 195 additions & 11 deletions

File tree

.github/workflows/python-app.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,18 @@ jobs:
181181
with:
182182
python-version: ${{ env.PYTHON_VERSION }}
183183

184+
- name: Update CITATION.cff
185+
run: |
186+
VERSION=${GITHUB_REF#refs/tags/v}
187+
DATE=$(date +%Y-%m-%d)
188+
sed -i "s/^version: .*/version: $VERSION/" CITATION.cff
189+
sed -i "s/^date-released: .*/date-released: $DATE/" CITATION.cff
190+
git config user.name github-actions[bot]
191+
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
192+
git add CITATION.cff
193+
git commit -m "Update CITATION.cff to $VERSION" || true
194+
git push origin HEAD:main
195+
184196
- name: Extract release notes
185197
run: |
186198
VERSION=${GITHUB_REF#refs/tags/v}

.zenodo.json

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
{
2+
"title": "FlixOpt: Progressive Flow System Optimization",
3+
"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",
4+
"version": "{{VERSION}}",
5+
"license": "MIT",
6+
"access_right": "open",
7+
"upload_type": "software",
8+
"creators": [
9+
{
10+
"name": "Bumann, Felix",
11+
"affiliation": "SachsenEnergie AG",
12+
"orcid": "https://orcid.org/0009-0006-0765-4789"
13+
},
14+
{
15+
"name": "Panitz, Felix",
16+
"affiliation": "Fraunhofer Research Institution for Energy Infrastructures and Geotechnologies IEG",
17+
"orcid": "https://orcid.org/0009-0007-7030-6987"
18+
},
19+
{
20+
"name": "Stange, Peter",
21+
"affiliation": "Chair of Building Energy Systems and Heat Supply, TU Dresden",
22+
"orcid": "https://orcid.org/0009-0001-6407-1495"
23+
}
24+
],
25+
"contributors": [
26+
{
27+
"name": "Chair of Building Energy Systems and Heat Supply, TU Dresden",
28+
"type": "HostingInstitution"
29+
}
30+
],
31+
"keywords": [
32+
"optimization",
33+
"energy systems",
34+
"energy flow modeling",
35+
"linear programming",
36+
"mixed-integer programming",
37+
"MILP",
38+
"operations research",
39+
"python",
40+
"district heating",
41+
"renewable energy",
42+
"multi-period optimization",
43+
"investment optimization",
44+
"capacity planning",
45+
"energy modeling",
46+
"sector coupling",
47+
"energy transition",
48+
"industrial processes",
49+
"stochastic optimization",
50+
"linopy",
51+
"xarray"
52+
],
53+
"language": "eng",
54+
"grants": [
55+
{"id": "03KB159B"}
56+
],
57+
"related_identifiers": [
58+
{
59+
"identifier": "https://github.com/flixOpt/flixopt",
60+
"relation": "isSupplementTo",
61+
"scheme": "url"
62+
},
63+
{
64+
"identifier": "10.18086/eurosun.2022.04.07",
65+
"relation": "isDocumentedBy",
66+
"scheme": "doi"
67+
},
68+
{
69+
"identifier": "https://flixopt.github.io/flixopt/",
70+
"relation": "isDocumentedBy",
71+
"scheme": "url"
72+
},
73+
{
74+
"identifier": "https://pypi.org/project/flixopt/",
75+
"relation": "isIdenticalTo",
76+
"scheme": "url"
77+
}
78+
],
79+
"communities": [
80+
{
81+
"identifier": "energy"
82+
},
83+
{
84+
"identifier": "zenodo"
85+
}
86+
]
87+
}

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,13 @@ If upgrading from v2.x, see the [v3.0.0 release notes](https://github.com/flixOp
7272
### 📦 Dependencies
7373
7474
### 📝 Docs
75+
- Added Zenodo DOI badge to README.md (placeholder, to be updated after first Zenodo release)
7576
7677
### 👷 Development
78+
- Added Zenodo integration for automatic archival and citation
79+
- Created `CITATION.cff` file for software citation following CFF 1.2.0 specification
80+
- Created `.zenodo.json` file for Zenodo metadata configuration
81+
- Repository now ready for DOI assignment upon next release
7782
7883
### 🚧 Known Issues
7984

CITATION.cff

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
cff-version: 1.2.0
2+
message: "If you use this software, please cite it as below."
3+
type: software
4+
title: "flixopt"
5+
version: 3.1.1
6+
date-released: 2025-10-20
7+
url: "https://github.com/flixOpt/flixopt"
8+
repository-code: "https://github.com/flixOpt/flixopt"
9+
license: MIT
10+
abstract: "Progressive flow system optimization in Python. Build simple models quickly, then incrementally add multi-period planning, stochastic scenarios, and custom constraints without refactoring."
11+
keywords:
12+
- optimization
13+
- energy systems
14+
- energy flow modeling
15+
- linear programming
16+
- mixed-integer programming
17+
- MILP
18+
- operations research
19+
- python
20+
- district heating
21+
- renewable energy
22+
- multi-period optimization
23+
- investment optimization
24+
- capacity planning
25+
- energy modeling
26+
- sector coupling
27+
- energy transition
28+
- industrial processes
29+
- stochastic optimization
30+
- linopy
31+
- xarray
32+
authors:
33+
- family-names: Bumann
34+
given-names: Felix
35+
email: felixbumann387@gmail.com
36+
affiliation: "SachsenEnergie AG"
37+
orcid: "https://orcid.org/0009-0006-0765-4789"
38+
- family-names: Panitz
39+
given-names: Felix
40+
email: baumbude@googlemail.com
41+
affiliation: "Fraunhofer Research Institution for Energy Infrastructures and Geotechnologies IEG"
42+
orcid: "https://orcid.org/0009-0007-7030-6987"
43+
- family-names: Stange
44+
given-names: Peter
45+
email: peter.stange@tu-dresden.de
46+
affiliation: "Chair of Building Energy Systems and Heat Supply, TU Dresden"
47+
orcid: "https://orcid.org/0009-0001-6407-1495"

README.md

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
1-
# FlixOpt: Energy and Material Flow Optimization Framework
1+
# FlixOpt: Progressive Flow System Optimization
2+
3+
<p align="center">
4+
<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
5+
</p>
6+
7+
<p align="center">
8+
<i>Model more than costs</i> · <i>Easy to prototype</i> · <i>Based on dispatch</i> · <i>Sector coupling</i> · <i>Mathematical optimization</i>
9+
</p>
210

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

1927
---
2028

21-
**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.
29+
**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.
2230

23-
**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.
31+
Build simple models quickly, then incrementally add investment decision, multi-period planning, stochastic scenarios, and custom constraints without refactoring.
2432

2533
---
2634

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

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

190201
## 📄 License

docs/index.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ hide:
99

1010
<h1>flixOpt</h1>
1111

12-
<p class="tagline">Energy and Material Flow Optimization Framework</p>
12+
<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>
13+
14+
<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>
1315

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

docs/stylesheets/extra.css

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* ============================================================================
2-
flixOpt Custom Styling with Custom Palette
2+
FlixOpt Custom Styling with Custom Palette
33
========================================================================= */
44

55
/* Root variables for easy customization */
@@ -526,10 +526,30 @@
526526
.hero-section .tagline {
527527
font-size: 1.5rem;
528528
color: var(--md-default-fg-color--light);
529-
margin-bottom: 2rem;
529+
margin-bottom: 1rem;
530530
font-weight: 300;
531531
}
532532

533+
/* Backronym styling */
534+
.hero-section .backronym {
535+
font-size: 1.3rem;
536+
font-weight: 500;
537+
letter-spacing: 0.05em;
538+
margin-bottom: 0.5rem;
539+
}
540+
541+
.hero-section .backronym .letter {
542+
color: var(--md-primary-fg-color);
543+
font-weight: 700;
544+
}
545+
546+
.hero-section .backronym-desc {
547+
font-size: 0.95rem;
548+
color: var(--md-default-fg-color--light);
549+
margin-bottom: 2rem;
550+
opacity: 0.85;
551+
}
552+
533553
.hero-buttons {
534554
display: flex;
535555
gap: 1rem;

mkdocs.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# flixOpt Documentation Configuration
1+
# FlixOpt Documentation Configuration
22
# https://mkdocstrings.github.io/python/usage/configuration/docstrings/
33
# https://squidfunk.github.io/mkdocs-material/setup/
44

@@ -278,10 +278,10 @@ extra:
278278
social:
279279
- icon: fontawesome/brands/github
280280
link: https://github.com/flixOpt/flixopt
281-
name: flixOpt on GitHub
281+
name: FlixOpt on GitHub
282282
- icon: fontawesome/brands/python
283283
link: https://pypi.org/project/flixopt/
284-
name: flixOpt on PyPI
284+
name: FlixOpt on PyPI
285285

286286
analytics:
287287
provider: google

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
55
[project]
66
name = "flixopt"
77
dynamic = ["version"]
8-
description = "Vector based energy and material flow optimization framework in Python."
8+
description = "Progressive flow system optimization in Python - start simple, scale to complex."
99
readme = "README.md"
1010
requires-python = ">=3.10"
1111
license = "MIT"

0 commit comments

Comments
 (0)