The 3MAH initiative brings together three complementary, interoperable open-source libraries: simcoon for constitutive modeling and micromechanics, fedoo for nonlinear finite element analysis, and microgen for microstructure generation and meshing. Together, they provide a complete pipeline from geometry to simulation for research in mechanics of heterogeneous and architectured materials.

simcoon — Constitutive modeling & micromechanics

simcoon

simcoon

Constitutive modeling and micromechanics in C++ with Python bindings. Anisotropic elasticity, plasticity (isotropic, kinematic, Chaboche), viscoelasticity, hyperelasticity and phase transformation, with finite-strain support.

simcoon docs

Mean-field homogenization

Mean-field homogenization

Effective properties of composites with Mori-Tanaka and self-consistent schemes, framed by Voigt and Reuss bounds and validated against experimental data.

See example

Directional stiffness

Analysis & identification

Analyse directional stiffness, yield surfaces and cyclic response, then identify model parameters with hybrid genetic-gradient algorithms.

See example

Parameter identification from cyclic experiments

Identify seven Chaboche parameters — initial yield σ_y, Voce isotropic hardening (Q, b) and two non-linear Armstrong-Frederick backstresses (C₁, D₁, C₂, D₂) — from three cyclic uniaxial tests at increasing strain amplitudes. simcoon's EPCHA UMAT is the forward model, driven through sim.solver; the new simcoon.identify module wraps SciPy's differential evolution with a key-based file-templating workflow that generalises to any optimiser or external simulator.

EPCHA UMAT · E = 140 GPa, ν = 0.3 (fixed) · 7 parameters identified · cost = NMSE-per-response, balanced across the three tests · optimiser: scipy.optimize.differential_evolution (popsize 15, maxiter 80, seed 42) · final cost ≈ 8 × 10⁻³.

fedoo — Nonlinear finite element analysis

fedoo

fedoo

A Python finite element solver for nonlinear mechanics, with an emphasis on geometric and material nonlinearity, model reduction (PGD) and multiscale homogenization.

fedoo docs

Periodic homogenization

Periodic homogenization

Apply periodic boundary conditions on representative volume elements to extract full anisotropic effective stiffness and nonlinear macroscopic response.

See example

Beam and shell elements

Beam, shell and solid elements

From 2D plates with holes to 3D beam lattices and pressurised shells: a unified API for 1D, 2D and 3D structural analysis.

Read more

Nonlinear and finite-strain mechanics

Plastic buckling of a thin tube under axial compression — 2D axisymmetric model with updated-Lagrangian finite strain, self-contact, and a simcoon EPICP elasto-plastic UMAT. Line-search Newton with adaptive stiffness drives the tube from undeformed to fully folded in a single nonlinear solve.

Undeformed tube — initial configuration

Initial

Evolution

Fully folded tube — final accordion-like configuration with equivalent plastic strain field

Final

E = 200 GPa · σ_y = 300 MPa · power-law isotropic hardening σ = σ_y + k·pm (k = 1000, m = 0.3) · 240 axial elements · 3D revolution from the axisymmetric solution · field shown: equivalent plastic strain p.

Contact with IPC

Robust incremental potential contact (IPC) via the ipctk backend — barrier-method, intersection-free, frictional or frictionless contact for indentation, self-contact and lattice compression. The disk-on-plate example here is validated against the Hertzian half-space solution.

Read more

microgen — Microstructure generation & meshing

microgen

microgen

A Python library for microstructure generation and meshing: TPMS, lattices, polycrystals and hybrid architectures, exported to CAD or directly to periodic FE meshes.

microgen docs

Graded TPMS

Graded TPMS & lattices

Generate gyroids, Schwarz, Schoen and other triply periodic minimal surfaces, with spatially graded thickness and mapping onto arbitrary CAD bodies.

See example

Polycrystals & architectured cells

Voronoi polycrystals, octet-truss lattices, honeycombs and hybrid architectures, ready for periodic homogenization in fedoo or Abaqus.

Read more

Graded and periodic meshes

microgen drives Gmsh and MMG from Python to deliver two complementary mesh styles for architectured materials: graded structures with spatially varying thickness, and seamlessly periodic unit cells ready for periodic-homogenisation BCs in fedoo or Abaqus.

Spatially graded gyroid with the conforming triangular mesh visible across the gradient

Graded — tanh-graded gyroid, thickness varying along x.

A single TPMS unit cell tiled three by two showing seamless periodicity across cell boundaries

Periodic — unit cell tiled 3 × 2, no seam visible.

Open CASCADE / CadQuery for geometry · Gmsh for the conforming triangulation · MMG for adaptive remeshing · exported as .vtk /.msh for fedoo, Abaqus and others.

Continuous morphing between TPMS families

Blend any two TPMS surface functions with a tanh weight to walk continuously through families: gyroid → Schwarz P → Schwarz D → Neovius → Schoen IWP → Schoen FRD → Fischer-Koch S → PMY → honeycomb → Lidinoid → split P → gyroid. The animated transition exposes the underlying surface-function arithmetic of microgen.

Read more

From microstructure to simulation

The same Kelvin (truncated-octahedron) unit cell is generated and meshed with microgen, exported as a conforming periodic mesh, then loaded directly into fedoo to run a periodic homogenization with simcoon constitutive models. One workflow, three libraries — geometry, mesh and simulation kept in lock-step.

Kelvin RVE - conforming periodic mesh from microgen Kelvin RVE - periodic homogenization with fedoo
Same Kelvin unit cell — left: periodic conforming mesh from microgen; right: periodic homogenization (shear EYZ, σYZ field) in fedoo.

Team

Meet the researchers and labs behind 3MAH.

About the team

Gallery

Explore simulations and renderings produced with the 3MAH stack.

Open gallery