Files
davide 4d83ac4e70 Allinea le proprietà della banda stagnata all'acciaio dolce reale
Il rivestimento di stagno è troppo sottile per influire sulle proprietà
in massa: la banda stagnata è fisicamente acciaio a basso tenore di
carbonio, quindi ne eredita conducibilità, densità, calore specifico,
resistività e permeabilità. Ricalibra il flusso di picco della sorgente
di conseguenza e documenta le fonti in README.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-05 22:37:21 +02:00

177 lines
6.3 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Configurazione per il simulatore termico 2D della sezione 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 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
# contatto la temperatura della superficie interna nel punto x = "x_mm".
#
# Unità di misura:
# - lunghezza: m (mm dove indicato dal suffisso)
# - tempo: s
# - temperatura: °C
# - flusso termico: W/m²
# - coefficiente di convezione: W/(m² K)
SIMULAZIONE = {
# Numero di file CSV da generare.
"num_run": 1,
# Tempo simulato totale.
"durata_s": 30.0,
# Frequenza di campionamento CSV.
# Esempio: 2 Hz significa una riga ogni 0.5 s.
"frequenza_campionamento_hz": 10.0,
# Passo di integrazione numerica interna.
# Può essere inferiore al periodo di campionamento CSV.
"dt_interno_s": 0.0002,
# Seed per la riproducibilità.
"seed": 42,
# Cartella di output.
"cartella_output": "dataset",
}
FASCETTA = {
# Diametro della fascetta [mm].
"diametro_mm": 70.0,
# Lunghezza della fascetta lungo x [mm].
"lunghezza_mm": 100.0,
# Spessore della parete [mm].
"spessore_mm": 0.18,
# Numero di celle del volume finito lungo x (lunghezza).
"n_nodi_x": 100,
# Numero di celle del volume finito lungo z (spessore).
# Più nodi = maggiore risoluzione spaziale, simulazione più lenta.
"n_nodi_z": 15,
# Deve corrispondere a una chiave in materials.py.
"materiale": "banda_stagnata",
}
ARIA = {
# Temperatura dell'aria ambiente.
"temperatura_ambiente_C": 25.0,
# Coefficiente di convezione sul lato esterno (z = 0, lato sorgenti).
"h_esterno_W_m2K": 12.0,
# Coefficiente di convezione sul lato interno (z = spessore, lato sensore).
"h_interno_W_m2K": 8.0,
# Coefficiente di convezione sui bordi laterali (x = 0 e x = lunghezza).
"h_bordi_W_m2K": 10.0,
}
SORGENTE = {
# Distanza dal sensore, all'inizio della corsa, della sorgente del
# gruppo più vicina al sensore (quella che lo raggiunge per prima).
"x_inizio_m": 5.0,
# Distanza dal sensore, alla fine della corsa, della sorgente del
# 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_y_percorso_m": 0.0,
# Velocità delle sorgenti lungo x. Il segno indica il verso di marcia.
"velocita_m_s": -1.0,
# 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.
"distanza_sorgenti_m": 1.0,
# 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.
"flusso_termico_picco_W_m2": 4434000.0,
# Frazione del flusso incidente che diventa effettivamente calore nella fascetta.
"efficienza_riscaldamento": 0.35,
# Frequenza di induzione usata per stimare la skin depth se skin_depth_fissa_m è None.
"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 = {
# Coordinata x del punto della superficie interna osservato dal sensore [mm].
"x_mm": 50.0,
# Distanza del sensore dalla parete interna lungo z [mm].
# Il sensore è a infrarossi: la distanza non influenza la misura,
# è registrata solo come geometria del setup.
"distanza_parete_mm": 10.0,
# Inerzia del sensore del primo ordine.
# Valore più alto = risposta del sensore più lenta.
"costante_tempo_s": 0.01,
# Deviazione standard del rumore gaussiano.
"rumore_std_C": 0.15,
# Risoluzione del sensore: passo di quantizzazione della lettura.
# 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.
"abilitata": False,
# Deviazioni standard relative.
"velocita_std_rel": 0.007,
"flusso_picco_std_rel": 0.007,
"sigma_punto_std_rel": 0.007,
# Deviazioni standard assolute.
"temperatura_ambiente_std_C": 0.5,
"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.
"offset_y_max_assoluto_m": 0.001,
}