mojtaba/amini
Home/Articoli/Research · CFD
Jun 2025·10 min di lettura·Research · CFD

Aggiungere LEM a CANTERA — un rito di passaggio da ingegnere ricercatore

Come un Linear Eddy Model è entrato nella libreria open-source CANTERA — tra C++, Fortran e Python — e cosa mi ha insegnato sul rilasciare codice nelle codebase altrui.

CANTERA è la libreria di termodinamica-chimica a cui molti ricercatori della combustione si affidano. È ben ingegnerizzata, decennale, multi-linguaggio — e largamente scritta da persone che non incontrerai mai. Aggiungere un Linear Eddy Model come closure di sub-griglia sembrava sulla carta scrivere un sub-modello. In pratica è stato un esercizio di sei mesi nel rispettare una codebase.

L'idea LEM è semplice: in un flusso reattivo turbolento, i vortici che dominano la chimica avvengono a scale più piccole di qualsiasi LES pratica. Embeddi un solver 1D sub-griglia in ogni cella LES, lo avanzi in lock-step, e ne fai tornare le statistiche alla LES. Una closure che cattura la chimica di piccola scala senza risolverla.

Scrivere il kernel LEM era la parte rapida. Dieci settimane di C++, con gli integratori Fortran wrappati F2C e i binding Python in cima. La parte lenta era far accettare gli stessi formati che CANTERA già accettava. Far interoperare con i kernel di chimica scritti sei anni prima da qualcun altro. I test di regressione che nessuno aggiornava da due release.

La regola che ho imparato a fatica: prima di aprire una pull request a un progetto open-source, leggine cento già mergiate. Leggi cosa i maintainer chiedono. Leggi quali convenzioni rifiutano. I maintainer non fanno gatekeeping per cattiveria — proteggono vent'anni di stabilità accumulata contro il contributore nuovo che sa il modello ma non la codebase.

Le aggiunte LEM hanno prodotto una pipeline PDF/SDR per un bruciatore Bunsen a metano premiscelato. Il paper è arrivato due anni dopo. La meta-lezione: il kernel LEM più pulito del mondo non vale niente se non si incastra nel tooling esistente. Lo stesso vale in Dekali (l'AI vive dove vive il workflow) e in Extrema (il chatbot risponde nella UI dove il cliente è già). Gli istinti di ingegnere-ricercatore traslano sorprendentemente bene a quelli di ingegnere industriale.