Scikit-Topt: A Python Library for Algorithm Development in Topology Optimization

Scikit-Topt: A Python Library for Algorithm Development in Topology Optimization - Published in JOSS (2025)

https://github.com/kevin-tofu/scikit-topt

Science Score: 87.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
    Found 6 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org, zenodo.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

fem finite-element-analysis mesh mesh-based scikit scikit-fem topology-optimization unstructured unstructured-meshes
Last synced: about 2 months ago · JSON representation

Repository

Scikit Topology Optimization with Scipy Family

Basic Info
Statistics
  • Stars: 5
  • Watchers: 1
  • Forks: 2
  • Open Issues: 0
  • Releases: 46
Topics
fem finite-element-analysis mesh mesh-based scikit scikit-fem topology-optimization unstructured unstructured-meshes
Created 11 months ago · Last pushed 2 months ago
Metadata Files
Readme License

README.md

PyPI version License: Apache-2.0 DOI status Python Version PyPI Downloads CI CI

🧠 Scikit Topt

A lightweight, flexible Python library for topology optimization built on top of Scikit Libraries - scipy - scikit-fem

Documentation

Scikit-Topt Documentation

Examples and Features

Example 1 : Single Load Condition

Optimization Process Pull-Down-0 Optimization Process Pull-Down-1

Example 2 : Multiple Load Condition

multi-load-condition multi-load-condition-distribution

Example 3 : Heat Conduction

heat-conduction heat-conduction

Progress Report

multi-load-condition-progress

Features

To contribute to the open-source community and education—which I’ve always benefited from—I decided to start this project.

The currently supported features are as follows: - Coding with Python
- easy installation with pip/poetry - Implement FEA on unstructured mesh using scikit-fem - Structural Analysis / Heat Conduction Analysis - Topology optimization using the density method and its optimization algorithm - Optimality Criteria (OC) Method
- (Log-Space) Modified OC Method - able to handle multiple force condition - High-performance computation using sparse matrices with Scipy and PyAMG
- has a function to monitor the transition of parameters.

SetUp

You can install Scikit-Topt either via pip or Poetry.

Supported Python Versions

Scikit-Topt supports Python 3.10–3.13:

  • 3.10–3.12 — fully supported and tested
  • 3.13 — core topology optimization works normally,
    but VTK-based features (VTU export & image rendering using PyVista)
    are temporarily unavailable because VTK/PyVista do not yet provide wheels
    for Python 3.13.

You can still run the full optimization workflow on Python 3.13;
only visualization-related features are restricted.

Choose one of the following methods:

Using pip

bash pip install scikit-topt

Using poetry

bash poetry add scikit-topt

Optional: Enable off-screen rendering

If you want to visualize the optimized density distribution with mesh as an image, you need to enable off-screen rendering using a virtual display.

On Debian/Ubuntu: bash sudo apt install xvfb libgl1-mesa-glx

CentOS / RHL bash sudo yum install xvfb libgl1-mesa-glx

Usage

See examples in example directory and README.md. README for Usage Examples

Algorithm for Optimization

Optimization Algorithms and Techniques are briefly summarized here.
Optimization Algorithms and Techniques

Contributing

We are happy to welcome any contributions to the library. You can contribute in various ways:

  • Reporting bugs, opening pull requests, or starting discussions via GitHub Issues
  • Writing new examples
  • Improving the tests
  • Enhancing the documentation or code readability doc

By contributing code to Scikit-Topt, you agree to release it under the Apache 2.0 License.

Acknowledgements

Standing on the shoulders of proverbial giants

This software does not exist in a vacuum. Scikit-Topt is standing on the shoulders of proverbial giants. In particular, I want to thank the following projects for constituting the technical backbone of the project: - Scipy - Scikit-fem - PyAMG - Numba - MeshIO - Matplotlib - PyVista - Topology Optimization Community

📖 Citation

If you use Scikit Topt in your research or software, please cite it as:

bibtex @misc{Scikit-Topt2025, author = {Watanabe, Kohei}, title = {Scikit-Topt: A Python Library for Algorithm Development in Topology Optimization}, year = {2025}, publisher = {Zenodo}, doi = {10.5281/zenodo.15441499}, url = {https://doi.org/10.5281/zenodo.15441499}, note = {Version 0.3.8} }

ToDo

  • Set break point from the optimization loop
  • Add A feature to assign tags to nodes and cells
  • Add Level Set
  • Add other optimizers
    • Evolutionary Algorithms
    • MMA
  • Add Multiple BC Conditions
  • Add Unit Test

Owner

  • Name: Kevin-Tofu
  • Login: kevin-tofu
  • Kind: user

JOSS Publication

Scikit-Topt: A Python Library for Algorithm Development in Topology Optimization
Published
December 26, 2025
Volume 10, Issue 116, Page 9092
Authors
Kohei Watanabe ORCID
JTEKT Corporation, Kariya, Japan
Editor
Mojtaba Barzegari ORCID
Tags
topology optimization finite element method

GitHub Events

Total
  • Release event: 40
  • Watch event: 8
  • Delete event: 13
  • Issue comment event: 1
  • Push event: 335
  • Pull request event: 2
  • Fork event: 1
  • Create event: 34
Last Year
  • Release event: 40
  • Watch event: 8
  • Delete event: 13
  • Issue comment event: 1
  • Push event: 335
  • Pull request event: 2
  • Fork event: 1
  • Create event: 34

Committers

Last synced: 3 months ago

All Time
  • Total Commits: 588
  • Total Committers: 1
  • Avg Commits per committer: 588.0
  • Development Distribution Score (DDS): 0.0
Past Year
  • Commits: 588
  • Committers: 1
  • Avg Commits per committer: 588.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Kevin-Tofu k****1@g****m 588

Issues and Pull Requests

Last synced: 2 months ago

All Time
  • Total issues: 0
  • Total pull requests: 3
  • Average time to close issues: N/A
  • Average time to close pull requests: about 1 hour
  • Total issue authors: 0
  • Total pull request authors: 2
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 3
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 3
  • Average time to close issues: N/A
  • Average time to close pull requests: about 1 hour
  • Issue authors: 0
  • Pull request authors: 2
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 3
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
  • kevin-tofu (2)
  • mbarzegary (1)
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 839 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 26
  • Total maintainers: 1
pypi.org: scikit-topt

A lightweight, flexible Python library for topology optimization built on top of Scikit Libraries

  • Versions: 26
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 839 Last month
Rankings
Dependent packages count: 9.0%
Average: 29.7%
Dependent repos count: 50.5%
Maintainers (1)
Last synced: 2 months ago