CAPITOLO 3
I softwares utilizzati
3.1 Introduzione
Nel campo dei motori a combustione interna va sempre più diffondendosi l’uso di software di calcolo per lo studio dei complessi fenomeni termofluidodinamici che avvengono all’interno di un motore. Infatti per rispettare le sempre più stringenti normative sulle emissioni e per migliorare l’efficienza dei motori sono necessari degli studi accurati che siano in grado di rappresentare con sufficiente accuratezza fenomeni complessi come la meccanica dei fluidi, la turbolenza, gli scambi di calore con le pareti, il miscelamento della carica, la combustione, il breakup delle gocce dello spray, l’interazione tra le gocce liquide e le pareti, la formazione degli inquinanti e l’influenza della geometria della camera di combustione su tutti i processi citati. Per quanto riguarda quest’ultimo aspetto è necessario sottolineare che l’uso di modelli semplificati che fanno uso di un sostanziale contributo di dati sperimentali non consente di poter fare delle previsioni, ma fornisce indicazioni di massima solo per il motore per cui sono stati calibrati. L’uso della fluidodinamica computazionale tridimensionale permette invece di prevedere nel dettaglio tutti i fenomeni descritti e quindi di ridurre i tempi e i costi di sviluppo della progettazione di un nuovo motore. Si possono infatti testare varie soluzioni e fare confronti virtualmente, riducendo così il numero di prototipi da realizzare per la sperimentazione. In prospettiva futura, vista la tendenza alla diminuzione dei costi dei computer ed il contemporaneo incremento delle prestazioni, i modelli di calcolo CFD (Computational Fluid Dynamics) tridimensionali sono probabilmente destinati ad assumere un ruolo sempre più importante.
Per quanto riguarda il lavoro in esame, dovendo studiare la geometria della camera di combustione in relazione alla stratificazione della carica, l’adozione di codici di calcolo tridimensionali è obbligatoria. In questo capitolo verranno illustrati i vari software adoperati per mettere a punto il modello di calcolo.
3.2 Impostazione del lavoro di simulazione
Il lavoro è stato organizzato secondo lo schema di figura 3.1, ed ha inizio con la definizione della geometria del motore e di tutti i suoi parametri operativi. Per quanto riguarda la geometria è stata utilizzato il software CAM Pro/ENGINEER 2000i2 in ambiente Windows.
Occorre precisare che la modellazione della geometria, già realizzata in una precedente tesi, è relativa al dominio di calcolo che nel caso in esame è rappresentato dalla regione fluida.
Definita la geometria, il lavoro è stato diviso in due parti: nella prima, mediate il modulo di interfaccia installato in ambiente Pro/ENGINEER, denominato Icem Mesh Interface, la geometria viene importata, mediante il file di interscambio tetin, all’interno del preprocessore vero e proprio, ANSYS ICEM CFD 4.3.1, operante sempre in ambiente Windows; nel preprocessore, mediante vari passaggi che verranno illustrati nei prossimi paragrafi, viene generata la griglia utilizzata dal solutore, in questo caso KIVA 3Vr2. Il passaggio dal preprocessore al solutore è una fase molto delicata del lavoro, poiché vengono definite le condizioni al contorno e le condizioni iniziali, ed è facile immaginare come un errore o un’errata definizione di tali condizioni porti ad invalidare tutto il lavoro successivo. Per le condizioni iniziali e al contorno è stato creato un modello monodimensionale mediante codice BOOST di AVL. Eseguiti i calcoli, il file di risultati generato dal solutore viene postprocessato mediante il programma di visualizzazione dati OpenDX operante in ambiente UNIX.
Nella seconda parte del lavoro è stato invece utilizzato il codice CFD FIRE 8.3.1 di AVL interfacciato con il codice monodimensionale BOOST di AVL.
Cond. Iniz.&Cont. AVL BOOST Geometria: Pro/Engineer Preprocessore: ANSYS ICEM CFD Solutore: KIVA3Vr2 Postprocessore: Open DX Cond. Iniz.&Cont. AVL BOOST Confronto dei risultati ottenuti Solutore: AVL FIRE 8.3.1
3.3 Il modello CAD: il software Pro/ ENGINEER
La geometria dei modelli utilizzati in questo lavoro è stata modellata tramite il software CAD Pro/ ENGINEER 2000i2. Data l’ampia diffusione di questo software in ambito ingegneristico e l’altrettanto ampia diffusione di manuali e bibliografia non verrà descritto il procedimento necessario alla creazione di un modello CAD.
Per poter modellare le geometrie complicate dei motori è stato spesso necessario ricorrere alla modellazione avanzata tramite realizzazione di “blended surfaces” .
Fig.3.2: particolare della superficie della testata di un modello preso in esame in questo studio
Fig.3.3: particolare della superficie dello stantuffo di un modello preso in esame in questo studio
3.4 ICEM CFD Pro/ENGINEER Mesher Interface
La fase di preprocessamento ha inizio già all’interno dell’ambiente Pro/ENGINEER. Definita la geometria, il modulo ICEM CFD Pro/ENGINEER Mesher Interface permette di esportare il modello direttamente nel programma ICEM CFD che genera la griglia, senza ricorre a file di interscambio (IGES) o costringere il progettista a ricreare il modello in ambiente ICEM. In generale il processo consiste nei seguenti passi:
• generare o importare la geometria del modello in ambiente Pro/ENGINEER;
•
creare i layers che diventeranno “ famiglie” in ICEM CFD;•
inserire nei layers la geometria pertinente;•
settare le “famiglie”;•
generare il file di uscita TETIN.La procedura descritta non è strettamente vincolante, né deve essere necessariamente seguita in maniera sequenziale. Preme precisare fin da ora che alcuni dei passi descritti possono essere svolti anche in ambiente ICEM CFD; fa eccezione la generazione del file tetin che, costituendo i dati in ingresso per ICEM CFD, deve obbligatoriamente essere creato nel modulo di importazione.
3.5 Creazione della griglia computazionale: il software ANSYS ICEM CFD
3.5.1 Introduzione
ICEM CFD permette di trattare geometrie con elevato livello di complessità, di generare ed ottimizzare griglie per il calcolo ed infine, per alcuni solutori commerciali supportati, consente il post processamento dei risultati.
Con questo software si possono creare, data la geometria, griglie parametriche nei seguenti formati:
• Multiblocco strutturate
• Multiblocco non strutturate con generazione semiautomatica ad elementi esaedrici • Non strutturate con elementi tetraedrici
• Cartesiane
• Ibride con elementi esaedrici, tetraedrici, piramidali e prismatici • Di superficie con elementi quadrilateri e triangolari
ICEM CFD è strutturato in ambienti finalizzati allo sviluppo del processo di costruzione della griglia:
• Ambiente file • Ambiente geometry • Ambiente meshing • Ambiente edit mesh • Ambiente Output
Fig.3.4: barra degli ambienti di ICEM CFD mesh editor, disposta secondo la sequenza logica da seguire per la generazione della griglia
Si comincia con l’ambiente file fino ad arrivare, attraversando tutti i vari ambienti in maniera sequenziale, all’ambiente output.
La peculiarità di ICEM CFD è soprattutto quella di creare una sorta di “link” tra il modello CAD ed la griglia tale che, al variare della geometria, anche la griglia varierà di conseguenza. Questo permette all’utente di ridurre drasticamente i tempi di preprocessamento nel caso di problemi parametrici e di mantenere la griglia sempre aggiornata e al passo del lavoro di progettazione. L’interfaccia dei vari moduli è user-friendly ed unificata, in modo tale che in ogni ambiente la schermata video sia sempre la stessa e, come è possibile vedere in figura 3.5, si compone di:
1. Main ICEM CFD window: è l’ambiente di lavoro;
2. Display window: è la finestra che permette di gestire la visualizzazione delle entità geometriche, in figura 3.5, in alto a destra;
3. Message window: è la finestra che comunica all’utente le operazioni svolte dal programma, in figura 3.5, in basso a sinistra.
3.5.2 Ambiente file
L’ambiente file permette all’utente di gestire l’interfaccia grafica di ICEM CFD e di importare, aprire, chiudere, esportare, i vari file necessari per creare la griglia in un formato leggibile dal solutore come il file di geometria, il file delle condizioni al contorno, il file dei blocchi ed il file della mesh.
3.5.3 Ambiente geometry
Contiene tutti gli strumenti necessari per modificare la geometria. Essa può essere importata mediante l’utilizzo di file in vari formati oppure, mediante le varie interfacce, verso altri CAD di cui dispone ICEM CFD (quindi utilizzando il formato nativo TETIN file) o, ancora, creandola mediante il modulo CAD interno a ICEM CFD. Questo modulo è piuttosto elementare, pertanto si presta soprattutto per “riparare” le geometrie importate, che possono presentare errori di conversione e creare curve e superfici di supporto utili per facilitare il processo di generazione della griglia.
L’altra importante funzione di questo ambiente è rappresentata dalla possibilità di raggruppare le entità geometriche come i punti le curve e le superfici, in famiglie, che rappresentano una sorta di “layer”, indispensabili per l’assegnazione delle condizioni al contorno; inoltre, in caso di modelli molto complessi, è possibile visualizzare o meno le varie famiglie in modo da semplificare l’interfaccia grafica e agevolare così l’esecuzione delle varie operazioni all’utente. L’assegnazione delle varie famiglie e la loro modifica avvengono in maniera interattiva per mezzo di appositi menù e ad ognuna di esse è associato un colore.
Fig.3.6: display window
3.5.4 Ambiente meshing
E’ la parte più importante del programma. Il meshing menù contiene le funzioni per generare la griglia. Sono presenti diverse opzioni in relazione al tipo di griglia che si vuole creare.
In questo lavoro è stato utilizzato, come già ricordato, il solutore Kiva3Vr2 che impone l’utilizzo di griglie strutturate multiblocco, per cui si è utilizzato il modulo HEXA.
ICEM CFD HEXA è di fatto il meshatore e permette di creare griglie multiblocco strutturate e non strutturate, con elementi esaedrici se il problema è tridimensionale e con elementi quadrilateri se si vuole discretizzare delle superfici. L’utente si trova a gestire due tipi di entità durante il processo di generazione della mesh: i blocchi che comporranno la griglia e la geometria stessa.
Per spiegare brevemente al lettore la logica del processo di generazione di una griglia multiblocco strutturata tridimensionale, si prende in esame per semplicità la geometria di una valvola (figura 3.7):
Inizialmente il programma crea, in automatico, un solo blocco tridimensionale che inscrive tutta la geometria (figura 3.8); successivamente, tramite operazioni di taglio del blocco e delle entità ad esso associate, quindi facce, lati e vertici, si generano blocchi di dimensione minore. Affinché la griglia di questa semplice geometria sia strutturata occorre dividere il blocco iniziale in 26 blocchi come mostra la figura 3.9.
Fig 3.8: blocco tridimensionale creato Fig 3.9: suddivisione in blocchi necessaria automaticamente dal programma per ottenere una griglia strutturata
Successivamente è necessario associare ad ogni spigolo di ogni blocco la corrispondente curva che dovrà rappresentare (figura 3.10) e muovere i vertici dei blocchi sulle medesime in modo da ottenere una rappresentazione approssimata della geometria (figura 3.11).
Fig 3.10: relazioni tra le curve e gli spigoli Fig 3.11: rappresentazione della valvola di un blocco prima di effettuare le proiezioni
Dopo aver definito il numero di suddivisioni sui lati dei blocchi e associato le superfici curve dei blocchi a quelle della geometria, il lavoro dell’utente è terminato ed il programma automaticamente esegue le proiezioni delle facce e dei lati dei blocchi sulle curve e sulle superfici a cui sono state associate ottenendo così la griglia mostrata nella figura 3.12.
Fig.3.12: griglia della valvola prima e dopo le proiezioni
Per un utente esperto e una geometria semplice come quella considerata, sfruttando degli appositi comandi automatici, si riesce ad ottenere la griglia in pochissimi minuti. Quando si passa invece a geometrie molto complicate, come quelle che verranno prese in esame in questo lavoro, il numero di blocchi necessario per ottenere una griglia strutturata aumenta sensibilmente e con questo il tempo necessario per portare a termine il lavoro di preprocessamento.
Ad esempio per ottenere la griglia in figura 3.13 che rappresenta il modello più complicato realizzato, sono necessari 383 blocchi (figura 3.14) e un tempo di lavoro di circa 10 ore.
Fig 3.13: griglia di un modello realizzato Fig 3.14: blocchi della griglia di fig.2.13
3.5.5 Ambiente Edit mesh
Una volta creata la griglia, si torna nel mesh editor e si passa all’ambiente edit mesh. Tale ambiente contiene tutti gli strumenti necessari per controllare e migliorare la qualità della griglia. Le opzioni disponibili sono differenti a seconda del tipo di mesh con cui abbiamo a che fare. Nel caso in esame è indispensabile, per definire correttamente le condizioni al contorno, orientare i sistemi di riferimento ausiliari dei singoli blocchi secondo la direzione dettata da una sistema di riferimento levogiro principale che solitamente viene definito all’atto dell’importazione del modello geometrico.
Sempre nell’ambiente edit mesh si può procedere allo smoothing dei domini. Per smoothing si intende, traducendo letteralmente dall’inglese, “lisciare” il dominio; questo significa modificare la forma del dominio stesso in maniera più o meno complessa, a seconda dell’algoritmo utilizzato, al fine di migliorare la distribuzione delle celle. Quest’ultimo è un passo importante, soprattutto nel campo dell’analisi CFD, dato che sia la rapidità della soluzione, sia la precisione della stessa dipendono in maniera imprescindibile dalla qualità del mesh e dalla qualità delle
celle, quantificabile come lo scostamento che si registra rispetto alla forma ideale (nel caso in esame l’esaedro perfetto).
3.5.6 Ambiente Output
E’ l’ambiente che si interfaccia con il solutore. ICEM CFD 4.3.1 è un preprocessore “general purpose” e quindi è in grado di interfacciarsi con vari solutori; infatti, una volta entrati in ambiente output, il primo passo da compiersi è appunto la scelta del solutore.
Le condizioni al contorno, che variano a seconda del solutore utilizzato, nel caso di ICEM CFD non vengono assegnate blocco per blocco, come si fa in altri software, ma sfruttando il concetto di famiglia, già illustrato precedentemente, permettendo una più rapida assegnazione ed una minore probabilità di commettere errori.
Nel caso di KIVA 3v è necessario assegnare degli appositi flag o identificatori che permettono al solutore di riconoscere le varie parti della griglia; essi sono il flag di vertice (FV), il flag che identifica le superfici in movimento (IDFACE), il flag che identifica le regioni del cilindro, di aspirazione o scarico (IDREG) ed il flag che specifica le condizione al contorno delle facce delle celle (BCX).
E’ necessario distinguere tra i flag da applicare alle famiglie di volumi e quelli da applicare alle famiglie di superficie. FV IDFACE IDREG BOWL
3.0
-1
1
SQUISH4.0
-1
1
CONDOTTO1.0
-1
2
VALVOLA0.0
-1
2
Tabella 3.1: condizioni necessarie e sufficienti da assegnare alle famiglie di volume
I flag di volume sono necessari al software Kiva per poter imporre le condizioni iniziali numeriche e per identificare le zone le cui celle devono muoversi o rimanere ferme durante il calcolo; in tabella 3.1 sono riassunte le assegnazioni necessarie e sufficienti da imporre per le famiglie di volume su ICEM.
La famiglia “BOWL” raggruppa le celle che devono traslare rigidamente con il movimento del pistone e quindi tutte quelle che si trovano all’interno di eventuali incavi presenti nel pistone
stesso. Nel caso della geometria considerata precedentemente, sono quelle rappresentate in figura 3.15.
Fig.3.15: celle della famiglia “BOWL” Fig.3.16: celle della famiglia “SQUISH”
La famiglia “SQUISH” (figura 3.16), raggruppa le celle che stanno all’interno del cilindro dalla testata alla superficie del pistone esclusa la “BOWL” e che sono soggette al “Rezoning”, ovvero allo spostamento, e ai tagli o aggiunte di piani di celle verticali durante il movimento del pistone. La famiglia “CONDOTTO” (figura 3.17) contiene tutte le celle del condotto di aspirazione che rimangono fisse, ed infine la famiglia “VALVOLA”(figura 3.18) quelle interne alla valvola (non fluide) che non partecipano al calcolo.
Fig.3.17: celle della famiglia “CILINDRO” Fig.3.18: celle della famiglia“VALVOLA”
Le famiglie di superficie servono invece al solutore per acquisire la frontiera del dominio di integrazione delle equazioni che devono essere risolte e quindi applicare su questa le opportune
condizioni al contorno numeriche. Inoltre il flag “IDFACE” permette di far riconoscere al solutore le superfici in movimento, nello specifico il piattello inferiore (famiglia “VALV.BASSA”) e superiore (famiglia “VALV.BASSA”) della valvola e la superficie del pistone (famiglia “PISTONE”). La tabella 3.2 riassume le assegnazioni necessarie e sufficienti da imporre per le famiglie di superfici su ICEM.
FV IDFACE BCX TESTATA
6.0
-1
/
VALV.ALTA2.0
2
1.0
VALV.BASSA2.0
1
1.0
PISTONE2.0
0
1.0
CILINDRO/
/
2.0
INLET/
/
9.0
COLLETTO/
/
2.0
SUP.CONDOTTO/
/
2.0
Tabella 3.2: condizioni necessarie e sufficienti da assegnare alle famiglie di superficie
Oltre alle famiglie che identificano le superfici in movimento precedentemente menzionate vi sono quelle che identificano le pareti: la famiglia “CILINDRO”, è il contorno laterale della famiglia di volume “SQUISH”, la famiglia “TESTATA” che rappresenta le facce di tutte le celle che giacciono sulla testata, la famiglia “SUP.CONDOTTO” è il contorno laterale della famiglia di volume “CONDOTTO” e la famiglia “COLLETTO” che è il contorno della valvola tra il piattello alto e quello basso. Infine si hanno le superfici in cui è presente uno scambio di materia con l’esterno del dominio di calcolo, che nel caso in esame, non avendo analizzato il condotto di scarico, è rappresentata dalla superficie trasversale di estremità del condotto di aspirazione. Una volta terminato il lavoro di assegnazione delle condizioni al contorno si può procedere alla creazione automatica del file “itape17” che rappresenta il file della griglia di input per il solutore Kiva3V.
3.6 Il software KIVA
3.6.1 Introduzione
Il codice KIVA è stato sviluppato dall’ente per la ricerca pubblica statunitense (più precisamente presso i laboratori di LOS ALAMOS) ed è di tipo “open source”. Il codice sorgente è liberamente reperibile in rete, e non essendo coperto da alcuna forma di copyright (a differenza dei pacchetti commerciali), può essere modificato in tutto e per tutto, presentando grandissima flessibilità; quest’ultimo elemento chiarisce perché tale codice è molto diffuso nell’ambito della ricerca, soprattutto per quel che riguarda l’ambiente universitario.
Insieme al codice vengono forniti anche un preprocessore K3PREP ed un postprocessore K3POST, entrambi molto rudimentali ed a cui in genere non si fa riferimento se non per casi particolarmente semplici.
Il codice KIVA è un programma capace di risolvere numericamente flussi non stazionari bidimensionali e tridimensionali, sia laminari che turbolenti, in condizioni supersoniche o subsoniche, di tipo monofase e multifase dispersi. La versione qui adottata è quella originale “per valvole” (KIVA 3Vr2), che è anche l’ultima versione del KIVA (anno 1999). Esso utilizza mesh di tipo multiblocco strutturato, permettendo l’elaborazione di domini alquanto più complessi e quindi più aderenti ai problemi riscontrabili nella pratica.
Riportiamo per completezza il gruppo di equazioni utilizzate dal KIVA, per approfondimenti ci si può riferire alle pubblicazioni [14] e[17]:
• Equazione di continuità di massa in forma differenziale
m
s
m
m
m
m
m
f
D
t
ρ
ρ
δ
ρ
ρ
ρ
ρ
+
+
⎥
⎦
⎤
⎢
⎣
⎡
⎟⎟
⎠
⎞
⎜⎜
⎝
⎛
∇
⋅
∇
=
⋅
∇
+
∂
∂
)
(
• Equazione della quantità di moto in forma differenziale
)
(
3
2
)
(
)
(
K
g
F
p
uu
t
u
ρ
σ
sρ
ρ
ρ
∇
−
+
+
⋅
∇
+
−∇
=
⋅
∇
+
∂
∂
• Equazione dell’energia interna in forma differenziale
ue
p
u
J
Q
c
Q
s
t
e
+
∇
⋅
=
−
∇
⋅
−
∇
⋅
+
+
+
∂
∂
ρ
ρ
ρε
)
(
)
(
(
)
[
s]
s rW
C
C
u
C
C
k
P
u
p
u
k
C
C
C
C
ue
t
+
−
∇
−
+
⎥
⎦
⎤
⎢
⎣
⎡
∇
⎟⎟
⎠
⎞
⎜⎜
⎝
⎛
⋅
∇
+
⋅
∇
⎟
⎠
⎞
⎜
⎝
⎛
−
+
∇
⋅
−
=
⋅
∇
+
∂
∂
ρε
σ
ε
ε
µ
ε
ε
µ
ρ
ρε
ε
η
ε
ε
η
ε
ε
2 1 3 1:
3
2
3
2
)
(
)
(
Per la chiusura del sistema è necessario aggiungere una relazione tra le variabili termodinamiche ovvero l’equazione di stato dei gas.
La procedura di calcolo implementata nel KIVA richiede la discretizzazione dello spazio e del tempo: per lo spazio si utilizza il metodo dei volumi finiti (ALE), mentre per il tempo viene suddiviso il tempo stesso di simulazione in time-steps.
Nel metodo ALE il volume di controllo è costituito dalla cella, mentre le leggi di conservazione sono applicate per determinare le variabili del flusso in alcuni punti discreti delle celle detti vertici; si parlerà di vertici per le componenti della velocità del gas e di centri per le variabili termodinamiche (pressione, temperatura, densità).
Le equazioni, discretizzate con il metodo dei volumi finiti sono di tipo algebrico non lineare e vengono risolte con un adeguato algoritmo numerico di natura iterativa. Il metodo ALE prevede che ogni ciclo di calcolo venga diviso in due fasi, una lagrangiana ed una euleriana.
Nella fase lagrangiana vengono calcolati i termini di diffusione spostando i vertici secondo la direzione del campo di moto, mentre nella successiva fase euleriana i vertici vengono portati nella posizione della griglia computazionale corrente e vengono calcolati i termini di convezione. I termini di diffusione della fase lagrangiana vengono calcolati con un metodo di soluzione implicito con intervallo di tempo “dt” variabile per ridurre i tempi di calcolo. I metodi impliciti sono incondizionatamente stabili (la stabilità non dipende dal “dt”) ma devono soddisfare delle condizioni di accuratezza affinché si ottengano dei risultati con un errore tecnicamente accettabile. Queste condizioni vengono rispettate dal programma scegliendo all’inizio di ogni timestep il dt di quel ciclo di calcolo tale da ottenere risultati con una precisione accettabile per la cella che si trova nelle condizioni peggiori in relazione al gradiente di velocità, alla distorsione ed allo scambio di massa, di energia, e di calore che si hanno durante l’iniezione e la combustione. Si comprende quindi quanto sia importante realizzare una griglia di qualità, che non presenti celle troppo distorte che farebbero aumentare notevolmente il tempo di simulazione anche in relazione al fatto che, se non si ha a che fare con processi quali l’iniezione o la combustione, generalmente la condizione più restrittiva sul “dt” è proprio quella legata alla distorsione delle celle.
I termini convettivi vengono calcolati invece con un metodo esplicito. Essendo la stabilità del metodo dipendente dal dt, deve essere rispettata una condizione su di esso per garantire appunto la stabilità. Qualora il dt risulti inferiore a quello calcolato per i termini di diffusione, il dt per i termini di convezione del ciclo di calcolo viene diviso in sottocicli.
CONDIZIONI AL
CONTORNO
FILE DI GRIGLIA
ITAPE 17
ITAPE 5
ESEGUIBILE
Fig.3.22: schema dei file del programma Kiva 3V
1. Il file itape 17
La griglia viene importata come detto in precedenza mediante il file di input itape17. La griglia deve essere generata con il pistone al punto morto inferiore e, come si vedrà nel seguito, si considera punto iniziale per la legge delle alzate la posizione in cui è stata originariamente disegnata la valvola all’interno del preprocessore.
2. Il file itape 18
Il file itape18 contiene la legge di alzata per punti delle valvole di aspirazione e di scarico in funzione dell’angolo di manovella.
3. Il file itape 5
Il file itape5 è un file di testo non formattato che riporta in sequenza tutti i dati necessari al calcolo come i parametri motoristici (corsa, alesaggio, lunghezza biella, etc.), il numero di giri al
FILE DI USCITA
FILE DI RIPARTENZA
minuto, i parametri di iniezione e di combustione ed i valori numerici delle condizioni iniziali e delle condizioni al contorno.
4. I risultati della simulazione: il file tape9
Alla fine della simulazione o ad angoli di manovella impostati dall’utente, il programma produce un file denominato tape9. Questo non è altro che un file di testo che contiene le informazioni numeriche di tutte le variabili di stato in ogni punto della griglia computazionale al momento in cui viene creato. Esso costituisce il file di input per il post processore che permette la visualizzazione grafica delle grandezze di interesse.
5. Il file di ripartenza: otape8
Per poter svolgere la simulazione in più tempi o per ripartire da un determinato punto modificando alcuni parametri, il Kiva produce con intervalli regolari stabiliti dall’utente in itape5 un file apposito: l’otape 8. Questo risulta essere utile anche in caso di interruzione accidentale della simulazione (ad esempio black-out temporaneo), permettendo di ripartire con la simulazione da poco prima dell’interruzione piuttosto che dall’inizio, semplicemente rinominandolo come itape 7.
3.6.2 Organizzazione del codice Kiva 3v: main program
Come la maggior parte dei programmi oggi in commercio, il KIVA 3v è costituito da un corpo principale del programma detto main program, costituito da poche righe di codice, che richiama in sequenza varie subroutines.
Verranno illustrate nei seguenti paragrafi le modifiche apportate al codice, per eventuali chiarimenti sulla struttura del programma si rimanda a [17], [18], [19].
1. Routine rinput
La routine rinput legge i dati di ingresso e computa le rispettive quantità scalari. Essa è in grado di trattare dati forniti in forma tabulare e di rilevare gli errori nella definizione dei dati di ingresso.
Rinput è stata modificata per poter accogliere le costanti fisiche, necessarie all’implementazione del modello di breakup per iniettori pintle.
2. La routine setup
La routine setup è certamente una delle routine principali del codice KIVA. E’ la routine adibita a leggere il file itape17, a inizializzare tutte le quantità associate alle celle ed ai vertici che saranno utilizzate nel corso dei calcoli ed a rilevare gli errori in termini di condizioni al contorno geometriche (pareti ferme, pareti mobili, simmetria…) commessi durante il processo di generazione della mesh.
La prima importante modifica apportata alla routine riguarda la correzione degli errori generati dal preprocessore ICEM CFD nella costruzione della griglia (un bag dovuto al produttore, presente nella release 4.3.1).
Più precisamente si è rilevato che, pur assegnando le condizioni al contorno corrette, la mesh risultava errata (assegnazioni contraddittorie) nelle celle interne agli steli valvola e quindi si è proceduto alla seguente aggiunta:
do 182 i4=1,nverts if(f(i4).eq.0.0.and.fv(i4).eq.1.0.and.idface(i1tab(i4)). & eq.2.0.and.idface(imtab(imtab(i4))).eq.2.0.and.y(i4).gt.1.9. & and.y(i4).lt.2.0)then fv(i4)=0.0
write(*,*)'il vertice',i4,' ha adesso fv=',fv(i4) endif
if(f(i4).eq.0.0.and.fv(i4).eq.1.0.and.idface(i1tab(i1tab(i4))). & eq.2.0.and.idface(imtab(i4)).eq.2.0.and.y(i4).gt.1.9.
& and.y(i4).lt.2.0)then fv(i4)=0.0
write(*,*)'il vertice',i4,' ha adesso fv=',fv(i4) endif
182 continue
Mediante queste istruzioni è stato possibile assegnare le volute condizioni di celle “materiali” (prive di flusso) alle suddette celle.
Abbiamo già avuto modo di dire nel paragrafo precedente come il KIVA assuma la griglia così come è stata disegnata nel preprocessore, nel nostro caso con la valvola già aperta. Per correggere questa limitazione si può modificare la griglia direttamente dall’interno del codice, spostando “manualmente” i vertici delle celle costituenti le superfici valvola. Ciò è stato ottenuto con le seguenti righe di codice:
do 71 n=1,nvfaceb(2) i4=iabs(i4faceb(n,2))
x(i4)=x(i4)-0.015*valvecx(2) z(i4)=z(i4)-0.015*valvecz(2)
71 continue do 81 n=1,nvfacet(1) i4=iabs(i4facet(n,1)) x(i4)=x(i4)-0.015*valvecx(1) z(i4)=z(i4)-0.015*valvecz(1) 81 continue
Il movimento delle valvole attraverso la griglia viene realizzato mediante la tecnica degli snappers. Essi modificano fortemente la griglia e, di conseguenza, la forma delle celle. Può capitare allora che non venga raggiunta la convergenza del calcolo e si rende quindi necessario un fine lavoro di messa a punto degli snappers stessi, che viene fatto all’interno del setup variando il numero e il valore percentuale dell’alzata a cui tali snappers devono essere eseguiti. 3. La tecnica degli snappers: le routines snapb, snapvtop e snapvfce
Nel Kiva 3v, per simulare il movimento della valvola e del pistone attraverso la griglia, viene utilizzata la cosiddetta tecnica degli snappers. La subroutine snapb funziona disattivando i piani ortogonali all’asse del cilindro di celle di cui è composta la griglia quando il pistone si muove verso l’alto, attivandoli quando il pistone si muove verso il basso (fig. 3.24, 3.25). [19]
L’ultimo piano attivo della griglia viene a rappresentare la superficie superiore del pistone e si muove con la stessa velocità. Di conseguenza, periodicamente, il piano più prossimo alla superficie di snapper attuale assumerà, a sua volta, il compito di rappresentare la superficie dello stantuffo. Se il pistone si muove verso il PMS, sarà il piano collocato una fila di celle sopra al piano di snapper; se il pistone si muove verso il PMI, sarà il piano collocato una fila di celle sotto al piano di snapper attuale, cosi come mostrato in figura 3.23.
Fig. 3.23: Le figure mostrano i vari passi dello snappers; le figure a destra mostrano anche il caso di snapper nell’intorno di una discontinuità nel cilindro, caso tipico del due tempi
Analogamente alla routine snapb, le routines snapvtop e snapvfce si occupano di applicare la tecnica degli snapper per il movimento delle valvole. In questo caso le superfici di taglio sono rispettivamente la superficie superiore della valvola, compreso lo stelo e la superficie inferiore del piattello valvola. Più precisamente le due routines mantengono costante lo spessore della valvola (che coincide anche con la distanza tra le due superfici di snapper), disattivando i piani quando la valvola si sposta verso il basso, cioè incrementa la sua apertura e li riattiva quando la valvola è in fase di chiusura (fig. 3.2-3.3). Il Timing degli snapper, come già specificato precedentemente, viene impostato tramite la tabella presente in setup.
Fig. 3.24: tecnica degli snapper per il movimento della valvola e del pistone di un modello del manuale di KIVA 3V
Fig. 3.25: griglia al punto morto superiore di un esempio del manuale del KIVA3V
4. La chiusura della valvola
Nel momento della chiusura della valvola, la griglia deve presentare almeno una fila di celle tra la superficie superiore della valvola e la sua sede (vedi fig.3.25) . Se alla valvola fosse permesso di andare a battuta nella propria sede, il volume dell’ultima fila di celle diverrebbe nullo e ciò
comporterebbe una singolarità per le equazioni che governano il problema. Per prevenire questa situazione, il KIVA permette di stabilire un’altezza minima per l’ultima fila di celle, al disotto della quale le condizioni al contorno delle celle, interposte tra valvola e sede, vengono cambiate da fluide a solide inibendo la presenza di flusso in tale zona, in accordo con quello che accade nella realtà. E’ evidente che il valore di questa altezza debba essere imposto il più piccolo possibile, compatibilmente con le esigenze di generazione della griglia; per i modelli realizzati in questo lavoro è stato imposto un valore molto basso ossia 0.05 mm contro gli 0.25 mm adottato dagli esempi mostrati nelle figure precedenti del manuale di KIVA.
3.7 Il Rezoning continuo
Le routine snapb e snapvfce hanno il compito, oltre che svolgere i relativi snapper, anche di richiamare le subroutine che realizzano il rezone della griglia. Il dominio di calcolo su cui integrare numericamente le equazioni cambia continuamente in relazione al movimento del pistone e delle valvole per cui è necessario aggiornare la posizione dei vertici che stanno all’interno del cilindro, il processo di aggiornamento della griglia prende il nome di rezone e può essere svolto mediante due tecniche diverse.
La tecnica del rezone manuale, che viene sfruttata ad esempio dal codice FIRE di AVL consiste nel creare manualmente più griglie dello stesso dominio in posizioni differenti; successivamente, il software ha il compito di interpolare geometricamente tali griglie (figura 3.26), permettendo la deformazione continua del dominio (moving mesh). In questo modo è possibile riorganizzare la spaziatura della griglia imponendo che venga mantenuta sempre una certa distanza tra i vertici adiacenti. Ciò deve esser fatto per evitare che, a seguito degli spostamenti di stantuffo e valvole, si creino localmente schiacciamenti, eccessive distorsioni o compenetrazioni delle celle.
Nel caso del KIVA 3V, viene utilizzato un rezone automatico che è in grado di simulare la deformazione del dominio mediante la sola deformazione della griglia di partenza, senza interventi dell’utente ed in maniera del tutto automatica.
Tuttavia quest’ultima tecnica presenta alcuni importanti svantaggi rispetto al rezone manuale. Infatti, se da una parte permette di gestire il movimento in maniera del tutto automatica, dall’altra il rezone automatico necessita di un lungo lavoro di messa a punto per adattare gli algoritmi di rezonig alla geometria in studio.
Fig 3.26: griglie
intermedie da realizzare con il codice FIRE
E’ chiaro che una strategia del genere non è adattabile ad un programma di tipo commerciale, dove il codice sorgente non è disponibile, e comunque richiede lunghi tempi di messa a punto, spesso non compatibili con le esigenze industriali.
Inoltre la tecnica del moving mesh con rezone manuale permette di trattare qualsiasi tipo di geometria e problema, rendendola più appetibile per applicazioni commerciali.
Il problema del rezoning in KIVA è facilmente risolvibile in geometrie con valvole verticali (geometrie di motori diesel) o senza valvole (geometrie di motori due tempi) perché generando tramite il preprocessore una griglia perfettamente allineata in verticale è sufficiente che i piani della griglia vengano tagliati e aggiunti senza creare nessun problema di inversione di celle. Adottando invece geometrie con valvole inclinate tipiche dei motori quattro tempi ad accensione comandata non esiste una singola griglia che soddisfi il movimento di valvole e pistone per tutto il ciclo del motore.
Le routine presenti nel KIVA3V forniscono una base di partenza, perché illustrano i problemi di rezone che nascono durante il movimento della griglia e i possibili metodi per risolverli; gli algoritmi base sono stati pensati per lo studio delle seguenti tipologie di geometrie:
• Motore OHV (Over Head Camshaft) con camera di combustione a cuneo (subroutine rezwedge) (figura 3.28)
• Motore DOHC (Double Over Head Camshaft) con camera di combustione a tetto, quasi simmetrica e quattro valvole (routine rezpent) (figura 3.29)
• Motore DOHC con camera di combustione asimmetrica “cloverleaf” e quattro valvole (routine rezcomb) (figura 3.30)
Fig. 3.27: tipica camera di combustione di un motore A.S Fig. 3.28: motore OHV
Fig. 3.30: camera di combustione pentroof DOHC asimmetrica
Tutte le geometrie che verranno prese in esame in questo lavoro hanno quattro valvole inclinate e testata simmetrica quindi è stato preso come base di partenza la routine rezpent.
3.7.1 La routine rezpent
Nella prima parte della routine, il codice provvede ad assegnare dei particolari flag alle zone che, durante il movimento della valvola e del pistone, subiranno una deformazione e che come discusso nel capitolo precedente sono quelle relative alla famiglia squish. Questa inizializzazione è necessaria per permettere il corretto svolgimento del rezone automatico, il quale agirà ridistribuendo i nodi e le celle con leggi specifiche, a seconda della parte interessata. Si può quindi comprendere fin da subito ciò che avevamo precedentemente sottolineato: la routine è in grado di funzionare correttamente solo se la geometria considerata non si discosta eccessivamente da quella del codice originale.
La variabile di flag nel KIVA è chiamata zsquish e può assumere valore intero variabile da uno a sette:
• zsquish = 0: identifica le pareti del pistone e della testata
• zsquish = 1: identifica le celle all’interno del cilindro che saranno spazzate dal pistone ad esclusione delle pareti del cilindro
• zsquish = 2: identifica le pareti del cilindro
• zsquish = 3: identifica la zona tra le due valvole che viene modificata durante l’incrocio • zsquish = 4: identifica la prima fila di celle al disotto del piattello basso delle valvole • zsquish = 5: identifica la prima fila di celle che circondano le valvole sul lato sud e nord
• zsquish = 6: identifica la prima fila di celle che circondano le valvole sul lato est nel caso di un osservatore posto come il sistema principale di riferimento
• zsquish = 7: identifica le celle ai lati del cilindro che durante il movimento delle valvole non subiranno alcuna deformazione
Zsquish = 0 Zsquish = 1 Zsquish = 3 Zsquish = 7 Zsquish = 6 Zsquish = 5 Zsquish = 2
Fig. 3.31: le figure riportano i flag delle varie zone di squish cosi come sono convenzionalmente assegnate in KIVA 3V
Terminata la fase di assegnazione, si passa alla parte della routine che costituisce il rezone vero è proprio. Per ogni zona identificata da un determinato Zsquish, esiste un determinato algoritmo che provvede alla ridistribuzione delle celle in funzione del movimento della griglia; tuttavia per spiegare brevemente il funzionamento si prende in esame la regione zsquish=1 che è anche quella che presenta i maggiori problemi durante il movimento.
do 110 i4 = i4min,i4max……… ……… ……… if(zsquish(i4).eq.1.0) then
[
( ) ( ) ( ) ( ) ( ) )]
6 1 zkp km z jp z jm z ip z im z zn= ∗ + + + + + (3.1)*
[
( ) ( ) 2 ( ( ) )) ( ) ( )]
8 1 kp x km x xjp im x jp x jm x xn= + + ∗ + + + (3.2) ……….. ……….. endif ……….. ……….. 110 continueL’aggiornamento della posizione dei vertici per la regione contrassegnata da Zsquish=1 viene effettuata sostanzialmente mediante le formule sopra riportate. Per ogni ciclo di calcolo vengono ricalcolate la posizione verticale e orizzontale di ogni vertice attivo (ciclo iterativo tra i vertici minimo e massimo del ciclo di calcolo corrente); la griglia infatti non si deve muovere lungo la direzione ortogonale al piano di simmetria perché la valvola e il pistone non hanno componenti di moto in tale direzione. Gli algoritmi in questione sono delle medie ponderate: la componente x (direzione orizzontale) del generico vertice viene calcolata come media della componente x di tutti i vertici che gli stanno attorno pesando maggiormente i nodi lungo x perché sono quelli che devono cambiare in relazione allo spostamento orizzontale della valvola; la componente z (direzione parallela all’asse del cilindro), viene calcolata come media algebrica della componente z di tutti i vertici intorno a quello generico.
i7
kpi6
i1
i2
i4
i8
i5
i3
i4
im jm Km ip jpFig. 3.32: nomenclatura dei vertici
Generalmente per adattare questi algoritmi ad una data geometria si può tentare, inserendo dei coefficienti di fonte ai vari termini, di modificare la legge di distribuzione dei vertici; ad esempio
maggiormente la componente z(km) rispetto a z(kp), si ottiene la distribuzione in figura 3.33, mentre facendo pesare di più z(km) la distribuzione in figura 3.34.
Fig. 3.33: distribuzione di celle ottenuta con peso a moltiplicare z(kp) maggiore del peso di z(km)
Fig. 3.34 : distribuzione di celle ottenuta con peso a moltiplicare z(km) maggiore
Per quanto riguarda questo lavoro, nei casi più complicati, non è stato possibile limitarsi alle modifiche di prima ma è stato necessario mettere a punto un nuovo algoritmo di rezoning che permette di affrontare il problema del movimento della griglia di geometrie con arbitrario livello di complessità.
3.8 Il nuovo algoritmo di rezoning
Adottando le routines di rezoning originale di KIVA non è stato possibile, operando come descritto nel paragrafo precedente, risolvere il problema del movimento della griglia. Gli algoritmi infatti funzionano abbastanza bene quando si ha a che fare con geometrie aventi pistone con superficie piatta o con un incavo, ma quando vi è anche una protrusione, e quindi la superficie cambia inclinazione bruscamente, gli algoritmi cadono in difetto. Per poter capire per quale motivo gli algoritmi non funzionassero e dato che non era disponibile un programma che permettesse di visualizzare la griglia, è stata utilizzata in KIVA una nuova subroutine, sviluppata
durante una tesi precedente, che produce dei file di uscita che costituiscono l’input per il programma ANSYS che ne permette la visualizzazione. La subroutine si chiama “visualizzagriglia”, ed è possibile consultarla per intero in
appendice
; richiamandola dal main program o dalla routine volume con la funzione call, è possibile visualizzare la griglia nei tre piani xz, xy, yz, e, grazie alle funzioni di ANSYS, effettuare ingrandimenti e selezioni che permettono di capire in quale punto della griglia si sono verificate delle inversioni di celle o eccessive distorsioni.
Fig. 3.35: immagine della griglia sul piano yz Fig. 3.36: immagine della griglia sul piano yz con gli algoritmi originali con gli algoritmi implementati
Le figure sopra riportate mostrano un’immagine della griglia su un piano trasversale passante per la mezzeria con il pistone al PMS e permettono di capire perché gli algoritmi originali non funzionano (fig. 3.13): infatti a causa dell’inclinazione della protrusione del pistone che ricopia quella della testata, se la posizione del vertice generico viene calcolata con una media che tiene conto della posizione di tutti i nodi che gli stanno intorno, si creano necessariamente delle inversioni di celle. Nel caso mostrato in figura, la posizione dei vertici che stanno nelle posizioni marcate, non possono dipendere dalla coordinata orizzontale. Lo stesso problema si manifesta poi sui piani ortogonali a quello considerato. Provando a modificare gli algoritmi cambiando i pesi nella media delle equazioni (3.1) e (3.2), si risolve il problema al punto morto superiore ma, mentre la valvola si apre ed il pistone scende, avendo diminuito la dipendenza soprattutto nella direzione x (longitudinale), si creano inevitabilmente delle inversioni.
Il nuovo algoritmo risolve appunto questo problema (fig. 3.35) e nasce dall’esigenza di conciliare esigenze contrastanti. Quando il pistone è vicino al punto morto superiore è necessario infatti che la griglia rimanga perfettamente verticale e quindi la posizione x e z del generico nodo dipenda solo dalle componenti x e z del vertice che si trova sopra e da quello che si trova sotto rispetto alla direzione verticale.
[
( ) ( ) 2 1 kp z km z zn= ∗ +]
(3.3)[
( ) ( ) 2 1 kp x km x xn= ∗ +]
(3.4) Le equazioni (3.3) e (3.4), traducono matematicamente questo concetto. Quando siamo lontani dal punto morto superiore e la valvola è aperta è necessario invece che la griglia si adatti al movimento della valvola e rientrino in gioco nell’algoritmo anche le dipendenze delle componenti dei vertici che si trovano vicini al generico nodo lungo l’asse x ed y. Infatti, lontano dal PMS, il numero di celle verticali per unità di lunghezza diminuisce e quindi non si manifestano più i problemi che si avevano vicino al PMS stesso per cui è necessario, per risolvere i problemi legati alla deformazione della griglia da parte della valvola, avere una legge di ridistribuzione dei vertici come quella originale (3.5), (3.6):
[
( ) ( ) ( ) ( ) ( ) )]
6 1 zkp km z jp z jm z ip z im z zn= ∗ + + + + + (3.5) *[
( ) ( ) 2 ( ( ) )) ( ) ( )]
8 1 kp x km x xjp im x jp x jm x xn= + + ∗ + + + (3.6)Si pone adesso il problema di come ottenere un algoritmo che vicino al PMS sia simile alle (3.3) e (3.4), mentre lontano sia simile alle (3.5) e (3.6) e che vari con continuità durante tutto il tempo di simulazione. La soluzione che è stata adottata consiste nel far variare le equazioni da (3.3) e (3.4) a (3.5) e (3.6) linearmente in relazione all’alzata della valvola che è proporzionale all’intensità delle deformazioni che devono subire le celle. Si è quindi definito un coefficiente “K” che è il rapporto tra l’alzata attuale e l’alzata massima della valvola(3.7).
)
2
max(
)
2
(
Vlift
Vliftnow
K
=
(3.7)Questo coefficiente vale 0 quando la valvola è chiusa ed 1 quando è totalmente aperta.
Tramite K l’entità della dipendenza delle componenti dei nodi nella direzione x ed y varia con continuità in relazione alla posizione della valvola. Le equazioni che sono state implementate sono le seguenti:
{
K
[
z(im)
z(ip)
z(jm)
z(jp)
]
z(km)
z(kp
)
}
K
zn
∗
∗
+
+
+
+
+
∗
+
=
4
2
1
(3.8)[
]
{
K
x(jm)
x(jp)
(x(im)
x(jp))
x(km)
x(kp)
}
K
xn
∗
∗
+
+
∗
+
+
+
∗
+
=
2
6
2
1
(3.9)Le equazioni (3.8) e (3.9) permettono di ottenere una griglia di buona qualità per tutto il ciclo di calcolo con sensibili vantaggi in termini di tempo di calcolo anche nei casi in cui la geometria è semplice.
Fig.3.37: visualizzazione della griglia del Fig.3.38: visualizzazione della griglia del piano piano di simmetria al PMS con ANSYS passante per la mezzeria della valvola al
PMS con ANSYS
Fig.3.39: visualizzazione della griglia del Fig.3.40: visualizzazione della griglia del piano piano di simmetria 45°dopo il PMS con passante per la mezzeria della valvola 45° ANSYS dopo il PMS con ANSYS
Le altre modifiche apportate riguardano l’algoritmo della regione zsquish=4, ovvero il primo strato di vertici che si trova sotto la valvola.
L’equazione originale è la (3.10) e prevede che queste celle traslino con la valvola e si trovino sempre 0.7 mm sotto di esse.
zn
= kp
z
(
)
−
0
.
07
(3.10) Con una griglia così fitta (necessaria per studiare accuratamente la combustione), come quella mostrata nelle figure sopra, una distanza di 0.7 mm conduce allo schiacciamento dei piani verticali sotto la valvola quando il pistone è prossimo al PMS; riducendo la distanza a 0.3 mm si risolve il problema ma, quando il pistone scende (e aumenta l’altezza delle celle perché diminuisce il numero di celle verticali per unità di lunghezza), si crea un’eccessiva distorsione delle celle stesse che stanno vicino alla valvola. Per rimediare a quest’ultimo problema è stato di nuovo sfruttato il legame con il coefficiente K dell’equazione (3.7) che tiene conto dell’alzata della valvola in modo da far variare linearmente questa distanza da 0.3 mm a valvola chiusa a 1.5 mm, quando l’alzata è massima (3.11).
zn
=
z
(
kp
)
−
0
.
03
∗
(
1
+
4
∗
K
)
(3.11) 3.9 Il software AVL FIRE v8.3Saranno ora in breve elencate le principali peculiarità del programma. Esso si divide in tre ambienti principali: Fame Hybrid, Fame Motion e Impress.
3.9.1 L’ambiente Fame Hybrid
E’ l’ambiente principale del programma all’interno del quale è possibile generare la mesh del modello CAD e correggere o modificare la distribuzione delle celle.
Nel sottoambiente Create Mesh è possibile generare la mesh del modello secondo tre modalità: • Mesh esaedrica: crea tramite l’ausilio della mesh di superficie (generata in ambiente
Pro/Engineer) e degli spigoli del contorno delle celle prevalentemente esaedriche; per il collegamento tra zone con diverso livello di infittimento vengono utilizzate celle tetraedriche.
• Dual Mesh: è la mesh più indicata per i modelli geometricamente più complicati e si differenzia dalla precedente per il minor numero di celle tetraedriche utilizzate.
• Advanced Hybrid: consente di generare la mesh in modo completamente automatico; una volta selezionati gli spigoli da rifinire, la massima dimensione delle celle ed eventuali trasformazioni geometriche, il programma genera automaticamente la mesh correggendo automaticamente eventuali errori.
Una volta che la mesh è stata generata, grazie al sottoambiente Mesh tools è possibile modificarla grazie ad una serie di funzioni quali:
• Refine: permette di infittire le celle.
• Smooth: grazie ad opportuni algoritmi correttivi permette di correggere la mesh; essa infatti, essendo di tipo non strutturato, può presentare celle che si compenetrano, con normali negative o eccessivamente deformate.
• Modify: permette di traslare e ruotare geometrie piane e di eseguire spostamenti di coordinate.
• Connect: permette di connettere tra loro mesh create in maniera indipendente “incollando” i nodi delle interfacce.
• Connecting edges: consente di migliorare la disposizione delle celle e quindi la mesh nelle zone di comunicazione con l’esterno.
Il sottoambiente Surface tools permette di operare sulle superfici grazie alle seguenti funzioni: • Surface: permette di triangolare una superficie generata con Fire in modo da utilizzarla
per creare delle mesh.
• Intersect: consente di eseguire l’operazione booleana di intersezione delle superfici. • Surface check: fornisce indicazioni circa la qualità delle superfici.
• Close surface: permette di generare una superficie triangolare partendo da uno spigolo chiuso e di rattoppare eventuali buchi nella mesh triangolare sia in modalità manuale che automatica.
• Merge surface: consente di unire due o più superfici.
• Orientate surface: gestisce l’orientazione delle normali degli elementi delle superfici triangolate.
Il sottoambiente Edge tools rappresenta una serie di utilità che permettono all’utente di eseguire operazioni sugli spigoli del modello grazie ai seguenti algoritmi:
• Autoedge: vengono identificati automaticamente gli spigoli necessari per la generazione della mesh.
• Manipolate edges: permette di rifinire una mesh di spigoli e di dividere uno spigolo in un maggior numero di elementi.
• 2D meshing: permette di mestare superfici piane sia in modalità manuale che automatica. Il sottoambiente Info presenta due importanti utilità:
• Geometry information: genera un report dove viene elencato il numero di celle, divise per topologie, che formano la mesh. Vengono fornite inoltre informazioni circa la superficie ed il volume totale del modello, oltre che il numero di nodi che lo formano.
• Check: viene visualizzata una tabella con elencate tutte le tipologie di errori che possono verificarsi nelle celle.
3.9.2 L’ ambiente Fame Motion
La sezione Fame Motion consente la gestione dei movimenti delle mesh “statiche” create nell’ambiente Fame Hybrid.
Per ottenere il movimento della mesh occorrono tre selezioni:
• Selezione move: può essere una selezione di tipo face o cell, ed è la selezione che “traina” il dominio; il suo movimento infatti ne modifica le dimensioni.
• Selezione buffer: contiene tutte le celle e le facce che verranno deformate durante il movimento; è necessario che le deformazioni non siano troppo grandi per non generare, durante la simulazione, problemi legati all’instabilità numerica.
• Selezione interpol: è una selezione di tipo cella che comprende tutto il dominio.
Nel caso si desideri non far muovere parti del dominio, si può utilizzare la selezione no move che durante il movimento le tiene ferme.
I sottoambienti Check e Smoother permettono di visualizzare e correggere eventuali errori generatisi durante il movimento della mesh.
3.9.3 L’ambiente Impress
E’ l’ambiente che permette di rappresentare graficamente i risultati; è possibile effettuare dei tagli lungo tutto il dominio tramite dei piani ed osservare l’andamento delle grandezze fluidodinamiche nelle sezioni generate.
3.10 Il codice AVL BOOST v4.0
Il codice permette la simulazione monodimensionale di motori completi, dall’imbocco dell’aspirazione all’uscita dello scarico.
Il primo passo da compiere è la definizione delle informazioni generali per la simulazione tramite il sottomenu Simulation Control della finestra principale del pre-processore di Boost (fig. 3.42). Si definiscono il tipo di combustibile, di iniezione (diretta o indiretta), di prova (transitorio/stazionario), il ciclo (2 o 4 tempi), il numero di cicli da effettuare durante la simulazione, il time-step, la lunghezza media delle celle utilizzate per suddividere gli elementi e le perdite meccaniche.
Il secondo passo è la creazione del modello. Boost è dotato di un’interfaccia grafica che permette all’utente di selezionare da menu (fig. 3.42, parte sinistra della schermata) gli elementi necessari, quali:
• Pipe: è utilizzato per la modellazione di condotti di qualunque geometria; il flusso nei tubi viene trattato come monodimensionale, cioè le temperature, le pressioni e le velocità ottenute dalla risoluzione delle equazioni di continuità della portata, di conservazione della quantità di moto e di conservazione dell’energia, rappresentano i valori medi sulle sezioni trasversali dei condotti. Tutte le equazioni vengono applicate all’elemento di volume costituito dalla singola cella.
Per l’elemento pipe devono essere specificati il diametro, la lunghezza, il raggio di curvatura, il coefficiente di attrito, il coefficiente di scambio del calore e la temperatura della parete; a tutte queste grandezze può essere assegnato un valore fisso o variabile lungo la dimensione assiale. Devono poi essere specificati i valori iniziali di temperatura e pressione del gas, del rapporto aria/benzina, della concentrazione di vapori di combustibile e di prodotti della combustione.
• Plenum: per questo elemento possono essere definiti soltanto il volume, le condizioni iniziali del gas ed i coefficienti di efflusso delle tubazioni in ingresso ed in uscita. Tale elemento viene trattato con una tecnica di tipo “filling-emptying”, cioè non si considerano le variazioni di pressione e temperatura da sezione in sezione (quindi neanche della propagazione delle onde di pressione all’interno di esso).
• System Boundary: connette l’impianto del motore all’ambiente esterno. L’utente specifica oltre alle caratteristiche di quest’ultimo anche i coefficienti di efflusso per le sezioni di interfaccia, necessari in quanto bisogna tenere presente che all’ingresso e all’uscita di un tubo si hanno fenomeni tridimensionali di contrazione-espansione della vena fluida. • Air Cleaner: viene considerato come una successione di elementi costituita da un plenum,
un pipe ed un altro plenum. Il plenum di ingresso rappresenta il volume a monte dell’elemento filtrante, il secondo plenum il volume a valle ed il condotto le perdite di carico attraverso tutto l’elemento. L’utente deve definire la caduta di pressione in corrispondenza di una certa portata d’aria ed in base a questi valori il programma calcola le perdite di carico nelle condizioni effettive.
• Catalyst: anche questo elemento è schematizzato con una successione di tipo plenum-pipe-plenum. E’ opportuno precisare che il programma non è in grado di simulare l’abbattimento degli inquinanti e si tiene quindi conto soltanto degli aspetti fluidodinamici come le perdite di carico.
• Flow Restriction: viene utilizzato per rappresentare una perdita di carico localizzata in un punto del sistema di aspirazione o scarico.
• Junction: rappresenta la biforcazione di un condotto.
3.10.1 Il post-processore
Nel post-processore vengono visualizzati i risultati della corsa di calcolo in forma di grafici e matrici dei valori assunti dalle variabili fluidodinamiche in corrispondenza di determinate sezioni dei condotti e all’interno dei volumi.
I valori assunti dalle variabili possono essere visualizzati secondo due modalità:
• Traces: è riportato l’andamento della variabile in funzione dell’angolo di manovella, lungo l’ultima iterazione del ciclo completo.
• Transients: è riportato l’andamento della variabile in corrispondenza delle varie iterazioni del ciclo completo; in questo modo è possibile visualizzare in quale ciclo si è raggiunta la convergenza (questo vale solo per prove stazionarie).