This commit is contained in:
2026-08-03 00:18:00 +02:00
parent 560c6a6a62
commit 7883f3dead
13 changed files with 1460 additions and 488 deletions
+43 -36
View File
@@ -1,26 +1,25 @@
# Configurazione per il simulatore termico 2D della sezione di una fascetta.
# Configurazione per il simulatore termico a elementi shell di una fascetta.
#
# Geometria e modello fisico:
# - La fascetta è un anello cilindrico con diametro "diametro_mm", spessore
# "spessore_mm" e lunghezza "lunghezza_mm".
# - Il dominio simulato è la sezione rettangolare lunghezza × spessore.
# - Sistema di coordinate: origine (0, 0) nel vertice in alto a sinistra
# della sezione. x = direzione della lunghezza (da 0 a lunghezza),
# z = direzione dello spessore (0 = lato esterno, dove agiscono le
# sorgenti; spessore = lato interno, osservato dal sensore).
# - y è la coordinata circonferenziale: non è risolta spazialmente, l'offset
# y del percorso delle sorgenti è collassato in un'attenuazione gaussiana
# del flusso.
# - Le sorgenti a induzione si muovono in direzione -x sul lato esterno.
# - Il riscaldamento a induzione è approssimato come riscaldamento volumetrico
# che decade esponenzialmente con la profondità z secondo la skin depth.
# - La sezione scambia per convezione con l'aria su tutti e quattro i lati
# (esterno, interno e i due bordi in x). Scambia inoltre per conduzione
# lungo y con il resto della fascetta, assunto a temperatura ambiente:
# il calore conduce attraverso l'intero volume dello spessore mentre le
# superfici esterna e interna dell'intero cilindro perdono calore per
# convezione (equazione dell'aletta), derivato da h_esterno, h_interno e
# spessore_mm senza parametri di conduzione y aggiuntivi.
# - 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.
# - La temperatura iniziale della fascetta è pari alla temperatura ambiente.
# - Il sensore è un pirometro a infrarossi posto all'interno della fascetta,
# a distanza "distanza_parete_mm" dalla parete interna: misura senza
@@ -46,7 +45,7 @@ SIMULAZIONE = {
# Passo di integrazione numerica interna.
# Può essere inferiore al periodo di campionamento CSV.
"dt_interno_s": 0.0002,
"dt_interno_s": 0.001,
# Seed per la riproducibilità.
"seed": 42,
@@ -60,8 +59,9 @@ SIMULAZIONE = {
}
FASCETTA = {
# Diametro della fascetta [mm].
"diametro_mm": 70.0,
# Diametro medio della fascetta [mm], cioè il diametro della superficie
# su cui giace la mesh shell.
"diametro_medio_mm": 70.0,
# Lunghezza della fascetta lungo x [mm].
"lunghezza_mm": 100.0,
@@ -69,12 +69,12 @@ FASCETTA = {
# Spessore della parete [mm].
"spessore_mm": 0.18,
# Numero di celle del volume finito lungo x (lunghezza).
"n_nodi_x": 100,
# Numero di elementi shell lungo x (lunghezza).
"n_elementi_x": 100,
# Numero di celle del volume finito lungo z (spessore).
# Più nodi = maggiore risoluzione spaziale, simulazione più lenta.
"n_nodi_z": 15,
# Numero di elementi shell lungo la circonferenza.
# Più elementi = maggiore risoluzione spaziale, simulazione più lenta.
"n_elementi_theta": 110,
# Deve corrispondere a una chiave in materials.py.
"materiale": "banda_stagnata",
@@ -84,13 +84,14 @@ ARIA = {
# Temperatura dell'aria ambiente.
"temperatura_ambiente_C": 25.0,
# Coefficiente di convezione sul lato esterno (z = 0, lato sorgenti).
# Coefficiente di convezione sulla faccia esterna (lato sorgenti).
"h_esterno_W_m2K": 12.0,
# Coefficiente di convezione sul lato interno (z = spessore, lato sensore).
# Coefficiente di convezione sulla faccia interna (lato sensore).
"h_interno_W_m2K": 8.0,
# Coefficiente di convezione sui bordi laterali (x = 0 e x = lunghezza).
# Coefficiente di convezione sui bordi assiali (x = 0 e x = lunghezza),
# che espongono all'aria solo lo spessore della lamiera.
"h_bordi_W_m2K": 10.0,
}
@@ -103,9 +104,10 @@ SORGENTE = {
# gruppo più lontana dal sensore (quella che lo supera per ultima).
"x_fine_m": 5.0,
# Offset circonferenziale (y) tra il percorso delle sorgenti e il punto
# osservato dal sensore. Se diverso da zero, la sorgente passa a lato,
# riducendo il picco.
# 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.
"offset_y_percorso_m": 0.0,
# Velocità delle sorgenti lungo x. Il segno indica il verso di marcia.
@@ -128,6 +130,9 @@ SORGENTE = {
"efficienza_riscaldamento": 0.35,
# Frequenza di induzione usata per stimare la skin depth se skin_depth_fissa_m è None.
# 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.
"frequenza_hz": 20000.0,
# Override della skin depth. Usare None per calcolarla dalle proprietà elettriche del materiale.
@@ -140,9 +145,11 @@ SORGENTE = {
SENSORE = {
# Coordinata x del punto della superficie interna osservato dal sensore [mm].
# La posizione circonferenziale è theta = 0 per convenzione: è l'offset
# delle sorgenti a essere misurato rispetto al sensore.
"x_mm": 50.0,
# Distanza del sensore dalla parete interna lungo z [mm].
# Distanza del sensore dalla parete interna [mm].
# Il sensore è a infrarossi: la distanza non influenza la misura,
# è registrata solo come geometria del setup.
"distanza_parete_mm": 10.0,