Generate every PNG that lives under assets/images/index/{simcoon,fedoo,microgen}/.
The scripts are not run by Jekyll — they are run once locally, and their
output PNGs are committed alongside the rest of the site.
| File | What it produces |
|---|---|
render_simcoon.py |
All assets/images/index/simcoon/*.png (Chaboche EPCHA hysteresis, Mori-Tanaka homogenization, directional stiffness rose, SMA loop, yield surfaces). Pure matplotlib + simcoon. |
render_fedoo.py |
All assets/images/index/fedoo/*.png (plate with hole, Kelvin RVE periodic homog, IPC indentation, tube-compression triptych, beam lattice, shell pressure, hero square). Uses fedoo + simcoon (EPCHA / EPICP UMATs) + pyvista. |
render_microgen.py |
TPMS hero stack: cylinder, sphere, helix sweep, graded gyroid, surfaces grid, warm-cylinder variant. Pure pyvista, reads VTK meshes from _render_inputs/. |
render_microgen_hero.py |
Mesh-edge close-up of the graded gyroid (microgen_hero.png). |
render_banner_cylinder.py |
Splash banner image (tpms_cylinder.png — light-themed cylindrical gyroid with mesh visible). |
render_voronoi.py |
3D Voronoi polycrystal tile (voronoi_polycrystal.png). Pure scipy + pyvista, no mesh input. |
The Microgen and fedoo renders need TPMS / lattice / Kelvin meshes — 14 files totalling ~330 MB. They are too large for git and are kept locally (uncommitted, gitignored) at:
_render_inputs/
├── Kelvin.vtk # truncated-octahedron RVE for periodic homog
├── cylinder_g5_tpms.vtk # gyroid wrapped on a cylinder
├── gyroid_graded.vtk # spatially graded gyroid
├── sphere_g4_tpms.vtk # gyroid wrapped on a sphere
├── sweep_g7_helix.vtk # gyroid swept along a helix
└── surfaces_0.vtp … surfaces_8.vtp # 9 unit-cell TPMS for the surfaces grid
The meshes were generated with Microgen; the recipes are in its example gallery.
If/when these stabilise and become worth archiving, scripts/fetch_inputs.py
is ready to download them from a Zenodo deposit (set ZENODO_RECORD in
that file once a record is published; the SHA-256 manifest is already
pinned). For now, the file is dormant.
Each script picks the right conda env from the comment block; in practice the following works on macOS:
# the simcoon / matplotlib charts
conda activate 3mah && python scripts/render_simcoon.py
conda activate 3mah && python scripts/render_voronoi.py
conda activate 3mah && python scripts/render_microgen.py
conda activate 3mah && python scripts/render_microgen_hero.py
conda activate 3mah && python scripts/render_banner_cylinder.py
# fedoo simulations need its own env
conda activate fedoo && python scripts/render_fedoo.py
render_fedoo.py:render_tube_compression writes ~600 MB of intermediate
.fdz archives to a tempfile.mkdtemp(prefix="fedoo_tube_") directory and
unconditionally wipes them in a finally block. Stale fedoo_tube_* dirs
from earlier crashed runs are also swept on startup so the disk stays sane.
bundle exec jekyll build (in the jekyll conda env) to regenerate _site/.git status — only the changed PNGs and any source edits should appear;
the _render_inputs/, results/, examples/, _site/ and .fdz
directories are gitignored and will not show.