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
Constitutive modeling and micromechanics in C++ with Python bindings. Anisotropic elasticity, plasticity (isotropic, kinematic, Chaboche), viscoelasticity, hyperelasticity and phase transformation, with finite-strain support.
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.
Analysis & identification
Analyse directional stiffness, yield surfaces and cyclic response, then identify model parameters with hybrid genetic-gradient algorithms.
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
A Python finite element solver for nonlinear mechanics, with an emphasis on geometric and material nonlinearity, model reduction (PGD) and multiscale homogenization.
Periodic homogenization
Apply periodic boundary conditions on representative volume elements to extract full anisotropic effective stiffness and nonlinear macroscopic response.
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.
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.
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.
microgen — Microstructure generation & meshing
microgen
A Python library for microstructure generation and meshing: TPMS, lattices, polycrystals and hybrid architectures, exported to CAD or directly to periodic FE meshes.
Graded TPMS & lattices
Generate gyroids, Schwarz, Schoen and other triply periodic minimal surfaces, with spatially graded thickness and mapping onto arbitrary CAD bodies.
Polycrystals & architectured cells
Voronoi polycrystals, octet-truss lattices, honeycombs and hybrid architectures, ready for periodic homogenization in fedoo or Abaqus.
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.
Graded — tanh-graded gyroid, thickness varying along x.
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.
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.