Awesome Computational Design
A curated list of awesome open-source tools for computational engineering, data-driven design, scriptable tools, cyber-physical design, and computational science. This repository aims to provide engineers, designers, and researchers with the best resources to enhance their computational projects.
Viewable at https://cameronbrooks11.github.io/awesome-computational-design/
Table of Contents
Introduction
Welcome to the Awesome Computational Design repository! This list is intended for developers, engineers, and researchers who are looking for high-quality, open-source tools to aid in computational design and engineering projects. Whether you’re working on CAD modeling, simulation, optimization, or data visualization, you’ll find valuable resources here.
Tools
Grouped by what you reach for them to do. Entries are alphabetical within each group.
Parametric & scripted CAD
- Antimony — node-graph CAD built on a functional representation; “CAD from a parallel universe”
- Build123d — Python CAD library over OCCT, with a builder and a direct algebra API
- CadQuery — Python parametric CAD scripting framework based on OCCT
- FreeCAD — general-purpose parametric 3D modeller with a full Python API and workbenches per discipline
- JSCAD — modular browser and CLI tools for parametric 2D/3D design in JavaScript (previously OpenJSCAD)
- JupyterCAD — JupyterLab extension for collaborative 3D geometry modelling
- OpenSCAD — the programmers’ solid 3D CAD modeller; geometry described as code rather than drawn
- SolidPython — Python frontend for solid modelling that compiles to OpenSCAD
- SolidPython (jeff-dh fork) — actively maintained fork of the above, with an expanded API
- SolveSpace — parametric 2D/3D CAD built on a geometric constraint solver
Implicit & volumetric modelling
- ImplicitCAD — math-inspired CAD in Haskell; CSG, bevels and shells, 2D/3D, G-code output
- OpenVDB — sparse volume data structure and tools, the industry standard for level sets
- PicoGK — compact geometry kernel for computational engineering, voxel/field based
Geometry kernels & libraries
- CGAL — computational geometry algorithms library, the C++ substrate under much of this list
- libigl — header-only C++ geometry processing library, with Python bindings
- Manifold — geometry library for topologically robust mesh Booleans, used as a CSG backend by several tools here
- OCCT — Open CASCADE Technology, the B-rep kernel underneath CadQuery, build123d and FreeCAD
- pythonocc-core — Python bindings to OCCT, for scripting CAD, BIM and CAM geometry
- scikit-geometry — scientific Python geometric algorithms library, wrapping CGAL
Meshing & mesh processing
- Gmsh — 3D finite element mesh generator with built-in pre- and post-processing (source)
- MeshLab — mesh processing system for cleaning, repairing and simplifying, scriptable through PyMeshLab
- trimesh — Python library for loading and operating on triangular meshes
Simulation & multiphysics
- Elmer FEM — multiphysical FEM suite, strong on coupled and electromagnetic problems
- FEniCSx — solve PDEs by writing their variational form more or less as the maths reads
- Kratos Multiphysics — FEM framework for coupled multiphysics; its OptimizationApplication does shape, thickness and topology optimization with adjoint gradients
- MOOSE Framework — Multiphysics Object Oriented Simulation Environment, for tightly coupled multiphysics
- NGSolve — high-performance multiphysics FEM with the Netgen mesher built in
- openEMS — free electromagnetic field solver using the FDTD method
- OpenFOAM — the CFD toolbox; finite volume solvers for essentially any continuum problem
- preCICE — coupling library that joins independently written solvers into one partitioned multiphysics simulation
- SfePy — simple finite elements in Python, for solving PDE systems
- SU2 — CFD and multiphysics suite built around adjoint-based shape optimization
Systems & process modelling
- Cantera — chemical kinetics, thermodynamics and transport tool suite
- OpenModelica — Modelica-based environment for equation-based, acausal system modelling
Electronics & PCB design
- CuFlow — experimental procedural PCB layout program
- gerber2ems — Python interface to openEMS for PCB trace simulation, taking Gerbers as input
- pcbflow — Python PCB layout and design package, based on CuFlow
- PolymorphicBlocks — hardware description language for board-level design from reusable subcircuit generators
- SKiDL — design electronic circuits in Python instead of a schematic editor
Design & topology optimization
- beso — bi-directional evolutionary topology optimization on CalculiX; the practical route from a FreeCAD FEM model to an optimized part
- DAFoam — adjoint framework for multidisciplinary design optimization with OpenFOAM
- GridapTopOpt.jl — scalable level-set topology optimization built on Gridap
- OpenMDAO — NASA’s framework for multidisciplinary design optimization, with analytic derivatives
- pyMOTO — modular Python framework for topology optimization, built from composable blocks
- TopOpt.jl — truss and continuum topology optimization in Julia, single and multi-material
- topoptlab — modular Python framework for topology optimization research and benchmarking
- torch-fem — differentiable finite elements for solid mechanics on PyTorch, with topology optimization examples
Optimization solvers & modelling
- Ipopt — interior point optimizer for large-scale nonlinear programs
- Pyomo — object-oriented algebraic modelling language in Python for structured optimization
- pyOptSparse — common interface to sparse nonlinear optimizers, used by DAFoam and the MACH stack
Visualization
- Blender Geometry Nodes — node-based procedural geometry inside Blender
- ParaView — VTK-based analysis and visualization application for large simulation output
- Polyscope — C++/Python viewer for meshes and point clouds, for looking at geometry mid-algorithm
- PyVista — 3D visualization and mesh analysis for science and engineering, over VTK
- VTK — the visualization and mesh processing toolkit that PyVista wraps
Domain-specific
- orlab — Python module for scripting OpenRocket, for simulation and computational workflows
- RocketPy — 6-DOF trajectory simulation for high-power rocketry
Contributing
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
You are welcome to fork the repository and add new tools and submit a pull request or open an issue detailing what you’d like to be added and why it fits the criteria.
Planned work for the list is in Roadmap.
Inclusion criteria
An entry should meet all three:
- An ascertainable open-source licence — a licence file, or an explicit statement in the README or documentation.
- Distributed as software — packaging, releases, or build and install instructions. Not a single script published as a paper appendix.
- Maintained — meaningful activity within roughly the last two years.
The second test matters most in fields that publish a new method as reference code alongside the paper, as topology optimization does. That code is valuable reading and often well cited, but it is not software anyone maintains, and star count does not distinguish the two.
Local preview
GitHub Pages builds this site with Jekyll. Previewing it locally uses the same toolchain, so what you see matches what gets published.
Once per clone:
bundle config set --local path vendor/bundle
bundle install
Then:
bundle exec jekyll serve
and open http://127.0.0.1:4000/awesome-computational-design/. The path matters —
baseurl in _config.yml puts the site under it, and the server root is a 404.
This is worth doing before opening a pull request. A Markdown or config change can render correctly on github.com and still break once deployed, because github.com does not render this README with Jekyll.
Guidelines
- Be respectful — maintain a respectful and collaborative tone in all interactions.
- Be clear — ensure that your contributions are well-documented and clearly explained.
- Be consistent — follow the existing formatting and organizational structure.
Roadmap
- A list of tutorials — how to use the tools here to actually do computational design.
- Example workflows — how to combine several of them into an integrated pipeline.
These are one piece of work rather than two: an example workflow is a tutorial with the prose removed. They are also broader than this list’s scope. Cataloguing tools is a different job from teaching people to chain them together, which means working files, versions that agree with each other, and output to regenerate whenever any of them changes.
That belongs in its own repository, which will be linked here once it exists.
License
Distributed under the AGPL v3 License. See LICENSE for more information.
Acknowledgements
Inspired by Awesome Lists and awesome.
Thanks to all the open-source contributors and communities that make these tools possible.