Skip to content

mfx-inria/ring-stack-opt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Axisymmetric Ring Stack Optimization

A geometry-based, stress-constrained optimization framework for a stack of elastic rings in an axisymmetric setting.

This repository contains the full research implementation used in:

Structural optimization of a stack of elastic rings under gravity
Computer Methods in Applied Mechanics and Engineering, 2025
DOI: https://doi.org/10.1016/j.cma.2025.118698


Overview

This framework combines:

  • Parametric ring geometry defined by (κ, λ, ζ)
  • Implicit geometry representation via regularized Heaviside projection
  • Axisymmetric finite element formulation
  • Adjoint-based stress sensitivities
  • Multi-constraint MMA optimization
  • Optional geometric regularization for robustness and manufacturability

The repository is intentionally structured to separate:

  1. Geometry modeling
  2. FEM validation and gradient verification
  3. Optimization experiments

This separation ensures mathematical transparency, modularity, and reproducibility.


Repository Structure

1_geometry_model/

Pure geometry module:

  • Ring parametrization
  • Implicit field construction
  • Reproduction of geometry-only figures from the paper
  • No FEM coupling

2_fem_model/

Validation-focused notebooks:

  • Forward FEM solve (displacements + stress)
  • Stress P-norm and adjoint gradient verification
  • Full chain rule validation (geometry → FEM → stress)

All gradients are analytically derived and verified using finite differences.
This folder establishes mathematical correctness of the formulation.


3_Optimization/

Optimization experiments demonstrating:

  • Pure geometry-driven optimization
  • Stress-only optimization (ill-posed behavior)
  • Increased instability with higher design freedom
  • Sensitivity to initial conditions
  • Robustness restoration via geometric regularization

Small meshes are used for fast reproducibility
(≈ 8 seconds for ~300 iterations, machine-dependent).


src/

Core research implementation:

  • Geometry parameterization (implicits_t.py)
  • Axisymmetric finite element assembly (discretization.py, elements.py)
  • Global FEM model and stress evaluation (FEM_Model.py)
  • Boundary conditions (boundary_conditions.py)
  • Adjoint sensitivities and objective/constraint evaluation (valueAndGrad_ObjectiveConstraint.py)
  • MMA optimizer (optimizer.py, mma.py)
  • Data storage (storage.py)
  • Visualization utilities (graphs_fields.py, graphs_curves.py)
  • ParaView rendering utilities (render_paraview.py)

This directory contains the reusable computational framework.


Installation

This project relies on a Conda environment to ensure full reproducibility of the numerical experiments.

From the root of the repository:

conda env create -f conda/environment.yaml
conda activate <environment_name>

Usage

This repository is designed as a research framework rather than a turn-key application.

A typical workflow consists of:

  1. Generate an axisymmetric mesh.
  2. Define boundary conditions and gravity loading.
  3. Initialize geometry parameters (κ, λ, ζ).
  4. Assemble and solve the FEM equilibrium problem.
  5. Evaluate stress measures and adjoint sensitivities.
  6. Run gradient-based optimization using MMA/GCMMA.
  7. Post-process and export results.

Executable research demonstrations are provided as Jupyter notebooks in:

  • 2_fem_model/ — validation of forward solver and gradients
  • 3_Optimization/ — optimization experiments and robustness studies

Recommended execution order

For first-time users:

  1. 2_fem_model/demo2_stress_and_adjoint_gradient.ipynb
  2. 2_fem_model/demo3_geometry_fem_chain_rule.ipynb
  3. 3_Optimization/demo03_stressAndGeometryConstrained.ipynb

This sequence first verifies gradient correctness and then runs the robust optimization configuration used in the publication.

Authors

  • Luis Mollericon Titirico (corresponding author)
  • Sylvain Lefebvre
  • Ole Sigmund
  • Jonàs Martínez

Affiliations

  • Université de Lorraine, CNRS, INRIA, LORIA (France)
  • Technical University of Denmark (DTU)

Correspondence

Citation

If you use this repository in academic work, please cite the associated journal article:

@article{Mollericon2025Rings,
  title   = {Structural optimization of a stack of elastic rings under gravity},
  author  = {Mollericon Titirico, Luis and Lefebvre, Sylvain and Sigmund, Ole and Martínez, Jonàs},
  journal = {Computer Methods in Applied Mechanics and Engineering},
  year    = {2025},
  doi     = {10.1016/j.cma.2025.118698}
}

License

This project is licensed under the GNU General Public License v3.0 (GPL-3.0).

The repository includes the MMA/GCMMA implementation from GCMMA-MMA-Python, which is distributed under the GPL license. Accordingly, the entire repository is distributed under GPL-3.0.

See the LICENSE file for full terms.