Commit iniziale
This commit is contained in:
@@ -0,0 +1,149 @@
|
||||
# Simulatore Termico 1D — Induttore Mobile, Sensore Fisso
|
||||
|
||||
Questo progetto genera misurazioni CSV pseudo-realistiche per una piastra riscaldata da un induttore in movimento.
|
||||
|
||||
## Idea fisica
|
||||
|
||||
La geometria è semplificata a 1D attraverso lo spessore della piastra:
|
||||
|
||||
```text
|
||||
lato caldo, z = 0
|
||||
[sorgente / induttore]
|
||||
--------------------- piastra
|
||||
|
|
||||
| spessore
|
||||
|
|
||||
---------------------
|
||||
[sensore]
|
||||
lato freddo, z = L
|
||||
```
|
||||
|
||||
L'induttore si muove lungo `x`, mentre il sensore è fisso. Poiché il modello è 1D, il movimento della sorgente è convertito in un flusso termico dipendente dal tempo:
|
||||
|
||||
```text
|
||||
q(t) è massimo quando x_sorgente(t) è allineata con x_sensore
|
||||
```
|
||||
|
||||
Il calore viene depositato attraverso lo spessore con un decadimento esponenziale basato sulla skin depth.
|
||||
|
||||
## File
|
||||
|
||||
```text
|
||||
config.py tutti i parametri di simulazione
|
||||
materials.py proprietà dei materiali
|
||||
simulate.py genera i file CSV
|
||||
plot_csv.py utilità di visualizzazione rapida
|
||||
dataset/ file CSV generati dopo aver eseguito simulate.py
|
||||
```
|
||||
|
||||
## Installazione
|
||||
|
||||
```bash
|
||||
python -m venv .venv
|
||||
source .venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
## Generare i file CSV
|
||||
|
||||
```bash
|
||||
python simulate.py
|
||||
```
|
||||
|
||||
La cartella di output conterrà:
|
||||
|
||||
```text
|
||||
dataset/run_0001.csv
|
||||
dataset/run_0002.csv
|
||||
...
|
||||
dataset/metadata.csv
|
||||
```
|
||||
|
||||
## Visualizzare un run
|
||||
|
||||
```bash
|
||||
python plot_csv.py
|
||||
```
|
||||
|
||||
## Principali punti di configurazione
|
||||
|
||||
Modifica `config.py`.
|
||||
|
||||
### Piastra
|
||||
|
||||
```python
|
||||
PIASTRA = {
|
||||
"spessore_m": 0.005,
|
||||
"n_nodi": 61,
|
||||
"temperatura_iniziale_C": 25.0,
|
||||
"materiale": "acciaio_basso_carbonio",
|
||||
}
|
||||
```
|
||||
|
||||
### Sorgente mobile
|
||||
|
||||
```python
|
||||
SORGENTE = {
|
||||
"x_inizio_m": -0.08,
|
||||
"x_fine_m": 0.08,
|
||||
"velocita_m_s": 0.004,
|
||||
"sigma_punto_m": 0.012,
|
||||
"flusso_termico_picco_W_m2": 70000.0,
|
||||
"efficienza_riscaldamento": 0.35,
|
||||
"frequenza_hz": 20000.0,
|
||||
}
|
||||
```
|
||||
|
||||
### Aria
|
||||
|
||||
```python
|
||||
ARIA = {
|
||||
"temperatura_ambiente_C": 25.0,
|
||||
"h_caldo_W_m2K": 12.0,
|
||||
"h_freddo_W_m2K": 8.0,
|
||||
}
|
||||
```
|
||||
|
||||
### Sensore
|
||||
|
||||
```python
|
||||
SENSORE = {
|
||||
"costante_tempo_s": 1.5,
|
||||
"rumore_std_C": 0.15,
|
||||
"quantizzazione_C": 0.25,
|
||||
}
|
||||
```
|
||||
|
||||
## Colonne CSV
|
||||
|
||||
Ogni `run_XXXX.csv` contiene:
|
||||
|
||||
```text
|
||||
id_run
|
||||
tempo_s
|
||||
x_sorgente_m
|
||||
offset_y_sorgente_m
|
||||
flusso_termico_sorgente_W_m2
|
||||
skin_depth_m
|
||||
T_vera_lato_sensore_C
|
||||
T_misurata_sensore_C
|
||||
T_lato_caldo_C
|
||||
T_ambiente_C
|
||||
velocita_m_s
|
||||
sigma_punto_m
|
||||
flusso_picco_W_m2
|
||||
materiale
|
||||
```
|
||||
|
||||
## Limitazione importante
|
||||
|
||||
Questo non è una simulazione FEM elettromagnetica + termica completa. È un generatore pratico di dataset.
|
||||
|
||||
La sorgente a induzione è approssimata da:
|
||||
|
||||
1. un'impronta termica gaussiana in movimento;
|
||||
2. un flusso termico efficace;
|
||||
3. deposizione esponenziale del calore attraverso lo spessore tramite skin depth;
|
||||
4. diffusione del calore 1D attraverso la piastra;
|
||||
5. perdite per convezione su entrambi i lati;
|
||||
6. inerzia, rumore e quantizzazione del sensore.
|
||||
Reference in New Issue
Block a user