Learn optimal surface embeddings φ:(u,v)→(x,y,z) that minimize the Willmore energy functional ∫∫ H² dA using PyTorch.
# Setup (see environment/README.md for details)
conda create -n willmore python=3.10
conda activate willmore
pip install -r environment/requirements.txt
# Train (defaults to configs/config_genus2.yaml)
python run.py
# Train with a specific config
python run.py --config configs/config_genus1.yaml
# Visualize training evolution
python visualisation/visualise.py
# Visualize analytical reference surfaces
python visualisation/visualise_analytic.py --genus 1
# Visualize supervised pretraining results
python visualisation/visualise_supervised.py --genus 1The network learns a surface embedding φ:(u,v)→(x,y,z), minimizing:
where H is mean curvature computed via automatic differentiation of the embedding.
# Resume from a checkpoint
python run.py --config configs/config_genus1.yaml --resume checkpoints/run_1/latest_model.pt
# Visualize with both surface and loss plots
python visualisation/visualise.py --mode both
# Visualize analytical surfaces (genus 0, 1, or 2)
python visualisation/visualise_analytic.py --genus 1
# Supervised pretraining visualization
python visualisation/visualise_supervised.py --genus 1 --points 20000Config files are in configs/. The --config flag accepts any path; it defaults to configs/config_genus2.yaml.
model.py- EmbeddingNetwork: φ(u,v)→(x,y,z) with Fourier features for periodicitylosses.py- Willmore energy ∫∫H²dA computed via autodiff of fundamental formssampling.py- Parameter space sampling for torus, sphere, double torus, etc.run.py- Training loop with checkpointingutils.py- Visualization utilities and run managementvisualisation/- Visualization scripts:visualise.py- Training evolution visualizationvisualise_analytic.py- Analytical reference surface visualizationvisualise_supervised.py- Supervised pretraining visualization
Willmore Energy: W = ∫∫ H² √(EG-F²) du dv
where H = (EN-2FM+GL)/(2(EG-F²)) is mean curvature, computed from:
- First fundamental form: E = ⟨φ_u,φ_u⟩, F = ⟨φ_u,φ_v⟩, G = ⟨φ_v,φ_v⟩
- Second fundamental form: L = ⟨φ_uu,n⟩, M = ⟨φ_uv,n⟩, N = ⟨φ_vv,n⟩
- Unit normal: n = (φ_u × φ_v) / |φ_u × φ_v|
Known minima:
- Genus 0: round sphere, W = 4π ≈ 12.566
- Genus 1: Clifford torus, W = 2π² ≈ 19.74
- Genus 2: Lawson surface ξ_{2,1} (conjectured), W ≈ 21.89
Training creates:
checkpoints/run_N/- Model states (best_model.pt,latest_model.pt, epoch checkpoints)logs/run_N/training_history.json- Loss curves and metricslogs/run_N/loss_curves.png- Automatically generated after training
@article{Hirst:2026qwi,
author = "Hirst, Edward and Earp, Henrique N. S{\'a} and Silva, Tom{\'a}s S. R.",
title = "{Minimising Willmore Energy via Neural Flow}",
eprint = "2604.04321",
archivePrefix = "arXiv",
primaryClass = "math.DG",
month = "4",
year = "2026"
}