Code and results for my MSc thesis at Politecnico di Torino: A Computational Framework for Bio-Based 3D-Printed Gridshells using FEM and Neural-Network Surrogates.
Islam Yerzhanuly · Civil Engineering · 2025–2026
Supervisors: Cecilia Surace and Marco Civera.
The project combines a spatial-frame finite element model, a simplified PLA creep model, linearised buckling and neural-network surrogates. The surrogate screens designs, and direct FEM analysis checks the selected candidate. A separate study compares analytical and force-density geometries; the appendix explores four parametric shape modes.
| Folder | Contents |
|---|---|
src/ |
Material, geometry, load, FEM, creep, buckling and surrogate modules |
notebooks/ |
Main analysis and corrected appendix notebooks |
scripts/ |
Ablations, form-finding, shape studies and figure generation |
data/ |
Compact datasets, trained models and reported metrics |
results/ |
Form-finding screen and full-resolution validation tables |
verification/ |
Solver benchmarks and checks of appendix numbers |
The thesis, presentation and local review notes are kept separately from this code repository. Generated plots, caches and the large FEM training archive are excluded.
Use Python 3.11. From the repository folder:
python -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
jupyter labOn Windows, activate with .venv\Scripts\activate.
Start with notebooks/03_pavilion_baseline_staticv2.ipynb for the reference analysis. Notebook kernels must start in notebooks/, since their paths are relative to that folder.
Run notebooks 03 → 04 → 05 → 06 → 07 → 08 → 09 → 10 for the main analysis. Notebook 07 regenerates data/07_dataset_full.npz, needed by notebooks 08 and 09. This large file is not included in Git.
For Chapter 7, run from the repository folder:
python scripts/compare_form_finding.py
python scripts/validate_form_finding.pyThe appendix's corrected candidate comparison is in notebooks/15_closed_loop_design.ipynb. Other studies and their inputs are listed in scripts/README.md. The ablation scripts can rebuild FEM cases from the compact parameter CSV when the large archive is absent. Full dataset generation and training take longer than reading the stored results.
python verification/verify_solver.py
python verification/verify_appendix_numbers.py ../thesis_tex/chapters/appendix_shape_mode.texThe second command needs the thesis source supplied separately. It checks 60 appendix claims against the stored data.
Reference pavilion: 550 nodes, 1521 members, 85 supports; peak deflection 10.9932 mm, peak beam stress 4.9693 MPa, mass 502.97 kg, initial buckling factor 7.5983, and one-year creep multiplier 1.402302.
This is a preliminary linear structural model for a sustained symmetric load. It does not establish construction safety or include imperfections, nonlinear collapse, experimental creep calibration, or all fabrication effects. Stress is a comparative beam-level indicator and depends on member layout.
data/README.md explains the numerical conventions and historical comparisons. data/PROVENANCE.md records the source of each result, including five summaries without a standalone writer. The preserved historical comparisons cannot all be regenerated from the corrected solver alone.
Citation metadata is in CITATION.cff. Code and generated data retain the existing MIT licence. The PLA material card is attributed to Li, Xu and Fang (2024), DOI 10.1016/j.tws.2024.111800.