Home/ Guida/ Guida operatore/ Ricerca scientifica e risultati

10 — Ricerca scientifica e risultati

Questo articolo raccoglie la scienza alla base di Karst Firewall 5.0: il modello fisico su cui gira il simulatore, il Karst Fire Weather Index e i miglioramenti misurati che introduce, come il motore è calibrato e validato su incendi reali e lo stato di implementazione attuale di ciascun filone di ricerca.

È il complemento di lettura di 04 — Come eseguire una simulazione ⭐: quell'articolo spiega come pilotare il motore, questo spiega perché produce i numeri che produce e quanto ciascuna funzionalità sia stata dimostrata.

Da dove vengono i numeri. Le cifre di rilevamento e accuratezza riportate sotto provengono dai componenti di ricerca a monte — il servizio Karst Fire Weather Index (kf50-kfwi-api) e il motore di propagazione PyroWISE — e sono registrate nel README.md di questo progetto e in docs/IMPLEMENTATION_STATUS.md. Sono risultati di ricerca, non garanzie certificate sul campo: l'output del simulatore resta un supporto alle decisioni, mai un sostituto del giudizio operativo.


Il modello fisico

Quando avvii un run, il cruscotto invia i tuoi input al motore esterno PyroWISE, che fa avanzare un perimetro di incendio sul terreno e sui combustibili reali del Carso. Due modelli peer-reviewed svolgono il lavoro principale:

  • Velocità di propagazione superficiale FBP. Il sistema canadese Fire Behavior Prediction (FBP) (FCFDG 1992) stima quanto velocemente il fronte di fiamma si muove nel combustibile di superficie a partire dal tipo di combustibile, dall'umidità del combustibile (tramite i codici FWI più sotto), dalla velocità del vento e dalla pendenza — una velocità e una direzione di propagazione locali in ogni punto del fronte. (PyroWISE usa il sistema FBP canadese, non il modello statunitense di Rothermel; gli strumenti della famiglia Rothermel — FARSITE / FlamMap / BehavePlus — servono solo da comparatori esterni.)
  • Propagazione del fronte d'onda secondo Huygens. Il perimetro avanza come un fronte d'onda: ogni punto del bordo attuale dell'incendio si espande come una piccola onda ellittica (allungata sottovento e in salita) e il perimetro successivo è l'inviluppo di tutte queste onde. Ripetendo l'operazione su brevi passi temporali si forma una geometria di incendio realistica, modellata da terreno e vento, anziché un semplice cerchio in espansione.

Le policy di barriera (es. soft_roads_v1, soft_with_highways_v1) modulano il fronte d'onda dove incontra strade, autostrade, ferrovie, fasce tagliafuoco e muretti a secco — rallentando o bloccando la propagazione senza tagliare di netto il fronte.

PyroWISE Fire Growth Simulation

Il motore è PyroWISE (infordata-kf50-firegrowth), un servizio di propagazione del fuoco in puro Python, GIS-native, che alimenta il digital twin di KF5. KF5 lo integra via HTTP e un piano dati condiviso — mai tramite codice condiviso (ADR-005, "dati, non codice"): il cruscotto invia una richiesta di run; PyroWISE risolve la propagazione e conserva gli artefatti (perimetri, inviluppi, COG di tempo di arrivo, manifest) nel proprio object store, che il cruscotto rilegge.

È una reimplementazione clean-room dello stack scientifico peer-reviewed CFFDRS / WISE in Python moderno, con le fondamenta esplicite e citabili:

  • Sistema FWI — Fire Weather Index forestale canadese (Van Wagner 1987; aggiornamento NRCan FWI2025).
  • Sistema FBP — Fire Behavior Prediction sui 16 tipi di combustibile canonici (FCFDG 1992; errata Wotton et al. 2009). È questo il modello di propagazione superficiale — non Rothermel.
  • Propagazione vettoriale di Huygens — il modello di crescita a fronte d'onda di Prometheus / WISE (Tymstra et al. 2010, NOR-X-417).

Sopra i 16 tipi canonici PyroWISE aggiunge un set di envelope del Carso a 9 classi (K01–K09) con un resolver di combustibile a 5 griglie (specie × struttura × età × umidità × continuità). Circa 4 000+ test passano nell'intera codebase.

Due solver. Ogni run — o ogni membro dell'ensemble — è fatto avanzare da uno di questi:

SolverMetodoVelocitàUso
huygensfronte d'onda ellittico quasi-statico (predefinito, calibrato)riferimentoreplica di perimetro autorevole; p10/p50/p90 + probabilità di combustione puliti
arrival_fieldcampo eikonale vettorizzato di tempo di arrivo~41× più veloce (~5,8× su un orizzonte di 6 h)uno screening rapido del rischio per superfici di velocità del fronte / tempo di arrivo dell'ensemble — non una replica autorevole; fallisce la fedeltà del perimetro completo per meccanismo (F-221)

Ensemble. Un ensemble di scenario esegue la stessa ignizione / orizzonte / combustibile come N membri (predefinito 16, fino a 256) con input perturbati lungo tre assi — meteo + ignizione + stato del combustibile — e li impila in burn_probability.tif (0–1), arrival_time_p{10,50,90}.tif, envelope_p{10,50,90}.geojson, front_speed_{mean,p90}.tif e un sidecar ensemble_summary_v1 (seed di base deterministico, specifica di perturbazione, estrazioni per membro, accordo p10/p90).

Risultati scientifici lato motore

  • Accuratezza calibrata, in dominio. Con priors del Carso calibrati le coorti di produzione raggiungono un IoU medio di coorte ≈ 0,39–0,41 — Carso K04 (IT / FVG, karst_priors_v13) 0,385–0,408 e il plateau FVG (fvg_priors_v1) 0,413; i migliori fit per-evento SLO arrivano a 0,61–0,68. Lo ~0,39–0,41 è un limite strutturale di calibrazione (un conflitto di Pareto tra regimi estivo-convettivo / stagione fredda / wind-driven, F-093), non un limite dell'ottimizzatore.
  • Confine di onestà. Quel valore calibrato ~0,39–0,41 è l'accuratezza di produzione; la baseline senza calibrazione a libera combustione (IoU ~0,25–0,27) non è l'accuratezza di PyroWISE — è una base deliberatamente non ottimizzata per il confronto con motori esterni (Cell2Fire, WISE, FARSITE) a un confine di file.
  • Il fuoco di chioma è inerte alla propagazione realistica del Carso. Con l'altezza di base della chioma ricostruita dal CHM bilaterale, la ROS di testa (p50 2–7 m/min su entrambi gli eventi calibrati di pino nero) resta sotto la soglia di innesco di chioma FCFDG-92 di ~12 m/min, quindi l'aumento di ROS di chioma è inerte ed è rilasciato solo come diagnostico (OFF di default). Il Carso è dominato dalla superficie a intensità realistica (F-225 → F-237).
  • Stato dinamico del combustibile — NO-GO a runtime. Una leva offline limitata (rsi_scalar) aumenta gli eventi O1 di +0,10–0,13 IoU, ma la forma a runtime è NO-GO: sia il canale LFMC Stage-1C (F-220) sia l'A/B in hindcast con NDVI a runtime (F-222, ΔIoU medio −0,179) falliscono i loro gate, quindi PYROWISE_FUEL_STATE_FORM resta static_v0 — un feed NDVI/LFMC live non migliora oggi l'accuratezza di produzione. Una verifica successiva (F-245) ha poi scagionato l'indice: sulla classe decidua dominante per area l'NDMI legge lo stesso segno "più umido del riferimento" dell'NDVI, quindi cambiare indice non può ribaltare il risultato. Il vero blocco è la coorte di combustibile e il filone è chiuso, non in attesa di un nuovo proxy.
  • NO-GO ben caratterizzati (bloccati dall'evidenza — non ritentare senza nuovi dati): ignizione multi-focus per EMSR601 (F-212), l'AOI nazionale SLO senza substrato di simulazione (F-173), edifici-come-barriera (F-190) e una replica a piena fedeltà del megaincendio Dixie con Cell2Fire (computazionalmente infattibile, F-175).

Stato di implementazione lato motore (al 2026-06-20)

  • ✅ Superfici di rischio dell'ensemble — probabilità di combustione, tempo di arrivo + inviluppo p10/p50/p90, COG di velocità del fronte media / p90 e un sidecar ensemble_summary_v1.
  • ✅ Narratore AI dei run — ogni run emette narrator_{it,sl,en}.md (Anthropic Sonnet 4.6, con un template di fallback deterministico sempre attivo).
  • ✅ Policy di barriera — soft_with_railways_v1 (predefinita), soft_roads_v1, soft_with_highways_v1 (tier autostrade), soft_railways_only_v1, …
  • ✅ Confidenza della calibrazione + provenienza per run impressa nel manifest.
  • ✅ Overlay di supporto alle decisioni (opt-in, che non toccano il kernel) — correlatore di ignizione OSINT, nowcast con assimilazione di evidenze, filtro a particelle di assimilazione dati, ingest sensori (LDT / LoRa-MIP / naso elettronico).
  • 🟡 TerraWise multi-hazard (terremoto / alluvione / ondata di calore) — solo dati e spento di default; un lint AST gli vieta di importare il kernel incendi.
  • 🟡 Stato dinamico del combustibile — codice completo ma static_v0 per il NO-GO sopra.
  • ⚠️ Dispersione del fumo — smoke_concentration.tif resta NON CALIBRATO: il modello di trasporto è valido, il vincolo è l'osservazione, non il codice (F-092).

Legenda: ✅ attivo · 🟡 soggetto a gate / spento di default · ⚠️ limitazione nota.

Forzante meteorologico — FWI → KFWI

Il segnale di pericolo deriva dal sistema Fire Weather Index (FWI) forestale canadese, la stessa famiglia usata in tutta Europa. Concatena cinque sotto-codici derivati da temperatura, umidità, vento e pioggia:

CodiceNomeCosa misura
FFMCFine Fuel Moisture Codeumidità della lettiera superficiale a rapida asciugatura — facilità di innesco
DMCDuff Moisture Codeumidità degli strati organici poco compatti
DCDrought Codemateria organica compatta profonda e ad asciugatura lenta — siccità stagionale
ISIInitial Spread Indexvelocità di propagazione attesa (FFMC + vento)
BUIBuildup Indexcombustibile totale disponibile alla combustione (DMC + DC)

Karst Firewall ricalibra questo sistema generico nel Karst Fire Weather Index (KFWI) — combinando un modello di innesco di machine learning spazio-temporale con una severità FWI tarata sul Carso, perché le soglie europee generiche sottostimano gravemente il rischio in questo territorio.

Risultati scientifici

L'analisi KFWI a monte riporta, per il Carso:

  • 77,5 % di rilevamento degli incendi con il KFWI rispetto a un baseline del 29 % con il solo FWI — la calibrazione locale più che raddoppia la quota di incendi reali segnalati dall'indice.
  • Un modello di innesco Random Forest con AUC 0,934, basato su feature di densità degli hotspot e distanza dalle infrastrutture e su un campionamento stagionale corretto.
  • Il 97,3 % degli incendi si verifica al di sotto della soglia FWI "High" europea generica — il motivo principale per cui un indice specifico per il Carso e una probabilità di innesco esplicita sono essenziali, anziché riusare classi di pericolo preconfezionate.
  • Le previsioni di severità sono supportate dai prodotti FWI di Copernicus e lo stato di vegetazione / combustibile è letto dal verde satellitare (NDVI, Copernicus Sentinel-2).

Output di insieme (ensemble) e probabilistico

Un singolo run è un unico "what-if" deterministico. In modalità ensemble il motore esegue più membri con input perturbati e li aggrega in prodotti probabilistici:

  • una mappa di probabilità di combustione (0–1) che mostra con quale coerenza i membri bruciano ciascuna cella, e
  • bande di tempo di arrivo p10 / p50 / p90 e inviluppi di perimetro — una visione ottimistica, centrale e pessimistica della propagazione.

Così una singola linea sulla mappa diventa una distribuzione calibrata di esiti per la pianificazione in condizioni di incertezza.

Calibrazione e validazione

Il motore è calibrato su incendi reali e documentati — gli eventi Copernicus EMS del Carso 2022 (EMSR601, EMSR604) e gli eventi sul versante sloveno — con un livello di confidenza della calibrazione per classe di combustibile che indica quanto un run sia vicino a un evento di calibrazione. L'accuratezza è misurata come Intersection-over-Union (IoU) tra perimetri simulati e osservati, esposta nel benchmark di accuratezza in-app (vedi 07 — Analisi & dati).

Il Research Studio

(Fondamenta rilasciate il 02/08/2026; disattivo di default.)

Il lanciatore operativo /simulation/index è pensato per un incendio, adesso. La ricerca ha bisogno di altro: molti run, variati di proposito, tenuti insieme, rieseguibili mesi dopo con gli stessi input. È il PyroWISE Research Studio (/simulation-studio/index) — un banco di lavoro separato costruito accanto alle schermate operative, mai dentro di esse, proprio perché il lavoro sperimentale non possa destabilizzare il lanciatore su cui conta un operatore.

Il suo modello di oggetti, già a database:

OggettoCosa contiene
Workspaceun progetto di ricerca
Area di analisila geografia a cui un esperimento è confinato
Esperimento (+ revisioni)il disegno — e la sua storia, così un risultato resta attribuibile alla versione esatta che l'ha prodotto
Gruppo di run (+ elementi)i run di un esperimento, conservati e confrontati come insieme

Oggi la schermata è una shell a quattro pannelli (albero del progetto · canvas · inspector · console dei run) con l'etichetta "Research — not for operational use". I run di ricerca sono isolati dagli elenchi operativi per costruzione — una regola fail-closed, non un filtro che qualcuno può dimenticare.

È disattivo di default su ogni installazione e, finché lo è, l'URL è indistinguibile da una pagina inesistente. Attivarlo è una decisione esplicita dell'amministratore, registrata nel controllo di versione, più un permesso per utente.

Perché qui conta l'estinzione. Una replica di ricerca di un incendio reale è interpretabile solo se si sa che cosa hanno fatto le squadre — vedi 04 — Replicare un incendio reale con la sua estinzione. Il cockpit registra la timeline degli interventi e le barriere tattiche; il motore non le applica ancora alla fisica, e il contratto lato motore che lo consentirebbe è una proposta aperta, non una funzionalità rilasciata.

Emissioni di carbonio degli incendi (CO₂ / GHG)

(Backend contract-first rilasciato il 03/08/2026 — ancora nessuna schermata web operatore.)

È iniziato il lavoro su un inventario per singolo incendio dei gas serra: quanta CO₂ (e quali altri prodotti di combustione) ha rilasciato un dato incendio. La scala di metodi prevista è una stima bottom-up in stile IPCC (area bruciata × carico di combustibile × completezza di combustione × fattore di emissione), una stima top-down attribuita a partire dai prodotti satellitari di potenza radiativa del fuoco, e un ibrido riconciliato — ciascuna registrata come run versionato rispetto a un set di fattori versionato, così che un numero sia sempre riconducibile al metodo e ai fattori che l'hanno prodotto.

Il flusso backend ora governa importazione e approvazione esperta dei set di fattori, costruisce un manifest riproducibile, lo invia al calcolatore del motore, valida la distribuzione d'incertezza restituita e pubblica un unico risultato corrente nel modello di lettura. È ancorato allo stesso evento canonico dell'Atlante degli incendi. Il flag della funzione è stato attivato il 04/08/2026, ma non esiste ancora una schermata web e il set di screening incluso non è pre-approvato. Una installazione continua a non avere stime di produzione: il calcolo si rifiuta di procedere finché un esperto non approva i fattori, e l'endpoint PyroWISE non è ancora distribuito. Un flag attivo non è di per sé un valore di CO₂. La dicitura corretta è CO₂ lordo dell'incendio, mai «impatto climatico netto»; il carbonio netto non è implementato. Il grado D è solo screening basato sull'area e non è mai verificato. Vedi il runbook sulle emissioni.

Stato di implementazione

Dove si trova oggi ciascun filone di ricerca (sintesi da docs/IMPLEMENTATION_STATUS.md):

  • ✅ Ensemble: probabilità di combustione + bande p10/p50/p90 — rilasciato e validato dal vivo end-to-end.
  • ✅ Karst Fire Weather Index — attivo come livello operativo di pericolo.
  • ✅ Livello di confidenza della calibrazione — attivo; emette una nota di confidenza per ogni run.
  • ✅ Trigger automatico da incendio attivo — attivo (rilevamento FIRMS → nowcast con gating → un solo allarme per cluster), promosso a auto non presidiato per i cluster corroborati.
  • ✅ Modalità esercitazione "Fire Drill" — riproduce un incendio storico attraverso il vero ciclo trigger → nowcast → scorecard post-azione, in modo completamente isolato.
  • ✅ Atlante degli incendi e dossier — attivi di default dal 02/08/2026.
  • 🟡 Stato dinamico del combustibile (guidato da NDVI) — codice completo ma tenuto OFF, e il filone è chiuso: l'A/B in hindcast sugli eventi del Carso 2022 ha mostrato che il proxy NDVI riduceva l'accuratezza (ΔIoU medio −0,179), e una verifica successiva ha stabilito che cambiare indice vegetazionale (es. con NDMI) non può ribaltare il risultato — il limite è la coorte di combustibile, non l'indice.
  • 🟡 Repliche consapevoli dell'estinzione — il cockpit registra dispatch e barriere tattiche e sa attribuire loro la sovrastima come proxy; il motore non applica ancora l'estinzione alla fisica dell'incendio.
  • 🟡 Research Studio — solo fondamenta, disattivo di default (sopra).
  • 🟡 Dispersione del fumo v2 — opzionale e non calibrata; un ausilio visivo, non un modello quantitativo di pennacchio.
  • 🟡 Inventario CO₂ / GHG per incendio — approvazione dei fattori, manifest riproducibili, ingestione rigorosa dei risultati, ricalcolo degli elementi obsoleti e modello di lettura sono rilasciati; resta disattivato in attesa di fattori approvati e dell'endpoint del motore (sopra).

Legenda: ✅ attivo · 🟡 sperimentale / soggetto a gate · ⛔ non ancora funzionante.

Approfondisci. La scienza a livello di progetto e i partner sono sul portale pubblico (Informazioni sul progetto, Ricerca e risultati, Osservazione della Terra). Il record tecnico completo è nel README.md del repository, in docs/IMPLEMENTATION_STATUS.md e nelle note di ingegneria in docs/pyrowise/ e docs/karst/.