# Configurazione per il simulatore termico a elementi shell di una fascetta. # # Geometria e modello fisico: # - 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 # 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.001, # Seed per la riproducibilità. "seed": 42, # Cartella di output. "cartella_output": "dataset", # Numero di processi paralleli per la generazione dei run. # None = usa tutti i core disponibili. "num_processi": None, } FASCETTA = { # 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, # Spessore della parete [mm]. "spessore_mm": 0.18, # Numero di elementi shell lungo x (lunghezza). "n_elementi_x": 100, # 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", } ARIA = { # Temperatura dell'aria ambiente. "temperatura_ambiente_C": 25.0, # Coefficiente di convezione sulla faccia esterna (lato sorgenti). "h_esterno_W_m2K": 12.0, # Coefficiente di convezione sulla faccia interna (lato sensore). "h_interno_W_m2K": 8.0, # 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, } 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, 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. "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. # 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. # 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]. # 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 [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, }