# 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": 8, # Tempo simulato totale. "durata_s": 80.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.02, # Seed per la riproducibilità. "seed": 42, # Cartella di output. "cartella_output": "dataset", } PIASTRA = { # Spessore della piastra [mm]. "spessore_mm": 0.12, # 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", } 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 = { # La sorgente parte da x = x_inizio_m e si muove verso x_fine_m. "x_inizio_m": -0.08, "x_fine_m": 0.08, # 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": 0.004, # 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. # Calibrato per portare il lato sensore a circa 200-250 °C con lamiera # sottile di banda stagnata (0.12 mm). "flusso_termico_picco_W_m2": 43900.0, # 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": 1.5, # Deviazione standard del rumore gaussiano. "rumore_std_C": 0.15, # Passo di quantizzazione. # 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.08, "flusso_picco_std_rel": 0.15, "sigma_punto_std_rel": 0.10, # Deviazioni standard assolute. "temperatura_ambiente_std_C": 1.0, "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.012, }