Skip to content
IMTEK-SimulationPublic

About

Microstructure Topology Optimisation

Resources

Stars

0 stars

Watchers

2 watching

Forks

Repository files navigation

muFFTTO

FFT-based micro-scale topology optimization on periodic unit cells using the muGrid / muFFT framework.

Features

  • Topology optimization: Phase-field based optimization with adjoint sensitivity analysis
  • Multi-dimensional: Supports 1D, 2D, and 3D problems
  • FEM discretization: Triangular and hexahedral finite elements with quadrature-based integration
  • FFT solvers: Matrix-free conjugate gradient solvers accelerated by FFT (via muGrid)
  • MPI parallelism: Distributed computing support through muGrid's MPI infrastructure
  • Microstructure library: Built-in parametric geometries (laminates, inclusions, lattices, etc.)

Dependencies

Installation

To install muFFTTO, you can use pip:

git clone https://github.com/imtek-simulation/muFFTTO.git
cd muFFTTO
pip install .

For development, you can install it in editable mode:

pip install -e .

Installing dependencies

The core dependencies numpy and scipy will be installed automatically. muGrid must be installed separately. You can install them from source:

pip install git+https://github.com/muSpectre/muGrid.git

Package Structure

Module Description
domain.py Core classes PeriodicUnitCell and Discretization for setting up the computational domain, fields, and operators
topology_optimization.py Objective functions, sensitivity analysis (adjoint method), and phase-field potentials for elasticity
topology_optimization_conductivity.py Topology optimization for thermal conductivity problems
solvers.py Preconditioned conjugate gradient (PCG) and Adam optimizer for solving linear systems and optimization problems
solvers_nonlinear.py Nonlinear solver implementations for advanced optimization
discretization_library.py Shape function gradient matrices for various element types (linear triangles, bilinear rectangles, trilinear hexahedra)
material_models.py Abstract base classes and implementations for material constitutive models
geometry.py Periodic microstructure geometries: composable shapes, phase fields and named geometries (MPI-parallel)
microstructure_library.py Backward-compatible get_geometry wrapper used by the examples
grid_adaptation_methods.py Methods for adaptive mesh refinement and grid adaptation
grid_adaptation_arbitrary.py Arbitrary grid adaptation strategies
analytical_grid_adaptation.py Analytical solutions for grid adaptation
tensor_operations.py Utility functions for tensor operations and indexing
visualization_utils.py Visualization and post-processing utilities
io_utils.py Save/load fields to NetCDF (MPI-parallel, muGrid FileIONetCDF): snapshots, time series, numpy reader

Documentation

The docs/ folder explains the mathematics behind the code and how each example works:

  • Theory and numerics: the periodic cell problem, FE discretization on a pixel grid, the FFT-preconditioned CG solver, effective properties, adjoint topology optimization and grid adaptation
  • Example walkthroughs in docs/examples/, one page per example folder
  • Known issues: suspected bugs found while documenting the code

Examples

The examples/ directory contains working examples organized by topic:

Homogenization (examples/homogenization/)

  • Thermal conductivity: 2D and 3D examples with various discretization methods
  • Small-strain elasticity: 2D and 3D homogenization with FEM

Topology Optimization (examples/topology_optimization/)

  • 2D and 3D topology optimization for elasticity and conductivity
  • Grid tiling and adaptive refinement strategies

Analytical Solutions (examples/analytical_solutions/)

  • Validation against Hashin analytical bounds for composite materials

Grid Adaptation (examples/grid_adaptation/)

  • Examples of mesh refinement and coordinate transformations

Internal Contact (examples/internal_contact/)

  • Contact mechanics and third-medium interaction problems

Phase-Field Fracture (examples/phase_field_fracture/)

  • AT2 brittle fracture of a periodic porous cell under macroscopic strain (staggered scheme, history field)

Authors

  • Martin Ladecky (University of Freiburg)
  • Lars Pastewka (University of Freiburg)

License

MIT - see LICENSE.md

Funding

This development has received funding from the European Commission (Marie Sklodowska-Curie Fellowship 101106585 — microFFTTO).

About

Microstructure Topology Optimisation

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages