Files
simulatore-induttori/config.py
T

150 lines
4.8 KiB
Python
Raw Normal View History

2026-07-05 11:58:52 +02:00
# Configurazione per il simulatore termico 1D attraverso lo spessore.
#
# Modello fisico:
# - La piastra è ridotta a una dimensione: z = direzione dello spessore.
# - La sorgente di calore si trova sul lato caldo, z = 0.
# - Il sensore si trova sul lato opposto, z = spessore.
# - L'induttore si muove lungo x. Poiché il modello è 1D, il movimento è
# rappresentato come un flusso termico variabile nel tempo nel punto
# allineato con il sensore fisso.
# - Il riscaldamento a induzione è approssimato come riscaldamento volumetrico
# che decade esponenzialmente con la profondità secondo un parametro skin depth.
#
# Unità di misura:
# - lunghezza: m
# - tempo: s
# - temperatura: °C
# - flusso termico: W/m²
# - coefficiente di convezione: W/(m² K)
SIMULAZIONE = {
# Numero di file CSV da generare.
"num_run": 2,
2026-07-05 11:58:52 +02:00
# Tempo simulato totale.
"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.
"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.
"dt_interno_s": 0.0002,
2026-07-05 11:58:52 +02:00
# Seed per la riproducibilità.
"seed": 42,
# Cartella di output.
"cartella_output": "dataset",
}
PIASTRA = {
# Spessore della piastra [mm].
"spessore_mm": 0.12,
2026-07-05 11:58:52 +02:00
# Numero di celle del volume finito attraverso lo spessore.
# Più nodi = maggiore risoluzione spaziale, simulazione più lenta.
"n_nodi": 61,
# Temperatura iniziale uniforme.
"temperatura_iniziale_C": 25.0,
# Deve corrispondere a una chiave in materials.py.
"materiale": "banda_stagnata",
2026-07-05 11:58:52 +02:00
}
ARIA = {
# Temperatura dell'aria ambiente.
"temperatura_ambiente_C": 25.0,
# Coefficiente di convezione sul lato caldo (sorgente).
"h_caldo_W_m2K": 12.0,
# Coefficiente di convezione sul lato freddo (sensore).
"h_freddo_W_m2K": 8.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": 1.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,
2026-07-05 11:58:52 +02:00
# Coordinata laterale fissa della proiezione del sensore sul lato caldo.
# L'effetto della sorgente è massimo quando x_sorgente == x_sensore e offset_y_m == 0.
"x_sensore_m": 0.0,
# Offset laterale tra il percorso della sorgente e la linea del sensore.
# Se diverso da zero, la sorgente passa a lato del sensore, riducendo il picco.
"offset_y_percorso_m": 0.0,
# Velocità della sorgente lungo x.
"velocita_m_s": 2.0,
2026-07-05 11:58:52 +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.
"distanza_sorgenti_m": 0.5,
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.
"flusso_termico_picco_W_m2": 5500000.0,
2026-07-05 11:58:52 +02:00
# Frazione del flusso incidente che diventa effettivamente calore nella piastra.
"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 = {
# Il sensore si trova sul lato freddo della piastra.
"posizione": "lato_freddo",
# Inerzia del sensore del primo ordine.
# Valore più alto = risposta del sensore più lenta.
"costante_tempo_s": 0.05,
2026-07-05 11:58:52 +02:00
# Deviazione standard del rumore gaussiano.
"rumore_std_C": 0.15,
# 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.
"abilitata": True,
# Deviazioni standard relative.
"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.
"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.
"offset_y_max_assoluto_m": 0.001,
2026-07-05 11:58:52 +02:00
}