2026-08-03 00:18:00 +02:00
|
|
|
# Configurazione per il simulatore termico a elementi shell di una fascetta.
|
2026-07-05 11:58:52 +02:00
|
|
|
#
|
2026-07-05 19:20:47 +02:00
|
|
|
# Geometria e modello fisico:
|
2026-08-03 00:18:00 +02:00
|
|
|
# - La fascetta è un anello cilindrico con diametro medio "diametro_medio_mm",
|
|
|
|
|
# spessore "spessore_mm" e lunghezza "lunghezza_mm".
|
|
|
|
|
# - Il dominio simulato è l'intera superficie cilindrica, discretizzata con
|
|
|
|
|
# elementi shell quadrilateri a 4 nodi e una temperatura per nodo.
|
|
|
|
|
# - Sistema di coordinate: x = direzione della lunghezza (da 0 a lunghezza),
|
|
|
|
|
# theta = coordinata circonferenziale, periodica (theta = 0 coincide con
|
|
|
|
|
# theta = 2*pi). Il sensore sta per convenzione su theta = 0.
|
|
|
|
|
# - Lo spessore non è discretizzato: la parete è termicamente sottile, quindi
|
|
|
|
|
# la faccia esterna e quella interna hanno la stessa temperatura. La
|
|
|
|
|
# validità dell'ipotesi è riportata a ogni run come numero di Fourier sullo
|
|
|
|
|
# spessore in metadata.csv.
|
|
|
|
|
# - Le sorgenti a induzione si muovono in direzione -x sulla superficie
|
|
|
|
|
# esterna, lungo la generatrice individuata da "offset_y_percorso_m".
|
|
|
|
|
# - La conduzione assiale e quella circonferenziale sono entrambe risolte e
|
|
|
|
|
# nascono dall'assemblaggio: elementi adiacenti condividono i nodi del
|
|
|
|
|
# bordo comune.
|
|
|
|
|
# - Faccia esterna e faccia interna scambiano entrambe per convezione con
|
|
|
|
|
# l'aria su tutta l'area; i due bordi assiali scambiano attraverso lo
|
|
|
|
|
# spessore della lamiera.
|
2026-07-05 19:22:51 +02:00
|
|
|
# - La temperatura iniziale della fascetta è pari alla temperatura ambiente.
|
2026-07-05 19:20:47 +02:00
|
|
|
# - Il sensore è un pirometro a infrarossi posto all'interno della fascetta,
|
|
|
|
|
# a distanza "distanza_parete_mm" dalla parete interna: misura senza
|
|
|
|
|
# contatto la temperatura della superficie interna nel punto x = "x_mm".
|
2026-07-05 11:58:52 +02:00
|
|
|
#
|
|
|
|
|
# Unità di misura:
|
2026-07-05 19:20:47 +02:00
|
|
|
# - lunghezza: m (mm dove indicato dal suffisso)
|
2026-07-05 11:58:52 +02:00
|
|
|
# - tempo: s
|
|
|
|
|
# - temperatura: °C
|
|
|
|
|
# - flusso termico: W/m²
|
|
|
|
|
# - coefficiente di convezione: W/(m² K)
|
|
|
|
|
|
|
|
|
|
SIMULAZIONE = {
|
|
|
|
|
# Numero di file CSV da generare.
|
2026-07-05 22:00:06 +02:00
|
|
|
"num_run": 1,
|
2026-07-05 11:58:52 +02:00
|
|
|
|
|
|
|
|
# Tempo simulato totale.
|
2026-07-05 12:41:24 +02:00
|
|
|
"durata_s": 30.0,
|
2026-07-05 11:58:52 +02:00
|
|
|
|
|
|
|
|
# Frequenza di campionamento CSV.
|
|
|
|
|
# Esempio: 2 Hz significa una riga ogni 0.5 s.
|
2026-07-05 12:14:41 +02:00
|
|
|
"frequenza_campionamento_hz": 10.0,
|
2026-07-05 11:58:52 +02:00
|
|
|
|
|
|
|
|
# Passo di integrazione numerica interna.
|
|
|
|
|
# Può essere inferiore al periodo di campionamento CSV.
|
2026-08-03 00:18:00 +02:00
|
|
|
"dt_interno_s": 0.001,
|
2026-07-05 11:58:52 +02:00
|
|
|
|
|
|
|
|
# Seed per la riproducibilità.
|
|
|
|
|
"seed": 42,
|
|
|
|
|
|
|
|
|
|
# Cartella di output.
|
|
|
|
|
"cartella_output": "dataset",
|
2026-07-06 11:38:25 +02:00
|
|
|
|
|
|
|
|
# Numero di processi paralleli per la generazione dei run.
|
|
|
|
|
# None = usa tutti i core disponibili.
|
|
|
|
|
"num_processi": None,
|
2026-07-05 11:58:52 +02:00
|
|
|
}
|
|
|
|
|
|
2026-07-05 19:20:47 +02:00
|
|
|
FASCETTA = {
|
2026-08-03 00:18:00 +02:00
|
|
|
# Diametro medio della fascetta [mm], cioè il diametro della superficie
|
|
|
|
|
# su cui giace la mesh shell.
|
|
|
|
|
"diametro_medio_mm": 70.0,
|
2026-07-05 19:20:47 +02:00
|
|
|
|
|
|
|
|
# Lunghezza della fascetta lungo x [mm].
|
|
|
|
|
"lunghezza_mm": 100.0,
|
|
|
|
|
|
|
|
|
|
# Spessore della parete [mm].
|
2026-07-05 22:00:06 +02:00
|
|
|
"spessore_mm": 0.18,
|
2026-07-05 11:58:52 +02:00
|
|
|
|
2026-08-03 00:18:00 +02:00
|
|
|
# Numero di elementi shell lungo x (lunghezza).
|
|
|
|
|
"n_elementi_x": 100,
|
2026-07-05 19:20:47 +02:00
|
|
|
|
2026-08-03 00:18:00 +02:00
|
|
|
# Numero di elementi shell lungo la circonferenza.
|
|
|
|
|
# Più elementi = maggiore risoluzione spaziale, simulazione più lenta.
|
|
|
|
|
"n_elementi_theta": 110,
|
2026-07-05 11:58:52 +02:00
|
|
|
|
|
|
|
|
# Deve corrispondere a una chiave in materials.py.
|
2026-07-05 12:14:41 +02:00
|
|
|
"materiale": "banda_stagnata",
|
2026-07-05 11:58:52 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ARIA = {
|
|
|
|
|
# Temperatura dell'aria ambiente.
|
|
|
|
|
"temperatura_ambiente_C": 25.0,
|
|
|
|
|
|
2026-08-03 00:18:00 +02:00
|
|
|
# Coefficiente di convezione sulla faccia esterna (lato sorgenti).
|
2026-07-05 19:20:47 +02:00
|
|
|
"h_esterno_W_m2K": 12.0,
|
2026-07-05 11:58:52 +02:00
|
|
|
|
2026-08-03 00:18:00 +02:00
|
|
|
# Coefficiente di convezione sulla faccia interna (lato sensore).
|
2026-07-05 19:20:47 +02:00
|
|
|
"h_interno_W_m2K": 8.0,
|
2026-07-05 19:22:51 +02:00
|
|
|
|
2026-08-03 00:18:00 +02:00
|
|
|
# Coefficiente di convezione sui bordi assiali (x = 0 e x = lunghezza),
|
|
|
|
|
# che espongono all'aria solo lo spessore della lamiera.
|
2026-07-05 19:22:51 +02:00
|
|
|
"h_bordi_W_m2K": 10.0,
|
2026-07-05 11:58:52 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SORGENTE = {
|
2026-07-05 14:25:57 +02:00
|
|
|
# Distanza dal sensore, all'inizio della corsa, della sorgente del
|
|
|
|
|
# gruppo più vicina al sensore (quella che lo raggiunge per prima).
|
2026-07-05 22:25:12 +02:00
|
|
|
"x_inizio_m": 5.0,
|
2026-07-05 14:25:57 +02:00
|
|
|
|
|
|
|
|
# Distanza dal sensore, alla fine della corsa, della sorgente del
|
|
|
|
|
# gruppo più lontana dal sensore (quella che lo supera per ultima).
|
2026-07-05 12:41:24 +02:00
|
|
|
"x_fine_m": 5.0,
|
2026-07-05 11:58:52 +02:00
|
|
|
|
2026-08-03 00:18:00 +02:00
|
|
|
# Offset circonferenziale, misurato lungo l'arco, tra il percorso delle
|
|
|
|
|
# sorgenti e la generatrice osservata dal sensore. Se diverso da zero, la
|
|
|
|
|
# sorgente passa a lato e il calore deve diffondere lungo la
|
|
|
|
|
# circonferenza per raggiungere il sensore.
|
2026-07-05 11:58:52 +02:00
|
|
|
"offset_y_percorso_m": 0.0,
|
|
|
|
|
|
2026-07-05 19:20:47 +02:00
|
|
|
# Velocità delle sorgenti lungo x. Il segno indica il verso di marcia.
|
2026-07-05 22:00:06 +02:00
|
|
|
"velocita_m_s": -1.0,
|
2026-07-05 11:58:52 +02:00
|
|
|
|
2026-07-05 14:25:57 +02:00
|
|
|
# Numero di sorgenti equidistanti che si muovono insieme come un gruppo
|
|
|
|
|
# rigido (stessa velocità, sigma, flusso ed efficienza).
|
|
|
|
|
"numero_sorgenti": 3,
|
|
|
|
|
|
|
|
|
|
# Distanza lungo x tra sorgenti consecutive del gruppo.
|
2026-07-05 22:00:06 +02:00
|
|
|
"distanza_sorgenti_m": 1.0,
|
2026-07-05 14:25:57 +02:00
|
|
|
|
2026-07-05 11:58:52 +02:00
|
|
|
# Raggio del punto gaussiano. Valore più alto = impronta termica più larga.
|
|
|
|
|
"sigma_punto_m": 0.012,
|
|
|
|
|
|
|
|
|
|
# Flusso termico incidente massimo prima della correzione per efficienza.
|
2026-07-05 22:37:21 +02:00
|
|
|
"flusso_termico_picco_W_m2": 4434000.0,
|
2026-07-05 11:58:52 +02:00
|
|
|
|
2026-07-05 19:20:47 +02:00
|
|
|
# Frazione del flusso incidente che diventa effettivamente calore nella fascetta.
|
2026-07-05 11:58:52 +02:00
|
|
|
"efficienza_riscaldamento": 0.35,
|
|
|
|
|
|
|
|
|
|
# Frequenza di induzione usata per stimare la skin depth se skin_depth_fissa_m è None.
|
2026-08-03 00:18:00 +02:00
|
|
|
# La shell non discretizza lo spessore, quindi la skin depth non entra
|
|
|
|
|
# nella soluzione: è calcolata e registrata come diagnostica, per
|
|
|
|
|
# verificare che resti confrontabile con lo spessore della lamiera.
|
2026-07-05 11:58:52 +02:00
|
|
|
"frequenza_hz": 20000.0,
|
|
|
|
|
|
|
|
|
|
# Override della skin depth. Usare None per calcolarla dalle proprietà elettriche del materiale.
|
|
|
|
|
# Esempio: 0.0002 significa 0.2 mm.
|
|
|
|
|
"skin_depth_fissa_m": None,
|
|
|
|
|
|
|
|
|
|
# Annulla il flusso termico una volta che la sorgente ha superato x_fine_m.
|
|
|
|
|
"zero_dopo_fine": True,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SENSORE = {
|
2026-07-05 19:20:47 +02:00
|
|
|
# Coordinata x del punto della superficie interna osservato dal sensore [mm].
|
2026-08-03 00:18:00 +02:00
|
|
|
# La posizione circonferenziale è theta = 0 per convenzione: è l'offset
|
|
|
|
|
# delle sorgenti a essere misurato rispetto al sensore.
|
2026-07-05 19:20:47 +02:00
|
|
|
"x_mm": 50.0,
|
|
|
|
|
|
2026-08-03 00:18:00 +02:00
|
|
|
# Distanza del sensore dalla parete interna [mm].
|
2026-07-05 19:20:47 +02:00
|
|
|
# Il sensore è a infrarossi: la distanza non influenza la misura,
|
|
|
|
|
# è registrata solo come geometria del setup.
|
|
|
|
|
"distanza_parete_mm": 10.0,
|
2026-07-05 11:58:52 +02:00
|
|
|
|
|
|
|
|
# Inerzia del sensore del primo ordine.
|
|
|
|
|
# Valore più alto = risposta del sensore più lenta.
|
2026-07-05 22:00:06 +02:00
|
|
|
"costante_tempo_s": 0.01,
|
2026-07-05 11:58:52 +02:00
|
|
|
|
|
|
|
|
# Deviazione standard del rumore gaussiano.
|
|
|
|
|
"rumore_std_C": 0.15,
|
|
|
|
|
|
2026-07-05 12:41:24 +02:00
|
|
|
# Risoluzione del sensore: passo di quantizzazione della lettura.
|
2026-07-05 11:58:52 +02:00
|
|
|
# Esempio: 0.25 significa che i valori sono arrotondati a 0.25 °C.
|
|
|
|
|
# Usare 0.0 per disabilitare.
|
|
|
|
|
"quantizzazione_C": 0.25,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
RANDOMIZZAZIONE = {
|
|
|
|
|
# Se abilitata, ogni run varia leggermente alcuni parametri.
|
2026-07-05 22:25:12 +02:00
|
|
|
"abilitata": False,
|
2026-07-05 11:58:52 +02:00
|
|
|
|
|
|
|
|
# Deviazioni standard relative.
|
2026-07-05 12:41:24 +02:00
|
|
|
"velocita_std_rel": 0.007,
|
|
|
|
|
"flusso_picco_std_rel": 0.007,
|
|
|
|
|
"sigma_punto_std_rel": 0.007,
|
2026-07-05 11:58:52 +02:00
|
|
|
|
|
|
|
|
# Deviazioni standard assolute.
|
2026-07-05 12:41:24 +02:00
|
|
|
"temperatura_ambiente_std_C": 0.5,
|
2026-07-05 11:58:52 +02:00
|
|
|
"rumore_sensore_std_rel": 0.25,
|
|
|
|
|
|
|
|
|
|
# Offset casuale uniforme del percorso della sorgente in y.
|
|
|
|
|
# Esempio: +/- 0.012 m significa che l'induttore può passare fino a 12 mm
|
|
|
|
|
# dalla linea ideale allineata con il sensore.
|
2026-07-05 12:41:24 +02:00
|
|
|
"offset_y_max_assoluto_m": 0.001,
|
2026-07-05 11:58:52 +02:00
|
|
|
}
|