Metamaterials with Topological Optimization from Python at Imperial College

Published on May 20, 2026 | Translated from Spanish

Researchers at Imperial College London have developed a computational framework that uses density-based topology optimization to tune metamaterial unit cells. The system assigns numerical values to each element of the design domain, and an optimizer updates these densities until the simulated homogenized response matches the target points defined by the user.

metamaterial unit cell lattice structure being optimized by density-based topology optimization algorithm, Python code running in terminal on laptop screen showing iteration progress, 3D finite element mesh of a complex micro-architecture morphing during simulation, graduate student adjusting parameters on engineering workstation, Imperial College London logo visible on monitor, technical engineering visualization style, glowing orange and blue density contours transitioning across the design domain, high-contrast industrial lighting, photorealistic render with precise geometric details

Workflow with Firedrake, pyadjoint, and cyipopt 🛠️

The workflow uses open-source Python libraries such as Firedrake for finite elements, pyadjoint for automatic differentiation, and cyipopt for nonlinear optimization. The integration method employed is key to achieving design convergence. The authors state that this approach could support the development of metamaterials for morphable structures, soft robotics, and energy-absorbing materials, combining simulation and optimization in an accessible environment.

The Optimizer That Doesn't Know When to Stop ☕

Because nothing says efficiency like letting an algorithm decide what your material should look like while you sip coffee. The system iterates until the simulation matches the target, but one wonders: what if the target is a material that absorbs energy and also makes coffee? For now, the researchers stick to morphable structures, soft robotics, and energy absorption, which is already quite a lot.