diff --git a/.github/workflows/python-app.yaml b/.github/workflows/python-app.yaml index 014c2554e..d397d2be5 100644 --- a/.github/workflows/python-app.yaml +++ b/.github/workflows/python-app.yaml @@ -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} diff --git a/.zenodo.json b/.zenodo.json new file mode 100644 index 000000000..88bc63684 --- /dev/null +++ b/.zenodo.json @@ -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" + } + ] +} diff --git a/CHANGELOG.md b/CHANGELOG.md index 37636cc0e..6bd1e553a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 000000000..ff12dcceb --- /dev/null +++ b/CITATION.cff @@ -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" diff --git a/README.md b/README.md index e7f062ad8..6d049819d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,12 @@ -# FlixOpt: Energy and Material Flow Optimization Framework +# FlixOpt: Progressive Flow System Optimization + +
+ Flexible โข Low-entry โข Investment โข X-sector โข OPTimization +
+ ++ Model more than costs ยท Easy to prototype ยท Based on dispatch ยท Sector coupling ยท Mathematical optimization +
[](https://flixopt.github.io/flixopt/latest/) [](https://github.com/flixOpt/flixopt/actions/workflows/python-app.yaml) @@ -9,18 +17,18 @@ [](https://pypi.org/project/flixopt/) [](https://github.com/flixOpt/flixopt/commits/main) [](https://github.com/flixOpt/flixopt/issues) -[](https://results.pre-commit.ci/latest/github/flixOpt/flixopt/main) [](https://github.com/astral-sh/ruff) [](https://github.com/PyPSA/linopy/) [](https://xarray.dev/) +[](https://doi.org/10.5281/zenodo.17448623) [](https://doi.org/10.18086/eurosun.2022.04.07) [](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. --- @@ -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: +- [](https://doi.org/10.5281/zenodo.17448623) + --- ## ๐ License diff --git a/docs/index.md b/docs/index.md index c9b01f284..3467bb394 100644 --- a/docs/index.md +++ b/docs/index.md @@ -9,7 +9,9 @@ hide:Energy and Material Flow Optimization Framework
+Flexible ยท Low-entry ยท Investment ยท X-sector ยท OPTimization
+ +Model more than costs ยท Easy to prototype ยท Based on dispatch ยท Sector coupling ยท Mathematical optimization
Model, optimize, and analyze complex energy systems with a powerful Python framework designed for flexibility and performance.
diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css index f1b7c03d5..2992267b6 100644 --- a/docs/stylesheets/extra.css +++ b/docs/stylesheets/extra.css @@ -1,5 +1,5 @@ /* ============================================================================ - flixOpt Custom Styling with Custom Palette + FlixOpt Custom Styling with Custom Palette ========================================================================= */ /* Root variables for easy customization */ @@ -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; diff --git a/mkdocs.yml b/mkdocs.yml index 61d33e233..0adba464d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -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/ @@ -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 diff --git a/pyproject.toml b/pyproject.toml index 0c6bcb951..258b0ab7f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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"