Sei sulla pagina 1di 167

POLITECNICO DI MILANO

Facoltà di Ingegneria Industriale


Corso di Laurea in Ingegneria Aeronautica

Un approccio libero alla moderna


Aeroelasticità Computazionale

Relatore: Prof. Paolo Mantegazza

Tesi di Laurea di:


Giulio Romanelli, matr. 679778
Elisa Serioli, matr. 679777

Anno Accademico 2007 − 2008


Indice

Sommario v

1 Introduzione 1
1.1 Inquadramento generale della tesi . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Software libero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Struttura della tesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Analisi del problema aeroelastico 7


2.1 Definizione del problema aeroelastico . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Il sistema strutturale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3 Il sistema aerodinamico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3.1 Il regime di moto transonico . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3.2 Modelli matematici per la soluzione del problema aerodinamico . . . . . . 12
2.3.3 Linearizzazione numerica dei carichi aerodinamici . . . . . . . . . . . . . . 16
2.3.4 Calcolo della matrice delle funzioni di trasferimento aerodinamiche . . . . 17
2.4 Interfaccia struttura–aerodinamica . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.5 Il sistema aeroelastico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.6 Flutter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.6.1 Aeroelasticità classica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.6.2 Aeroelasticità moderna . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3 Scelta del solutore strutturale 33


3.1 Definizione del problema strutturale . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.1.1 Discretizzazione ad elementi finiti . . . . . . . . . . . . . . . . . . . . . . . 35
3.1.2 Condensazione modale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2 Requisiti del solutore strutturale . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3 Solutore strutturale Code Aster . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3.1 Esempio di utilizzo di Code Aster . . . . . . . . . . . . . . . . . . . . . . . 40
3.3.2 Esempio di programmazione in Code Aster . . . . . . . . . . . . . . . . . . 46
3.4 Pre/Post–processore Salomé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

4 Problemi di verifica strutturali 51


4.1 Cassone alare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.2 Taratura del modello strutturale dell’ala AGARD 445.6 . . . . . . . . . . . . . . 53

i
ii Indice

5 Scelta del solutore aerodinamico 59


5.1 Definizione del problema aerodinamico . . . . . . . . . . . . . . . . . . . . . . . . 59
5.1.1 Approssimazione numerica del problema . . . . . . . . . . . . . . . . . . . 60
5.2 Requisiti del solutore aerodinamico . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.3 Solutore aerodinamico OpenFOAM . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.4 Valutazione dei solutori aerodinamici disponibili . . . . . . . . . . . . . . . . . . 65
5.4.1 Solutore aerodinamico rhoSonicFoam . . . . . . . . . . . . . . . . . . . . . 66
5.4.2 Solutore aerodinamico rhopSonicFoam . . . . . . . . . . . . . . . . . . . . 68
5.4.3 Solutore aerodinamico sonicFoam . . . . . . . . . . . . . . . . . . . . . . . 71
5.4.4 Analisi dei risultati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.5 Generatore di griglie Gmsh e post–processore ParaView . . . . . . . . . . . . . . . 75

6 Progetto ed implementazione del solutore aerodinamico 77


6.1 Discretizzazione spaziale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.2 Flussi numerici del primo ordine . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.2.1 Approximate Riemann Solver (ARS) . . . . . . . . . . . . . . . . . . . . . 80
6.2.2 Advection Upstream Splitting Method (AUSM) . . . . . . . . . . . . . . . 82
6.2.3 Convective Upwind and Split Pressure (CUSP) . . . . . . . . . . . . . . . 82
6.2.4 Harten–Lax–vanLeer (HLL) . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6.3 Metodi numerici per l’alta risoluzione . . . . . . . . . . . . . . . . . . . . . . . . 84
6.4 Flussi numerici per l’alta risoluzione . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.4.1 Lax–Wendroff (LW) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.4.2 Jameson–Schmidt–Turkel (JST) . . . . . . . . . . . . . . . . . . . . . . . 85
6.5 Estrapolazione lineare per l’alta risoluzione . . . . . . . . . . . . . . . . . . . . . 86
6.5.1 Barth–Jespersen (BJ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
6.6 Discretizzazione temporale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.6.1 Linear Multistep Method (LMM) . . . . . . . . . . . . . . . . . . . . . . . 88
6.6.2 Runge–Kutta (RK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6.7 Condizioni iniziali ed al contorno . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.7.1 Condizioni al contorno di Riemann . . . . . . . . . . . . . . . . . . . . . . 91
6.7.2 Condizioni al contorno di non compenetrazione . . . . . . . . . . . . . . . 91
6.8 Valutazione del solutore aerodinamico AeroFoam . . . . . . . . . . . . . . . . . . 92
6.8.1 Analisi dei risultati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

7 Problemi di verifica aerodinamici 97


7.1 Cilindro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
7.2 Profilo alare NACA 0012 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
7.3 Risposta temporale ad una raffica a scalino di un profilo alare lenticolare . . . . . 101
7.4 Ugello convergente-divergente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.5 Scalino di Woodward-Colella . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
7.6 Ala ONERA M6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.7 Ala RAE A e corpo assisimmetrico . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Indice iii

8 Interfaccia aeroelastica 115


8.1 Schema di interfaccia aeroelastica . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
8.1.1 Interpolazione lineare composita . . . . . . . . . . . . . . . . . . . . . . . 116
8.1.2 Interpolazione ai minimi quadrati mobili (MLS) . . . . . . . . . . . . . . . 119
8.2 Condizioni al contorno di traspirazione . . . . . . . . . . . . . . . . . . . . . . . . 120
8.2.1 Formulazione linearizzata . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
8.2.2 Formulazione linearizzata per differenze finite . . . . . . . . . . . . . . . . 123
8.2.3 Formulazione non lineare per differenze finite . . . . . . . . . . . . . . . . 123
8.2.4 Limiti di validità per problemi bidimensionali . . . . . . . . . . . . . . . . 124
8.2.5 Limiti di validità per problemi tridimensionali . . . . . . . . . . . . . . . . 126

9 Applicazioni aeroelastiche 129


9.1 Ala AGARD 445.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
9.1.1 Modello strutturale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
9.1.2 Modello aerodinamico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
9.2 Condizione di equilibrio di riferimento . . . . . . . . . . . . . . . . . . . . . . . . 133
9.2.1 Calcolo della soluzione stazionaria di riferimento . . . . . . . . . . . . . . 134
9.2.2 Verifica di linearità dinamica . . . . . . . . . . . . . . . . . . . . . . . . . 136
9.3 Flutter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
9.3.1 Calcolo della matrice delle funzioni di trasferimento aerodinamiche . . . . 139
9.3.2 Diagrammi V∞ − ω e V∞ − g . . . . . . . . . . . . . . . . . . . . . . . . . 143

10 Conclusioni 147

A Matrici delle funzioni di trasferimento aerodinamiche 149


A.1 Risultati numerici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

Bibliografia 157
iv Indice
Sommario

Nell’ambito dell’Aeroelasticità Computazionale (CA) il regime di moto transonico è stato a


lungo oggetto di studio, poiché vi si osserva una brusca e significativa diminuzione locale della
velocità di flutter, chiamata buca transonica.
Grazie al progressivo aumento delle risorse di calcolo disponibili, oggi è possibile abbandonare
gli strumenti di analisi aeroelastica classici che forniscono risultati molto approssimati in regime
di moto transonico ed adottare modelli matematici e metodi numerici più raffinati appartenenti
alla classe della Fluidodinamica Computazionale (CFD).
L’obiettivo di questo lavoro di tesi consiste nel dimostrare che è possibile costruire un toolbox
analogo a quello presentato in [9] per la soluzione di problemi aeroelastici in regime di moto
transonico in ambito accademico ed industriale, utilizzando esclusivamente strumenti di analisi
liberamente disponibili in rete, ad esempio accoppiando il solutore strutturale ad elementi finiti
(FEM) Code Aster con il solutore aerodinamico a volumi finiti (FV) OpenFOAM. La procedura
implementata è infine messa alla prova affrontando il tipico problema di verifica aeroelastico
dell’ala AGARD 445.6.

Parole chiave: Aeroelasticità Computazionale, buca transonica, Fluidodinamica Computa-


zionale, software liberi.

Abstract

The study of the transonic flutter mechanism has been for a long time a very active and fruitful
research field in Computational Aeroelasticity (CA), since a sudden and significant drop of
flutter velocity is experienced in the transonic regime, also known as transonic dip.
With the advent of more powerful computers and more efficient algorithms, it is nowa-
days possible to choose the more accurate mathematical models and numerical methods of
Computational Fluid Dynamics (CFD), rather than the often unreliable in the transonic regime
classical aeroelastic analysis tools.
The main challenge of this thesis work is to show that a toolbox of procedures similar to
that presented in [9] to effectively solve transonic aeroelastic problems in a research or industrial
environment can be built using only free software. For instance the free finite element (FEM)
structural solver Code Aster is coupled with the free finite volume (FV) aerodynamic solver
OpenFOAM. In order to assess the accuracy of the implemented toolbox, the classical aeroelastic
test problem of computing the flutter boundary for AGARD 445.6 wing is eventually tackled.

Keywords: Computational Aeroelasticity, transonic dip, Computational Fluid Dynamics,


free software.

v
Capitolo 1

Introduzione

Come descritto in §1.1, fino ad oggi la soluzione di problemi aeroelastici di interesse accade-
mico ed industriale in regime di moto transonico è stata affrontata nell’ambito dell’aeroelasti-
cità computazionale accoppiando strumenti commerciali consolidati per l’analisi strutturale ed
aerodinamica, quali rispettivamente MSC.Nastran e FLUENT.
L’obiettivo di questo lavoro di tesi consiste nel dimostrare che è possibile costruire un toolbox
analogo, utilizzando esclusivamente strumenti di analisi liberi secondo la filosofia presentata in
§1.2, quali rispettivamente Code Aster e OpenFOAM.

1.1 Inquadramento generale della tesi


Lo studio dell’interazione aeroelastica tra le forze aerodinamiche e le forze elastomeccaniche
strutturali ricopre un ruolo fondamentale nella progettazione delle strutture aeronautiche che,
a seguito del processo di ottimizzazione dei pesi, sono caratterizzate da una deformabilità strut-
turale elevata: infatti oltre alla velocità di volo VF , che secondo normativa deve essere signi-
ficativamente al di fuori dell’inviluppo di volo del velivolo VF ≥ 1.2 VD , possono verificarsi
fenomeni di instabilità dinamica o flutter, che dal punto di vista fisico corrispondono all’insor-
gere di oscillazioni autoeccitate divergenti dalle conseguenze spesso catastrofiche per l’integrità
strutturale.
Molti velivoli moderni, sia civili che militari, sono progettati per operare per una porzione
molto ampia del profilo di missione in regime di moto transonico, caratterizzato dalla presenza
simultanea all’interno del campo di moto attorno al velivolo di regioni localmente subsoniche e
regioni localmente supersoniche separate da fenomeni irreversibili quali onde d’urto. In ambito
aeroelastico tale regime di moto è stato a lungo oggetto di studio poichè vi si osserva una brusca
e significativa diminuzione locale della velocità di flutter VF chiamata buca transonica.
Storicamente i primi modelli matematici e metodi numerici utilizzati in ambito aeroelastico
per il calcolo della variazione non stazionaria dei carichi aerodinamici conseguente al movimen-
to strutturale sono stati ad esempio il Doublet Lattice Method (DLM) ed il metodo di Morino,
che operano una linearizzazione del problema aerodinamico nell’intorno di una condizione di
riferimento nell’ipotesi di piccole perturbazioni. Nonostante tali strumenti di analisi siano ca-
tatterizzati da un’efficienza computazionale molto elevata (fondamentale nelle fasi di progetto
e verifica, ovvero in situazioni in cui è richiesta la valutazione di un numero di configurazioni
elevato), essi forniscono risultati grossolanamente approssimati in regime di moto transonico,
viceversa dominato da fenomeni non lineari, sovrastimando significativamente la velocità di
flutter VF .

1
2 Introduzione

Nell’ambito dell’aeroelasticità computazionale o Computational Aeroelasticity (CA), per


migliorare l’affidabilità dei risultati, ma contemporaneamente contenere il costo computazio-
nale in termini di tempi di calcolo e occupazione di memoria, sono stati successivamente adot-
tati modelli matematici più adeguati e complessi quali le equazioni non lineari delle piccole
perturbazioni in campo transonico e le equazioni non lineari del potenziale completo.
Tuttavia grazie al progressivo aumento delle risorse di calcolo disponibili, oggi è possibile
adottare anche nelle fasi di progetto e verifica modelli matematici e metodi numerici più raffinati
e sicuramente più adatti allo studio del regime di moto transonico appartenenti alla classe della
fluidodinamica computazionale o Computational Fluid Dynamics (CFD), quali le equazioni
di Eulero e più recentemente anche le equazioni di Navier-Stokes eventualmente mediate alla
Reynolds (RANS).
A partire dai risultati numerici presentati in [22, 23] ottenuti utilizzando i modelli matematici
delle equazioni di Eulero e delle equazioni di Navier-Stokes mediate alla Reynolds (RANS) per
la soluzione del problema aeroelastico di verifica relativo all’ala AGARD 445.6 [8], tale ambito
di ricerca è stato molto attivo, anche perchè i problemi di interazione fluido-struttura o Fluid
Structure Interactions (FSI) hanno assunto una sempre maggiore importanza anche in altri
campi dell’ingegneria.
Come osservato in [4] è tuttavia ancora necessario apportare alcuni miglioramenti signifi-
cativi agli strumenti di analisi propri dell’aeroelasticità computazionale per consentirne un’ap-
plicazione estesa non solo in ambito accademico ma anche in ambito industriale; i requisiti più
importanti sono ad esempio: a) la riduzione dei tempi di calcolo, b) l’aumento dell’affidabilità
dei risultati numerici nel caso non stazionario ed infine c) la semplificazione delle procedure di
messa a punto del modello aeroelastico, ponendo particolare attenzione alla costruzione dello
schema di interfaccia che consente di realizzare praticamente la connessione ad anello chiuso
tra il sistema strutturale ed il sistema aerodinamico, garantendo che lo scambio di informazioni
avvenga in modo accurato, efficiente e flessibile.
Ad esempio in [9] è descritta la costruzione di un’efficiente, efficace e robusta strategia
per la soluzione di problemi di aeroelasticità statica (ad esempio il calcolo delle derivate di
stabilità aeroelastiche relative ad una condizione di equilibrio di riferimento del velivolo defor-
mabile) e di aeroelasticità dinamica (ad esempio la costruzione dei diagrammi V∞ − ω e V∞ − g)
in ambito accademico (risolvendo il problema di verifica aeroelastico dell’ala AGARD 445.6 [11])
ed in ambito industriale (svolgendo un’analisi aeroelastica dei velivoli AerMacchi M-346 [12] e
Piaggio P-180 [10]). Più in particolare sono utilizzati il solutore strutturale commerciale ad
elementi finiti (FEM) MSC.Nastran [45] ed il solutore aerodinamico commerciale a volumi finiti
(FV) FLUENT [43], opportunamente interfacciati mediante uno schema di interpolazione ai
minimi quadrati mobili o Moving Least Squares (MLS).
L’obiettivo di questo lavoro di tesi consiste nel dimostrare che è possibile costruire un toolbox
analogo per la soluzione di problemi aeroelastici in ambito accademico ed industriale, utilizzando
(forse per la prima volta) esclusivamente strumenti di analisi liberamente disponibili in rete, non
solo per la soluzione del problema strutturale ed aerodinamico, ma anche per le fasi di pre/post–
processing. Con riferimento allo schema a blocchi rappresentato in Figura 1.1, sono utilizzati
il solutore strutturale libero ad elementi finiti (FEM) Code Aster [47], il solutore aerodinamico
libero a volumi finiti (FV) OpenFOAM [50] opportunamente interfacciati mediante uno schema
di interpolazione lineare composita, il generatore di griglie triangolari e tetraedriche Gmsh [7],
il post–processore ParaView [51] ed infine il pre/post–processore Salomé [52]. La scelta di uti-
lizzare esclusivamente software liberi è estesa in modo radicale anche alla elaborazione ed alla
presentazione grafica dei risultati numerici utilizzando i programmi SciLab [53] e Gnuplot [49].
Software libero 3

Pre/Post-processore Generatore di griglie Post-processore


Salomé Gmsh ParaView

Solutore Strutturale Solutore Aerodinamico


Code Aster OpenFOAM

Interfaccia Aeroelastica
Interpolazione composita
Solutore Aeroelastico

Costruzione [ Ham (k) ] Diagrammi V∞ −ω V∞ −g


NAEMO MASSA

Figura 1.1: Schema a blocchi della struttura del toolbox di analisi aeroelastica costruito utilizzando
esclusivamente software liberi.

1.2 Software libero


Con software libero si intende un programma rilasciato con una licenza che permette a chiunque
di utilizzarlo e che ne incoraggia lo studio, le modifiche e la redistribuzione; esso si contrap-
pone al software proprietario ed è differente dalla concezione open-source, concentrandosi sulla
libertà dell’utente e non solo sull’apertura del codice sorgente. Parlando di software libero è
infatti opportuno evitare di utilizzare espressioni come regalato o gratuito perchè esse pongono
l’attenzione sul prezzo e non sulla libertà.
L’idea di software libero è nata negli anni 1980, quando R. Stallman ha creato la Free
Software Foundation (FSF) con l’obiettivo di creare un sistema operativo completamente libero:
grazie alla collaborazione congiunta di molti programmatori coordinati mediante Internet nel
1991 è nato il sistema operativo GNU/Linux, clone di UNIX, ma liberamente distribuibile e
modificabile. Secondo R. Stallman e la Free Software Foundation (FSF) un software per potere
essere definito libero deve garantire le seguenti quattro libertà fondamentali:
Libertà 0: libertà di eseguire il programma per qualsiasi scopo;

Libertà 1: libertà di studiare come funziona il programma ed eventualmente adattarlo alle


proprie necessità: l’accesso al codice sorgente ne è ovviamente un prerequisito;

Libertà 2: libertà di redistribuire copie del programma in modo tale da aiutare il prossimo: più
in particolare, oltre al codice sorgente devono essere forniti pacchetti binari precompilati;

Libertà 3: libertà di migliorare il programma e di distribuire pubblicamente tali miglioramenti,


in modo tale che tutta la comunità ne possa trarre beneficio: l’accesso al codice sorgente
ne è ovviamente un prerequisito.
4 Introduzione

Figura 1.2: Simbolo della Free Software Foundation (FSF) (sinistra) e del progetto collaborativo
GNU/Linux (destra).

Tuttavia la parola libero non implica la possibilità di utilizzare il software in maniera in-
discriminata, ma esso è soggetto ad una licenza d’uso studiata opportunamente per favorire
la condivisione del sapere senza espropriare gli autori della proprietà intellettuale (ad esempio
gli autori originali o copyright holders devono essere sempre menzionati in tutte le versioni
modificate e successivamente distribuite del programma).
La maggiore parte del software libero è distribuito secondo la licenza GNU General Public
License (GPL) [29], scritta da R. Stallman e E. Moglen nel 1985 per garantire legalmente a tutti
gli utenti le quattro libertà fondamentali: tale licenza è considerata molto restrittiva, poichè
impone che ogni applicazione derivata sia a sua volta distribuita con la medesima licenza. In
alternativa esiste una versione meno restrittiva chiamata GNU Lesser General Public License
(LGPL) che consente di utilizzare il programma anche nell’ambito di software proprietari.
Secondo i sostenitori del software libero, esso presenta numerosi vantaggi rispetto al software
proprietario: grazie alla disponibilità del codice sorgente, è infatti possibile adattare in modo
flessibile il programma alle particolari esigenze dell’utente; inoltre dal momento che il codice
sorgente è sottoposto alla continua revisione di una base di utenti molto ampia, è possibile velo-
cizzare notevolmente il processo di individuazione e corrrezione degli errori e di ottimizzazione
dell’efficienza di calcolo. Tuttavia è innegabile che esistano anche limitazioni e svantaggi rispet-
to al software proprietario, ad esempio la documentazione eventualmente disponibile è spesso
incompleta o non aggiornata.

1.3 Struttura della tesi


Nel Capitolo 2 è fornito un inquadramento generale del problema aeroelastico: dopo avere pre-
sentato i modelli matematici ed i metodi numerici più comunemente utilizzati per l’analisi del
sistema strutturale e del sistema aerodinamico e lo schema di interfaccia che consente di inter-
connetterli, si sofferma l’attenzione sui metodi numerici consolidati per risolvere il problema di
flutter nel dominio delle frequenze (aeroelasticità classica) e del tempo (aeroelasticità moderna).
Dopo avere presentato più in dettaglio il problema strutturale, nel Capitolo 3 le caratte-
ristiche e le potenzialità fondamentali del solutore strutturale libero Code Aster sono confron-
tate con quelle del solutore strutturale commerciale MSC.Nastran; analogamente è illustrato
il funzionamento del pre/post–processore libero Salomé con riferimento al pre/post–processore
commerciale Femap.
Struttura della tesi 5

Come sottolineato nella GNU General Public License (GPL) [29], i programmi liberamente
disponibili in rete sono forniti as is ed at your own risk, ovvero senza nessuna garanzia relati-
vamente alle prestazioni ed alla qualità dei risultati. Di conseguenza è innanzitutto fondamen-
tale verificarne l’efficienza e l’accuratezza affrontando alcuni problemi di verifica di complessità
crescente e confrontando i risultati con quelli ottenuti mediante gli analoghi programmi com-
merciali. Nel Capitolo 4 è cosı̀ possibile osservare che il solutore strutturale libero Code Aster è
del tutto paragonabile al solutore strutturale commerciale MSC.Nastran.
Dopo avere presentato più in dettaglio il problema aerodinamico, nel Capitolo 5 le ca-
ratteristiche e le potenzialità fondamentali del solutore aerodinamico libero OpenFOAM sono
confrontate con quelle del solutore aerodinamico commerciale FLUENT; analogamente sono illu-
strati il funzionamento del generatore di griglie libero Gmsh e del post–processore ParaView con
riferimento rispettivamente al generatore di griglie commerciale Gambit ed al post–processore
commerciale Tecplot.
Tuttavia è possibile osservare che il solutore aerodinamico libero OpenFOAM non è del tutto
soddisfacente per affrontare problemi aerodinamici impegnativi in regime di moto transonico e
supersonico; di conseguenza nel Capitolo 6.8.1 è descritta l’implementazione in linguaggio C++
di un nuovo solutore aerodinamico chiamato AeroFoam, che utilizza le librerie del programma
OpenFOAM per la gestione delle strutture dati relative alla griglia di calcolo ed alla soluzione
numerica e per le fasi di pre/post–processing.
Il solutore aerodinamico sviluppato AeroFoam è quindi messo alla prova nel Capitolo 7,
affrontando alcuni problemi di verifica di complessità crescente ed in un campo il più ampio
possibile di regimi di moto, con riferimento ai risultati numerici ottenuti mediante il solutore
aerodinamico commerciale FLUENT.
Successivamente nel Capitolo 8 è affrontato il problema di come costruire uno schema di in-
terfaccia aeroelastica robusto e flessibile che consenta di realizzare praticamente la connessione
ad anello chiuso tra il sistema strutturale ed il sistema aerodinamico; inoltre è presentata l’im-
plementazione numerica delle condizioni al contorno di traspirazione in modo tale da riprodurre
gli effetti geometrici e cinematici del movimento del contorno senza effettivamente deformare la
griglia di calcolo.
Dopo avere opportunamente verificato il corretto funzionamento dei singoli strumenti del
toolbox, nel Capitolo 9 è infine affrontato il tipico problema di verifica aeroelastico in regime di
moto transonico dell’ala AGARD 445.6, confrontando i risultati numerici ottenuti con i risultati
sperimentali e numerici disponibili in Letteratura.

Scritto in LATEX
6 Introduzione
Capitolo 2

Analisi del problema aeroelastico

In questo Capitolo, dopo avere fornito un inquadramento generale del problema aeroelastico
in §2.1, sono descritti più in dettaglio il sistema strutturale ed il sistema aerodinamico rispet-
tivamente in §2.2 e §2.3, soffermandosi in particolare sullo studio dei modelli matematici e dei
metodi numerici che è opportuno utilizzare per la soluzione del problema aerodinamico in regime
di moto transonico.
L’interazione ad anello chiuso tra il sistema strutturale ed il sistema aerodinamico, oppor-
tunamente connessi tra loro mediante lo schema di interfaccia presentato in §2.4, costituisce il
nucleo fondamentale del sistema aeroelastico, le cui equazioni di governo sono ricavate in §2.5
nel dominio del tempo e delle frequenze.
Infine in §2.6 si sofferma l’attenzione sul fenomeno aeroelastico più caratteristico, ovvero
il flutter, e sono presentati i metodi numerici consolidati per la soluzione di tale problema nel
dominio delle frequenze (aeroelasticità classica) e del tempo (aeroelasticità moderna).

2.1 Definizione del problema aeroelastico


L’aeroelasticità è la disciplina che studia la mutua interazione tra le forze aerodinamiche e
le forze elastomeccaniche strutturali e ricopre un ruolo fondamentale nella progettazione delle
strutture aeronautiche che, a seguito del processo di ottimizzazione dei pesi, sono generalmente
caratterizzate da una deformabilità strutturale elevata [6].
Considerando ad esempio un velivolo immerso in una corrente fluida in equilibrio dinamico
sotto l’azione del campo delle forze aerodinamiche, degli sforzi interni e delle forze di inerzia, si
ipotizzi di perturbarne lo stato mediante un campo di piccoli spostamenti. Tale perturbazione
modifica le condizioni al contorno del sistema aerodinamico e determina un contributo aggiun-
tivo ai carichi agenti sul sistema strutturale. Di conseguenza il campo degli sforzi interni si
modifica in modo tale da ristabilire la condizione di equilibrio dinamico preesistente ed il cam-
po di deformazioni corrispondente perturba ulteriormente le condizioni al contorno del sistema
aerodinamico. Si osserva dunque un’interazione ad anello chiuso tra il sistema strutturale ed il
sistema aerodinamico.
In effetti il termine aeroelasticità è riduttivo dal momento che molti importanti fenomeni
aeroelastici coinvolgono oltre alle forze aerodinamiche ed elastiche, anche le forze di inerzia e le
forze associate ai servocomandi. Tale definizione può essere graficamente riassunta mediante il
triangolo di Collar di Figura 2.1, al quale oltre ai classici vertici A, E ed M che rappresentano
rispettivamente il sistema aerodinamico, il sistema strutturale e la distribuzione di inerzie del
velivolo, si aggiunga un blocco S che rappresenta l’azione dei servocomandi.

7
8 Analisi del problema aeroelastico

Sistema aerodinamico A S Servocomandi

Sistema strutturale E I Distribuzione di inerzie

Figura 2.1: Il triangolo di Collar.

Il fenomeno aeroelastico più caratteristico è il flutter, che dal punto di vista fisico corrisponde
all’insorgere di oscillazioni autoeccitate divergenti dalle conseguenze spesso catastrofiche, men-
tre dal punto di vista matematico corrisponde alla condizione limite di stabilità dinamica del
sistema aeroelastico tempo-invariante linearizzato per piccoli spostamenti nell’intorno di una
condizione di equilibrio di riferimento. Data la pericolosità di tale fenomeno per l’integrità della
struttura, è opportuno analizzare le proprietà di stabilità in piccolo del sistema aeroelastico
al variare di parametri che definiscono la condizione di volo di riferimento, quale ad esempio il
numero di Mach M∞ e la pressione dinamica q∞ .
Solo dopo avere svolto l’analisi di stabilità dinamica del sistema aeroelastico (in realtà del
solo sistema strutturale, mentre è possibile osservare sperimentalmente che il sistema aerodina-
mico non si instabilizza mai almeno per intervalli di tempo di lunghezza significativa dal punto
di vista ingegneristico) è possibile affrontare i problemi di risposta, quali lo studio dei carichi
da raffica e da manovra [5].
Nonostante la natura intrinsecamente multidisciplinare del problema aeroelastico, può risul-
tare ancora conveniente studiare separatamente il sistema strutturale ed il sistema aerodinamico,
delegando successivamente allo schema di interfaccia il compito di interconnetterli in modo fles-
sibile: cosı̀ facendo è infatti possibile continuare ad utilizzare i modelli matematici ed i metodi
numerici consolidati ed ormai tipici di ciascuna disciplina [11].

2.2 Il sistema strutturale


Le equazioni differenziali alle derivate parziali (PDE) che governano la dinamica del sistema
strutturale possono essere facilmente ricavate a partire dal Principio dei Lavori Virtuali (PLV)
come descritto più dettagliatamente in §3.1. Scegliendo un approccio agli spostamenti, si può
pensare di approssimare il campo di spostamenti incognito s(x, t) mediante un metodo alla Ritz
nel seguente modo:
Ns
X
s(x, t) ≃ N i (x) qi (t) = [ N (x) ] {q(t)} , (2.1)
i=1

dove la funzione di forma N i (x), dipendente unicamente dalla variabile spaziale x e scelta a
priori, è l’i-esimo termine di uno sviluppo completo e rispettoso delle condizioni al contorno
essenziali, mentre la coordinata libera qi (t), dipendente unicamente dalla variabile temporale t,
è l’i-esimo spostamento generalizzato incognito del problema [15, 27].
Il sistema strutturale 9

Tale tecnica di separazione delle variabili permette di passare da un sistema di equazioni dif-
ferenziali alle derivate parziali (PDE) al seguente sistema di equazioni differenziali alle derivate
ordinarie (ODE):
[ M ] {q̈} + [ C ] {q̇} + [ K ] {q} = {Q} , (2.2)
dove [ M ], [ C ] e [ K ] ∈ RNs ×Ns sono rispettivamente le matrici di massa, smorzamento e
rigidezza generalizzati e {Q(t)} è il vettore delle forze esterne generalizzate. Nel caso di problemi
aeroelastici esso corrisponde al vettore delle forze aerodinamiche generalizzate o Generalized
Aerodynamic Forces (GAF), costruito proiettando i carichi aerodinamici sulle funzioni di forma
strutturali nel seguente modo:
I
a
{Q (t)} = [ N (x) ]T f a (x, t) dS, (2.3)
S

dove f a (x, t) è il campo delle forze aerodinamiche per unità di superficie dS. Nell’ambito della
aeroelasticità classica esiste un insieme di metodi numerici consolidati per calcolare i carichi
aerodinamici in modo relativamente semplice direttamente nel dominio delle frequenze; può
essere dunque utile riscrivere il problema strutturale (2.2) nel dominio di Laplace come:

s2 [ M ] + s [ C ] + [ K ] {q} = {Q} , (2.4)

dove {q(s)} e {Q(s)} sono rispettivamente le trasformate di Laplace del vettore degli spostamenti
generalizzati e delle forze esterne generalizzate.
Per risolvere numericamente il problema strutturale lo sviluppo completo delle funzioni di
forma (2.1) deve essere opportunamente specificato ed in seguito troncato ad un numero finito
di termini, pari al numero di gradi di libertà strutturali Ns , scelto in funzione del grado di
accuratezza desiderato e delle caratteristiche di convergenza delle funzioni di forma. Più in
particolare è possibile distinguere le seguenti strategie risolutive:

- Innanzitutto è possibile scegliere come termini dello sviluppo completo le funzioni di base
polinomiali lagrangiane a supporto compatto del metodo degli elementi finiti (FEM),
come descritto in §3.1.1: in questo caso le coordinate libere del problema corrispondono
agli spostamenti strutturali valutati in corrispondenza dei nodi della griglia di calcolo,
convenzionalmente indicati come {us (t)}. Tuttavia il numero di gradi di libertà strutturali
che è necessario utilizzare per garantire una buona accuratezza della soluzione numerica
è in generale molto elevato.

- In alternativa e specialmente nelle prime fasi di progetto, è possibile scegliere come termini
dello sviluppo completo i modi propri della struttura, come descritto in §3.1.2. La scelta
di tali funzioni di forma globali consente di condensare significativamente le dimensioni del
problema, rappresentando correttamente la soluzione anche con relativamente pochi ter-
mini dello sviluppo completo. Inoltre, grazie alle proprietà di ortogonalità dei modi propri,
le matrici di massa e rigidezza generalizzate [ M ] e [ K ] sono diagonali; un discorso ana-
logo vale anche per la matrice di smorzamento generalizzato [ C ] nel caso in cui si adotti
un modello proporzionale, energeticamente equivalente alla reale dinamica (non lineare)
dello smorzamento strutturale. Un ulteriore vantaggio della scelta di una base modale
consiste nella possibilità di aggiungere od eliminare (e residualizzare) facilmente i modi
rigidi associati alle superfici di comando. Infine è possibile validare e tarare tale model-
lo strutturale confrontandolo con i risultati delle prove di vibrazione a terra o Ground
Vibration Test (GVT).
replacemen
10 Analisi del problema aeroelastico

{F as } {us } , {u̇s }
FEM
E
Modi propri
Base ibrida

Figura 2.2: Schematizzazione del sistema strutturale mediante il legame ingresso-uscita come nell’ambito
della teoria dei sistemi. Pensando ad una discretizzazione ad elementi finiti (FEM) del problema, il blocco
E riceve in ingresso il vettore delle risultanti delle forze aerodinamiche agenti sui nodi strutturali {F as (t)}
e restituisce in uscita il vettore degli spostamenti e delle velocità dei nodi strutturali {us (t)} ed {u̇s (t)}.

- Tuttavia i modi propri non garantiscono una rapida convergenza della soluzione numerica
in presenza di carichi concentrati, a meno di utilizzare un numero elevato di termini dello
sviluppo oppure il metodo dei modi di accelerazione: si preferisce allora estendere la base
modale aggiungendo opportune deformate statiche. La scelta di una base ibridizzata com-
porta che le matrici di massa, smorzamento (se proporzionale) e rigidezza generalizzati
[ M ], [ C ] e [ K ] non siano più diagonali, fatto che comunque non costituisce una pena-
lizzazione significativa: infatti il vantaggio principale della condensazione modale non è
tanto quello di diagonalizzare le matrici del problema, ma la capacità di fornire un mo-
dello strutturale efficiente (fondamentale anche per l’eventuale progettazione di sistemi di
controllo attivo).

2.3 Il sistema aerodinamico


Molti velivoli moderni, civili e militari, sono progettati per una significativa operatività in
regime di moto transonico, ad un numero di Mach di volo compreso approssimativamente nel-
l’intervallo M∞ ∈ (0.7, 1.3). In tale regime la soluzione del campo di moto non stazionario
attorno al velivolo ed il calcolo dei carichi aerodinamici comporta notevoli difficoltà: non è
infatti possibile utilizzare i modelli matematici consolidati che operano una linearizzazione del
problema nell’intorno di una condizione di riferimento nell’ipotesi di piccole perturbazioni, co-
me ad esempio il Doublet Lattice Method (DLM) o il metodo di Morino, poiché possono fornire
risultati grossolanamente approssimati. Viceversa è necessario adottare modelli matematici e
metodi numerici appartenenti alla classe della fluidodinamica computazionale o Computational
Fluid Dynamics (CFD) ed eventualmente effettuare a posteriori la linearizzazione (numerica)
dei carichi aerodinamici.

2.3.1 Il regime di moto transonico


Per comprendere meglio la natura delle difficoltà associate al regime di moto transonico può
essere utile esaminare l’evoluzione rappresentata in Figura 2.3 del campo di moto attorno ad un
profilo alare in generale non simmetrico nell’ipotesi di fluido ideale non viscoso e non conducente,
all’aumentare del numero di Mach della corrente asintotica M∞ [34, 37]. Più in particolare è
possibile distinguere le seguenti fasi:

- Il limite inferiore del regime di moto transonico è il numero di Mach critico inferiore
M∞, cr , definito come quel numero di Mach della corrente asintotica tale per cui, in seguito
all’espansione della corrente sul dorso del profilo alare, si raggiungono in un punto P in
prossimità dell’ascissa di massimo spessore condizioni localmente soniche ovvero MP = 1.
tsIl sistema aerodinamico 11

Bolla supersonica Onda d’urto Onda d’urto staccata


111111111111111
000000000000000
M >1
000000000000000
111111111111111
M <1 M >1 M <1 M >1

000000000000000
111111111111111 111111111111111
000000000000000 111111111111111
000000000000000
000000000000000
111111111111111 000000000000000
111111111111111
000000000000000
111111111111111
M <1 000000000000000
111111111111111
000000000000000
111111111111111

M∞ = M∞ , cr + ε M∞, cr < M∞ < 1 M∞ > 1

Figura 2.3: Evoluzione qualitativa del campo di moto transonico attorno ad un profilo alare non
simmetrico, all’aumentare del numero di Mach della corrente asintotica M∞ .

Ovviamente tale valore dipende fortemente dalla forma del corpo e dall’angolo di incidenza
e qualitativamente tende a diminuire al crescere dello spessore massimo del profilo alare
e dell’angolo di incidenza.
- Per M∞ > M∞, cr , in corrispondenza del punto P si inizia a formare una regione local-
mente supersonica, immersa in una corrente subsonica e delimitata da una linea sonica,
chiamata bolla supersonica. Le onde di espansione che si generano lungo il tratto accele-
rante del dorso del profilo alare si riflettono sulla linea sonica (a pressione costante) come
onde di compressione tra loro convergenti, che possono eventualmente coalescere prima di
raggiungere la superficie del corpo e formare un’onda d’urto.
- Al crescere ulteriormente di M∞ l’estensione della bolla supersonica sul dorso aumenta,
l’onda d’urto corrispondente si intensifica e si sposta verso valle. Contemporaneamente
anche sul ventre inizia a formarsi una bolla supersonica e si sviluppa rapidamente fino a che
la relativa onda d’urto si posiziona in corrispondenza del bordo d’uscita del profilo alare.
Se in precedenza le ipotesi di omoentropicità ed irrotazionalità della corrente si potevano
ancora ritenere soddisfatte in modo approssimato, quando l’intensità e la curvatura delle
onde d’urto divengono significative esse cadono definitivamente.
- Infine per M∞ > 1 la topologia della corrente cambia radicalmente: a monte del profilo
alare si forma infatti un urto curvo staccato a valle del quale il flusso è subsonico, mentre
è supersonico in tutto il resto del campo di moto. Al crescere ulteriormente di M∞ la
regione subsonica si riduce progressivamente di dimensioni, ma senza scomparire del tutto
a meno che il bordo d’attacco del profilo alare sia affilato. Contrariamente a quanto visto
in precedenza, non esiste un’altrettanto chiara definizione del limite superiore del regime
di moto transonico.
Di conseguenza il principale tratto distintivo del regime di moto transonico consiste nel-
la presenza simultanea all’interno del campo di moto attorno al velivolo di regioni localmente
subsoniche e regioni localmente supersoniche (all’interno delle quali cambiano le proprietà ma-
tematiche delle equazioni di governo, rispettivamente ellittiche ed iperboliche), eventualmente
separate da fenomeni irreversibili quali onde d’urto.
Il campo di moto è reso ulteriormente complesso da fenomeni fortemente non lineari, quali
l’interazione dell’onda d’urto con lo strato limite o con il movimento strutturale. Ad esempio
l’onda d’urto può favorire la transizione al regime di moto turbolento o addirittura la sepa-
razione dello strato limite, che può assumere carattere non stazionario ed indurre oscillazioni
significative sul sistema strutturale (buffeting); inoltre tale fenomeno può accoppiarsi con il mo-
vimento strutturale e produrre fenomeni di instabilità del sistema aeroelastico, come ad esempio
oscillazioni significative delle superfici di controllo (aileron buzz ).
12 Analisi del problema aeroelastico

2.3.2 Modelli matematici per la soluzione del problema aerodinamico


Data la complessità del regime di moto transonico, per la soluzione del problema aerodinamico
diviene necessario adottare modelli matematici più accurati e metodi numerici appartenenti alla
classe della fluidodinamica computazionale (CFD) [13, 24, 25]. Tutto ciò comporta un aumento
significativo del costo computazionale in termini di tempi di calcolo ed occupazione di memoria
rispetto ai metodi numerici linearizzati. Affinché tali analisi siano utili nelle fasi di progetto e
di verifica, ovvero in situazioni in cui è richiesta la valutazione di un numero di configurazioni
elevato, è allora fondamentale identificare il modello matematico ed il metodo numerico in gra-
do di fornire il migliore compromesso tra accuratezza dei risultati ed efficienza di calcolo [11].
Per effettuare tale scelta in modo ragionato può essere utile presentare i modelli matematici ed
i relativi metodi numerici generalmente impiegati nell’ambito della aeroelasticità computazio-
nale o Computational Aeroelasticity (CA). Procedendo per semplificazioni successive è possibile
distinguere:

Equazioni di Navier-Stokes Il sistema di equazioni differenziali alle derivate parziali (PDE)


di natura mista e non lineari che governa la dinamica di una corrente di fluido compri-
mibile, viscoso e conducente può essere scritto secondo un approccio euleriano in forma
differenziale conservativa nel seguente modo:
∂u
+ ∇ · f(u) = ∇ · d(u) ∀ (x, t) ∈ V × T , (2.5)
∂t
dove V ⊆ RNd e T ⊆ R+ sono il dominio spaziale e temporale del problema. Il vettore
delle variabili conservative u(x, t), dei flussi inviscidi f(u) e dei flussi viscosi d(u) sono
definiti rispettivamente come:
     

 ρ 
 
 ρv 
 
 0 


 
 
 
 
 

u= ρv , f= ρv ⊗ v + P [I ] , d= τ , (2.6)

 
 
 
 
 

 t 
  
  
 τ ·v+q 
E v (E t + P )  

dove ρ(x, t), v(x, t) e E t (x, t) sono la densità, la velocità e l’energia totale specifica per
unità di volume, P (x, t), τ (x, t) e q(x, t) sono la pressione termodinamica, il tensore degli
sforzi viscosi e la potenza ceduta per conduzione termica ed infine [ I ] ∈ RNd ×Nd è la
matrice identità.
Affinché il problema (2.5) sia chiuso è necessario specificare l’equazione di stato per la pres-
sione termodinamica P (x, t) e le leggi costitutive per il tensore degli sforzi viscosi τ (x, t)
e per la potenza ceduta per conduzione termica q(x, t). Ipotizzando di approssimare il
comportamento dell’aria mediante il modello termodinamico di gas ideale politropico, ov-
vero a composizione costante e caratterizzato da un rapporto costante γ = CP /CV tra
i calori specifici a pressione e volume costanti, l’equazione di stato assume la seguente
forma molto semplice:
1
P = (γ − 1) E con E = Et − ρ |v|2 , (2.7)
2
dove E(x, t) è l’energia interna specifica per unità di volume. Alternativamente è possibile
adottare modelli termodinamici più complessi, ma validi in un intervallo di temperature
più ampio, quali i modelli di equilibrio e non equilibrio termochimico [17].
Il sistema aerodinamico 13

Adottando inoltre l’ipotesi di fluido newtoniano, per cui il tensore simmetrico degli sforzi
viscosi è proporzionale alla velocità di deformazione, e l’ipotesi di Fourier, per cui il flusso
termico è allineato con il gradiente della temperatura, è possibile scrivere:
µ h i
τ = (∇ ⊗ v) + (∇ ⊗ v)T + λ ∇ · v [ I ] e q = −κ ∇T, (2.8)
2
dove µ(T ), λ(T ) e κ(T ) sono rispettivamente i coefficienti di viscosità dinamica, viscosità
di volume e conduzione termica.
Affinché il problema (2.5) sia ben posto è necessario assegnare opportune condizioni iniziali
e condizioni al contorno, definendo rispettivamente il valore assunto dalla soluzione in tutto
il dominio V all’istante iniziale t = 0 ovvero u(x, 0) = u0 (x) ed il valore assunto dalla
soluzione su tutto il contorno del dominio S = ∂V ad ogni istante di tempo t ∈ T ovvero
u(x ∈ S, t) = b(t). Ad esempio in corrispondenza di un contorno solido S b , quale la
superficie di un’ala investita da una corrente fluida, è necessario imporre la condizione al
contorno di perfetta adesione, ovvero l’annullamento della velocità locale a parete v|S b = 0.
Tale modello matematico fornisce risultati in buon accordo con i dati sperimentali per
correnti sia laminari che turbolente; in questo secondo caso, per risolvere in modo sod-
disfacente la dinamica del campo di moto caratterizzato da fluttuazioni delle variabili
fisiche anche su scale molto piccole, è fondamentale adottare una discretizzazione del do-
minio computazionale molto raffinata ad un costo computazionale ancora troppo elevato.
Per risolvere il problema si può allora pensare di applicare al sistema di equazioni (2.5)
l’operatore di media temporale locale nello spazio, ottenendo cosı̀ le equazioni Reynolds
Averaged Navier-Stokes (RANS). In tale formulazione le incognite del problema diventano
le variabili fisiche caratteristiche del moto medio della corrente, mentre gli effetti diffusivi
delle fluttuazioni turbolente sono raggruppati all’interno del tensore simmetrico degli sfor-
zi di Reynolds τ R (x, t), solo dimensionalmente assimilabile ad uno sforzo. Per esplicitare
le 6 componenti del tensore degli sforzi di Reynolds in funzione delle sole quantità medie
è possibile adottare vari modelli di differente complessità, a partire da semplici modelli
algebrici (ad esempio Mixing-Length), fino a modelli più complessi che aggiungono una o
più equazioni differenziali (ad esempio Spalart-Allmaras, κ − ω, RSM ) [1].

Equazioni di Eulero Nello studio delle correnti a numero di Reynolds Re elevato attorno a corpi
di forma aerodinamica è possibile considerare gli effetti dinamici della diffusione viscosa
e della conduzione termica confinati in uno strato sottile adiacente al corpo, detto strato
limite. Per risolvere il campo di moto all’esterno dello strato limite è possibile adottare
il modello semplificato di fluido non viscoso (µ = 0 e λ = 0) e non conducente (κ = 0);
tali ipotesi consentono di trascurare nelle equazioni di bilancio della quantità di moto
e dell’energia i contributi associati al tensore degli sforzi viscosi e della potenza ceduta
per conduzione termica. Il sistema di equazioni differenziali alle derivate parziali (PDE)
iperboliche e non lineari che governa la dinamica di una corrente comprimibile di fluido
ideale può essere scritto secondo un approccio euleriano in forma differenziale conservativa
nel seguente modo:
∂u
+ ∇ · f(u) = 0 ∀ (x, t) ∈ V × T , (2.9)
∂t
dove V ⊆ RNd e T ⊆ R+ sono il dominio spaziale e temporale del problema; il vettore
delle variabili conservative u(x, t) e dei flussi inviscidi f(u) sono sempre definiti nella
relazione (2.6).
14 Analisi del problema aeroelastico

Contrariamente a quanto visto in precedenza per assegnare le condizioni al contorno è


necessario definire il valore assunto dalla soluzione solo sul bordo di inflow S inf low , che
corrisponde alla porzione del contorno lungo cui β · nb < 0, dove β è la velocità locale di ad-
vezione ed nb è la normale al bordo, convenzionalmente assunta positiva se uscente. Inoltre
in corrispondenza di un contorno solido S b , quale la superficie di un’ala investita da una
corrente fluida, è necessario imporre la condizione al contorno di non compenetrazione, ov-
vero l’annullamento della componente normale della velocità locale a parete (v · n b )|S b = 0;
in alternativa è possible assegnare un valore non nullo della velocità normale a parete Vn ,
detta velocità di traspirazione, in modo tale da riprodurre gli effetti geometrici e cinema-
tici del movimento del contorno senza effettivamente deformare la griglia di calcolo [56],
come descritto più dettagliatemente in §8.2.
Tale modello fornisce risultati in buon accordo con i dati sperimentali per quanto riguarda
la distribuzione di pressione sulla superficie del corpo e consente dunque di calcolare la
portanza, la resistenza di pressione ed indotta, ma non la resistenza di attrito (in generale
trascurabile per ali ben fatte ad elevata efficienza aerodinamica ed angoli di incidenza
moderati). Ai fini della soluzione del problema aeroelastico è inoltre opportuno ricordare
che trascurare la componente di resistenza della forza aerodinamica è un’approssimazione
non cosı̀ grossolana: infatti la relazione (2.3) per il calcolo delle forze aerodinamiche
generalizzate corrisponde ad un operatore di media spaziale pesata sulle forme modali, che
per ali di configurazione strutturale convenzionale sono generalmente caratterizzate da una
componente di spostamento nella direzione normale alla pianta alare significativamente
maggiore rispetto alla componente di spostamento nel piano.

Equazioni del potenziale Ipotizzando inoltre che la corrente sia irrotazionale (∇ × v = 0)


e che il dominio sia semplicemente connesso, è possibile esprimere la velocità come il
gradiente di un potenziale scalare Φ(x, t), ovvero v(x, t) = ∇Φ. Ricorrendo alla relazione
di Crocco [34] è allora possibile dimostrare che la corrente è anche omoentropica, ovvero
devono essere assenti fenomeni irreversibili quali onde d’urto. Di conseguenza a rigore
tale modello matematico non è valido in regime di moto transonico, caratterizzato dalla
presenza all’interno del campo di moto di regioni localmente supersoniche; in realtà, dal
momento che la variazione di entropia attraverso un’onda d’urto cresce con la potenza
cubica del numero di Mach ovvero ∆s = O(M 3 ), tale modello matematico si può ritenere
valido ingegneristicamente fino a numeri di Mach locali pari a circa M = 1.3 ÷ 1.4.
Svolgendo i conti si ottiene la seguente equazione differenziale alle derivate parziali (PDE)
non lineare e di natura mista:
 
∂ 2 Φ ∂(∇Φ)2 ∇Φ · ∇Φ
+ + ∇Φ · ∇ − c2 ∇2 Φ = 0 ∀ (x, t) ∈ V × T , (2.10)
∂t2 ∂t 2

dove V ⊆ RNd e T ⊆ R+ sono il dominio spaziale e temporale del problema; la velocità


del suono c(x, t) può essere determinata in funzione del potenziale Φ(x, t), della velocità
di volo V∞ e della velocità del suono della corrente asintotica c∞ , riscrivendo il teorema
di Bernoulli comprimibile non stazionario nel seguente modo:

∂Φ |v|2 c2 V2 c2
+ + = ∞+ ∞ . (2.11)
∂t 2 γ−1 2 γ −1
Il sistema aerodinamico 15

Rielaborando opportunamente il teorema di Bernoulli comprimibile non stazionario (2.11),


γ γ
sostituendo nella relazione isoentropica P/P∞ = (T /T∞ ) γ−1 = (c2 /c2∞ ) γ−1 e svolgendo i
conti è infine possibile scrivere la seguente relazione per il recupero dei carichi:
    γ−1
γ
γ−1 ∂Φ kvk2 − V∞2
1− 2 + −1
c∞ ∂t 2
Cp = . (2.12)
1 2
γ M∞
2

Affinché il problema (2.10) sia ben posto è necessario assegnare opportune condizioni
iniziali ed al contorno; ad esempio in corrispondenza di un contorno solido S b , quale la
superficie di un’ala investita da una corrente fluida, è necessario imporre la condizione
al contorno di non compenetrazione, ovvero l’annullamento del gradiente del potenziale
proiettato nella direzione normale al bordo (∇Φ · n b )|S b = 0. Nel caso di corpi portanti è
inoltre fondamentale ricordare che in corrispondenza del bordo d’uscita dell’ala si genera
una scia vorticosa S w di spessore infinitesimo sede di una discontinuità del potenziale ∆Φ.
Tale salto è successivamente trasportato convettivamente verso valle, come è possibile
dimostrare imponendo la condizione al contorno di scia scarica, ovvero ∆Cp |S w = 0.

Per identificare il modello matematico che ad esempio nell’ambito di una discretizzazione a


volumi finiti (FV) del problema aerodinamico è in grado di fornire il migliore compromesso tra
accuratezza dei risultati ed efficienza computazionale, si può innanzitutto pensare di confrontare
il numero di variabili scalari incognite in corrispondenza di ciascuna cella della griglia di calcolo.
Se nelle equazioni del potenziale completo si ha 1 sola variabile scalare incognita, nelle equazioni
di Eulero esse diventano 5 ed infine fino a 11 se si sceglie di risolvere le equazioni di Navier-Stokes
mediate alla Reynolds (RANS) con un modello di turbolenza raffinato (RSM).
Un ulteriore fattore discriminante è la risoluzione spaziale della griglia di calcolo: indipen-
dentemente dal particolare modello matematico è infatti fondamentale che la reale geometria
del corpo sia rappresentata fedelmente per determinare in modo accurato i carichi aerodinamici.
Nel caso delle equazioni di Eulero è inoltre necessario raffinare opportunamente la griglia di cal-
colo in prossimità della superficie del corpo per catturare correttamente le eventuali onde d’urto.
Le equazioni di Navier-Stokes risultano infine ancora più penalizzanti in quanto è necessario
aggiungere una griglia di strato limite, generalmente costituita da celle di forma esaedrica,
che solo pochi programmi commerciali [43, 44] sono in grado di generare in modo flessibile e
soddisfacente.
In base a tali considerazioni, le equazioni del potenziale completo sono state storicamente il
primo modello matematico ad essere utilizzato nell’ambito dell’aeroelasticità computazionale.
Tuttavia grazie al progressivo aumento delle risorse di calcolo disponibili, oggi è possibile adot-
tare anche nelle fasi di progetto e di verifica modelli matematici più raffinati e sicuramente più
adatti allo studio del regime di moto transonico, quali le equazioni di Eulero e più recentemente
anche le equazioni di Navier-Stokes eventualmente mediate alla Reynolds (RANS).
Tenendo in considerazione esclusivamente l’accuratezza del modello matematico, la scelta
cadrebbe ovviamente sulle equazioni di Navier-Stokes; tuttavia nell’affrontare problemi di inte-
resse aeronautico caratterizzati da numeri di Reynolds Re elevati, corpi di forma aerodinamica
ed angoli di incidenza moderati (per cui è lecito attendersi che il campo di moto non sia do-
minato dagli effetti dinamici della viscosità) si può pensare di utilizzare il modello matematico
delle equazioni di Eulero che consente di calcolare in modo soddisfacente i carichi aerodinamici
ad un costo computazionale decisamente inferiore.
16 Analisi del problema aeroelastico

2.3.3 Linearizzazione numerica dei carichi aerodinamici


Ai fini della soluzione del problema aeroelastico è necessario calcolare la variazione non staziona-
ria dei carichi aerodinamici rispetto ad una condizione di equilibrio di riferimento conseguente al
movimento strutturale; i metodi numerici per la soluzione del problema aerodinamico consolida-
ti nell’ambito della aeroelasticità classica consentono di rappresentare, direttamente nel dominio
delle frequenze nell’ipotesi di sistema lineare e tempo-invariante, la relazione tra il vettore delle
forze aerodinamiche generalizzate {Qa (s)} e degli spostamenti generalizzati {q(s)} mediante la
matrice delle funzioni di trasferimento aerodinamiche [ Ham (p) ] ∈ CNs ×Ns nel seguente modo:

{Qa (s)} = q∞ [ Ham (p, M∞ , Re) ] {q(s)} , (2.13)

dove la frequenza ridotta complessa p = sLa /V∞ = h + ik dipende dal valore della lunghezza
aerodinamica di riferimento La (spesso assunta pari a metà della corda media aerodinamica)
e della velocità di volo V∞ . È inoltre esplicitata la dipendenza funzionale della matrice delle
funzioni di trasferimento aerodinamiche dal numero di Mach M∞ e dal numero di Reynolds Re.
In realtà [ Ham (p) ] = [ Ham (ik) ] = [ Ham (k) ] è calcolata numericamente solo lungo l’asse
immaginario Im del campo complesso C ed è dunque necessario utilizzare opportuni metodi
numerici per estenderne la conoscenza a tutto il campo complesso.
Nell’ipotesi di sistema aerodinamico asintoticamente stabile (verificata sperimentalmente)
e di ingressi causali è possibile fornire una rappresentazione equivalente alla relazione (2.13)
nel dominio del tempo, scrivendo il vettore delle forze aerodinamiche generalizzate {Qa (t)}
come l’integrale di convoluzione della matrice delle risposte impulsive del sistema aerodinamico
[ ham (t) ] ∈ RNs ×Ns con il vettore degli spostamenti generalizzati {q(t)}, ovvero:
Z ∞
  ′ ′
{Qa (t)} = q∞ ham (t − t′ , M∞ , Re) q(t ) dt . (2.14)
0

Supponendo che il vettore dei gradi di libertà associati alle superfici di controllo {δ} sia
compreso all’interno del vettore degli spostamenti generalizzati {q}, le relazioni (2.13) ed (2.14)
consentono di modellare automaticamente anche il contributo dei carichi aerodinamici associato
al movimento dei comandi di volo.
Viceversa è comodo trattare separatamente la variazione non stazionaria dei carichi ae-
rodinamici rispetto ad una condizione di equilibrio di riferimento conseguente al movimento
dell’aria, che convenzionalmente è chiamato raffica oppure turbolenza rispettivamente nel caso
in cui esso sia modellato secondo un approccio deterministico oppure stocastico. Tale contri-
buto è di fondamentale importanza per la soluzione dei problemi di risposta e dunque per la
certificazione dei velivoli, dato che le normative correnti richiedono di considerare in fase di
progetto come condizioni di carico potenzialmente dimensionanti la risposta alla raffica ed alla
turbolenza. Come in precedenza è possibile scrivere il vettore delle forze aerodinamiche genera-
lizzate conseguenti al movimento dell’aria {Qg } in funzione del vettore delle velocità di raffica
oppure del vettore delle velocità di fluttuazione turbolenta valutate in corrispondenza dei nodi
aerodinamici appartenenti al contorno del corpo {v ga } come:

{Qg (s)} = q∞ [ Hag (p, M∞ , Re) ] {v ga (s)/V∞ } , oppure : (2.15)


Z ∞
  g ′
{Qg (t)} = q∞ hag (t − t′ , M∞ , Re) v a (t )/V∞ dt′ , (2.16)
0
b b
dove [ Hag (p) ] ∈ CNs ×Na ed [ hag (t) ] ∈ RNs ×Na sono rispettivamente le matrici delle funzioni di
trasferimento e delle risposte impulsive del sistema aerodinamico associate alla raffica.
Il sistema aerodinamico 17

{v ga }

{F aa } {ua } , {u̇a }
A
Potenziale
Eulero
Navier-Stokes

Figura 2.4: Schematizzazione del sistema aerodinamico mediante il legame ingresso-uscita come nel-
l’ambito della teoria dei sistemi. Pensando ad una discretizzazione a volumi finiti (FV) del problema,
il blocco A riceve in ingresso il vettore degli spostamenti e delle velocità dei nodi aerodinamici appar-
tenenti al contorno del corpo {ua (t)} ed {u̇a (t)} e restituisce in uscita il corrispondente vettore delle
forze aerodinamiche {F aa (t)}. Nell’ambito dei problemi di risposta è inoltre necessario aggiungere, come
un disturbo esterno agente sul sistema, il vettore delle velocità di raffica agenti sui nodi aerodinamici
appartenenti al contorno del corpo {v ga (t)}.

Per quanto riguarda il regime di moto transonico, in base alle osservazioni fatte in precedenza
relativamente alla variabilità delle proprietà matematiche delle equazioni di governo ed alle forti
non linearità che complicano notevolmente anche il campo di moto attorno ad un semplice profilo
alare, non sembra possibile ricondurre il calcolo dei carichi aerodinamici ad un ambito lineariz-
zato simile a (2.13). In realtà, se il campo di moto relativo alla condizione di equilibrio di rife-
rimento è certamente sede di fenomeni non lineari quali onde d’urto, lo stesso discorso non vale
per la variazione non stazionaria dei carichi aerodinamici conseguente al movimento strutturale.
Nell’ipotesi di piccoli spostamenti è infatti possibile osservare che un modello linearizzato nel-
l’intorno della soluzione stazionaria fornisce un’approssimazione in generale buona ed in molti
casi ottima [10, 28] del reale comportamento del sistema aerodinamico.
Pur in un ambito linearizzato, l’utilizzo di metodi numerici appartententi alla classe del-
la fluidodinamica computazionale (CFD) consente di incrementare notevolmente l’accuratez-
za dei risultati rispetto ai metodi numerici consolidati nell’ambito dell’aeroelasticità classica.
La soluzione stazionaria è infatti calcolata risolvendo le equazioni di governo non lineari; inoltre
è possibile includere nella matrice delle funzioni di trasferimento aerodinamiche l’influenza della
deformabilità strutturale sulla posizione e sull’intensità dell’onda d’urto o gli effetti associati a
manovre ad angoli di incidenza elevati.

2.3.4 Calcolo della matrice delle funzioni di trasferimento aerodinamiche

Per calcolare la matrice delle funzioni di trasferimento aerodinamiche [ Ham (k) ] utilizzando i
metodi numerici appartenenti alla classe della fluidodinamica computazionale (CFD) è necessa-
rio svolgere un esperimento numerico concettualmente identico alla procedura sperimentale per
identificare in galleria del vento un modello di ordine ridotto o Reduced Order Model (ROM)
dei carichi aerodinamici.
Innanzitutto è necessario determinare la soluzione stazionaria del problema aeroelastico,
accoppiando la soluzione numerica del problema aerodinamico e la soluzione numerica del pro-
blema strutturale ad esempio mediante un metodo iterativo: l’insieme dei carichi aerodinamici
e della deformata strutturale a convergenza costituisce la condizione di equilibrio o trim di
riferimento per la linearizzazione (numerica) dei carichi aerodinamici.
18 Analisi del problema aeroelastico

È quindi possibile calcolare numericamente la variazione non stazionaria del vettore delle
forze aerodinamiche generalizzate {Qa (t)} conseguente ad una legge di movimento assegnata del
solo i-esimo elemento del vettore degli spostamenti generalizzati qi (t), mentre i rimanenti ele-
menti sono nulli. La i-esima colonna della matrice delle funzioni di trasferimento aerodinamiche
[ Ham (k)|i ] corrisponde allora al rapporto tra le trasformate di Fourier del segnale in uscita ed
in ingresso al sistema aerodinamico, ovvero rispettivamente il vettore delle forze aerodinamiche
generalizzate {Qa (t)} e l’i-esimo spostamento generalizzato qi (t):

Fk ( {Qa (t)} )
[ Ham (k)|i ] = , (2.17)
Fk ( qi (t) )

dove l’operatore Fk (·) è implementato numericamente in modo efficiente mediante l’algoritmo


della Fast Fourier Transform (FFT). Ripetendo tale procedura per il numero di gradi di libertà
strutturali Ns ed affiancando le colonne progressivamente costruite, si ottiene infine la matrice
delle funzioni di trasferimento aerodinamiche [ Ham (k) ].
Tale strategia risulta vantaggiosa dal punto di vista computazionale: infatti è sufficiente
calcolare numericamente la risposta del sistema aerodinamico conseguente ad una variazione
imposta delle condizioni al contorno, mentre è necessario svolgere una simulazione numerica
accoppiata dell’interazione fluido-struttura o Fluid Structure Interaction (FSI) solo per il calcolo
della condizione di equilibrio trimmata di riferimento.
Ovviamente la legge di movimento assegnata dell’i-esimo spostamento generalizzato qi (t)
deve soddisfare alcuni requisiti, tra cui la capacità di eccitare l’intervallo di frequenze ridotte di
interesse k ∈ [ 0, kmax ] con un’ampiezza sufficiente rispetto al rumore numerico, ma contempo-
raneamente tale da non invalidare l’ipotesi di piccole perturbazioni (la cui validità deve essere
verificata mediante prove numeriche di linearità statica e dinamica) e la possibilità di essere
realizzate numericamente ad un costo computazionale accettabile. Le leggi di movimento più
comunemente utilizzate [28] sono le seguenti:

Ingresso armonico Innanzitutto si può pensare di fornire come segnale in ingresso al sistema
aerodinamico una legge di movimento armonica di frequenza ridotta kq ed ampiezza
massima Aq assegnate. Per il teorema della risposta in frequenza, valido per un siste-
ma dinamico lineare tempo-invariante ed asintoticamente stabile, il segnale in uscita dal
sistema aerodinamico è anche esso armonico ed isofrequenziale; di conseguenza è possibile
calcolare numericamente la i-esima colonna della matrice delle funzioni di trasferimento
aerodinamiche [ Ham (kq )|i ] solo in corrispondenza della frequenza ridotta kq .
Tale strategia comporta un costo computazionale molto elevato, dato che è necessario
risolvere numericamente il campo di moto non stazionario attorno al velivolo per tutte le
frequenze ridotte di interesse.

Ingresso impulsivo Supponendo di fornire come segnale in ingresso al sistema aerodinamico un


impulso ideale di ampiezza infinita e durata nulla, sarebbe possibile calcolare numerica-
mente la i-esima colonna della matrice delle risposte impulsive aerodinamiche [ ham (t)|i ]
e successivamente, applicando la trasformata di Fourier, la i-esima colonna della matrice
delle funzioni di trasferimento aerodinamiche [ Ham (k)|i ] direttamente per tutte le fre-
quenze ridotte di interesse. Numericamente non è tuttavia possibile realizzare un impulso
ideale, ma solo un impulso reale di ampiezza e durata finite scelte opportunamente per
eccitare l’intervallo di frequenze di interesse, analogamente alla procedura sperimentale
della pseudo-risposta impulsiva.
Il sistema aerodinamico 19

Tale strategia comporta un costo computazionale elevato, dato che è necessario utiliz-
zare un intervallo di integrazione temporale molto ridotto in prossimità dell’origine per
rappresentare in modo soddisfacente l’impulso reale; inoltre, a meno di prolungare note-
volmente la simulazione numerica del campo di moto non stazionario attorno al velivolo,
è problematico recuperare accuratamente il guadagno statico e la dinamica relativa alle
basse frequenze del sistema aerodinamico.

Ingresso a scalino Per recuperare accuratamente anche il guadagno statico e la dinamica rela-
tiva alle basse frequenze del sistema aerodinamico, si può pensare di fornire come segnale
in ingresso uno scalino ideale di ampiezza massima Aq assegnata.
Tale strategia è adeguata per quanto riguarda il solo contributo geometrico delle condi-
zioni al contorno, proporzionale all’i-esimo spostamento generalizzato qi (t); viceversa il
contributo cinematico delle condizioni al contorno, proporzionale anche all’i-esima velocità
generalizzata q̇i (t), corrisponde ad un impulso ideale difficile da realizzare numericamente.
Inoltre la trasformata di Fourier del segnale in uscita è generalmente caratterizzata da fe-
nomeni oscillatori di Gibbs, che impediscono di recuperare accuratamente la dinamica
relativa alle alte frequenze del sistema aerodinamico.
Per calcolare numericamente la i-esima colonna della matrice delle funzioni di trasferimen-
to aerodinamiche [ Ham (k)|i ] si preferisce allora depurare il segnale in uscita del valore a
regime introducendo la deficency del vettore delle forze aerodinamiche generalizzate:

{D a (t)} = {Qa (t)} − {Qa∞ } , (2.18)

dove {Qa∞ } è il vettore delle forze aerodinamiche generalizzate a regime. Sostituendo


infine la relazione (2.18) nella (2.17) e moltiplicando il numeratore ed il denominatore per
il fattore ik è possibile scrivere:

{Qa∞ } + ik Fk ( {D a (t)} )
[ Ham (k)|i ] = . (2.19)
Aq

Ingresso a scalino raccordato Infine per migliorare la descrizione del transitorio aerodinamico
e di conseguenza l’identificazione del modello di ordine ridotto (ROM) per la variazione
non stazionaria dei carichi aerodinamici conseguente al movimento strutturale, è possibile
assegnare all’i-esimo spostamento generalizzato qi (t) la seguente legge di movimento a
scalino raccordato:

 Aq [1 − cos(kq τ )]

se τ < τq
qi (τ ) = 2 (2.20)

A
q se τ ≥ τq ,

dove il tempo adimensionale τ = t V∞ /La può essere interpretato come il numero di


lunghezze aerodinamiche di riferimento La percorse nell’unità di tempo alla velocità di
volo V∞ . Ovviamente è fondamentale ricordare tale cambio di variabili per calcolare la
i-esima velocità generalizzata q̇i (t), ovvero:

dqi (τ ) dτ  Aq kq V∞ sin(kq τ )

se τ < τq
q̇i (t) = = 2 La (2.21)
dτ dt 
0 se τ ≥ τq .
20 Analisi del problema aeroelastico

1.2 1.2

1 1

0.8 0.8

q(τ)/Aq [1/s]
q(τ)/Aq [−]

0.6 0.6

0.4 ˙ 0.4

0.2 0.2

τq τq
0 0
0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10
τ [−] τ [−]

Figura 2.5: Ingresso a scalino raccordato: è rappresentato l’andamento in funzione del tempo adi-
mensionale τ dello spostamento generalizzato qi (τ ) (sinistra) e della velocità generalizzata q̇i (τ ) (destra).

La frequenza ridotta kq e la costante di tempo adimensionale τq che definiscono le carat-


teristiche del raccordo sono assegnate in modo tale da eccitare l’intervallo di frequenze
ridotte di interesse k ∈ [ 0, kmax ] e non dipendono dal particolare grado di libertà in
esame, ovvero:
π 2π
kq = e τq = . (2.22)
τq kmax
L’ampiezza massima Aq è assegnata in modo tale da fornire in ingresso al sistema aerodi-
namico un segnale sempre ben distinguibile dal rumore numerico, senza invalidare l’ipotesi
di piccole perturbazioni. Supponendo ad esempio di disporre di un modello dettagliato ad
elementi finiti (FEM) del sistema strutturale e ricavarne un modello condensato modale
mediante una matrice di trasformazione [ U ] ∈ RNF EM ×Nq tale che {us (t)} = [ U ] {q(t)},
è ragionevole richiedere che la massima norma del vettore delle velocità nodali {||u̇s ||}max
sia piccola rispetto alla velocità di volo V∞ , ovvero:

{||u̇s ||}max
= ε ≪ 1, (2.23)
V∞

dove ad esempio ε = tan(1◦ ). Svolgendo i conti è infine possibile ricavare la seguente


relazione per l’ampiezza massima Aq , che dipende dal particolare grado di libertà in esame:

4 ε La
Aq = . (2.24)
[ ||U |i || ]max kmax

L’ingresso a scalino raccordato rappresentato in Figura 2.5 consente di correggere alcuni


difetti delle strategie presentate in precedenza: ad esempio eliminando la discontinuità
nell’origine dello scalino ideale non si verificano fenomeni oscillatori di Gibbs. Inoltre esso
è realizzabile numericamente e risulta ottimale dal punto di vista computazionale, dal
momento che non è necessario utilizzare un intervallo di discretizzazione temporale molto
ridotto per riprodurre accuratamente il transitorio aerodinamico.
Il sistema aerodinamico 21

Per calcolare numericamente la i-esima colonna della matrice delle funzioni di trasferimen-
to aerodinamiche [ Ham (k)|i ] è sempre preferibile utilizzare la relazione (2.19), ricordando
il contributo al denominatore della trasformata di Fourier della deficency dell’i-esimo
spostamento generalizzato.
In Figura 2.6 è riportato lo schema a blocchi dell’algoritmo per costruire la matrice delle
funzioni di trasferimento aerodinamiche [ Ham (k) ]. Ipotizzando di disporre di un modello det-
tagliato ad elementi finiti (FEM) del sistema strutturale condensato mediante una base modale
efficiente ed opportunamente interfacciato con un modello dettagliato a volumi finiti (FV) del
sistema aerodinamico, il blocco TRIM relativo al calcolo della condizione di equilibrio trimmata
di riferimento mediante un metodo iterativo ed il blocco GAF relativo al calcolo della variazio-
ne non stazionaria del vettore delle forze aerodinamiche generalizzate conseguente all’i-esimo
spostamento strutturale possono essere ulteriormente dettagliati secondo gli schemi a blocchi
riportati rispettivamente nelle Figure 2.7 e 2.8. Infine l’assemblaggio delle singole colonne del-
la matrice delle funzioni di trasferimento aerodinamiche [ Ham (k)|i ] è realizzato nella fase di
post-processing mediante il programma NAEMO [9].
Esaminando lo schema a blocchi riportato in Figura 2.6 è possibile osservare che le singole
colonne della matrice delle funzioni di trasferimento aerodinamiche [ Ham (k)|i ] possono essere
costruite indipendentemente le une dalle altre: per minimizzare i tempi di calcolo si può dunque
pensare di implementare una strategia di calcolo distribuito su Ns calcolatori.

TRIM
1
0 1
0 1
0 1
0
0
1 0
1 0
1 0
1

i=1 i=2 i = Ns − 1 i = Ns

GAF GAF ··· GAF GAF

FFT FFT ··· FFT FFT

ASSEMBLAGGIO

[ Ham (k) ]

Figura 2.6: Schema a blocchi dell’algoritmo per costruire la matrice delle funzioni di trasferimento
aerodinamiche [ Ham (k) ].
22 Analisi del problema aeroelastico

Condizioni iniziali

Solutore aerodinamico

Forze aerodinamiche {F aa }(k)

Interfaccia aeroelastica {F as }(k) = [ I ]T {F aa }(k)

Forze aerodinamiche generalizzate {Qa }(k) = [ U ]T {F as }(k)

Solutore strutturale {q}(k) = [ K ]−1 {Qa }(k) k =k+1

Spostamenti strutturali {us }(k) = [ U ]{q}(k)

Interfaccia aeroelastica {ua }(k) = [ I ]{us }(k)

Condizioni al contorno (traspirazione/griglia deformabile)

||{Qa }(k) − {Qa }(k−1) ||


Residuo ∆ =
||{Qa }(k−1) ||

NO
∆<ǫ?

SI

{q}(k) , {Qa }(k)

Figura 2.7: Schema a blocchi dell’algoritmo per il calcolo della condizione di equilibrio trimmata di
riferimento mediante un metodo iterativo (TRIM).
Il sistema aerodinamico 23

Inizializzazione parametri Aq , kq

(k) (k)
Spostamenti e velocità generalizzati qi , q̇i

( (k)
{us }(k) = [ U ]{1i } qi
Spostamenti e velocità strutturali (k)
{u̇s }(k) = [ U ]{1i } q̇i

(
{ua }(k) = [ I ]{us }(k)
Interfaccia aeroelastica
{u̇a }(k) = [ I ]{u̇s }(k)

Condizioni al contorno (traspirazione/griglia deformabile)

Solutore aerodinamico t(k+1) = t(k) + ∆t

Forze aerodinamiche {F aa }(k)

Interfaccia aeroelastica {F as }(k) = [ I ]T {F aa }(k)

Forze aerodinamiche generalizzate {Qa }(k) = [ U ]T {F as }(k)

||{Qa }(k) − {Qa }(k−1) ||


Residuo ∆ =
||{Qa }(k−1) ||

NO
∆<ǫ?

SI

{Qa (t)}

Figura 2.8: Schema a blocchi dell’algoritmo per il calcolo della variazione non stazionaria del vettore
delle forze aerodinamiche generalizzate conseguente all’i-esimo spostamento strutturale (GAF).
24 Analisi del problema aeroelastico

2.4 Interfaccia struttura–aerodinamica


Per continuare ad utilizzare i modelli matematici ed i metodi numerici consolidati ed ormai
tipici di ciascuna disciplina, è conveniente studiare separatamente il sistema strutturale ed il
sistema aerodinamico; l’obiettivo dello schema di interfaccia è quello di realizzare praticamente
la connessione ad anello chiuso tra i due sistemi mediante un’opportuna procedura di interpola-
zione e garantire che lo scambio di informazioni avvenga in modo accurato, efficiente e flessibile.
Nell’ambito del problema aeroelastico è ad esempio necessario sapere tradurre gli spostamenti
e le velocità strutturali in variazioni delle condizioni al contorno del sistema aerodinamico ed
analogamente le forze aerodinamiche in una condizione di carico agente sul sistema strutturale.
Le complicazioni associate alla costruzione di uno schema di interfaccia sono molteplici,
principalmente dovute al fatto che in ambito industriale i modelli relativi al sistema strutturale
ed al sistema aerodinamico provengono spesso da dipartimenti differenti. Una prima difficoltà
consiste ad esempio nel fatto che i domini spaziali del problema strutturale e del problema ae-
rodinamico generalmente non coincidono: basti pensare al caso di un’ala convenzionale per cui
il dominio spaziale del problema strutturale corrisponde al solo cassone alare, mentre il bordo
d’attacco ed il bordo d’uscita non sono modellati in quanto non collaboranti; viceversa la forma
del bordo d’attacco e d’uscita deve essere riprodotta fedelmente per la soluzione del problema ae-
rodinamico. Un’ulteriore difficoltà consiste nel fatto che le strategie di discretizzazione numerica
dei domini spaziali del problema strutturale e del problema aerodinamico sono spesso differenti,
sia per la tipologia di elementi utilizzati che per il numero ed il posizionamento dei nodi: ad
esempio nel caso di un velivolo completo può essere necessario interfacciare un modello strut-
turale ad elementi finiti (FEM) di trave caratterizzato da un numero di gradi di libertà ridotto
Ns , con un modello aerodinamico a volumi finiti (FV) caratterizzato da un numero di gradi di
libertà molto elevato anche sul contorno Nab per descrivere in modo accurato la reale geometria
del corpo [10, 12].
In generale i requisiti che uno schema di interfaccia tra il sistema strutturale ed il sistema
aerodinamico deve soddisfare per essere accurato, efficiente e flessibile sono i seguenti [11]:

- possibilità di interconnettere modelli caratterizzati da differenti domini spaziali e griglie


di calcolo (per tipologia di elementi, numero e posizionamento dei nodi);

- trattamento esatto di traslazioni e rotazioni rigide;

- conservazione della quantità di moto e dell’energia scambiate;

- possibilità di controllare la regolarità della procedura di interpolazione.

Gli ultimi due punti sono particolarmente importanti: infatti l’introduzione o l’assorbimento di
energia spuria da parte dello schema di interfaccia può alterare significativamente le proprietà
di stabilità del sistema aeroelastico (basti pensare al criterio di stabilità energetico di Lyapunov
dE/dt < 0, valido per sistemi dinamici non lineari tali per cui si possa definire un’energia E);
inoltre una scarsa regolarità delle superfici aerodinamiche in seguito alla procedura di interpo-
lazione degli spostamenti strutturali può comportare un degrado dell’accuratezza dei risultati
e delle caratteristiche di convergenza del metodo numerico, associati all’insorgere di instabilità
locali del campo di moto aerodinamico non fisiche.
Il sistema aeroelastico 25

Pensando ad esempio ad un modello strutturale ad elementi finiti (FEM) e ad un modello


aerodinamico a volumi finiti (FV), lo schema di interfaccia deve dunque garantire l’equivalenza
del lavoro virtuale compiuto dal vettore delle forze aerodinamiche {F aa (t)} sul vettore degli
spostamenti interpolati sui nodi aerodinamici appartenenti al contorno del corpo {ua (t)} e del
lavoro virtuale compiuto dal vettore delle forze interpolate sui nodi strutturali {F as (t)} sul
vettore degli spostamenti strutturali {us (t)}, ovvero:

δL = δ {us }T {F as } = δ {ua }T {F aa }. (2.25)

In generale si può pensare di rappresentare lo schema di interfaccia mediante un operatore


lineare che, noto il vettore degli spostamenti strutturali, restituisce il vettore degli spostamenti
interpolati sui nodi aerodinamici appartenenti al contorno del corpo nel seguente modo:

{ua } = [ I ] {us } , (2.26)


b
dove la matrice di interfaccia [ I(x) ] ∈ RNa ×Ns può essere costruita mediante una delle stra-
tegie implementative descritte in dettaglio in §8.1, tra le quali la tecnica dei minimi quadrati
mobili o Moving Least Squares (MLS) è certamente quella che soddisfa meglio tutti i requisiti.
Sostituendo la relazione (2.26) nell’uguaglianza (2.25) è infine possibile dimostrare che:

{F as } = [ I ]T {F aa }, (2.27)

ovvero l’operatore lineare che consente di riportare i carichi aerodinamici sui nodi strutturali
b
corrisponde alla matrice di interfaccia calcolata in precedenza trasposta [ I(x) ]T ∈ RNs ×Na .

2.5 Il sistema aeroelastico


Per ricavare il sistema di equazioni integro-differenziali che governano la dinamica del sistema
aeroelastico è sufficiente esplicitare, nel sistema di equazioni differenziali ordinarie (ODE) che
governano la dinamica del sistema strutturale (2.2), il vettore delle forze aerodinamiche genera-
lizzate {Qa (t)} in funzione del vettore degli spostamenti generalizzati {q(t)} mediante il modello
di ordine ridotto (ROM) lineare del sistema aerodinamico (2.14), ovvero:
Z ∞
[ M ] {q̈} + [ C ] {q̇} + [ K ] {q} − q∞ [ ham (t − τ ) ] {q(τ )} dτ = {Qg }. (2.28)
0

Nell’ambito dell’aeroelasticità classica è conveniente riscrivere il problema direttamente nel


dominio delle frequenze, passando cosı̀ dal sistema di equazioni integro-differenziali (2.28) al
seguente sistema di equazioni algebriche:

s2 [ M ] + s [ C ] + [ K ] − q∞ [ Ham (p) ] {q} = {Qg } , (2.29)

dove {q(s)} e {Qg (s)} sono rispettivamente le trasformate di Laplace del vettore degli sposta-
menti generalizzati e delle forze aerodinamiche generalizzate conseguenti al movimento dell’aria.
Oltre al contributo delle forze aerodinamiche generalizzate associate alla raffica può essere
conveniente, ad esempio per affrontare problemi aeroservoelastici, esplicitare il contributo delle
forze aerodinamiche generalizzate conseguenti al movimento delle superfici di controllo {Qδ }.
Se i modi rigidi di comando partecipano significativamente alla deformabilità strutturale, è
concettualmente corretto che il relativo vettore dei gradi di libertà {δ} sia compreso all’interno
del vettore degli spostamenti generalizzati {q} (comandi liberi).
replacemen
26 Analisi del problema aeroelastico

{F as } {us } , {u̇s }
FEM
E
Modi propri
Base ibrida

[ I ]T [I ]
{v ga }

{F aa } {ua } , {u̇a }
A
Potenziale
Eulero
Navier-Stokes

Figura 2.9: Schematizzazione del sistema aeroelastico, realizzando praticamente la connessione ad anello
chiuso tra il sistema strutturale ed il sistema aerodinamico rappresentati rispettivamente dai blocchi E e A,
opportunamente interfacciati mediante la procedura di interpolazione rappresentata dalla matrice [ I ].

Viceversa, nel caso in cui il movimento delle superfici di controllo sia sufficientemente lento
rispetto al tempo caratteristico dei modi deformabili del sistema strutturale, è possibile residua-
lizzarne la dinamica trascurando ad esempio il contributo delle forze d’inerzia (comandi bloccati);
più in particolare conviene partizionare il sistema di equazioni algebriche (2.29) nel seguente
modo:
" # " # " #
[ Mqq ] [ M qδ ] [ C qq ] [ 0 ] [ Kqq ] [ 0 ]
s2 +s +
[ Mδq ] [ Mδδ ] [0] [0] [0] [0]
" #!( ) ( ) (2.30)
[ Ham qq (p) ] [ Ham qδ (p) ] {q} {Qg }
−q∞ = ,
[ Ham δq (p) ] [ Ham δδ (p) ] {δ} {H δ }

dove {H δ (s)} è la trasformata di Laplace del vettore dei momenti di cerniera generalizzati asso-
ciati alle superfici di controllo. Trascurando il contributo delle forze d’inerzia [ Mqδ ]{δ̈(t)} ≪ 1,
approssimazione certamente valida per superfici di controllo bilanciate staticamente, è possibile
riscrivere solo le prime Nq equazioni del problema (2.30) come:

s2 [ Mqq ] + s [ Cqq ] + [ Kqq ] − q∞ [ Ham qq (p) ] {q} = {Qg } + q∞ [ Ham qδ (p) ] {δ}
(2.31)
= {Qg } + {Qδ }.

Le ultime Nδ equazioni del sistema (2.30) possono essere quindi trascurate per la soluzione del
problema aeroelastico, ma sono fondamentali nella fase di dimensionamento dei servocomandi
per calcolare il vettore dei momenti di cerniera generalizzati {H δ (t)} e verificare l’attuabilità
della legge di movimento delle superfici di controllo {δ(t)}.
Analogamente, nel caso in cui il tempo caratteristico del sistema aerodinamico Ta = La /V∞
sia sufficientemente piccolo rispetto al tempo caratteristico della dinamica deformabile del
sistema strutturale Ts = 2π/ω, si può pensare di introdurre un’approssimazione quasi-stazio-
naria del sistema aerodinamico mediante una residualizzazione dinamica di ordine opportuno.
Flutter 27

Supponendo che la condizione di volo sia fissata (elimando cosı̀ la dipendenza funzionale dal
numero di Mach M e dal numero di Reynolds Re) e che la matrice delle funzioni di trasferi-
mento aerodinamiche [ Ham (p) ] sia analitica nell’intorno dell’origine p = 0 (ipotesi non sempre
verificata a rigore ma valida ingegneristicamente), è possibile sviluppare la relazione (2.13)
in serie di McLaurin ad esempio fino al secondo ordine nel seguente modo:
 
p2
{Qa (s)} = q∞ [ Ham (p) ]{q(s)} ≃ q∞ [ Ham (0) ]+ p[ Ham

(0) ]+ [ Ham′′
(0) ] {q(s)}
2
  (2.32)
La L2
≃ q∞ [ Ka ] +s [ Ca ] + s2 2a [ Ma ] {q(s)},
V∞ V∞

dove [ Ma ], [ Ca ] e [ Ka ] ∈ CNs ×Ns sono rispettivamente le matrici di massa, smorzamento e


rigidezza aerodinamiche. L’ipotesi di analiticità della matrice delle funzioni di trasferimento ae-
rodinamiche [ Ham (p) ] consente di calcolarne le derivate lungo una direzione qualsiasi e dunque
anche lungo l’asse immaginario Im del campo complesso C: più in particolare applicando uno
schema approssimato a differenze finite centrate è possibile calcolare tutte le derivate fino al
secondo ordine conoscendo esclusivamente [ Ham (0) ] ed [ Ham (k) ] con k ≪ 1.
Passando dal dominio delle frequenze al dominio del tempo, è inoltre possibile osservare che
l’approssimazione quasi-stazionaria semplifica notevolmente il problema aeroelastico: nascon-
dendo infatti il contributo del sistema aerodinamico, è possibile riscrivere il sistema di equazioni
integro-differenziali (2.28) come il seguente sistema di equazioni differenziali ordinarie (ODE),
evidentemente più facili da risolvere numericamente:
     
L2a La
[ M ]−q∞ 2
[ Ma ] {q̈}+ [ C ]−q∞ [ Ca ] {q̇}+ [ K ]−q∞ [ Ka ] {q} = {Qg }. (2.33)
V∞ V∞

2.6 Flutter
Lo studio del problema di flutter, che dal punto di vista fisico corrisponde all’insorgere di
oscillazioni autoeccitate divergenti dalle conseguenze spesso catastrofiche, dal punto di vista
matematico corrisponde all’analisi delle proprietà di stabilità in piccolo del sistema aeroela-
stico tempo-invariante linearizzato per piccoli spostamenti nell’intorno di una condizione di
equilibrio. Infatti gli autovalori del sistema strutturale, a causa dell’interazione ad anello chiuso
con il sistema aerodinamico, possono spostarsi nel semipiano destro del campo complesso C
a parte reale positiva Re > 0. Viceversa sperimentalmente è possibile osservare che gli au-
tovalori del sistema aerodinamico sono sempre stabili. In tale contesto il flutter corrisponde
alla condizione limite di stabilità dinamica per cui alcuni autovalori del sistema aeroelastico
attraversano l’asse immaginario Im del campo complesso C, ovvero alcuni modi del sistema
aeroelastico sono caratterizzati da uno smorzamento nullo.
L’ipotesi di linearità (eventualmente locale) del sistema aeroelastico è fondamentale per con-
tenere i tempi di calcolo e comporta la necessità di costruire un modello di ordine ridotto (ROM)
lineare del sistema aerodinamico, rappresentato dalla matrice delle funzioni di trasferimento
aerodinamiche [ Ham (p, M∞ , Re) ]. Come descritto in §2.3.3, tale approssimazione è giustifica-
bile anche in regime di moto transonico e nell’ambito dell’aeroelasticità computazionale (CA).
28 Analisi del problema aeroelastico

ωθ V∞ [m/s]
Modo torsionale 0 VF
0
ω [rad/s]

Modo torsionale

g [−]
ωh Modo flessionale
Modo flessionale

0
0 VF
V∞ [m/s]

Figura 2.10: Diagrammi qualitativi V∞ − ω (sinistra) e V∞ − g (destra) per un semplice sistema


aeroelastico a due gradi di libertà (flessione h e torsione θ).

D’altronde il sistema aeroelastico è in realtà non lineare e di conseguenza ciascuna con-


dizione di equilibrio dovrebbe essere analizzata singolarmente per determinare le proprietà di
stabilità; questo comporterebbe una dilatazione dei tempi di calcolo inaccettabile specialmente
nelle fasi di progetto e verifica, ovvero in situazioni in cui è richiesta la valutazione di un numero
di configurazioni elevato. Di conseguenza le informazioni relative alla matrice delle funzioni di
trasferimento aerodinamiche [ Ham (p, M∞ , Re) ], calcolata in corrispondenza di una data con-
dizione di equilibrio, sono estrapolate anche a configurazioni vicine, che differiscono per piccole
modifiche della corrente o delle proprietà elastiche o inerziali del sistema strutturale.
Accanto all’analisi di stabilità linearizzata, deve essere sempre possibile svolgere un espe-
rimento numerico del tutto analogo ad una prova sperimentale in galleria del vento o in volo,
risolvendo in modo accoppiato le equazioni di governo del sistema strutturale e del sistema
aerodinamico non linearizzato. Tale strategia consente ad esempio di cogliere il comportamen-
to post-flutter del sistema aeroelastico ed è particolarmente adatto per sottoporre a verifica le
configurazioni più critiche [11].

2.6.1 Aeroelasticità classica


Nell’ambito dell’aeroelasticità classica, ponendosi direttamente in corrispondenza dell’asse im-
maginario Im del campo complesso C per cui s = iω, è necessario risolvere il seguente sistema
di equazioni algebriche omogeneo:

−ω 2 [ M ] + iω [ C ] + [ K ] − q∞ [ Ham (k, M∞ , Re) ] {q} = 0, (2.34)

che ammette soluzioni non banali se e solo se la matrice dei coefficienti [ A(ω, V∞ ) ] è singolare.
Imponendo l’annullamento della parte reale e della parte immaginaria del determinante della
matrice dei coefficienti [ A(ω, V∞ ) ] è possibile determinare la frequenza di flutter ωF e la velocità
di flutter VF ; successivamente è possibile determinare anche il modo di flutter {q(ωF , VF )},
fondamentale per comprendere quali modi del sistema strutturale vi partecipano maggiormente
e sono dunque critici per la stabilità del sistema aeroelastico.
Flutter 29

Più in generale conviene analizzare il comportamento degli autovalori del sistema aeroelastico
s = σ + iω al variare di un parametro che definisce la condizione di volo di riferimento, ad
esempio la velocità V∞ . È allora necessario risolvere il seguente sistema di equazioni algebriche
omogeneo: 
s2 [ M ] + s [ C ] + [ K ] − q∞ [ Ham (p, M∞ , Re) ] {q} = 0, (2.35)
che ammette soluzioni non banali se e solo se la matrice dei coefficienti [ A(s, V∞ ) ] è singolare
ed è chiuso nelle incognite σ ed ω a patto di assegnare a priori la velocità V∞ . Mediante
un’opportuna procedura di inseguimento, che può essere facilmente inizializzata alla velocità
V∞ = 0 in corrispondenza della quale le frequenze, lo smorzamento ed i modi del sistema
aeroelastico coincidono con quelli del solo sistema strutturale, è possibile costruire il luogo
delle radici del sistema aeroelastico in funzione del parametro V∞ . Convenzionalmente tali
informazioni sono riassunte nei diagrammi V∞ − ω e V∞ − g qualitativamente √ rappresentati in
Figura 2.10, dove il fattore di smorzamento g è definito come: g = 2ξ = 2σ/ ω 2 + σ 2 .
La principale difficoltà dello studio del problema di flutter consiste nel fatto che, a meno
di ricorrere ad un’approssimazione quasi-stazionaria del sistema aerodinamico, la matrice delle
funzioni di trasferimento aerodinamiche [ Ham (p, M∞ , Re) ] è nota numericamente solamente
lungo l’asse immaginario Im del campo complesso C per cui p = ik e non come funzione analitica
della frequenza ridotta complessa p; se anche tale funzione analitica fosse disponibile in forma
esplicita, essa non sarebbe polinomiale. Di conseguenza la relazione (2.35) non rappresenta un
problema agli autovalori classico, ma è necessario ricorrere a metodi numerici ad hoc [5].

Metodo PK L’ipotesi fondamentale alla base di tale metodo è che la matrice delle funzioni
di trasferimento aerodinamiche [Ham (p)], calcolata per modi puramente armonici per cui
p = ik, fornisca una buona approssimazione anche per modi debolmente smorzati per cui
p = ε + ik con ε ≪ 1(approssimazione certamente valida in prossimità della velocità di
flutter VF ). Introducendo l’ulteriore ipotesi di analiticità, analogamente all’approssima-
zione quasi-stazionaria del sistema aerodinamico, è possibile sviluppare la matrice delle
funzioni di trasferimento aerodinamiche [ Ham (p) ] in serie di Taylor attorno a p0 = ik0 .
Troncando ad esempio lo sviluppo in serie di Taylor al secondo ordine (per non distrug-
gere la simmetria con il problema strutturale), è possibile ricavare la seguente relazione,
solo formalmente identica all’approssimazione quasi-stazionaria del sistema aerodinamico:
′ 1 ′′
[ Ham (p) ] ≃ [ Ham (ik0 ) ] + [ Ham (ik0 ) ](p − ik0 ) + [ Ham (ik0 ) ](p − ik0 )2
2
(2.36)
La L2
≃ [ Ka ] + s [ Ca ] + s2 a2 [ Ma ].
V∞ V∞

Tale metodo consente dunque di ricondurre il problema di flutter (2.35) ad un problema


agli autovalori classico; in realtà, affinché i risultati numerici siano affidabili, è comunque
necessario implementare una procedura iterativa per risolvere il problema di allineamento,
ricalcolando lo sviluppo in serie di Taylor (2.36) fino a che il baricentro degli autovalori
del sistema aeroelastico non sia sufficientemente vicino alla frequenza ridotta k0 .
Inoltre la necessità di memorizzare matrici appartenenti al campo complesso C, come le
matrici di massa, smorzamento e rigidezza aerodinamiche [ Ma ], [ Ca ] e [ Ka ] ∈ CNs ×Ns ,
può comportare una penalizzazione dal punto di vista dell’occupazione di memoria e dei
tempi di calcolo: per aggirare tale problema è possibile derivare una variante semplificata
chiamata Metodo inglese.
30 Analisi del problema aeroelastico

Metodo non lineare Il problema di flutter (2.35) può essere interpretato come un sistema
di Ns equazioni non lineari omogenee negli Ns modi {q} ed 1 autovalore s incogniti;
dal momento che i modi sono definiti a meno di una costante moltiplicativa, è possibile
aggiungere 1 ulteriore equazione di normalizzazione (opportunamente pesata mediante la
matrice [ W ] ∈ RNs ×Ns ) che consente di chiudere il problema:


 [ A(s, V∞ ) ]{q} = 0
1 . (2.37)

 {q}T [ W ]{q} = 1
2

Il sistema di equazioni non lineari cosı̀ ottenuto può essere risolto mediante il metodo nu-
merico di Newton-Raphson, eventualmente nella versione modificata per contenere i tempi
di calcolo. Linearizzando il problema (2.37) nell’intorno di una soluzione di riferimento
{q0 } ed s0 e svolgendo i conti, è possibile scrivere in forma compatta:
    
∂[ A(s, V∞ ) ]   

[ A(s0 , V∞ ) ] 
{q0 }  {∆q}   − [ A(s0 , V∞ ) ]{q0 } 

∂s s = (2.38)
 0 
{q0 }T [ W ] 0

 ∆s     1 − 1 {q0 }T [ W ]{q0 } 

2

Tale metodo consente di determinare contemporaneamente i modi {q} e l’autovalore s


del sistema aeroelastico. Mediante un’opportuna procedura di inseguimento, inizializzata
alla velocità V∞ = 0 in corrispondenza della quale sono noti i modi {q0 } e l’autovalore s0
del solo sistema strutturale, è possibile costruire i diagrammi V∞ − ω e V∞ − g in modo
automatico, senza particolari problemi in prossimità di eventuali incroci tra le varie curve
(contrariamente ai metodi presentati in precedenza).
Infine è possibile derivare una variante più raffinata chiamata Metodo di continuazione,
che consente di determinare i modi {q} e l’autovalore s del sistema aeroelastico insieme
alle relative pendenze o sensitività d{q}/dV∞ e ds/dV∞ .

2.6.2 Aeroelasticità moderna


Per affrontare problemi aeroservoelastici, quali la progettazione di sistemi di controllo attivo
per la soppressione del flutter o l’alleviazione dei carichi da raffica, è conveniente disporre di
una rappresentazione agli stati nel dominio del tempo del sistema aerodinamico e potere quindi
utilizzare le tecniche moderne di analisi e di progetto consolidate nell’ambito della teoria dei
sistemi. Si parla allora di aeroelasticità moderna, per mettere in evidenza tale recente passaggio
dal dominio delle frequenze, caratteristico dell’aeroelasticità classica, al dominio del tempo [11].
Ad esempio è immediato ricondurre il problema di flutter ad un problema agli autovalori classico,
risolvibile in SciLab mediante il comando eig, ed analogamente affrontare i problemi di risposta
direttamente nel dominio del tempo, risolvibili sempre in SciLab mediante il comando csim.
Considerando per semplicità il solo contributo dei carichi aerodinamici conseguenti al mo-
vimento strutturale, è possibile costruire la seguente rappresentazione agli stati nel dominio del
tempo del sistema aerodinamico:

 {ẋa } = [ Aa ]{xa } + [ Ba ]{q}
(2.39)
 {Qa } = [ C ]{x } + [ D ]{q}
a a a
Flutter 31

dove [ Aa ], [ Ba ], [ Ca ] e [ Da ] ∈ RNs ×Ns sono le matrici dinamiche (quadrate in questo caso


particolare avendo provvisoriamente assunto in assenza di ulteriori informazioni che l’ordine
del sistema aerodinamico Na sia pari al numero di gradi di libertà del sistema strutturale Ns )
ed {xa (t)} è il vettore di stato. Il sistema dinamico (2.39) non è strettamente proprio a seguito
della residualizzazione della dinamica veloce del sistema aerodinamico; per aumentare l’accu-
ratezza della rappresentazione agli stati è possibile estendere la residualizzazione dinamica al
massimo fino al secondo ordine (per non distruggere la simmetria con il problema strutturale),
accettando che il sistema dinamico (2.39) diventi improprio [5]. La relazione di uscita è allora
modificata nel seguente modo:

La L2
{Qa } = [ Ca ]{xa } + [ Da 0 ]{q} + [ Da 1 ]{q̇} + 2a [ Da 2 ]{q̈}. (2.40)
V∞ V∞

Per determinare le matrici dinamiche incognite [ Aa ], [ Ba ], [ Ca ], [ Da 0 ], [ Da 1 ], [ Da 2 ]


è necessario risolvere un problema di identificazione del modello, con l’obiettivo di minimizzare
un’opportuna norma del residuo [ ε ] tra la matrice delle funzioni di trasferimento del sistema
dinamico (2.40) e la matrice delle funzioni di trasferimento aerodinamiche [ Ham (p, M∞ , Re) ]
costruita numericamente o sperimentalmente, ovvero:

[ ε ] = [ Ca ] ( [ I ]p − [ Aa ] )−1 [ Ba ] + [ Da 0 ] + [ Da 1 ]p + [ Da 2 ]p2 − [ Ham (p, M∞ , Re) ]. (2.41)

Ricordando che sperimentalmente il sistema aerodinamico è asintoticamente stabile e caratteriz-


zato da risposte temporali a fronte di ingressi standard generalmente non oscillatorie, è possibile
semplificare il problema (2.41) assegnando a priori una struttura diagonale con autovalori stabili
e puramente reali s ∈ R− alla matrice [ Aa ]. Tale problema di identificazione del modello è risol-
to numericamente nella fase di post-processing mediante il programma MASSA [31], che richiede
di definire in ingresso l’ordine del sistema aerodinamico Na (scegliendo il migliore compromes-
so tra l’accuratezza dei risultati ed il costo computazionale), il metodo di parametrizzazione
delle matrici (scegliendo tra il metodo di Rogers ed il metodo di Padé) ed infine l’algoritmo di
ottimizzazione (scegliendo tra un algoritmo di tipo gradiente ed un algoritmo genetico).
32 Analisi del problema aeroelastico
Capitolo 3

Scelta del solutore strutturale

In questo Capitolo i modelli matematici ed i metodi numerici comunemente utilizzati per la so-
luzione del problema strutturale sono presentati in §3.1, soffermandosi in particolare sul metodo
degli elementi finiti (FEM) e sulla tecnica di condensazione modale.
Prendendo come riferimento il solutore strutturale commerciale MSC.Nastran che costituisce
lo strumento di analisi forse più utilizzato nell’ambito dell’industria aeronautica, in §3.2 sono
definiti i requisiti che un solutore strutturale alternativo liberamente disponibile in rete deve
soddisfare. In base a tali considerazioni è possibile scegliere il solutore strutturale Code Aster,
le cui caratteristiche fondamentali sono presentate in §3.3 insieme ad un esempio di utilizzo ed
un esempio di programmazione in linguaggio Python.
Per gestire griglie di calcolo 1D, 2D, 3D di complessità arbitraria ed eventualmente ibride,
visualizzare ed elaborare i risultati numerici è fondamentale disporre di un pre/post-processore
flessibile quale ad esempio il programma Salomé gratuitamente disponibile in rete, le cui carat-
teristiche fondamentali sono presentate in §3.4.

3.1 Definizione del problema strutturale


Le equazioni che governano la dinamica di un sistema strutturale possono essere ricavate a
partire dal Principio dei Lavori Virtuali (PLV). Esso afferma che condizione necessaria e suffi-
ciente per l’equilibrio statico o dinamico del sistema strutturale è che il lavoro virtuale compiuto
dal campo delle forze interne ed esterne, superficiali e di volume (comprese le forze d’inerzia)
sul corrispondente campo degli spostamenti virtuali, ovvero infinitesimi, arbitrari, regolari e
congruenti (compatibili con i vincoli assegnati a tempo fissato) sia nullo, ovvero:
I Z Z Z
T
δs f dS + T
δs F dV − T
δs ρs̈ dV − δ {∈}T {Σ} dV = 0, (3.1)
S V V V

dove V ⊆ RNd è il dominio spaziale del problema delimitato dal contorno S = ∂V ⊆ RNd −1 .
Il campo delle forze esterne di superficie f (x, t), di volume F (x, t) e di inerzia ρ(x, t)s̈(x, t),
dove ρ(x, t) è la densità del materiale, lavorano per l’incremento virtuale del campo di sposta-
menti s(x, t); analogamente il vettore {Σ(x, t)}, che raccoglie le sei componenti indipendenti
del tensore di sforzo simmetrico di Piola-Kirchhoff II, è energeticamente coniugato con l’incre-
mento virtuale del vettore {∈ (x, t)}, che raccoglie le sei componenti indipendenti del tensore
di deformazione simmetrico di Green-Lagrange.

33
34 Scelta del solutore strutturale

Il vettore di sforzo {Σ(x, t)} può essere collegato al vettore di deformazione {∈ (x, t)}
mediante una legge costitutiva visco-elastica lineare, ovvero interpretando il materiale come
un sistema micromeccanico che restituisce in uscita il vettore di sforzo {Σ(x, t)} calcolato
come l’integrale di convoluzione della matrice delle risposte impulsive del materiale [ d(t) ]
con il vettore di deformazione {∈ (x, t)} in ingresso:
Z ∞
{Σ(x, t)} = [ d(t − τ ) ] {∈ (x, τ )} dτ. (3.2)
0

La scelta di misurare le deformazioni strutturali mediante il tensore di Green-Lagrange garan-


tisce che tale legge costitutiva sia oggettiva, ovvero indipendente da trasformazioni rigide del
sistema di riferimento. Sperimentalmente è possibile osservare che la risposta del materiale è
molto più rapida della variazione temporale delle deformazioni dinamiche a bassa frequenza di
interesse della struttura; di conseguenza è ragionevole residualizzare dinamicamente la legge co-
stitutiva visco-elastica lineare (3.2) troncando lo sviluppo al primo ordine, ovvero introducendo
la seguente approssimazione quasi-stazionaria:
˙
{Σ(x, t)} = [ D0 ] {∈ (x, t)} + [ D1 ] {∈(x, t)} . (3.3)
Sostituendo la relazione (3.3) nella (3.1) e ricordando che il vettore di deformazione {∈ (x, t)}
può essere espresso in funzione del campo degli spostamenti s(x, t) mediante un opportuno
operatore di derivazione [ D ], è possibile riscrivere il Principio dei Lavori Virtuali (PLV) come
il seguente problema variazionale nel campo di spostamenti incognito s(x, t):
Z Z Z
T
T
δs ρs̈ dV + T
δs [ D ] [ D1 ] [ D ]ṡ dV + δsT [ D ]T [ D0 ] [ D ]s dV
V V V
I Z (3.4)
T T
= δs f dS + δs F dV.
S V

La scelta di una legge costitutiva del materiale visco-elastica comporta dunque la nascita di
un termine di smorzamento viscoso lineare. Tuttavia un modello di questo tipo non consen-
te di rappresentare fedelmente la reale dinamica dello smorzamento strutturale dominata da
fenomeni locali e non lineari, come ad esempio la dissipazione coulombiana conseguente al
micro-scorrimento relativo fra le parti delle giunzioni: di conseguenza generalmente si preferisce
tarare il termine di smorzamento sulla base dei risultati delle prove sperimentali in modo tale
da ottenere una dissipazione energeticamente equivalente alla dissipazione media reale.
Per risolvere numericamente il problema strutturale (3.4) è possibile applicare un metodo
alla Ritz, che consiste nell’approssimare il campo di spostamenti s(x, t) mediante la tecnica di
separazione delle variabili come il prodotto di una base completa di funzioni di forma [ N (x) ],
dipendenti dalla sola variabile spaziale x e scelte a priori in modo tale da rispettare le con-
dizioni al contorno essenziali, e di un vettore di coordinate libere {q(t)} dipendenti dalla sola
variabile temporale t ed incognite, ovvero: s(x, t) ≃ [ N (x) ] {q(t)}. Viceversa applicando la
tecnica di integrazione per parti è possibile dimostrare che le condizioni al contorno naturali
sono automaticamente soddisfatte scrivendo il problema strutturale (3.4) in forma variazionale.
Ad esempio il metodo degli elementi finiti (FEM) può essere inquadrato nell’ambito dei
metodo alla Ritz e consente di costruire un modello strutturale raffinato ed adatto allo studio
anche della dinamica strutturale locale. Successivamente per disporre di un modello efficiente
(fondamentale per la progettazione di un sistema di controllo attivo) è conveniente applicare
la tecnica di condensazione modale, calcolando numericamente i modi propri e le frequenze
naturali del sistema strutturale relativi alla banda di frequenze di interesse [15, 27].
Definizione del problema strutturale 35

3.1.1 Discretizzazione ad elementi finiti


Il metodo degli elementi finiti (FEM) per risolvere numericamente il problema strutturale (3.4)
consiste nell’approssimare il campo di spostamenti s(x, t) mediante la tecnica di separazione di
variabili nel seguente modo:
s(x, t) ≃ [ N (x) ] {us (t)} , (3.5)

scegliendo come termini dello sviluppo completo [ N (x) ] le funzioni di base polinomiali lagran-
giane a supporto compatto di ordine opportuno e come coordinate libere incognite gli sposta-
menti strutturali valutati in corrispondenza dei nodi della griglia di calcolo {us (t)}.
Sostituendo la relazione (3.5) nella (3.4) e svolgendo i conti, conviene innanzitutto ricordare
che i vettori degli spostamenti, velocità ed accelerazioni nodali {us (t)}, {u̇s (t)} ed {üs (t)}
sono indipendenti dalla variabile spaziale x e possono essere dunque portati fuori dal segno di
integrale; infine, sfruttando l’arbitrarietà del vettore degli spostamenti nodali virtuali δ {us }T ,
è possibile ricavare il seguente sistema di equazioni differenziali ordinarie (ODE):

[ MF EM ] {üs } + [ CF EM ] {u̇s } + [ KF EM ] {us } = {F F EM } , (3.6)

dove [ MF EM ], [ CF EM ] e [ KF EM ] ∈ RNF EM ×NF EM sono rispettivamente le matrici (sparse)


di massa, smorzamento e rigidezza strutturali e {F F EM (t)} è il corrispondente vettore delle
risultanti delle forze esterne superficiali e di volume sui nodi della griglia di calcolo, ovvero:
Z
[ MF EM ] = [ N ]T ρ [ N ] dV,
V
Z
[ CF EM ] = [ N ]T [ D ]T [ D1 ] [ D ] [ N ] dV,
V
Z (3.7)
T T
[ KF EM ] = [ N ] [ D ] [ D0 ] [ D ] [ N ] dV,
V
I Z
T
{F F EM } = [ N ] f dS + [ N ]T F dV.
S V

Supponendo che la soluzione esatta sia sufficientemente regolare, è possibile dimostrare che
la soluzione numerica calcolata mediante il metodo degli elementi finiti (FEM) è caraterrizzata
da un ordine di accuratezza pari a O(hp ), dove h è la dimensione caratteristica degli elementi
di griglia e p è l’ordine delle funzioni di base polinomiali lagrangiane a supporto compatto [32].
Per garantire una buona accuratezza della soluzione numerica è in generale necessario utilizzare
un numero di gradi di libertà strutturali NF EM molto elevato: di conseguenza è fondamentale
avere gli strumenti necessari per gestire in modo efficiente matrici sparse di grandi dimensioni.

3.1.2 Condensazione modale


A partire dal modello dettagliato ad elementi finiti del sistema strutturale (3.6), per disporre
di un modello efficiente (fondamentale per la progettazione di un sistema di controllo attivo)
è possibile applicare un’opportuna tecnica di riduzione dell’ordine o condensazione, ovvero ricer-
care delle funzioni di forma globali che consentano di rappresentare correttamente la soluzione
anche con pochi termini dello sviluppo completo. Ad esempio la base dei modi propri del sistema
strutturale soddisfa tali requisiti.
36 Scelta del solutore strutturale

Trascurando per semplicità il contributo (piccolo) dello smorzamento strutturale, i modi


propri del sistema strutturale possono essere calcolati risolvendo il problema strutturale (3.6)
reso omogeneo e con condizioni al contorno omogenee e corrispondono agli autovettori {us }
associati agli autovalori ω02 , soluzione del seguente problema generalizzato agli autovalori:

−ω02 [ MF EM ] + [ KF EM ] {us } = 0. (3.8)

Raccogliendo nella matrice di trasformazione [ U ] ∈ RNF EM ×Nq il sottospazio dei primi Nq


modi propri del sistema strutturale relativi alla banda delle frequenze di interesse (accettando
di recuperare staticamente il contributo della dinamica ad alta frequenza troncata, ad esempio
mediante il metodo dei modi di accelerazione), è possibile riscrivere il vettore degli spostamenti
nodali incogniti {us (t)} in funzione del vettore degli spostamenti generalizzati modali {q(t)}
nel seguente modo:
{us (t)} ≃ [ U ] {q(t)} . (3.9)
Sostituendo la relazione (3.9) nella (3.6) e premoltiplicandone ciascun termine per la matrice
trasposta dei modi propri del sistema strutturale [ U ]T è possibile ricavare il seguente sistema
di equazioni differenziali ordinarie (ODE):

[r m r] {q̈} + [r c r] {q̇} + [r k r] {q} = {Q} , (3.10)

dove [r m r], [r c r] e [r k r] ∈ RNq ×Nq sono rispettivamente le matrici (diagonali) di massa,


smorzamento e rigidezza generalizzate e {Q(t)} è il corrispondente vettore delle forze esterne
generalizzate, ovvero:
[r m r] = [ U ]T [ MF EM ] [ U ] ,

[r c r] = [ U ]T [ CF EM ] [ U ] ,
(3.11)
[r k r] = [ U ]T [ KF EM ] [ U ] ,

{Q} = [ U ]T {QF EM } .
A rigore, grazie alla proprietà di ortogonalità dei modi propri, solo le matrici di massa e rigidez-
za generalizzate [r m r] e [r k r] sono di struttura diagonale (scegliendo inoltre di normalizzare a
massa generalizzata unitaria i modi propri del sistema strutturale, noti a meno di una costante
moltiplicativa, è possibile scrivere: [r m r] = [r 1 r] e [r k r] = [r ω02 r]). Tuttavia sperimental-
mente è possibile osservare che la matrice di smorzamento generalizzata [r c r] ha una struttura
tendenzialmente diagonale; tale considerazione giustifica in parte la scelta molto comune di mo-
dellare il contributo dello smorzamento strutturale come proporzionale alle matrici di massa e
di rigidezza, ovvero a partire dal modello dettagliato ad elementi finiti:

[ CF EM ] = α[ MF EM ] + β[ KF EM ], (3.12)

dove i coefficienti α e β sono tarati sulla base dei risultati delle prove sperimentali in modo
tale da ottenere una dissipazione energeticamente equivalente alla dissipazione media reale.
Supponendo che il campo delle forze esterne superficiali e di volume agenti sul sistema
sia sufficientemente regolare nello spazio, è possibile dimostrare che i modi propri del sistema
strutturale costituiscono una base molto efficiente. Viceversa, in presenza di carichi concentrati,
l’ordine di convergenza della soluzione numerica degrada rapidamente e conviene ibridizzare
la base modale, aggiungendovi opportune deformate statiche.
Requisiti del solutore strutturale 37

3.2 Requisiti del solutore strutturale


Per risolvere numericamente i problemi strutturali di interesse aeronautico, in ambito industriale
lo strumento di analisi forse più utilizzato è attualmente costituito dal solutore commerciale
MSC.Nastran [45] prodotto dall’azienda statunitense MSC, il cui sviluppo è iniziato nel 1968
in risposta ad una commessa della NASA per un software completo per l’analisi strutturale e
continua fino ad oggi con la recente versione MSC.Nastran v.68.
L’obiettivo è trovare un solutore strutturale alternativo con capacità e prestazioni confron-
tabili e libero, ovvero gratuitamente disponibile in rete insieme al codice sorgente. Tale solutore
strutturale deve soddisfare i seguenti requisiti:

- capacità di gestire in modo flessibile griglie di calcolo 1D, 2D e 3D, di complessità arbi-
traria ed eventualmente ibride, create nella fase di pre-processing mediante un opportuno
generatore di griglia e memorizzate secondo un formato standard;

- disponibilità di una libreria il più possibile ampia di elementi finiti (FEM) di ordine
opportuno ad esempio di trave, di piastra o membrana e di volume con cui discretizzare
numericamente il sistema strutturale;

- capacità di modellare materiali isotropi, ortotropi ed anisotropi (ad esempio materiali


compositi) caratterizzati da una legge costitutiva elastico lineare oppure elastico, elasto-
plastico, visco-elastico, visco-elasto-plastico non lineare;

- disponibilità di una libreria il più possibile ampia di condizioni di carico e di vincolo, ad


esempio forze nodali o distribuite e spostamenti nodali assegnati;

- capacità di costruire, a partire dal modello dettagliato ad elementi finiti (FEM) del sistema
strutturale, un modello condensato modale eventualmente ibridizzato mediante opportune
basi statiche;

- capacità di risolvere problemi di risposta statica e dinamica lineari e non lineari di inte-
resse industriale, sia nel dominio del tempo che nel dominio delle frequenze, e recuperare
successivamente le sollecitazioni strutturali;

- capacità di gestire in modo flessibile la memorizzazione dei risultati numerici secondo un


formato standard nella fase di post-processing;

- possibilità di aggiungere nuovi moduli e di interfacciare in modo flessibile il solutore


strutturale con altri programmi esterni;

- eventualmente disponibilità di moduli per riprodurre fenomeni di contatto, attrito, danno


e resistenza a fatica e per risolvere problemi di aeroelasticità statica e dinamica in ambito
linearizzato.

Il solutore strutturale Code Aster [47] soddisfa al meglio i requisiti presentati; contrariamente
al solutore strutturale MSC.Nastran non sono tuttavia disponibili moduli per risolvere numeri-
camente problemi di aeroelasticità statica e dinamica in ambito linearizzato, ma solo un’inter-
faccia con il solutore fluidodinamico Code Saturne per la soluzione di problemi di interazione
fluido-struttura (FSI) all’interno di condotti.
38 Scelta del solutore strutturale

3.3 Solutore strutturale Code Aster


Il solutore strutturale Code Aster è sviluppato dall’azienda francese EDF a partire dal 1989 con
l’obiettivo di possedere un software per la simulazione numerica mediante il metodo degli ele-
menti finiti (FEM) di problemi strutturali di interesse industriale; nel 2008 è stata rilasciata
la versione corrente Code Aster v.9.2 [47], ampiamente utilizzata in ambito scientifico ed indu-
striale. Dal 2001 il solutore strutturale Code Aster è liberamente disponibile in rete insieme
al codice sorgente all’indirizzo web www.code-aster.org secondo la licenza GNU General Public
Licence (GPL). Inoltre è accessibile un’ampia e dettagliata documentazione (seppure solo in
lingua francese), che comprende manuali teorici, guide di utilizzo, tutorials e problemi test di
verifica. L’azienda EDF ha scelto di distribuire liberamente il programma Code Aster per le
seguenti ragioni:

- creare una base di utenti il più possibile ampia per velocizzare il processo di individuazione
e correzione degli errori e di ottimizzazione dell’efficienza di calcolo e contemporaneamente
per arricchire il database di problemi test di verifica;

- aumentare il livello di competenza grazie ad un’estesa collaborazione in ambito accade-


mico con università, laboratori e centri di ricerca ed in ambito industriale con aziende
specializzate;

- favorire lo sviluppo cooperativo del programma, condividendo l’esperienza e le nuove


funzionalità eventualmente implementate dai singoli utilizzatori nel maggiore numero
possibile di campi applicativi.

Il solutore strutturale Code Aster è principalmente scritto nei linguaggi Fortran 77 e Python;
inoltre alcune routines per la gestione del calcolatore (processore, memoria e protocolli di
comunicazione) sono scritte in linguaggio C ed infine alcune routines di basso livello per cui
è richiesta un’efficienza computazionale particolarmente elevata sono scritte direttamente in
linguaggio CAL (CRAY Assembly Language).
L’architettura generale del solutore strutturale Code Aster si basa sul requisito fondamentale
che il programma sia costituito da un insieme di controlli, ovvero funzionalità e comandi, indi-
pendenti che devono potere scambiare tra loro concetti, ovvero oggetti e dati, in modo flessibile
e che l’utente può connettere a piacere. Per soddisfare tale requisito è dunque fondamentale
disporre dei seguenti elementi costitutivi:

Catalogue (catalogo) ovvero un modulo scritto in linguaggio Python in cui sono elencate le
definizioni di tutti i comandi disponibili; più in particolare è possibile distinguere i comandi
per la gestione dell’esecuzione del programma principale, i comandi di base per la soluzione
del problema strutturale (ad esempio la libreria degli elementi finiti) ed infine i macro-
comandi che raccolgono una serie di istruzioni di base per semplificarne l’utilizzo da parte
dell’utente (ad esempio le routines per l’assemblaggio delle matrici globali).

Superviseur (supervisore) ovvero un modulo scritto in linguaggio Fortran 77 per la gestione


dell’esecuzione del programma principale; più in particolare esso ha la responsabilità di
svolgere in sequenza le seguenti operazioni:

1. interpretazione dei macro-comandi DEBUT( ), POURSUITE( ) e FIN( ), rispettiva-


mente per inizializzare, riprendere ed infine terminare l’esecuzione del programma
principale;
Solutore strutturale Code Aster 39

Lista dei comandi JDC

DEBUT( ) Superviseur Comando #1 Calcolo


controllo sintassi
esecuzione operazioni
traduzione comandi
gestione esecuzione
Comando #2
Jeveux
gestione memoria
Catalogue ···

Comando #N

FIN( )

Figura 3.1: Schema a blocchi che riassume il funzionamento del solutore strutturale Code Aster.

2. accesso ai databases LOCALE, VOLATILE e GLOBALE riservati dal gestore di memoria


Jeveux ed al catalogo dei comandi disponibili;
3. lettura del file dei comandi fornito in ingresso dall’utente per eliminare i commenti,
verificare la correttezza della sintassi ed infine tradurre i macro-comandi in operazioni
elementari;
4. valutazione delle espressioni numeriche e richiesta di esecuzione delle singole opera-
zioni elementari, verificando che lo svolgimento sia andato a buon fine.
Jeveux (io voglio) ovvero un modulo scritto in linguaggio Fortran 77 per la gestione della me-
moria statica e dinamica; più in particolare, dopo aver allocato sin dall’inizio l’intera area
di memoria riservata al programma principale, esso ha la responsabilità di creare, distrug-
gere, accedere, copiare ed eventualmente salvare su disco gli oggetti ed i dati. Ogni oggetto
ha inoltre un’immagine virtuale su disco in modo tale da potere affrontare una richiesta
particolare di memoria senza interrompere l’esecuzione del programma principale.
Per risolvere numericamente un problema strutturale mediante il programma Code Aster in-
nanzitutto è necessario creare il caso, ovvero l’insieme di informazioni che l’utente deve fornire
in ingresso al solutore; ipotizzando di utilizzare il sistema operativo Linux e di porsi all’inter-
no della cartella $MYPATH/TestProblem, dove $MYPATH corrisponde al percorso assoluto della
cartella di lavoro, è necessario definire i seguenti files:
TestProblem.export in cui sono definiti i parametri relativi all’esecuzione del programma prin-
cipale (ad esempio le istruzioni di debugging) ed i parametri relativi alle risorse del cal-
colatore da destinare alla soluzione del problema (ad esempio il numero di processori,
la memoria riservata ed il tempo massimo di calcolo). Infine è specificato il percorso
assoluto dei files in ingresso relativi alla griglia di calcolo e alla lista dei comandi e dei
files in uscita relativi ai risultati numerici e alla lista degli eventuali messaggi di errore.
La scrittura di tale file è facilitata mediante la Graphical User Interface (GUI) Astk.
40 Scelta del solutore strutturale

TestProblem.mail in cui sono memorizzati in formato di testo i nodi, gli elementi, la connet-
tività e gli eventuali gruppi di nodi ed elementi della griglia di calcolo; alternativamente
nel caso di geometrie particolarmente complesse conviene appoggiarsi a programmi esterni
per la generazione della griglia di calcolo che forniscono in uscita i files in formato binario
TestProblem.msh (ad esempio Gmsh [7]) o TestProblem.med (ad esempio Salomé [52]);

TestProblem.comm ovvero un modulo scritto in linguaggio Python in cui sono elencati i macro-
comandi insieme ai relativi commenti, che successivamente il Superviseur si preoccupa di
tradurre nella lista dei comandi elementari o Jeu de Commandes (JDC). La scrittura
di tale file è facilitata mediante la Graphical User Interface (GUI) Eficas, che svolge un
primo controllo della sintassi; tuttavia per aggiungere nuovi macro-comandi ed istruzioni
in linguaggio Python è comunque necessario modificare manualmente tale file.

Durante l’esecuzione del programma sono inoltre creati all’interno della cartella di lavoro i files
relativi ai risultati numerici (in formato di testo TestProblem.resu o binario TestProblem.med)
e alla lista degli eventuali messaggi di errore TestProblem.erre.

3.3.1 Esempio di utilizzo di Code Aster


Per illustrare meglio il funzionamento del solutore strutturale Code Aster e contemporaneamente
introdurre i macro-comandi e le variabili più comunemente utilizzate, può essere conveniente
affrontare un problema di verifica molto semplice di cui sia nota la soluzione analitica.
Prendendo in esame la trave rappresentata in Figura 3.2 omogenea in acciaio (densità
ρ = 7800 kg/m3 , modulo di Young E = 2.1 · 1011 P a e coefficiente di Poisson ν = 0.3),
a sezione circolare cava di raggio R = 0.15 m e spessore e = 0.03 m, di lunghezza L = 10 m,
appoggiata-appoggiata a flessione ed incastrata-incastrata a torsione, si richiede di calcolare
numericamente i primi Nq = 10 modi propri e frequenze naturali flessionali e torsionali e
la deformata statica flessionale e torsionale conseguente all’applicazione della forza F = 2500 N
e del momento torcente M = 5000 N m in corrispondenza della sezione di mezzeria.

z z

sx = 0  11111111111
00000000000
 00000000000
11111111111

sy = 0  00000000000
11111111111
00000000000
11111111111
00000000000
11111111111
sz = 0 
 y m, I, EJ, GJ 11111111111
00000000000
00000000000
11111111111

 00000000000
11111111111
θx = 0 00000000000
11111111111y
11
00
00
11 e 11111111111
00000000000
00000000000
11111111111
00
11 00000000000
11111111111
00
11 x F 00000000000
11111111111
R
00000000000
11111111111
M 00000000000
11111111111
00000000000
11111111111
= 00000000000
11111111111
00000000000
11111111111
00000000000
11111111111
00000000000
11111111111
00000000000
11111111111
L 
 sx =0
= 

s =0
11
00 y
00
11
00
11  sz
 =0
00
11 

θx =0

Figura 3.2: Schematizzazione del problema molto semplice scelto per illustrare meglio il funzionamento
del solutore strutturale Code Aster.
Solutore strutturale Code Aster 41

Per valutare la bontà del solutore strutturale Code Aster si richiede inoltre confrontare i
modi propri e le frequenze naturali calcolate numericamente con la soluzione esatta delle equa-
zioni differenziali alle derivate parziali (PDE) che governano la dinamica flessionale e torsionale
della trave, ovvero:
r r
2 i2 π 2 EJ
Flessione: zi (x) = sin(iπx) e ωz i = 2 (3.13a)
mL L m
r r
2 iπ GJ
Torsione: θi (x) = sin(iπx) e ωθ i = , (3.13b)
IL L I
dove i modi propri sono normalizzati a massa generalizzata unitaria. Analogamente si richiede di
confrontare la deformata statica flessionale e torsionale calcolata numericamente con la soluzione
esatta delle equazioni differenziali ordinarie (ODE) del metodo della linea elastica, ovvero:
 
F 3 2 3 L
Flessione: z(x) = L x−x se x≤ (3.14a)
12EJ 4 2
M L
Torsione: θ(x) = x se x≤ . (3.14b)
2GJ 2
Sono di seguito riportati, insieme ad una breve descrizione dei macro-comandi e delle variabili
maggiormente utilizzate, tutti i files che l’utente deve fornire in ingresso al solutore strutturale
Code Aster per risolvere numericamente tale problema test.

TestProblem.export

Definizione dei parametri relativi alla compilazione e all’esecuzione del programma principale.
P actions make_etude
P version STA9.1
P debug nodebug
P mode interactif
A rep_mat ~/Aster/STA9.1/materiau

Definizione dei parametri relativi alle risorse del calcolatore da destinare alla soluzione del
problema, ovvero numero di processori ncpu, memoria riservata memjeveux e tempo massimo
si calcolo tpmax.
P ncpus 1
A memjeveux 8.0
A tpmax 60

Definizione del tipo, del percorso assoluto e dell’unità di accesso dei files in ingresso relativi alla
griglia di calcolo TestProblem.mail e alla lista dei comandi TestProblem.comm.
F mail $MYPATH/TestProblem/TestProblem.mail D 20
F comm $MYPATH/TestProblem/TestProblem.comm D 1

Definizione del tipo, del percorso assoluto e dell’unità di accesso dei files in uscita relativi agli
eventuali messaggi di errore TestProblem.erre ed ai risultati numerici TestProblem.resu.
F mess $MYPATH/Example/TestProblem.mess R 6
F erre $MYPATH/Example/TestProblem.erre R 9
F resu $MYPATH/Example/TestProblem.resu R 8
42 Scelta del solutore strutturale

TestProblem.mail

Definizione delle coordinate degli Nn = 21 nodi COOR 3D della griglia di calcolo.


COOR_3D % 21 NOEUDS
% ID_NO X Y Z
N01 0.0 0. 0. % INCASTRO
N02 0.5 0. 0.
N03 1.0 0. 0.
N04 1.5 0. 0.
N05 2.0 0. 0.
N06 2.5 0. 0.
N07 3.0 0. 0.
N08 3.5 0. 0.
N09 4.0 0. 0.
N10 4.5 0. 0.
N11 5.0 0. 0. % MEZZERIA
N12 5.5 0. 0.
N13 6.0 0. 0.
N14 6.5 0. 0.
N15 7.0 0. 0.
N16 7.5 0. 0.
N17 8.0 0. 0.
N18 8.5 0. 0.
N19 9.0 0. 0.
N20 9.5 0. 0.
N21 10.0 0. 0. % ESTREMO
FINSF
Definizione della connettività degli Ne = 20 elementi SEG2 della griglia di calcolo.
SEG2 % 20 MAILLES
% ID_MA EndA EndB
E01 N01 N02
E02 N02 N03
E03 N03 N04
E04 N04 N05
E05 N05 N06
E06 N06 N07
E07 N07 N08
E08 N08 N09
E09 N09 N10
E10 N10 N11
E11 N11 N12
E12 N12 N13
E13 N13 N14
E14 N14 N15
E15 N15 N16
E16 N16 N17
E17 N17 N18
E18 N18 N19
E19 N19 N20
E20 N20 N21
FINSF
Solutore strutturale Code Aster 43

Definizione dei gruppi di nodi TOUT NO, INCASTRO, ESTREMO e MEZZERIA e del gruppo di elementi
TOUT MA della griglia di calcolo, termine del file.
GROUP_NO NOM = TOUT_NO
N01 N02 N03 N04 N05 N06 N07 N08
N09 N10 N11 N12 N13 N14 N15 N16
N17 N18 N19 N20 N21
FINSF
GROUP_MA NOM = TOUT_MA
E01 E02 E03 E04 E05 E06 E07 E08
E09 E10 E11 E12 E13 E14 E15 E16
E17 E18 E19 E20
FINSF
GROUP_NO NOM = INCASTRO
N01
FINSF
GROUP_NO NOM = ESTREMO
N21
FINSF
GROUP_NO NOM = MEZZERIA
N11
FINSF
FIN

TestProblem.comm

Inizializzazione dell’applicazione, caricamento della griglia di calcolo MA memorizzata in formato


di testo nel file TestProblem.mail.
DEBUT( )
MA = LIRE_MAILLAGE( )
Definizione del modello di trave MO secondo l’ipotesi di Eulero-Bernoulli POU D E, assegnamento
al gruppo di elementi di griglia TOUT MA delle caratteristiche CAELE degli elementi finiti di trave
POUTRE a sezione uniforme circolare cava di raggio R e spessore EP.
MO = AFFE_MODELE( MAILLAGE = MA,
AFFE = _F( GROUP_MA = ’TOUT_MA’,
PHENOMENE = ’MECANIQUE’,
MODELISATION = ’POU_D_E’) )
CAELE = AFFE_CARA_ELEM( MODELE = MO,
POUTRE = _F( GROUP_MA = ’TOUT_MA’,
SECTION = ’CERCLE’,
CARA = ( ’R’, ’EP’ ),
VALE = ( 0.15, 0.03 ) ) )
Definizione del modello di materiale MAT elastico lineare, del modulo di Young E, del coefficiente
di Poisson NU e della densità RHO, assegnamento al gruppo di elementi di griglia TOUT MA
del materiale CHMAT.
MAT = DEFI_MATERIAU( ELAS = _F( E = 2.1E+11,
NU = 0.3,
RHO = 7800.0 ) )
CHMAT = AFFE_MATERIAU( MAILLAGE = MA,
AFFE = _F( GROUP_MA = ’TOUT_MA’,
MATER = MAT ) )
44 Scelta del solutore strutturale

Definizione delle condizioni al contorno CHBC di spostamento imposto in corrispondenza dei


nodi INCASTRO ed ESTREMITA e della condizione di carico CHLO di forze e momenti concentrati
FORCE NODALE in corrispondenza del nodo MEZZERIA.
CHBC = AFFE_CHAR_MECA( MODELE = MO,
DDL_IMPO = ( _F( GROUP_NO = ’INCASTRO’,
DX = 0., DZ = 0., DRX = 0. ),
_F( GROUP_NO = ’ESTREMO’,
DX = 0., DZ = 0., DRX = 0. ),
_F( GROUP_NO = ’TOUT_NO’,
DY = 0., DRZ = 0. ) ) )
CHLO = AFFE_CHAR_MECA( MODELE = MO,
FORCE_NODALE = _F( GROUP_NO = ’MEZZERIA’,
FX = 0., FY = 0., FZ = 2500.,
MX = 5000., MY = 0., MZ = 0. ) )

Calcolo delle matrici di rigidezza MATLOCK e di massa MATLOCM locali, definizione della numera-
zione globale dei gradi di libertà ed assemblaggio delle matrici di rigidezza MATASSK e di massa
MATASSM globali.
MATLOCK = CALC_MATR_ELEM( MODELE = MO,
CHARGE = CHBC,
CARA_ELEM = CAELE,
CHAM_MATER = CHMAT,
OPTION = ’RIGI_MECA’ )
MATLOCM = CALC_MATR_ELEM( MODELE = MO,
CHARGE = CHBC,
CARA_ELEM = CAELE,
CHAM_MATER = CHMAT,
OPTION = ’MASS_MECA’ )
NUM = NUME_DDL( MATR_RIGI = MATLOCK )
MATASSK = ASSE_MATRICE( MATR_ELEM = MATLOCK,
NUME_DDL = NUM )
MATASSM = ASSE_MATRICE( MATR_ELEM = MATLOCM,
NUME_DDL = NUM )

Calcolo dei primi NMAX FREQ modi propri e relative frequenze naturali MD mediante il metodo di
Lanczos TRI DIAG e normalizzazione a massa generalizzata unitaria MASS GENE.
MD = MODE_ITER_SIMULT( MATR_A = MATASSK,
MATR_B = MATASSM,
METHODE = ’TRI_DIAG’,
CALC_FREQ = _F( OPTION = ’PLUS_PETITE’,
NMAX_FREQ = 10 ) )
MD = NORM_MODE( reuse = MD,
MODE = MD,
NORME = ’MASS_GENE’ )
Calcolo della risposta statica SOL del modello di trave MO soggetto alle condizioni al contorno
CHBC e alle condizioni di carico CHLO.
SOL = MECA_STATIQUE( MODELE = MO,
CHAM_MATER = CHMAT,
CARA_ELEM = CAELE,
EXCIT = ( _F( CHARGE = CHBC ),
_F( CHARGE = CHLO ) ) )
Solutore strutturale Code Aster 45

Scrittura in formato di testo sul file Example.resu dei risultati numerici dell’analisi modale MD
e dell’analisi statica SOL, termine dell’applicazione.

IMPR_RESU( RESU = _F( RESULTAT = MD, TOUT_PARA = ’OUI’, TOUT_CHAM = ’OUI’ ) )


IMPR_RESU( RESU = _F( RESULTAT = SOL, TOUT_PARA = ’OUI’, TOUT_CHAM = ’OUI’ ) )
FIN()

Per lanciare il solutore strutturale Code Aster è necessario porsi all’interno della cartella
di lavoro $MYPATH/TestProblem ed eseguire dal terminale dei comandi la seguente istruzione:
∼/Aster/ASTK/ASTK SERV/bin/as run TestProblem.export, che richiede un tempo di calcolo
pari a CPUtime = 3.67 s su un computer ASUS M6000 con processore Intel Pentium-M da
1.8 GHz di frequenza massima, 1 Gbyte di memoria RAM, 2 M byte di cache L2 e sistema
operativo Linux con kernel aggiornato alla versione 2.6.17.
Infine sono di seguito riportati i risultati numerici relativi al calcolo dei modi propri e
delle deformate statiche flessionale e torsionale della trave rappresentata in Figura 3.2 ottenuti
mediante il solutore strutturale Code Aster; esaminando la Tabella 3.1 e le Figure 3.3 e 3.4
è possibile osservare che sussiste un ottimo accordo con le rispettive soluzioni analitiche.

Code Aster Soluzione analitica Errore %

ωz i [ rad/s ] 49.1865 49.1864 8.8824 · 10−7

ωθ i [ rad/s ] 1011.9824 1010.9404 1.0307 · 10−3

z(L/2) [ m ] 1.0565 · 10−3 1.0565 · 10−3 1.1224 · 10−6

θ(L/2) [ ◦ ] 1.8887 · 10−2 1.8887 · 10−2 1.1832 · 10−6

Tabella 3.1: Confronto tra i risultati numerici ottenuti mediante il solutore strutturale Code Aster
e la soluzione analitica.

× 10−2 × 10−1
3.5 2.5

3
2
2.5

1.5
2
ϑ1 [−]
z1 [−]

1.5
1

1
0.5
0.5

0 0
0 2 4 6 8 10 0 2 4 6 8 10
x [m] x [m]

Figura 3.3: Confronto tra i risultati numerici (◦) e la soluzione analitica (−) per la prima forma
modale flessionale z1 (x) (sinistra) e la prima forma modale torsionale θ1 (x) (destra) normalizzate a
massa generalizzata unitaria.
46 Scelta del solutore strutturale

× 10−4 × 10−4
12 3.5

10 3

2.5
8
2
z [m]

ϑ [°]
6
1.5
4
1

2 0.5

0 0
0 2 4 6 8 10 0 2 4 6 8 10
x [m] x [m]

Figura 3.4: Confronto tra i risultati numerici (◦) e la soluzione analitica (−) per la deformata statica
flessionale z(x) (sinistra) e la deformata statica torsionale θ(x) (destra).

× 103 × 103 × 103


1.5 7 3

6
1 2
5
0.5 1
4
Mx [Nm]
My [Nm]
Tz [N]

0 3 0

2
-0.5 -1
1
-1 -2
0

-1.5 -1 -3
0 2 4 6 8 10 0 2 4 6 8 10 0 2 4 6 8 10
x [m] x [m] x [m]

Figura 3.5: Confronto tra i risultati numerici EndB (◦) e la soluzione analitica (−) per le azioni interne
di taglio Tz (x) (sinistra), momento flettente My (x) (centro) e momento torcente Mx (x) (destra).

3.3.2 Esempio di programmazione in Code Aster


Con riferimento all’esempio precedente, si richiede di ripetere il calcolo numerico della defor-
mata statiche flessionale e torsionale della trave rappresentata in Figura 3.2, implementando
in linguaggio Python un nuovo macro-comando chiamato AFFE LOAD che consenta di importare
le condizioni di carico di forza e momento concentrate memorizzate in formato di testo nel
file TestProblem.load. Oltre a fornire un valido esempio della programmabilità in linguaggio
Python del solutore strutturale Code Aster, tale applicazione è fondamentale nell’ambito della
soluzione numerica diretta accoppiata del problema aeroelastico per integrare in modo flessibile
ed efficiente il solutore strutturale Code Aster con il solutore aerodinamico AeroFoam.
Sono di seguito riportati, insieme ad una breve descrizione dei macro-comandi e delle variabili
maggiormente utilizzate, tutti i files che l’utente deve modificare o aggiungere rispetto all’e-
sempio precedente per risolvere numericamente tale problema mediante il solutore strutturale
Code Aster. Per quanto riguarda il file TestProblem.comm sono riportati solamente i blocchi di
istruzioni che devono essere modificati, ovvero il blocco relativo al caricamento del nuovo macro-
comando AFFE LOAD, semplicemente da aggiungere all’inizio del file, ed il blocco relativo alla
definizione della condizione di carico, da sostituire all’istruzione CHLO = AFFE CHAR MECA(. . .).
Solutore strutturale Code Aster 47

TestProblem.comm

Assegnamento alle variabili PATH e FILENAME del percorso assoluto rispettivamente della car-
tella di lavoro e del file TestProblem.load, caricamento del nuovo macro-comando AFFE LOAD
scritto in linguaggio Python nel file affe load.py.
PATH = ’$MYPATH/TestProblem/’
FILENAME = PATH + ’TestProblem.load’
import sys
sys.path.append(PATH)
from affe_load import AFFE_LOAD

Caricamento delle condizioni di carico CHLO di forza e momento concentrati memorizzate in


formato di testo nel file TestProblem.load.
CHLO = AFFE_LOAD( MODELE = MO,
NOM_FICHIER = FILENAME )

TestProblem.load

Definizione delle forze FX, FY, FZ e dei momenti MX, MY, MZ concentrati in corrispondenza di
ogni ID NO nodo della griglia di calcolo.
% ID_NO FX FY FZ MX MY MZ
N11 0. 0. 2500. 5000. 0. 0.

affe load.py

Caricamento del catalogo dei macro-comandi Cata del solutore strutturale Code Aster, accesso
ai comandi di base F ed UTMESS.
from Cata.cata import *
from Accas import _F
from Utilitai.Utmess import UTMESS

Definizione della funzione ausiliaria read load scritta in linguaggio Python, che riceve in
ingresso il nome del file relativo alla condizione di carico NOM FICHIER e restituisce in uscita la
struttura load.
def read_load(NOM_FICHIER):

# Read number of lines of file NOM_FICHIER


f = open(NOM_FICHIER, ’r’)
N_l = 0
for line in f.readlines():
if line.split()[0][0] != ’%’:
N_l = N_l + 1
f.close()

# Check for errors


if N_l == 0:
raise AsException("Error: NOM_FICHIER is empty.")
return 0
48 Scelta del solutore strutturale

# Initialize load structure


load = { ’node’ : [None]*N_l,
’Fx’ : [None]*N_l,
’Fy’ : [None]*N_l,
’Fz’ : [None]*N_l,
’Mx’ : [None]*N_l,
’My’ : [None]*N_l,
’Mz’ : [None]*N_l }

# Read data from file NOM_FICHIER


f = open(NOM_FICHIER, ’r’)
k = 0
for line in f.readlines():
if line.split()[0][0] != ’%’:
load[’node’][k] = line.split()[0]
load[’Fx’][k] = float(line.split()[1])
load[’Fy’][k] = float(line.split()[2])
load[’Fz’][k] = float(line.split()[3])
load[’Mx’][k] = float(line.split()[4])
load[’My’][k] = float(line.split()[5])
load[’Mz’][k] = float(line.split()[6])
k = k + 1
f.close()

# Return load structure


return load

Definizione della funzione che implementa il corpo principale della nuova macro affe load ops
scritta in linguaggio Python, che riceve in ingresso il modello MODELE, il nome del file relati-
vo alla condizione di carico NOM FICHIER ed infine il flag relativo al livello di verbosità INFO
e restituisce in uscita la condizione di carico CHLO, richiamando al suo interno il macro-comando
AFFE CHAR MECA.

def affe_load_ops(self, MODELE, NOM_FICHIER, INFO, **args):

# Define output and initialize error counter


self.set_icmd(1)
self.DeclareOut(’CHLO’, self.sd)
ier = 1

# Check for errors


if not MODELE:
UTMESS(’F’, macro, ’Error: MODELE not specified.’)
return ier
if not NOM_FICHIER:
UTMESS(’F’, macro, ’Error: NOM_FICHIER not specified.’)
return ier

# Call function read_load


load = read_load(NOM_FICHIER)

# Get dimensions
N_n = len(load[’node’][:])
Solutore strutturale Code Aster 49

# Print info
if INFO == 2:
print ’------------------------------------------------------------------’
print ’ AFFE_LOAD ’
print ’------------------------------------------------------------------’
print ’ NOM_FICHIER = ’ + NOM_FICHIER
print ’ ’
for k in range(0, N_n):
print ’ ’ + load[’node’][k]
print ’ Fx = ’ + str(load[’Fx’][k])
print ’ Fy = ’ + str(load[’Fy’][k])
print ’ Fz = ’ + str(load[’Fz’][k])
print ’ Mx = ’ + str(load[’Mx’][k])
print ’ My = ’ + str(load[’My’][k])
print ’ Mz = ’ + str(load[’Mz’][k])
print ’ ’
print ’------------------------------------------------------------------’

# Import macro-command AFFE_CHAR_MECA from Catalogue


AFFE_CHAR_MECA = self.get_cmd(’AFFE_CHAR_MECA’)

# Call macro-command AFFE_CHAR_MECA


CHLO = AFFE_CHAR_MECA( MODELE = MODELE,
FORCE_NODALE = ( [ _F( NOEUD = load[’node’][k],
FX = load[’Fx’][k],
FY = load[’Fy’][k],
FZ = load[’Fz’][k],
MX = load[’Mx’][k],
MY = load[’My’][k],
MZ = load[’Mz’][k] )
for k in range(0, N_n) ] ) )

# Update and return error counter


ier = 0
return ier

Creazione del nuovo macro-comando AFFE LOAD, integrazione della funzione affe load ops
scritta in linguaggio Python, definizione del nome e del tipo delle variabili in ingresso, ovvero
il modello MODELE, il nome del file relativo alla condizione di carico NOM FICHIER ed infine il
flag relativo al livello di verbosità INFO.
AFFE_LOAD = MACRO( nom ="AFFE_LOAD",
op =affe_load_ops,
sd_prod =char_meca,
fr ="Read from file the nodal load ditribution",
MODELE =SIMP( statut = ’o’,
typ = modele_sdaster ),
NOM_FICHIER = SIMP( statut = ’f’,
typ = ’TXM’,
fr = "Name of the NOM_FICHIER" ),
INFO = SIMP( statut = ’f’,
typ = ’I’,
defaut = 1 ,
into = (1,2) ) )
50 Scelta del solutore strutturale

3.4 Pre/Post–processore Salomé


Il pre/post-processore Salomé è sviluppato in linguaggio C++ e Python dalle aziende francesi
OpenCASCADE ed EDF a partire dal 2000, con l’obiettivo di integrare in un’unica piattafor-
ma multidisciplinare molti programmi esterni liberamente disponibile in rete sia per la fase di
pre-processing, ovvero la costruzione del modello CAD e la generazione della griglia di calcolo,
che per la fase di post-processing, ovvero la visualizzazione e l’elaborazione dei risultati numerici.
Nel 2008 è stata rilasciata la versione corrente Salomé v.3.2.6 [52] ampiamente utilizzata in
ambito scientifico ed industriale e, contrariamente al programma commericiale concorrente
FEMAP v.9.2 [42], gratuitamente disponibile in rete insieme al codice sorgente e ad un’am-
pia e dettagliata documentazione all’indirizzo web www.salome-platform.org secondo la licenza
GNU Lesser General Public Licence (LGPL).
L’architettura generale del pre/post-processore Salomé si basa sul requisito fondamentale
che il programma sia flessibile e modulare, ovvero personalizzabile in funzione della particolare
appplicazione. Più in particolare è possibile distinguere i seguenti elementi costitutivi:
Geometry ovvero un modulo che consente di importare ed esportare modelli CAD nei formati
standard BREP, IGES e STEP, fornendo inoltre tutti gli strumenti necessari per modifi-
carne ed ottimizzarne la geometria.
Mesh ovvero un modulo che consente di generare griglie di calcolo 1D, 2D e 3D di complessità
arbitraria ed eventualmente ibride appoggiandosi a molti programmi esterni (ad esempio
Netgen [36]). Inoltre è possibile importare ed esportare griglie di calcolo nei formati binari
standard IDEAS e MED.
Post-Pro ovvero un modulo che consente di importare i risultati numerici nel formato binario
standard MED ed elaborarli in forma tabulare e graficamente. Tale formato binario stan-
dard MED è particolarmente comodo per interfacciare il solutore strutturale Code Aster
con il pre/post-processore Salomé.
Inoltre, grazie alla disponibilità del codice sorgente, è relativamente facile costruire moduli
aggiuntivi per integrare direttamente gli strumenti di analisi numerica; ad esempio è attualmente
in fase di sviluppo da parte dell’azienda francese EDF un modulo (commerciale) per interfacciare
il solutore strutturale Code Aster con il pre/post-processore Salomé.

Figura 3.6: Esempio di utilizzo del modulo Geometry (sinistra) e del modulo Post-Pro (destra) del
pre/post-processore Salomé.
Capitolo 4

Problemi di verifica strutturali

In questo Capitolo il solutore strutturale Code Aster è messo alla prova affrontando alcuni
problemi di verifica di complessità crescente, in Nd = 2 e Nd = 3 dimensioni spaziali su griglie
di calcolo in generale poliedriche strutturate e non strutturate. Più in particolare l’obiettivo
è valutare l’accuratezza dei risultati numerici ottenuti con riferimento ai risultati sperimentali
e numerici eventualmente reperibili in Letteratura ed ai risultati numerici ottenuti mediante il
solutore strutturale commerciale MSC.Nastran [45].
Dapprima in §4.1 la soluzione numerica della deformata statica del modello strutturale
ad elementi finiti (FEM) di trave (per i correnti) e di piastra (per i pannelli e le centine)
di un cassone alare è confrontata con i risultati numerici ottenuti mediante MSC.Nastran;
successivamente in §4.2 è affrontato il problema della taratura del modello strutturale ad ele-
menti finiti (FEM) di piastra dell’ala AGARD 445.6 con riferimento ai risultati sperimentali
delle prove di vibrazione a terra o Ground Vibration Test (GVT) riportati in [8].
Tali problemi strutturali di verifica sono risolti su un computer ASUS M6000 con processore
Intel Pentium-M da 1.8 Ghz di frequenza massima, 1 Gbyte di memoria RAM, 2 M byte di cache
L2 e sistema operativo Linux con kernel aggiornato alla versione 2.6.17.

4.1 Cassone alare


Prendendo in esame il cassone alare in alluminio (densità ρ = 2800 kg/m3 , modulo di Young
E = 7.1·1010 P a e coefficiente di Poisson ν = 0.3125) a sezione uniforme monocella rettangolare
caratterizzata da Np = 7 pannelli connessi mediante NcL = 3 correnti a L e NcT = 4 correnti a T,
di lunghezza L = 1600 mm, incastrato in corrispondenza della sezione z0 = 0 mm e le cui
caratteristiche geometriche di dettaglio sono riassunte in Figura 4.1, si richiede di calcolarne
la deformata statica conseguente all’applicazione in corrispondenza del baricentro geometrico
delle Nc = 4 centine del seguente sistema di forze concentrate: F1 = F2 = F3 = 13200 N in
corrispondenza delle sezioni z1 = 400 mm, z2 = 800 mm e z3 = 1200 mm ed infine F4 = 6600 N
in corrispondenza della sezione di estremità z4 = 1600 mm. Successivamente i risultati numerici
cosı̀ ottenuti sono confrontati con quelli del solutore strutturale commerciale MSC.Nastran.
Per risolvere tale problema il cassone alare è approssimato mediante un modello strutturale
ad elementi finiti (FEM) di trave (per i correnti) e di piastra (per i pannelli e le centine):
più in particolare i correnti sono discretizzati in Ne = 224 elementi longitudinali di lunghezza
h = 50 mm, mentre i pannelli e le centine sono discretizzati in Ne = 1440 elementi quadrati di
lato h = 50 mm. Complessivamente la griglia di calcolo strutturale rappresentata in Figura 4.2
è costituita da Ne = 1664 elementi e Nn = 1414 nodi.

51
52 Problemi di verifica strutturali

Nel modello ad elementi finiti (FEM) costruito in FEMAP per il solutore strutturale com-
merciale MSC.Nastran sono inoltre aggiunti elementi di connessione rigida RBE3 per trasferire i
carichi in modo distribuito alle centine; una strategia analoga è teoricamente realizzabile in
Code Aster mediante l’opzione LIAISON MAIL del macro-comando AFFE CHAR MECA, ma non
fornisce risultati soddisfacenti e si preferisce dunque applicare i carichi in modo concentrato
in corrispondenza del nodo più vicino al baricentro geometrico di ogni centina.
Il tempo di esecuzione per la soluzione numerica del problema è pari a CPUtime = 3.73 s.
Nelle Figure 4.3 e 4.4 sono presentati i risultati numerici relativi alla deformata statica ed
agli sforzi equivalenti di Von Mises sul cassone alare; è possibile osservare un ottimo accordo
con i risultati numerici ottenuti mediante il solutore strutturale MSC.Nastran (con un tempo
di esecuzione del tutto confrontabile); le piccole discrepanze che è possibile osservare sono
imputabili alla differente modalità di applicazione dei carichi (effetti vicini).

2.5 mm 2.5 mm 2.5 mm


11111111111111111111
00000000000000000000
00000000000000000000
11111111111111111111
00000000000000000000
11111111111111111111
00000000000000000000
11111111111111111111
11
00
00
11 111
000 111
000 11
00
00
11
00000000000000000000
11111111111111111111
F1 = 13200 N
00000000000000000000
11111111111111111111
00000000000000000000
11111111111111111111
00000000000000000000
11111111111111111111
00
11 000
111 000
111 00
11
00000000000000000000
11111111111111111111
00000000000000000000
11111111111111111111

3.0 mm

2.0 mm
00000000000000000000
11111111111111111111
F2 = 13200 N
00000000000000000000
11111111111111111111
00000000000000000000
11111111111111111111
00000000000000000000
11111111111111111111
00000000000000000000
11111111111111111111
00000000000000000000
11111111111111111111
00000000000000000000
11111111111111111111
00000000000000000000
11111111111111111111
F3 = 13200 N 11
00
00
11
1.5 mm 11
00 1.5 mm 11
00
00
11
y 00000000000000000000
11111111111111111111
00000000000000000000
11111111111111111111
00000000000000000000
11111111111111111111
00000000000000000000
11111111111111111111 00
11 00
11
00
11 00
11
=

F4 = 6600 N 2.5 mm
111
000
000
111 111
000 111
000 111
000
000
111 1111111
0000000 yb
000
111 000
111 000
111 000
111 0000000
1111111 111111111
000000000
3.2 mm
=

0000000
1111111 000000000
111111111
yb
m

0000000
1111111 000000000
111111111
m

200 mm 200 mm

25 mm
300 mm

0000000
1111111 000000000
111111111
00

25 mm
=

x
b
16

0000000
1111111
x
b
000000000
111111111
11
00
300 mm
11
00 0000000
1111111 000000000
111111111
000000000
111111111
11
00 0000000
1111111
=

00
11
00
11 00
11 00
11
00
11 0000000
1111111 000000000
111111111
00
11 x
25 mm
z 20 mm
600 mm

Figura 4.1: Geometria del cassone alare.

Figura 4.2: Confronto tra la griglia di calcolo del modello strutturale ad elementi finiti (FEM) costrui-
ta mediante Salomé peril solutore strutturale libero Code Aster (sinistra) e quella costruita mediante
FEMAP per il solutore strutturale commerciale MSC.Nastran (destra).
Taratura del modello strutturale dell’ala AGARD 445.6 53

Figura 4.3: Confronto tra i risultati numerici ottenuti mediante Code Aster (sinistra) e quelli ottenuti
mediante MSC.Nastran (destra) relativi alla deformata statica del cassone alare.

Figura 4.4: Confronto tra i risultati numerici ottenuti mediante Code Aster (sinistra) e quelli ottenuti
mediante MSC.Nastran (destra) relativi agli sforzi equivalenti di Von Mises sul cassone alare.

4.2 Taratura del modello strutturale dell’ala AGARD 445.6


Il modello strutturale dell’ala AGARD 445.6 utilizzato in §9.1 per risolvere un tipico problema
di verifica dei programmi di analisi aeroelastica in regime di moto transonico è il risultato
delle prove sperimentali di vibrazione a terra o Ground Vibration Test (GVT) ed è dunque
descritto in termini degli smorzamenti generalizzati [rcr], delle frequenze [rf r] e delle forme [ U ],
normalizzate a massa generalizzata unitaria cosicché [rmr] = [r1r], dei primi Ns = 6 modi
propri. È importante ricordare che l’i-esima massa generalizzata mi è unitaria in unità di
misura anglosassoni (UK), ovvero mi = 1 lbf in/s2 ; affinchè l’i-esima massa generalizzata sia
unitaria in unità di misura del sistema internazionale (SI), ovvero mi = 1 kg come in [9, 30],
è necessario riscalare le forme modali per il fattore moltiplicativo µ calcolato nel seguente modo:

 r (UK) T 2
 [ m r] = [ U ] [ MF EM ][ U ] = 1 lbf in/s = 175.125 kg 1
e dunque µ = √ . (4.1)

 [rm(SI) ] = µ [ U ]T [ M 175.12
r F EM ][ U ] µ = 1 kg,
54 Problemi di verifica strutturali

Figura 4.5: Modello sperimentale n◦ 3 opportunamente indebolito dell’ala AGARD 445.6.

Più in particolare è considerato il modello sperimentale n◦ 3 rappresentato in Figura 4.5


costruito in mogano laminato e successivamente indebolito per ridurne la rigidezza flesso-
torsionale, praticandovi in direzione normale alla pianta alare dei fori circolari distribuiti unifor-
memente; per conservare la regolarità della superficie alare (fondamentale per evitare i problemi
conseguenti ad un’eventuale separazione dello strato limite) tali fori sono opportunamente chiusi
mediante un materiale riempitivo plastico.
Sempre in [8] è inoltre costruito un modello strutturale ad elementi finiti (FEM) di pia-
stra anisotropi di tipo EAL uncoupled composite E43; la pianta alare è discretizzata mediante
Ne = 10 × 10 elementi quadrangolari e Nn = 121 nodi uniformemente distribuiti in corda ed
in apertura, ad eccezione della sesta fila di nodi in corda leggermente traslata per ottenere
una migliore rappresentazione dell’asse elastico. Per riprodurre il più accuratamente possi-
bile le frequenze proprie e le forme modali sperimentali tale modello strutturale ad elementi
finiti (FEM) deve essere opportunamente tarato: in questo caso sono utilizzati una densità
ρ = 381.980 kg/m3 , un modulo di Young E = 3.245·109 P a, un modulo di elasticità tangenziale
G = 4.119 · 108 P a ed infine un coefficiente di Poisson ν = 0.310; viceversa non è specificata la
particolare distribuzione degli spessori delle piastre t adottata.
Tuttavia è molto difficile riprodurre numericamente in modo soddisfacente le frequenze
proprie e le forme modali sperimentali. Di conseguenza in Letteratura sono proposti numerosi
modelli alternativi che, agendo sulla tipologia di elemento finito di piastra, sulle caratteristiche
del materiale e sulla distribuzione di spessore, cercano di riprodurre al meglio almeno le prime
quattro frequenze proprie e le relative forme modali: come suggerito in [8] è infatti possibile
trascurare le forme modali caratterizzate da una frequenza propria superiore alla quarta poiché
non partecipano significativamente alla risposta dinamica del sistema strutturale (ad esempio
la massima frequenza di flutter misurata sperimentalmente ωF max è circa sette volte inferiore
alla frequenza propria della sesta forma modale).
Ad esempio in [3] è costruito in MSC.Nastran un modello strutturale ad elementi finiti
(FEM) di piastra ortotropa a singola lamina; la pianta alare è discretizzata in Ne = 10 × 20
elementi quadrangolari e Nn = 231 nodi uniformemente distribuiti in corda ed in apertura.
Le proprietà del materiale utilizzate sono il risultato di uno schema di ottimizzazione numerica e
corrispondono ad una densità ρ = 381.980 kg/m3 , un modulo di Young nella direzione parallela
ed ortogonale all’asse elastico rispettivamente Ek = 3.151 · 109 P a ed E⊥ = 4.162 · 108 P a,
un modulo di elasticità tangenziale G = 4.392 · 108 P a ed un coefficiente di Poisson ν = 0.310;
Taratura del modello strutturale dell’ala AGARD 445.6 55

la particolare distribuzione degli spessori delle piastre t adottata è definita dalla forma del
profilo alare NACA 65A004 e comporta un errore numerico sulla massa totale rispetto ai dati
sperimentali pari a circa keM k = kM FEM − M exp k/kM exp k ≃ 9%.
Analogamente si richiede di costruire in Code Aster un modello strutturale ad elementi fi-
niti (FEM) di piastra ortotropa a singola lamina, utilizzando le proprietà del materiale e la
distribuzione degli spessori delle piastre presentati in [3]; la pianta alare è discretizzata utiliz-
zando la stessa distribuzione di Nn = 121 nodi dei modelli sperimentali e numerico presentati
in [8] connessi mediante Ne = 2 × 10 × 10 elementi non più quadrangolari, ma triangolari,
in modo tale da facilitare la costruzione dello schema di interfaccia aeroelastica come descritto
più dettagliatamente in §8.1.
Nella Tabella 4.1 e nelle Figure 4.6–4.11 sono presentati i risultati numerici ottenuti me-
diante Code Aster relativi alle frequenze proprie ed alle forme modali dell’ala AGARD 445.6;
è possibile osservare un buon accordo con i risultati numerici riportati in [3], ma solo un discre-
to accordo con i risultati sperimentali riportati in [8]. Più in particolare l’errore massimo sulle
frequenze proprie è pari a circa kef2 k ≃ 3% e sulle forme modali è pari a circa keU 3 k ≃ 2%.
Come in [3] la particolare distribuzione di spessori delle piastre t adottata comporta un errore
numerico sulla massa totale rispetto ai dati sperimentali pari a circa keM k ≃ 9%. Si potrebbe
allora pensare di utilizzare tale margine residuo per riprodurre numericamente in modo migliore
le frequenze proprie e le forme modali sperimentali. Scegliendo ad esempio come parametri di
progetto l’incremento ∆t > 0 valutato in corrispondenza dei baricentri geometrici degli elemen-
ti della griglia di calcolo rispetto alla distribuzione degli spessori delle piastre t di riferimento,
è possibile minimizzare il seguente funzionale ad esempio mediante il programma GenOpt scritto
in SciLab che implementa l’algoritmo di ottimizzazione genetica presentato in [18]:
4 4
kM FEM − M exp k X kfiFEM − fiexp k X kU FEM
i − U exp
i k
J = WM exp
+ W f i exp + W U i exp , (4.2)
kM k kfi k kU i k
i=0 i=0

dove tutti i pesi sono scelti unitari ad eccezione di Wf1 = Wf2 = WU 1 = WU 2 = 10; in questo
modo è possibile ridurre l’errore numerico sulla massa totale rispetto ai dati sperimentali fino
a circa keM k ≃ 5%; tuttavia il margine di miglioramento sulle frequenze proprie e sulle forme
modali è molto ridotto.

f1 [ Hz ] f2 [ Hz ] f3 [ Hz ] f4 [ Hz ]

Sperimentale 9.60 38.17 48.35 91.54

Kolonay 9.63 37.12 50.50 89.94

Goura 9.67 36.87 50.26 90.00

Beaubien 9.46 39.44 49.71 94.39

Code Aster 9.57 39.28 50.35 93.63

Errore 0.30% 2.90% 4.15% 2.10%

Tabella 4.1: Confronto tra i risultati sperimentali e numerici disponibili in Letteratura [3, 8]
ed i risultati numerici ottenuti mediante Code Aster relativi alle prime quattro frequenze proprie dell’ala
AGARD 445.6.
56 Problemi di verifica strutturali

0.6 0.6

0.5 0.5

0.4 0.4

0.3 0.3

0.2 0.2

0.1 0.1

0 0

Figura 4.6: Confronto tra i risultati sperimentali (sinistra) ed i risultati numerici ottenuti mediante
Code Aster (destra) relativi alla forma modale n◦ 1.

0.45 0.45
0.4 0.4
0.35 0.35
0.3 0.3
0.25 0.25
0.2 0.2
0.15 0.15
0.1 0.1
0.05 0.05
0 0

Figura 4.7: Confronto tra i risultati sperimentali (sinistra) ed i risultati numerici ottenuti mediante
Code Aster (destra) relativi alla forma modale n◦ 2.

0.35 0.35

0.3 0.3

0.25 0.25

0.2 0.2

0.15 0.15

0.1 0.1

0.05 0.05

0 0

Figura 4.8: Confronto tra i risultati sperimentali (sinistra) ed i risultati numerici ottenuti mediante
Code Aster (destra) relativi alla forma modale n◦ 3.
Taratura del modello strutturale dell’ala AGARD 445.6 57

0.4 0.4

0.35 0.35

0.3 0.3

0.25 0.25

0.2 0.2

0.15 0.15

0.1 0.1

0.05 0.05

0 0

Figura 4.9: Confronto tra i risultati sperimentali (sinistra) ed i risultati numerici ottenuti mediante
Code Aster (destra) relativi alla forma modale n◦ 4.

0.009 0.035
0.008
0.03
0.007
0.025
0.006
0.005 0.02

0.004 0.015
0.003
0.01
0.002
0.005
0.001
0 0

Figura 4.10: Errore relativo tra i risultati sperimentali ed i risultati numerici ottenuti mediante
Code Aster relativi alla forma modale n◦ 1 (sinistra) e n◦ 2 (destra).

0.06 0.09
0.08
0.05
0.07
0.04 0.06
0.05
0.03
0.04
0.02 0.03
0.02
0.01
0.01
0 0

Figura 4.11: Errore relativo tra i risultati sperimentali ed i risultati numerici ottenuti mediante
Code Aster relativi alla forma modale n◦ 3 (sinistra) e n◦ 4 (destra).
58 Problemi di verifica strutturali
Capitolo 5

Scelta del solutore aerodinamico

In questo Capitolo i modelli matematici ed i metodi numerici comunemente utilizzati per la


soluzione del problema aerodinamico sono presentati in §5.1, soffermandosi in particolare sul
metodo dei volumi finiti (FV).
Prendendo come riferimento il solutore aerodinamico commerciale FLUENT che costituisce
lo strumento di analisi forse più utilizzato nell’ambito dell’industria aeronautica, in §5.2 sono
definiti i requisiti che un solutore aerodinamico alternativo liberamente disponibile in rete deve
soddisfare. In base a tali considerazioni è possibile scegliere il solutore aerodinamico OpenFOAM,
le cui caratteristiche fondamentali sono presentate in §5.3. Per valutare le effettive capacità (in
termini di accuratezza dei risultati ed efficienza computazionale) dei solutori disponibili per la
simulazione numerica di correnti non stazionarie di fluido ideale, comprimibile, in regime di moto
transonico e supersonico, è opportuno affrontare il semplice problema di verifica descritto in §5.4.
Per creare e gestire griglie di calcolo 2D e 3D di complessità arbitraria, visualizzare ed
elaborare i risultati numerici sono utilizzati il generatore di griglie Gmsh ed il post-processore
ParaView, entrambe liberamente diponibili in rete e le cui caratteristiche fondamentali sono
presentate in §5.5.

5.1 Definizione del problema aerodinamico


Nell’ambito di problemi aeroelastici in regime di moto transonico e specialmente nelle fasi di
progetto e verifica, ovvero in situazioni in cui è richiesta la valutazione di un numero di con-
figurazioni elevato, il modello matematico delle equazioni di Eulero fornisce un buon compro-
messo tra accuratezza dei risultati ed efficienza computazionale per la simulazione numerica di
correnti a numeri di Reynolds Re elevati attorno a corpi di forma aerodinamica posti ad angoli
di incidenza moderati (per cui è lecito attendersi che il campo di moto non sia dominato dagli
effetti dinamici della viscosità).
Le equazioni di Eulero che governano la dinamica di una corrente non stazionaria di un fluido
ideale (non viscoso e non conducente) comprimibile in assenza di termini sorgente possono essere
scritte secondo un approccio euleriano in forma integrale conservativa nel seguente modo:
Z I
d
u dV + f(u) · n
b dS = 0, (5.1)
dt V S

dove V ⊆ RNd è il dominio spaziale del problema delimitato dal contorno S = ∂V ⊆ RNd −1 ,
b (x, t) è il versore normale al contorno S convenzionalmente assunto positivo se uscente.
mentre n

59
60 Scelta del solutore aerodinamico

La scrittura del problema aerodinamico in forma integrale consente di abbassare i requisiti di


regolaritá della soluzione, che può dunque comprendere discontinuità spaziali quali ad esempio
onde d’urto [1, 24, 25]. Il vettore delle variabili conservative u(x, t) e dei flussi inviscidi f(u)
sono definiti rispettivamente come:
   

 ρ 
 
 ρ v 


 
 
 

u= ρv , f= ρv ⊗ v + P [I ] , (5.2)

 
 
 


 Et   
 v (E t + P )  

dove ρ(x, t), v(x, t) e E t (x, t) sono la densità, la velocità e l’energia totale specifica per unità di
volume, P (x, t) è la pressione termodinamica, che per chiudere il problema deve essere espressa
in funzione delle variabili conservative mediante un’opportuna equazione di stato (ad esempio
la legge dei gas ideali), ed infine [ I ] ∈ RNd ×Nd è la matrice identità.
Affinché il problema (5.1) sia ben posto è necessario assegnare opportune condizioni iniziali
e condizioni al contorno, definendo rispettivamente il valore assunto dalla soluzione in tutto il
dominio V all’istante iniziale t = 0 ovvero u(x, 0) = u0 (x) ed il valore assunto dalla soluzione sul
bordo di inflow S inf low , che corrisponde alla porzione del contorno lungo cui β · n b < 0, dove β
è la velocità locale di advezione, ad ogni istante di tempo t ∈ T ovvero u(x ∈ S inf low , t) = b(t).
Ai fini della soluzione del problema aeroelastico è fondamentale calcolare il vettore delle
forze aerodinamiche generalizzate agenti sul sistema strutturale. Con riferimento alla relazione
(2.3) e ricordando che nell’ipotesi di fluido ideale i carichi aerodinamici sono costituiti esclusiva-
mente dalla pressione termodinamica P (x, t) agente nella direzione normale al contorno n b (x, t),
è possibile scrivere: I
{Qa (t)} = q∞ [ N (x) ]T Cp (x, t) n
b (x, t) dS, (5.3)
S

dove il coefficiente di pressione Cp (x, t) è convenzionalmente definito in funzione della pressione


termodinamica P∞ e della pressione dinamica q∞ della corrente asintotica nel seguente modo:

P (x, t) − P∞
Cp (x, t) = . (5.4)
q∞

5.1.1 Approssimazione numerica del problema


Per risolvere numericamente il problema aerodinamico è necessario discretizzare il sistema di
equazioni (5.1) nello spazio e nel tempo. Per quanto riguarda la discretizzazione spaziale è
possibile ricorrere al metodo dei volumi finiti (FV), che consiste nel collocare il problema scritto
in forma integrale in corrispondenza di un numero finito Na di celle di calcolo; più in particolare
è possibile distinguere la strategia node-centered, per cui la soluzione è collocata in corrispon-
denza di ogni nodo della griglia di calcolo, e la strategia cell-centered, per cui la soluzione è
collocata in corrispondenza del baricentro geometrico di ogni elemento della griglia di calcolo.
Se quest’ultima risulta più semplice dal punto di vista concettuale ed implementativo, la prima
strategia consente di utilizzare un numero di incognite generalmente inferiore e di imporre le
condizioni al contorno in modo immediato.
Viceversa per quanto riguarda la discretizzazione temporale è possibile ricorrere a metodi
espliciti ed impliciti, che garantiscono tempi di calcolo decisamente inferiori nonostante siano
più complessi dal punto di vista implementativo.
Requisiti del solutore aerodinamico 61

5.2 Requisiti del solutore aerodinamico


Per risolvere numericamente i problemi aerodinamici di interesse aeronautico, in ambito indu-
striale lo strumento di analisi forse più utilizzato è attualmente costituito dal solutore commer-
ciale FLUENT [43] prodotto dall’azienda Fluent Inc., il cui sviluppo è iniziato nel 1988 e continua
fino ad oggi con l’attuale versione FLUENT v.6.2.
L’obiettivo è trovare un solutore aerodinamico alternativo con capacità e prestazioni con-
frontabili e libero, ovvero gratuitamente disponibile in rete insieme al codice sorgente. Tale
solutore aerodinamico deve soddisfare i seguenti requisiti:

- capacità di gestire in modo flessibile griglie di calcolo 1D, 2D e 3D, di complessità arbi-
traria ed eventualmente ibride, create nella fase di pre-processing mediante un opportuno
generatore di griglia e memorizzate secondo un formato standard;

- capacità di discretizzare numericamente il problema aerodinamico mediante il metodo dei


volumi finiti (FV) secondo una strategia node-cetered o cell-centered, indipendentemente
dalla topologia della griglia di calcolo;

- capacità di modellare materiali o fluidi di lavoro differenti, ad esempio miscele di gas


comprimibili ideali e reali, eventualmente chimicamente reagenti e in non equilibrio ter-
modinamico, monofase e multifase;

- disponibilità di una libreria il più possibile ampia di condizioni al contorno, ad esempio


le condizioni al contorno di Riemann (asintotiche) e le condizioni al contorno di non
compenetrazione (in corrispondenza di un contorno solido);

- capacità di risolvere problemi aerodinamici stazionari e non stazionari di interesse in-


dustriale mediante un solutore esplicito o implicito, segregato (adatto per fluidi incom-
primibili e comprimibili in regime di moto subsonico) o accoppiato (adatto per fluidi
comprimibili in regime di moto transonico e supersonico);

- capacità di gestire in modo flessibile la memorizzazione dei risultati numerici secondo un


formato standard nella fase di post-processing;

- possibilità di aggiungere nuovi moduli e di interfacciare in modo flessibile il solutore


aerodinamico con altri programmi esterni;

- eventualmente disponibilità di moduli per la movimentazione e l’adattazione di griglia e


per il calcolo parallelo sia su calcolatori di architettura SMP (Symmetric Multi-Processor )
che su cluster di calcolatori opportunamente connessi in rete.

Il solutore aerodinamico OpenFAOM [50] sembra soddisfare i requisiti presentati; contraria-


mente al solutore aerodinamico FLUENT non sono tuttavia disponibili moduli per risolvere
numericamente il problema aerodinamico (5.1) secondo uno schema implicito ed accoppiato.
Nell’affrontare problemi aerodinamici di interesse industriale in regime di moto transonico tale
mancanza può comportare una scarsa affidabilità dei risultati ed una significativa dilatazione
dei tempi di calcolo; di conseguenza è innanzitutto fondamentale passare in rassegna i solutori
disponibili in OpenFOAM per valutare l’accuratezza della soluzione e l’efficienza di calcolo.
62 Scelta del solutore aerodinamico

5.3 Solutore aerodinamico OpenFOAM


Il solutore aerodinamico OpenFOAM (acronimo di Open Field Operation And Manipulation) è
sviluppato dall’azienda inglese OpenCFD Ltd. a partire dal 1993 con l’obiettivo di possedere
un software flessibile per la simulazione numerica mediante il metodo dei volumi finiti (FV)
di problemi multi-disciplinari di interesse industriale, concentrandosi in particolare su problemi
di interesse fluidodinamico (ad esempio correnti confinate); nel 2007 è stata rilasciata la versione
corrente OpenFOAM v.1.4.1 [50], ampiamente utilizzata in ambito scientifico ed industriale. Dal
2004 il solutore aerodinamico OpenFOAM è liberamente disponibile in rete insieme al codice
sorgente all’indirizzo web www.opencfd.co.uk secondo la licenza GNU General Public License
(GPL). Inoltre è accessibile un’ampia ma non completa documentazione, che comprende una
guida di utilizzo, una guida di programmazione ed una guida al codice sorgente generata au-
tomaticamente mediante il programma Doxygen. L’azienda OpenCFD ha scelto di distribuire
liberamente il programma OpenFOAM per le seguenti ragioni:

- creare una base di utenti il più possibile ampia per velocizzare il processo di individuazione
e correzione degli errori, di ottimizzazione dell’efficienza di calcolo e di validazione dei
risultati numerici e contemporaneamente per arricchire la documentazione ed il database
di problemi di verifica (attualmente insufficiente);

- favorire lo sviluppo cooperativo del programma, condividendo l’esperienza e le nuove fun-


zionalità eventualmente implementate dai singoli utilizzatori nel maggiore numero possi-
bile di campi applicativi. Effettivamente grazie alla particolare architettura molto flessi-
bile, il programma OpenFOAM è utilizzato in ambiti molto differenti tra loro, ad esempio
per risolvere problemi economici, problemi strutturali di elasticità lineare e problemi di
inseguimento lagrangiano di particelle.

Il solutore aerodinamico OpenFOAM è principalmente scritto in linguaggio C++ ; inoltre


per massimizzare l’efficienza computazionale porzioni significative del programma, specialmen-
te relative alle librerie di base, sono continuamente riscritte, procedendo parallellamente alla
continua evoluzione del linguaggio C++ . Infine per gestire in modo flessibile ed il più possibile
indipendente dall’architettura del calcolatore lo sviluppo di nuove funzionalità è disponibile la
routine wmake, scritta in linguaggio Bash.
L’architettura generale del solutore aerodinamico OpenFOAM si basa sul requisito fonda-
mentale che il programma sia costituito da un insieme di librerie scritte in linguaggio C++ ,
grazie a cui costruire applicazioni, ovvero solutori specificatamente progettati per risolvere nu-
mericamente il particolare problema in esame ed utilities progettate per svolgere operazioni
accessorie, ad esempio conversione della griglia di calcolo ed elaborazione dei risultati numerici.
Con riferimento alla Figura 5.1 è possibile dettagliare ulteriormente l’insieme delle librerie,
distinguendo in funzione del particolare ambito applicativo le seguenti categorie:

Metodi numerici ovvero tutte le librerie relative alla discretizzazione numerica del problema
nello spazio, ad esempio mediante il metodo dei volumi finiti (FV) implementato nella
libreria finiteVolume, e nel tempo, ad esempio mediante il metodo di Runge-Kutta (RK)
implementato nella libreria ODE;

Griglia di calcolo ovvero tutte le librerie relative alla creazione ed alla gestione delle strutture
dati per memorizzare le connettività (solo minimali) della griglia di calcolo (meshTools)
ed alla deformazione dinamica della griglia di calcolo (dynamicMesh);
Solutore aerodinamico OpenFOAM 63

OpenFOAM-1.4.1

applications Applicazioni

solvers Solutori

utilities Utilities

src Librerie

finiteVolume Metodi numerici

meshTools Griglia di calcolo

OpenFOAM Kernel

PStream Calcolo parallelo

thermophysicalModels Modelli fisici

wmake Compilatore

Figura 5.1: Schema a blocchi che riassume l’organizzazione del solutore aerodinamico OpenFOAM.

Kernel ovvero tutte le librerie relative alla definizione delle classi di minimo livello gerarchico,
ad esempio per la gestione dell’esecuzione del programma principale e per la memorizza-
zione delle variabili (OpenFOAM);

Calcolo parallelo ovvero tutte le librerie relative alla decomposizione della griglia di calcolo ed
alla parallelizzazione delle applicazioni sia su calcolatori di architettura SMP (Symmetric
Multi-Processor ) che su cluster di calcolatori opportunamente connessi in rete (PStream);

Modelli fisici ovvero tutte le librerie relative alla definizione dei possibili modelli termodinamici
per approssimare il reale comportamento del fluido di lavoro (thermophysicalModels)
e dei possibili modelli di turbolenza per approssimare il contributo degli sforzi di Reynolds
(turbulenceModels).

Per risolvere numericamente un problema aerodinamico mediante il programma OpenFOAM


innanzitutto è necessario creare il caso, ovvero l’insieme di informazioni che l’utente deve fornire
in ingresso al solutore; ipotizzando di utilizzare il sistema operativo Linux e di porsi all’inter-
no della cartella $MYPATH/TestProblem, dove $MYPATH corrisponde al percorso assoluto della
cartella di lavoro, è necessario creare le seguenti sotto-cartelle:

system all’interno della quale è necessario definire i files controlDict, fvSchemes e fvSolution
relativi rispettivamente all’intervallo di integrazione temporale, alla discretizzazione nume-
rica del problema mediante il metodo dei volumi finiti (FV) ed ai metodi diretti o iterativi
per la soluzione dei sistemi lineari.
64 Scelta del solutore aerodinamico

$MYPATH/TestProblem

system Metodi numerici

controlDict Discretizzazione tempo

fvSchemes Volumi finiti (FV)

fvSolution Sistemi lineari

constant Costanti

thermodynamicProperties Termodinamica

polyMesh Griglia di calcolo

points Nodi

faces Facce

owner Celle

neighbour Celle adiacenti

boundary Condizioni al contorno

0 Condizioni iniziali

P Pressione P

T Temperatura T

U Velocità v

Figura 5.2: Schema a blocchi che riassume l’organizzazione della cartella $MYPATH/TestProblem, ad
esempio per il solutore delle equazioni di Eulero rhoSonicFoam.

constant all’interno della quale è necessario definire il file thermodynamicProperties relativo


alle proprietà termodinamiche del fluido di lavoro (adottando ad esempio il modello ter-
modinamico di gas ideale politropico (PIG) è sufficiente conoscere la costante del gas R
ed il rapporto tra i calori specifici a pressione e volume costanti γ = CP /CV ); inoltre
all’interno della sotto-cartella polyMesh sono contenuti i files points, faces, owner,
neighbour e boundary relativi rispettivamente alle coordinate dei nodi, alla connettività
della griglia di calcolo ed infine al tipo di condizioni assegnate sul contorno.
0 (zero) all’interno della quale è necessario definire i files P, T, U relativi alle condizioni iniziali
ed al valore delle condizioni assegnate sul contorno rispettivamente delle variabili pressione
termodinamica P , temperatura T ed infine velocità v.
Durante l’esecuzione del programma sono inoltre create all’interno della cartella di lavoro le
sotto-cartelle relative ai risultati numerici, strutturate in modo perfettamente analogo alla sotto-
cartella 0 (zero) relativa alle condizioni inziali.
Valutazione dei solutori aerodinamici disponibili 65

5.4 Valutazione dei solutori aerodinamici disponibili


Per la simulazione numerica del campo di moto non stazionario attorno a corpi di forma aero-
dinamica nell’ipotesi di fluido ideale (non viscoso non conducente) comprimibile in regime di
moto transonico e supersonico sono disponibili esclusivamente i solutori cell-centered segregati
semi-impliciti rhoSonicFoam e rhopSonicFoam, che sono rispettivamente basati su uno schema
density-based e density-pressure-based (analogamente all’algoritmo segregato di FLUENT [43]);
inoltre è possibile utilizzare il solutore cell-centered segregato semi-implicito per le equazioni di
Navier-Stokes comprimibili laminari sonicFoam, a patto di annullare i coefficienti di trasporto.
Nell’affrontare problemi aerodinamici di interesse industriale in regime di moto transonico
l’avere a disposizione unicamente solutori segregati può comportare una scarsa affidabilità dei
risultati ed una significativa dilatazione dei tempi di calcolo; di conseguenza è innanzitutto fon-
damentale mettere alla prova i solutori rhoSonicFoam, rhopSonicFoam e sonicFoam affrontando
un problema di verifica molto semplice di cui sia nota la soluzione analitica. In questo modo,
oltre a quantificare l’accuratezza della soluzione numerica e l’efficienza computazionale di tali
solutori, è possibile illustrarne l’algoritmo e gli eventuali punti deboli.
Con riferimento alla Figura 5.3 si richiede di risolvere numericamente il problema di rifles-
sione di un urto obliquo inclinato di un angolo α1 = 29◦ incidente a partire dalla quota h = 1 m
su una parete solida di lunghezza L = 4.17 m. Il comportamento dell’aria è approssimato me-
diante il modello termodinamico di gas ideale politropico (PIG) con γ = 1.4 e R = 287.05 kgJK .
La soluzione analitica è riportata nella Tabella 5.1 e può essere distinta in tre regioni uniformi:
nota la soluzione nella regione 1 è possibile ricavare la soluzione nella regione
2 e
3 mediante
le relazioni dell’urto obliquo [34].

Regione
1 Regione
2 Regione
3

M [–] 2.900 2.378 1.989

P [Pa] 101325.000 216781.906 407387.756

T [K ] 288.150 362.647 437.436

θ [◦ ] 0.000 10.940 0.000

Tabella 5.1: Soluzione analitica del problema di riflessione dell’urto obliquo.


2 M2 , P2 , T2

v1 θ v2
h
θ v3
v2

1 M1 , P1 , T1
3 M3 , P3 , T3
α1 α2
1111111111111111111111111111111111111111111111111111
0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000
1111111111111111111111111111111111111111111111111111
0000000000000000000000000000000000000000000000000000
1111111111111111111111111111111111111111111111111111

Figura 5.3: Dominio di calcolo e soluzione analitica del problema di riflessione dell’urto obliquo.
66 Scelta del solutore aerodinamico

(A) Ne = 40 × 10 = 400 ∆t = 4·10−5 (B) Ne = 80 × 20 = 1600 ∆t = 2·10−5

(C) Ne = 160 × 40 = 6400 ∆t = 1·10−5 (D) Ne = 320 × 80 = 25600 ∆t = 5·10−6

Figura 5.4: Confronto tra le griglie di calcolo per il problema di riflessione dell’urto obliquo utilizzate
per valutare l’ordine di accuratezza spaziale e temporale dei solutori disponibili.

Per valutare l’ordine di accuratezza spaziale e temporale dei solutori disponibili è necessa-
rio calcolare l’errore relativo keh kL1 della soluzione numerica rispetto alla soluzione analitica
aumentando il numero di elementi Ne con cui discretizzare il dominio di calcolo e contempora-
neamente riducendo l’intervallo di integrazione temporale ∆t a pari numero di Courant Comax ;
nel caso in esame sono utilizzate le quattro griglie di calcolo A, B, C, D strutturate ad elementi
quadrangolari ortogonali (ottimali per il programma OpenFOAM) rappresentate in Figura 5.4
rispettivamente di passo hA = 1/10 m, hB = 1/20 m, hC = 1/40 m, hD = 1/80 m e gli intervalli
di integrazione temporale ∆tA = 4 · 10−5 s, ∆tB = 2 · 10−5 s, ∆tC = 1 · 10−5 s, ∆tD = 5 · 10−6 s.
Per valutare l’efficienza computazionale dei solutori disponibili è necessario calcolare il tempo
di esecuzione per una singola iterazione temporale CPUtime; nel caso in esame è utilizzato un
computer AMD64 3500+ con processore AMD Athlon 64 da 2.2 GHz di frequenza massima,
1 Gbyte di memoria RAM, 512 Kbyte di cache L2 e sistema operativo Linux con kernel aggiornato
alla versione 2.6.18.
Per tutti i solutori considerati sono di seguito riportati i risultati numerici relativi al campo
della pressione termodinamica P e della densità ρ, all’ordine di accuratezza spaziale e tem-
porale ed all’efficienza computazionale ottenuti lasciando invariati rispetto ai tutorials i files
controlDict, fvSchemes e fvSolution, ad eccezione eventualmente dei parametri relativi
all’algoritmo Pressure Implicit with Splitting Operators (PISO).

5.4.1 Solutore aerodinamico rhoSonicFoam


Il solutore aerodinamico cell-centered segregato semi-implicito rhoSonicFoam utilizza uno schema
density-based, nel quale la pressione termodinamica P è ricavata mediante l’equazione dei gas
ideali in funzione della densità ρ e della temperatura T , soluzioni delle equazioni rispettivamente
di continuità e di bilancio dell’energia totale per unità di volume.
Per illustrare meglio il funzionamento del solutore aerodinamico rhoSonicFoam e contempora-
neamente introdurre le classi ed i metodi per la soluzione di un sistema di equazioni differenziali
alle derivate parziali (PDE) mediante il programma OpenFOAM, sono di seguito riportate alcu-
ne sezioni del codice sorgente. È possibile osservare che ad ogni passo di integrazione temporale
le equazioni di continuità, bilancio della quantità di moto e conservazione dell’energia totale
per unità di volume sono risolte in cascata secondo un algoritmo segregato, senza implementa-
re alcun ciclo di correzione esterno per recuperare almeno parzialmente l’informazione relativa
all’accoppiamento del sistema di equazioni.
Valutazione dei solutori aerodinamici disponibili 67

rhoSonicFoam.C

Soluzione dell’equazione di continuità (scritta in forma conservativa e semi-implicita)


per la densità ρ(k+1) in funzione della velocità v (k) , aggiornamento della pressione termodi-
namica P (k+1) mediante la legge dei gas ideali.

solve
(
fvm::ddt(rho)
+ fvm::div(phiv, rho)
);
p = rho/(R*T);

Soluzione dell’equazione di bilancio della quantità di moto (scritta in forma conservativa e


semi-implicita) per la quantità di moto m(k+1) in funzione della velocità v (k) e della pressione
termodinamica P (k+1) , aggiornamento della velocità v (k+1) .

solve
(
fvm::ddt(rhoU)
+ fvm::div(phiv, rhoU)
==
- fvc::grad(p)
);
U = rhoU/rho;

Soluzione dell’equazione di bilancio dell’energia totale (scritta in forma conservativa e


semi-implicita) per l’energia totale specifica per unità di volume E t (k+1) in funzione delle velocità
v (k+1) e v (k) e della pressione termodinamica P (k+1) , aggiornamento della temperatura T (k+1) .

solve
(
fvm::ddt(rhoE)
+ fvm::div(phiv, rhoE)
==
- fvc::div(phiv2, p)
);
T = ( rhoE - 0.5*rho*magSqr(rhoU/rho) )/Cv/rho;

Figura 5.5: Soluzione numerica del problema C ottenuta mediante il solutore aerodinamico rhoSonicFoam
relativa al campo della pressione termodinamica P ; inoltre per evidenziare la topologia della corrente sono
rappresentate 20 isolinee del campo della densità ρ equispaziate tra il valore minimo ρmin = 1.225 kg/m3
ed il valore massimo ρmax = 3.250 kg/m3 della soluzione analitica.
68 Scelta del solutore aerodinamico

× 10−3 × 10−3
100 100

10 10 O(∆t)
O(h)
||eh||L1 [−]

||eh||L1 [−]
1 1

O(h2) O(∆t2)
0.1 0.1
0.001 0.01 0.1 1 1 10 100
h[m] ∆t [ s ] × 10−6

Figura 5.6: Errore relativo keh kL1 della soluzione numerica rispetto alla soluzione analitica relativa al
campo della pressione temodinamica P (•), temperatura T (•) e velocità v (•) al diminuire del passo
di griglia h (sinistra) e dell’intervallo di integrazione temporale ∆t (destra).

× 10−2
100

CPU time [ s ]

Ne EE CN
10
CPUtime [ s ]

400 4.71 · 10−3 6.33 · 10−3


O(Ne)
1600 1.06 · 10−2 1.34 · 10−2
1
6400 4.25 · 10−2 5.13 · 10−2

25600 2.34 · 10−1 2.96 · 10−1


O(Ne2)
0.1
100 1000 10000 100000
Ne

Figura 5.7: Tempo di esecuzione per una singola iterazione temporale CPUtime relativo agli schemi
di discretizzazione temporale Eulero Esplicito () e Crank Nicholson () all’aumentare del numero di
elementi della griglia di calcolo Ne .

5.4.2 Solutore aerodinamico rhopSonicFoam


Il solutore aerodinamico cell-centered segregato semi-implicito rhopSonicFoam utilizza uno sche-
ma pressure-density-based, nel quale la pressione termodinamica corretta P è ricavata mediante
un’equazione di Poisson risultante dalla combinazione dell’equazione di bilancio della quantità
di moto e dell’equazione di continuità.
Per illustrare meglio il funzionamento del solutore aerodinamico rhopSonicFoam e contempo-
raneamente introdurre le classi ed i metodi per la soluzione di un sistema di equazioni differen-
ziali alle derivate parziali (PDE) mediante il programma OpenFOAM, sono di seguito riportate
alcune sezioni del codice sorgente. È possibile osservare che ad ogni k-esimo passo di integrazione
temporale le equazioni di continuità, bilancio della quantità di moto e conservazione dell’ener-
gia totale per unità di volume sono risolte in cascata secondo una strategia di tipo segregato.
Valutazione dei solutori aerodinamici disponibili 69

A differenza del caso precedente sono implementati un ciclo di correzione esterno per recuperare
almeno parzialmente l’informazione relativa all’accoppiamento del sistema di equazioni ed un
ciclo di correzione interno per correggere la pressione termodinamica P secondo l’algoritmo
Pressure Implicit with Splitting Operators (PISO) [21, 43], opportunamente esteso al caso
comprimibile nonostante esso sia generalmente utilizzato solo nel caso incomprimibile.

rhopSonicFoam.C

Ciclo di correzione esterno per recuperare l’accoppiamento delle equazioni del problema.
for ( int outerCorr = 0; outerCorr < nOuterCorr; outerCorr++ )
{

Soluzione della equazione di continuità (scritta in forma conservativa e semi-implicita)


per la densità intermedia ρ(k+1/2) in funzione della velocità v(k) .
solve
(
fvm::ddt(rho)
+ mvConvection.fvmDiv(phiv, rho)
);

Soluzione dell’equazione di bilancio della quantità di moto (scritta in forma conservativa


e semi-implicita) per la quantità di moto intermedia m(k+1/2) in funzione della velocità v (k)
e della pressione termodinamica P (k) .
solve
(
fvm::ddt(rhoU)
+ fv::gaussConvectionScheme<vector>(mesh, phiv, rhoUScheme).fvmDiv(phiv, rhoU)
==
- fvc::grad(p)
);

Soluzione dell’equazione di bilancio dell’energia totale (scritta in forma conservativa


e semi-implicita) per l’energia totale specifica per unità di volume E t (k+1) in funzione della
velocità v(k) e della pressione termodinamica P (k) , aggiornamento della temperatura T (k+1)
e della pressione termodinamica intermedia P (k+1/2) mediante la legge dei gas ideali.
solve
(
fvm::ddt(rhoE)
+ mvConvection.fvmDiv(phiv, rhoE)
==
- mvConvection.fvcDiv(phiv, p)
);
T = ( rhoE - 0.5*rho*magSqr(rhoU/rho) )/Cv/rho;
p = rho*R*T;

Ciclo di correzione interno secondo l’algoritmo Pressure Implicit with Splitting Operators
(PISO) [21, 43], opportunamente esteso al caso comprimibile.
for ( int corr=0; corr < nCorr; corr++ )
{
70 Scelta del solutore aerodinamico

Soluzione dell’equazione di Poisson per la pressione termodinamica corretta P (k+1) , aggior-


namento della densità ρ(k+1) mediante l’equazione dei gas ideali e della quantità di moto m(k+1)
sfruttando lo splitting degli operatori.

fvScalarMatrix pEqn
(
fvm::ddt(psi, p)
+ mvConvection.fvcDiv(phiv, rho)
+ fvc::div(phiGradp)
- fvm::laplacian(rrhoUAf, p)
);
pEqn.solve();
rho = p/(R*T);
rhoU = HbyA - rrhoUA*fvc::grad(p);
rhoU.correctBoundaryConditions();
}
}

Figura 5.8: Soluzione numerica del problema C ottenuta con il solutore aerodinamico rhopSonicFoam
relativa al campo della pressione termodinamica P ; inoltre per evidenziare la topologia della corrente sono
rappresentate 20 isolinee del campo della densità ρ equispaziate tra il valore minimo ρmin = 1.225 kg/m3
ed il valore massimo ρmax = 3.250 kg/m3 della soluzione analitica.

× 10−3 × 10−3
100 100

10 10 O(∆t)
O(h)
||eh||L1 [−]

||eh||L1 [−]

1 1

O(h2) O(∆t2)
0.1 0.1
0.001 0.01 0.1 1 1 10 100
h[m] ∆t [ s ] × 10−6

Figura 5.9: Errore relativo keh kL1 della soluzione numerica rispetto alla soluzione analitica relativa al
campo della pressione temodinamica P (•), temperatura T (•) e velocità v (•) al diminuire del passo
di griglia h (sinistra) e dell’intervallo di integrazione temporale ∆t (destra).
Valutazione dei solutori aerodinamici disponibili 71

× 10−2
100

CPU time [ s ]

Ne EE CN
10
CPUtime [ s ]

400 1.38 · 10−2 3.13 · 10−2


O(Ne)
1600 3.19 · 10−2 7.00 · 10−2
1
6400 1.39 · 10−1 2.41 · 10−1

25600 4.57 · 10−1 9.98 · 10−1


O(Ne2)
0.1
100 1000 10000 100000
Ne

Figura 5.10: Tempo di esecuzione per una singola iterazione temporale CPUtime relativo agli schemi
di discretizzazione temporale Eulero Esplicito () e Crank Nicholson () all’aumentare del numero di
elementi della griglia di calcolo Ne .

5.4.3 Solutore aerodinamico sonicFoam


Il solutore aerodinamico cell-centered segregato semi-implicito sonicFoam è progettato per risol-
vere numericamente correnti non stazionarie di fluido comprimibile viscoso, ma non conducen-
te: di conseguenza per ricondursi al modello matematico delle equazioni di Eulero è sufficiente
imporre l’annullamento della viscosità dinamica µ.
Per illustrare meglio il funzionamento del solutore aerodinamico sonicFoam e contempora-
neamente introdurre le classi ed i metodi per la soluzione di un sistema di equazioni differenziali
alle derivate parziali (PDE) mediante il programma OpenFOAM, sono di seguito riportate alcu-
ne sezioni del codice sorgente. È possibile osservare che ad ogni passo di integrazione temporale
le equazioni di continuità, bilancio della quantità di moto e dell’energia sono risolte in cascata
secondo una strategia di tipo segregato; inoltre le equazioni di bilancio della quantità di moto
e dell’energia sono scritte in forma non conservativa rispettivamente in funzione delle variabili
primitive velocità v ed energia interna specifica per unità di massa e. A differenza del caso
precedente, non è implementato un ciclo di correzione esterno per recuperare almeno parzial-
mente l’informazione relativa all’accoppiamento del sistema di equazioni, ma solo un ciclo di
correzione interno per correggere la pressione termodinamica P secondo l’algoritmo Pressure
Implicit with Splitting Operators (PISO) [21, 43], opportunamente esteso al caso comprimibile
nonostante esso sia generalmente utilizzato solo nel caso incomprimibile.

sonicFoam.C

Soluzione della equazione di continuità (scritta in forma conservativa e semi-esplicita)


per la densità ρ(k+1/2) in funzione della quantità di moto m(k) .
solve
(
fvm::ddt(rho)
+ fvc::div(phi)
);
72 Scelta del solutore aerodinamico

Soluzione dell’equazione di bilancio della quantità di moto (scritta in forma semi-implicita


ma non conservativa) per la velocità intermedia v (k+1/2) in funzione della densità ρ(k+1/2) ,
della quantità di moto m(k) e della pressione termodinamica P (k) .

solve
(
fvm::ddt(rho, U)
+ fvm::div(phi, U)
- fvm::laplacian(mu, U)
==
- fvc::grad(p)
);

Soluzione dell’equazione di bilancio dell’energia interna (scritta in forma semi-implicita


ma non conservativa) per l’energia interna specifica per unità di massa e(k+1) in funzione della
densità ρ(k+1/2) , della quantità di moto m(k) e della pressione termodinamica P (k) , aggiorna-
mento della temperatura T (k+1) mediante la legge dei gas ideali.

solve
(
fvm::ddt(rho, e)
+ fvm::div(phi, e)
- fvm::laplacian(mu, e)
==
- p*fvc::div(phi/fvc::interpolate(rho))
+ mu*magSqr(symm(fvc::grad(U)))
);
T = e/Cv;

Ciclo di correzione interno secondo l’algoritmo Pressure Implicit with Splitting Operators
(PISO) [21, 43], opportunamente esteso al caso comprimibile.

for (int corr=0; corr<nCorr; corr++)


{

Soluzione dell’equazione di Poisson per la pressione termodinamica corretta P (k+1) , aggior-


namento della densità ρ(k+1) mediante l’equazione dei gas ideali e della velocità v (k+1) sfruttando
lo splitting degli operatori. Inoltre esiste un ulteriore ciclo di correzione interna per aumentare la
robustezza del programma a fronte di elementi della griglia di calcolo fortemente non ortogonali.

fvScalarMatrix pEqn
(
fvm::ddt(psi, p)
+ fvm::div(phid, p, "div(phid,p)")
- fvm::laplacian(rho*rUA, p)
);
pEqn.solve();
rho = p/(R*T);
U = U - rUA*fvc::grad(p);
U.correctBoundaryConditions();
}
Valutazione dei solutori aerodinamici disponibili 73

Figura 5.11: Soluzione numerica del problema C ottenuta mediante il solutore aerodinamico sonicFoam
relativa al campo della pressione termodinamica P ; inoltre per evidenziare la topologia della corrente sono
rappresentate 20 isolinee del campo della densità ρ equispaziate tra il valore minimo ρmin = 1.225 kg/m3
ed il valore massimo ρmax = 3.250 kg/m3 della soluzione analitica.

× 10−3 × 10−3
100 100

10 10 O(∆t)
O(h)
||eh||L1 [−]

||eh||L1 [−]

1 1

O(h2) O(∆t2)
0.1 0.1
0.001 0.01 0.1 1 1 10 100
h[m] ∆t [ s ] × 10−6

Figura 5.12: Errore relativo keh kL1 della soluzione numerica rispetto alla soluzione analitica relativa al
campo della pressione temodinamica P (•), temperatura T (•) e velocità v (•) al diminuire del passo
di griglia h (sinistra) e dell’intervallo di integrazione temporale ∆t (destra).

× 10−2
100

CPU time [ s ]

Ne EE CN
10
CPUtime [ s ]

400 1.75 · 10−2 1.67 · 10−2


O(Ne)
1600 3.86 · 10−2 4.01 · 10−2
1
6400 2.25 · 10−1 1.55 · 10−1

25600 7.43 · 10−1 5.31 · 10−1


O(Ne2)
0.1
100 1000 10000 100000
Ne

Figura 5.13: Tempo di esecuzione per una singola iterazione temporale CPUtime relativo agli schemi
di discretizzazione temporale Eulero Esplicito () e Crank Nicholson () all’aumentare del numero di
elementi della griglia di calcolo Ne .
74 Scelta del solutore aerodinamico

5.4.4 Analisi dei risultati


Esaminando i risultati numerici relativi al campo della pressione termodinamica P e della
densità ρ rappresentati nelle Figure 5.5, 5.8 e 5.11 è innanzitutto possibile osservare la presenza
di oscillazioni spurie significative di natura numerica soprattutto nella regione 3 a valle dell’urto
riflesso. Mentre l’urto incidente è catturato abbastanza bene da tutti i solutori considerati, tali
oscillazioni spurie impediscono di risolvere correttamente l’urto riflesso, specialmente per quanto
riguarda il solutore sonicFoam.
Inoltre le Figure 5.6, 5.9 e 5.12 relative all’errore keh kL1 della soluzione numerica rispetto
alla soluzione analitica mostrano che i solutori rhoSonicFoam e rhopSonicFoam convergono sia
nello spazio che nel tempo con un’ordine di accuratezza sublineare, mentre il solutore sonicFoam
non converge né nello spazio né nel tempo. Più in particolare assumendo che l’errore relativo
keh kL1 possa essere espresso secondo la seguente legge di potenza:
keh kL1 ≃ A hp + B ∆tq , (5.5)
che in scala logaritmica corrisponde ad un piano nello spazio h − ∆t − keh kL1 , è possibile
determinare i coefficienti A e B e gli ordini di accuratezza sperimentali p e q riportati in
Tabella 5.2 costruendo il piano di regressione ai minimi quadrati dei dati numerici raccolti, come
illustrato in [13]. Sono inoltre riportati i coefficienti di correlazione Rh e R∆t che consentono di
misurare la qualità dei risultati ottenuti.

Solutori A p Rh B q R∆t

rhoSonicFoam 0.267 0.543 0.998 0.010 0.091 0.450

rhopSonicFoam 0.425 0.765 0.998 26.79 0.601 0.964

sonicFoam 0.048 −0.045 −0.221 0.021 −0.022 −0.173

Tabella 5.2: Coefficienti A e B, ordini di accuratezza sperimentali p e q ed infine coefficienti di corre-


lazione Rh e R∆t del piano di regressione ai minimi quadrati dei dati numerici raccolti utilizzando come
indicatore la pressione termodinamica P .

Esaminando le Figure 5.7, 5.10 e 5.13 relative all’efficienza computazionale è possibile


osservare che il solutore rhoSonicFoam è il meno oneroso, seguito dai solutori sonicFoam e
rhopSonicFoam, il cui elevato costo computazionale può essere imputato al ciclo di correzione
esterno, per recuperare almeno parzialmente l’informazione relativa all’accoppiamento delle
equazioni del sistema, e di correzione interno, per correggere la pressione termodinamica P
secondo l’algoritmo Pressure Implicit with Splitting Operators (PISO).
In conclusione i solutori aerodinamici disponibili rhoSonicFoam, rhopSonicFoam e sonicFoam
sono caratterizzati da un’accuratezza spaziale e temporale e da un’efficienza computazionale non
totalmente soddisfacenti nell’affrontare un problema di verifica molto semplice; di conseguenza
è ragionevole attendersi (ed è stato verificato sperimentalmente) che tali solutori non siano in
grado di risolvere problemi aerodinamici più impegnativi e interessanti in ambito industriale.
Infatti l’architettura del programma OpenFOAM, ottimale in regime di moto subsonico per
risolvere in cascata le equazioni di governo del sistema aerodinamico secondo un algoritmo
segregato, è inadatta in regime di moto transonico e supersonico [43]; inoltre per riprodurre
accuratamente l’evoluzione non stazionaria di eventuali fenomeni d’urto è fondamentale scrivere
il problema sempre in forma conservativa.
Generatore di griglie Gmsh e post–processore ParaView 75

5.5 Generatore di griglie Gmsh e post–processore ParaView


Il generatore di griglie Gmsh è sviluppato in linguaggio C++ da C. Geuzaine in collaborazione
con J. F. Remacle presso le Università di Liége e di Louvain a partire dal 1997 con l’obiettivo
di sviluppare un generatore di griglie non strutturate per applicazioni in ambito accademico.
Nel 2008 è stata rilasciata la versione corrente Gmsh v.2.2 [7] attualmente poco utilizzata
in ambito industriale, contrariamente al programma commerciale concorrente GAMBIT v.2.2
[44], a causa della non ancora totalmente soddisfacente efficienza computazionale, liberamente
disponibile in rete insieme al codice sorgente, ad un’ampia e dettagliata documentazione e a
numerosi casi test all’indirizzo web www.geuz.org/gmsh secondo la licenza GNU General Public
Licence (GPL).
Per generare la griglia di calcolo è innanzitutto necessario definire i punti, le linee, le super-
fici ed i volumi che compongono la geometria sia ricorrendo al modulo interno Geometry, che
importando modelli CAD memorizzati nei formati standard IGES e STEP. La geometria cosı̀
costruita può essere successivamente discretizzata in elementi tetraedrici conformi scegliendo tra
l’algoritmo interno (ancora in versione sperimentale) e gli algoritmi implementati nei generatori
di griglia concorrenti liberamente disponibili in rete Netgen [36] e TetGen [38]. La griglia di
calcolo può essere infine esportata nei formati standard binario o di testo MSH, IDEAS, MEDIT,
Plot3D, STL e VRML.
Il post-processore ParaView è sviluppato in linguaggio C++ dai centri di ricerca e dall’azien-
da statunitensi Sandia, Los Alamos National Laboratory e Kitware Inc. a partire dal 2000 con
l’obiettivo di creare un visualizzzatore scientifico, interattivo e parallelo integrato con numerosi
strumenti per l’elaborazione dei risultati e basato sulla libreria grafica VTK (Visual Tool Kit).
Nel 2007 è stata rilasciata la corrente versione ParaView v.3.0 [51] ampiamente utilizzata in
ambito scientifico ed industriale e, contrariamente al programma commericiale concorrente
Tecplot v.360 [46], gratuitamente disponibile in rete insieme al codice sorgente, ad un’ampia
e dettagliata documentazione e a numerosi casi test all’indirizzo web www.paraview.org secondo
la licenza GNU General Public Licence (GPL).
I risultati possono essere importati e esportati in numerosi formati standard binari o di
testo, quali VTK, EnSight ed EnSightGold, HDF, Plot3D e STL; grazie alla disponibilità del
codice sorgente l’utente può inoltre implementare moduli aggiuntivi per la lettura e scrittura in
formati differenti.

Figura 5.14: Esempio di utilizzo del generatore di griglie Gmsh (sinistra) e del post-processore
ParaView (destra).
76 Scelta del solutore aerodinamico
Capitolo 6

Progetto ed implementazione
del solutore aerodinamico

Dal momento che i solutori aerodinamici disponibili rhoSonicFoam, rhopSonicFoam e sonicFoam


non sono del tutto soddisfacenti per affrontare problemi aerodinamici impegnativi in regime di
moto transonico e supersonico, si sceglie di progettare e sviluppare sempre in linguaggio C++
un nuovo solutore aerodinamico chiamato AeroFoam, utilizzando solo le librerie del programma
OpenFOAM per la gestione delle strutture dati relative alla griglia di calcolo ed alla soluzione
numerica e per le fasi di pre/post-processing.
Innanzitutto in §6.1 il problema aerodinamico è discretizzato nello spazio mediante il metodo
dei volumi finiti (FV), passando cosı̀ da un sistema di equazioni differenziali alle derivate parziali
(PDE) ad un sistema di equazioni differenziali ordinarie (ODE). Quindi in §6.2 sono presentati
alcuni schemi storicamente importanti per esplicitare il vettore dei flussi numerici; tali schemi
sono tuttavia caratterizzati da un ordine di accuratezza al massimo lineare con il passo di griglia
ed è dunque necessario ricorrere agli schemi per l’alta risoluzione limitati descritti in §6.4 e §6.5
per catturare correttamente eventuali dicontinuità della soluzione numerica, quali onde d’urto.
Successivamente in §6.6 sono presentati i possibili metodi (espliciti) per la discretizzazione
temporale del sistema di equazioni differenziali ordinarie (ODE) risultante, soffermandosi in
particolare sullo studio dei metodi Runge-Kutta (RK) modificati per soddisfare la condizione
Total Variation Diminishing (TVD). Quindi in §6.7 sono descritte le modalità per imporre
numericamente le condizioni iniziali ed al contorno (sia asintotiche che sulla superficie del corpo).
Infine in §6.8 il solutore aerodinamico sviluppato AeroFoam è messo alla prova, affrontando
nuovamente il semplice problema di verifica descritto in §5.4 e confrontandone le prestazioni
relative all’ordine di accuratezza spaziale e temporale della soluzione numerica ed all’efficienza
computazionale con quelle dei solutori aerodinamici disponibili rhoSonicFoam, rhopSonicFoam e
sonicFoam.

6.1 Discretizzazione spaziale


Innanzitutto è necessario discretizzare il dominio di calcolo spaziale V ⊆ RNd delimitato dal
contorno S = ∂V ⊆ RNd −1 ; indicando con Vh una rappresentazione approssimata del dominio
di calcolo V, tale per cui il contorno Sh = ∂Vh sia formato da un insieme di soli poligoni piani,
è possibile associarvi una griglia di calcolo o mesh Mh mediante una decomposizione in un
insieme di Nv volumi finiti poliedrici Ωi che soddisfino le seguenti proprietà [13]:

77
78 Progetto ed implementazione del solutore aerodinamico

Sh = ∂Vh
00000000
11111111
1111111
0000000
0000000
1111111
00000000
11111111
000000000000
111111111111
000000000000
111111111111
0000000
1111111
00000000
11111111
0000000
1111111
00000000
11111111
0000000
1111111
00000000
11111111
S = ∂V
000000000000
111111111111 0000000
1111111
00000000
11111111
000000000000
111111111111 0000000
1111111
00000000
11111111
0000000
1111111
00000000
11111111
000000000000
111111111111 0000000
1111111
00000000
11111111
000000000000
111111111111
000000000000
111111111111 0000000
1111111
00000000
11111111
000000000000
111111111111 0000000
1111111
00000000
11111111
000000000000
111111111111 0000000
1111111
00000000
11111111
0000000
1111111
00000000
11111111
000000000000
111111111111 00000000000000
11111111111111
0000000
1111111 0
1
00000000
11111111
000000000000
111111111111
000000000000
111111111111 00000000000000
11111111111111
0000000
1111111 0
1
000000000000
111111111111 00000000000000
11111111111111
0000000
1111111 0
1
000000000000
111111111111 00000000000000
11111111111111
0000000
1111111 0
1
000000000000
111111111111
000000000000
111111111111
000000000000
111111111111
iΩ Ω 00000000000000
11111111111111
0000000
1111111
0000000
1111111
j 0000000
1111111
0000000
1111111
0
1
0000000000000
1111111111111
00000000000000
11111111111111
0
1
0000000000000
1111111111111
0000000
1111111 0
1
0000000000000
1111111111111
0000000000
1111111111
000000000000
111111111111
0000000000
11111111110000000000
11111111110000000
1111111 0
1
0000000000000
1111111111111
00000000001111111
1111111111
0001111111111
111
0000000000
1111111111
000
11100000000000000000 0
1
0000000000000
1111111111111
0000000000
1111111111 0000000
1111111
00000000001111111
1111111111
0001111111111
111 0
1
0000000000000
1111111111111
0
1
0000000
0000000000000
1111111111111
0000000000
1111111111
000
111
0000000000
1111111111
000
111
0000000000
1111111111
111
0000000000
1111111111
Γ
0000000000
0000000000
1111111111
ij
1111111111
0001111111111
0000000000
b
n
0000000
1111111
ij
0000000
1111111
0000000
0
1
0000000000000
1111111111111
0
1
0000000000000
1111111111111
00000000001111111 0
1
0000000000000
1111111111111
000
111
0000000000
1111111111 0000000
1111111 0
1
0000000000000
1111111111111
00000000001111111
1111111111
0001111111111
111
00000000
11111111
0000000000
1111111111
000
111
00000000
11111111 00000000000000000 0
1
000
111
00000000
11111111 0000000000
11111111110000000
1111111
0000000
1111111
0001111111111
111
00000000
11111111 0000000000
00000000001111111
11111111110000000
000
111
00000000
11111111
0001111111111
111
00000000
11111111 0000000
1111111
00000000001111111
1111111111
000
111
00000000
11111111 00000000000000000
000
111
00000000
11111111 00000000001111111
11111111110000000
0000000
1111111
000
111
00000000
11111111
000
111
00000000
11111111
000
111
00000000
11111111
000
111
00000000
11111111
000
111
00000000
11111111
000
111
00000000
11111111
000
111
00000000
11111111

Figura 6.1: Esempio di una griglia di calcolo triangolare Mh .


[
- Vh = Ωi , dove V h è la chiusura del dominio approssimato Vh ;
Ωi ∈Mh
◦ ◦
- Ωi 6= ∅ ∀ Ωi ∈ Mh dove Ωi = Ωi \∂Ωi , ovvero non esistono volumi finiti di misura nulla;
◦ ◦
- Ωi ∩ Ωj = ∅ ∀ Ωi , Ωj ∈ Mh con Ωi 6= Ωj , ovvero i due volumi finiti differenti Ωi e Ωj
non possono sovrapporsi internamente;
- se Γij = Ωi ∩ Ωj 6= ∅ con Ωi 6= Ωj allora Γij deve corrispondere ad un nodo, ad un intero
lato o ad un’intera faccia comune ai volumi finiti Ωi e Ωj , ovvero la griglia deve essere
conforme.
Infine può essere utile definire l’operatore misura | · |, che ad esempio applicato ad un volume
finito Ωi ne restituisce il volume |Ωi | ed applicato ad una faccia Γij ne restituisce l’area |Γij |.
Nell’ambito del programma OpenFOAM le griglie di calcolo sono memorizzate e gestite
mediante strutture dati (minimali) ed assumendo che le incognite del problema siano collo-
cate in corrispondenza del baricentro geometrico delle celle di calcolo. Per quanto riguarda il
metodo dei volumi finiti (FV) questo si traduce nel dovere utilizzare una strategia cell-centered,
per cui l’incognita del problema diventa il vettore delle variabili conservative u(x, t) mediato in
corrispondenza del singolo volume finito della griglia di calcolo, ovvero:
Z
1
Ui (t) = u(x, t) dV. (6.1)
|Ωi | Ωi
Indicando con Γi = {Γi1 , Γi2 , . . . , ΓiNf } l’insieme delle Nf facce che delimitano l’i-esimo volume
finito Ωi , è possibile approssimare il contributo del vettore delle funzioni di flusso f(u) attraverso
la j-esima interfaccia Γij definendo il seguente vettore dei flussi numerici:
Z
1
Fij (t) = f(u) · n
b (x, t) dS. (6.2)
|Γij | Γij
Collocando infine il problema aerodinamico scritto in forma integrale conservativa (5.1) in cor-
rispondenza di ogni i-esima cella di calcolo Ωi , è possibile ricavare il seguente sistema di Nv
equazioni differenziali ordinarie (ODE):
Nf
dUi 1 X
+ |Γij | Fij = 0 i = 1, 2, . . . , Nv . (6.3)
dt |Ωi |
j=1
Flussi numerici del primo ordine 79

6.2 Flussi numerici del primo ordine


Per potere risolvere numericamente il sistema di equazioni differenziali ordinarie (ODE) (6.3)
è innanzitutto necessario esplicitare il vettore dei flussi numerici Fij (t) in funzione dei vet-
tori delle variabili conservative mediate Ui (t) ed Uj (t) noti in corrispondenza del baricentro
geometrico dei volumi finiti Ωi ed Ωj adiacenti all’interfaccia Γij .
Una prima strategia possibile consiste nel esplicitare il vettore dei flussi numerici Fij (t)
mediante un’approssimazione centrata accurata al secondo ordine [25, 30], analogamente ad uno
dei possibili schemi di discretizzazione spaziale dei termini convettivi disponibili nel programma
OpenFOAM [50]:
f(Ui ) + f(Uj )
Fij (t, Ui , Uj , n
b ij ) = ·n
b ij ; (6.4)
2
tuttavia tale schema molto semplice dal punto di vista implementativo può produrre oscillazioni
spurie di natura numerica, particolarmente significative in prossimità di eventuali discontinuità
spaziali della soluzione quali ad esempio onde d’urto (come verificato sperimentalmente in §5.4).
Di conseguenza storicamente sono state proposte espressioni alternative monotone, ma accu-
rate al primo ordine del vettore dei flussi numerici Fij (t): alcune basate su solide basi teoriche,
caratterizzate da un ambito di validità molto ampio, più complesse ed onerose dal punto di
vista implementativo e dei tempi di calcolo (ARS), ed altre viceversa di natura sostanzialmente
empirica, ma notevolmente efficienti in un ambito di validità ristretto (AUSM, CUSP, HLL/C).
Per implementare tali espressioni alternative in modo semplice ed efficiente (nel caso generale
di griglie di calcolo non strutturate e non ortogonali) è conveniente sfruttare la proprietà di
invarianza alle rotazioni delle equazioni di Eulero ed introdurre, oltre al sistema di riferimento
globale G (X − Y − Z), un sistema di riferimento locale L (x − y − z) centrato in corrispondenza
del baricentro geometrico di ogni interfaccia Γij ed il cui versore b ex è sempre allineato con il
versore normale all’interfaccia n b ij , come illustrato in Figura 6.2. In tale sistema di riferimento
locale è possibile dimostrare [13] che il problema multidimensionale (2.9) può essere riscritto in
modo formalmente identico ad un problema monodimensionale, ovvero:
∂u ∂f x
+ =0 ∀(x, t) ∈ V × T , (6.5)
∂t ∂x
b ij = {ρ u, ρ u2 + P, ρ u v, ρ u w, u (E t + P )} è il vettore delle funzioni
dove f x (u) = f(u) · n
di flusso proiettato nella direzione normale all’interfaccia Γij . La trasformazione lineare che
consente di passare dal sistema di riferimento globale G (X − Y − Z) al sistema di riferimento
locale L (x − y − z) può essere descritta mediante il seguente tensore di rotazione:

nG
R(b ij )
y, v
L x, u
b ij
n
Ωi
Y, v Y
z, w
Γij
G X, v X

Z, v Z

Figura 6.2: Sistema di riferimento globale G (X − Y − Z) e sistema di riferimento locale L (x − y − z).


80 Progetto ed implementazione del solutore aerodinamico

 
1 0 0 0 0
 
 
 0 n
bX n Y
bij n Z
bij 0 
 ij 
 
 
 n
bYij n
bX 
 ij
0 
nGij ) =  0 − q
R(b q 0 , (6.6)
 1 − (bnZij )2 1 − (b nZij )2 
 
 q 
 n
bX · n bZ n
bYij · n
bZij 
 0 − q ij ij −q nZij )2
1 − (b 0 
 
 1 − (bnZij )2 1 − (b nZij )2 
0 0 0 0 1
dove nb Gij = (b
nXij , n
bYij , n
bZij ) sono le componenti del versore normale all’interfaccia Γij valutate nel
sistema di riferimento globale G (X − Y − Z). Ovviamente è necessario trattare separatamente
il caso particolare in cui il versore normale all’interfaccia n b ij sia allineato con il versore b
eZ del
sistema di riferimento globale.
In corrispondenza di ogni interfaccia Γij è allora possibile esprimere in modo semplice
il vettore dei flussi numerici FL ij (t) nel nuovo sistema di riferimento locale L (x − y − z)
in funzione dei vettori delle variabili conservative mediate UL i (t) = RUi (t) e Uj (t) = RUj (t);
G L G

successivamente per determinare il vettore dei flussi numerici Fij (t) nel sistema di riferimento
G

globale G (X − Y − Z) è sufficiente applicare la trasformazione inversa R−1 = RT , ovvero:

FGij = R−1 FL
ij ( R Ui , R Uj ).
G G
(6.7)

6.2.1 Approximate Riemann Solver (ARS)


L’Approximate Riemann Solver (ARS) di Roe [24, 25] si basa su una linearizzazione locale delle
equazioni di governo in corrispondenza di ogni interfaccia Γij tra le celle di calcolo Ωi ed Ωj ,
ovvero in forma differenziale:
∂u b ∂u
+A =0 ∀(x, t) ∈ V × T . (6.8)
∂t ∂x
Il problema di Riemann definito dal sistema di equazioni (6.8) e dalle condizioni al contorno in
generale discontinue ui ed uj a cavallo dell’interfaccia Γij può essere quindi risolto esattamente.
La matrice Ab = A(bu) = ∂f(u)/∂u|bu · nb ij ∈ RNd +2×Nd +2 è la matrice Jacobiana proiettata del
vettore delle funzioni di flusso, valutata in corrispondenza di uno stato b u intermedio tra gli stati
ui ed uj a priori incognito, ma che può essere determinato ricordando le proprietà seguenti:

1. quando la discontinuità tende ad attenuarsi, ovvero ui → u ed uj → u, la matrice A b deve


tendere alla matrice Jacobiana proiettata del vettore delle funzioni di flusso valutata in u
b → A(u);
ovvero A
b ha Nd + 2 autovettori linearmente indipendenti ed è dunque diagonalizzabile;
2. la matrice A

3. il problema linearizzato (6.8) deve essere equivalente al problema originale scritto in forma
conservativa (6.5) e di conseguenza la matrice A b deve soddisfare l’identità:

b (uj − ui ).
f(uj ) − f(ui ) ≡ A (6.9)
Flussi numerici del primo ordine 81

Nel caso in cui si approssimi il comportamento dell’aria mediante il modello termodinamico


di gas ideale politropico (PIG), la matrice Jacobiana del vettore delle funzioni di flusso dipende
unicamente dalla velocità v(x, t) e dall’entalpia totale specifica per unità di massa ht (x, t);
sfruttando la proprietà n◦ 3 è possibile dimostrare [24, 25] che lo stato intermedio è univocamente
definito dal seguente operatore di media secondo Roe:
√ √ √ √
ρi v i + ρj v j ρi hti + ρj htj
b=
v √ √ e b
h t
= √ √ . (6.10)
ρi + ρj ρi + ρj
Il vettore dei flussi numerici Fij (Ui , Uj ) può essere dunque convenientemente scritto come
la somma di un contributo centrato ed uno decentrato (o upwind), fondamentale affinché lo
schema numerico risultante sia stabile, ovvero:
f x (Ui ) + f x (Uj ) 1 b
Fij = − |A| (Uj − Ui ), (6.11)
2 2
dove, sfruttando la proprietà n◦ 2 e definendo rispettivamente la matrice degli autovettori destri
b = R(b
R b = Λ(b
u) e degli autovalori Λ b è possibile scrivere:
u) della matrice A,
b =R
|A| b |Λ|
b Rb −1 . (6.12)

Nel caso in esame di gas ideale politropico (PIG) le matrici degli autovettori destri R(u)
e degli autovalori Λ(u) della matrice Jacobiana proiettata del vettore delle funzioni di flusso
A(u) sono rispettivamente pari a:
   
1 1 1 1 1 u−c 0 0 0 0
   
 u−c u u u u + c   0 u 0 0 0 
   
   
   
 v v v−c v v   0 0 u 0 0 ,
R=  e Λ= 
   
 w w w w−c w   0 
   0 0 0 u 
   
 |v|2 |v|2 |v|2   
t
h − uc − vc t
− wc h + uc 0 0 0 0 u+c
2 2 2
dove la velocità del suono c(x, t) può essere espressa in funzione delle variabili velocità v(x, t)
ed entalpia totale specifica per unità di massa ht (x, t), di cui è noto lo stato intermedio secondo
Roe, nel seguente modo:  
2 t 1 2
c = (γ − 1) h − |v| . (6.13)
2
Uno svantaggio della linearizzazione di Roe è che la soluzione approssimata del problema di
Riemann risultante a cavallo di ogni interfaccia Γij tra le celle di calcolo Ωi ed Ωj è composta
unicamente dalla combinazione di soluzioni elementari discontinue e mai di onde di rarefazione:
tutto ciò può comportare una violazione della condizione di entropia [24, 25]. Di conseguenza
può essere necessario introdurre una correzione sugli autovalori del problema linearizzato (6.8)
chiamata Entropy Fix (EF), cosicché la soluzione numerica sia sempre fisicamente accettabile.
La strategia correttiva più comunemente utilizzata è state proposta da A. Harten e J. M. Hyman
(HH) e consiste nel modificare ogni q-esimo elemento della matrice degli autovalori |Λ| b secondo
il seguente algoritmo:
b 2 
b EF 1 |λ q| bq | < εq ,
|λq | = + εq se |λ (6.14)
2 εq
82 Progetto ed implementazione del solutore aerodinamico

bq − λiq , λjq − λ
dove il coefficiente εq = max(0, λ bq ) non è altro che la massima differenza positiva
tra il q-esimo autovalore valutato in corrispondenza dello stato intermedio secondo Roe λ bq
e degli stati a monte λiq ed a valle λjq . Esiste un’ulteriore variante proposta da V. Selmin che
prevede di introdurre una pesatura in funzione del numero di Mach [16].

6.2.2 Advection Upstream Splitting Method (AUSM)


Il Advection Upstream Splitting Method (AUSM) è stato proposto da M. S. Liou e C. J. Steffen
con l’obiettivo di disporre di un metodo molto semplice ed efficiente per costruire il vettore dei
flussi numerici, anche se affidabile solo in regime di moto subsonico [26].
L’idea alla base di tale metodo consiste nell’esprimere il vettore dei flussi numerici Fij (Ui , Uj )
separando i contributi convettivi centrato e decentrato (o upwind) ed il contributo relativo alla
pressione termodinamica, ovvero:
 

 0 

 +
 
−

P + P 
 i j 

(C) (U) (P) hx (Ui ) + hx (Uj ) hx (Uj ) − hx (Ui )
Fij = Fij +Fij +Fij = M1/2 −|M1/2 | + 0 , (6.15)
2 2 
 


 0 


 

 
0
dove hx (u) = c { ρ, ρ u, ρ v, ρ w, ρ ht } è un particolare vettore delle funzioni di flusso proiet-
tato nella direzione normale all’interfaccia Γij mentre il numero di Mach di advezione M1/2
può essere calcolato nel seguente modo:
1 1
M1/2 = Mi+ + Mj− con Mi+ = ( Mi + 1 )2 e Mj− = − ( Mj − 1 )2 . (6.16)
4 4
Infine per esplicitare i termini Pi+ e Pj− conviene utilizzare le seguenti relazioni polinomiale al
primo ordine in funzione rispettivamente dei numeri di Mach Mi e Mj , per evitare oscillazioni
spurie di natura numerica specialmente in prossimità di eventuali discontinuità della soluzione:
Pi Pj
Pi+ = ( 1 + Mi ) e Pj− = ( 1 − Mj ). (6.17)
2 2

6.2.3 Convective Upwind and Split Pressure (CUSP)


Il metodo Convective Upwind and Split Pressure (CUSP), evoluzione del Advection Upstream
Splitting Method (AUSM), è stato proposto da A. Jameson con l’obiettivo di disporre di un
metodo semplice, efficiente e robusto per costruire il vettore dei flussi numerici, ottimale in
regime di moto transonico e supersonico [19]. Storicamente tale metodo ha riscosso un notevole
successo ed è ad esempio implementato nel solutore aerodinamico EDGE [48].
L’idea alla base di tale metodo consiste nell’esprimere il vettore dei flussi numerici Fij (Ui , Uj )
separando i contributi convettivi centrato e decentrato (o upwind) ed il contributo relativo alla
pressione termodinamica; in particolare questi ultimi dipendono da funzioni del numero di Mach
di natura empirica, ovvero:
 

 0  

 


 Pj − P 
i
f (U ) + f (U )  
(C) (U) (P) x i x j
Fij = Fij + Fij + Fij = − f1 cij (Uj − Ui ) − f2 0 , (6.18)
2 
 

 0 
 

 

 
0
Flussi numerici del primo ordine 83

dove cij = (ci + cj )/2 è la velocità del suono mediata in corrispondenza dell’interfaccia Γij ,
mentre le funzioni empiriche f1 (Mij ) e f2 (Mij ) del numero di Mach Mij mediato in corrispon-
denza dell’interfaccia Γij secondo la relazione Mij = (ui + uj )/(ci + cj ) sono definite nel seguente
modo:
    
 a + 3 − 2a M 2 + a − 1 M 4 se |M | < 1
0 0 ij 0 ij ij
f1 (Mij ) = 2 2 (6.19a)

|Mij | se |Mij | > 1

 1 Mij ( 3 − M 2 ) se |Mij | < 1
ij
f2 (Mij ) = 2 (6.19b)

sign(Mij ) se |Mij | > 1;

il coefficiente a0 che compare nella relazione (6.19a) può essere interpretato come una mano-
polina che regola la dissipazione numerica e deve essere tarato sperimentalmente in funzione del
particolare regime di moto in esame (ad esempio in regime di moto transonico è consigliabile
imporre a0 = 1/4).

6.2.4 Harten–Lax–vanLeer (HLL)


Il metodo di Harten, Lax e van Leer (HLL) è stato sviluppato con l’obiettivo di disporre di
un metodo semplice, efficiente e robusto per costruire un vettore dei flussi numerici facilmente
linearizzabile (per risolvere ad esempio mediante il metodo di Newton-Raphson il sistema di
equazioni algebriche non lineari risultante dalla discretizzazione temporale del problema (6.3)
con uno schema numerico implicito) [2].
L’idea alla base di tale metodo consiste nell’approssimare la soluzione esatta (molto onerosa)
del problema di Riemann (6.8) nel dominio spazio-tempo x − t con un solo stato intermedio b u
separato dagli stati discontinui assegnati ui ed uj mediante due sole onde acustiche caratterizzate
rispettivamente dalle velocità di propagazione Si e Sj . Il vettore dei flussi numerici Fij (Ui , Uj )
può essere allora espresso nel seguente modo:


 f x (Ui ) se Si > 0



Fij = Sj f x (Ui ) − Si f x (Uj ) + Si Sj ( Uj − Ui ) se Si ≤ 0 e Sj ≥ 0 (6.20)

 Sj − Si


 f (U ) se Sj < 0,
x j

dove le velocità di propagazione Si e Sj delle onde acustiche possono essere espresse ad esempio
secondo la seguente strategia proposta da R. LeVeque, che consente di risolvere esattamente i
fenomeni d’urto:
biq , λ
Si = min( min( λ bjq ) ) e biq , λ
Sj = max( max( λ bjq ) ). (6.21)
q q

Tale metodo non consente di risolvere in modo soddisfacente eventuali discontinuità di contatto,
in corrispondenza delle quali è introdotta troppa dissipazione numerica; per correggere tale
difetto E. F. Toro, M. Spruce e W. Speares hanno proposto un metodo alternativo chiamato
Harten–Lax–vanLeer Contact (HLLC), la cui idea di base consiste nell’approssimare la soluzione
esatta del problema di Riemann (6.8) nel dominio spazio-tempo x − t con due stati intermedi
b
ui ed b
uj separati dagli stati discontinui assegnati ui ed uj mediante tre onde acustiche.
84 Progetto ed implementazione del solutore aerodinamico

6.3 Metodi numerici per l’alta risoluzione


Tutti i metodi presentati per esplicitare il vettore dei flussi numerici Fij (Ui , Uj ) sono monotoni,
ovvero garantiscono che la soluzione numerica converga all’unica soluzione entropica senza pro-
durre oscillazioni spurie in prossimità delle eventuali discontinuità; d’altronde tali metodi sono
al massimo accurati al primo ordine e a causa dell’eccessiva dissipazione numerica forniscono
dei risultati non sempre soddisfacenti nelle regioni di corrente regolare e lisciano eccessivamente
le onde d’urto.
L’obiettivo dei metodi numerici per l’alta risoluzione è viceversa quello di fornire una soluzio-
ne numerica accurata al secondo ordine nelle regioni di corrente regolare e contemporaneamente
risolvere bene le onde d’urto senza produrre oscillazioni spurie (aumentando solo localmente la
dissipazione numerica) [24].
Per realizzare tale obiettivo le informazioni relative alle celle di calcolo Ωi ed Ωj adiacenti
alla faccia Γij in generale non sono più sufficienti, ma è necessario conoscere la soluzione anche in
corrispondenza delle celle di calcolo estese Ωi∗ ed Ωj ∗ illustrate in Figura 6.3, che costituiscono
l’ideale proseguimento dei volumi finiti rispettivamente Ωi ed Ωj nella direzione n b ij . Trovare tali
celle estese è molto facile disponendo di una struttura dati completa per la gestione della griglia
di calcolo: con riferimento alla Figura 6.3 per trovare Ωj ∗ è infatti sufficiente scegliere tra tutti i
volumi finiti Ωq eccetto Ωj appartenenti alla bolla del nodo Pj ovvero B(Pj ) = { Ωq | Pj ∈ Ωq }
quello per cui la distanza ∆⊥ = k(xq − xij ) − (xq − xij ) · n b ij k sia minima. Utilizzando
b ij n
le strutture dati (minimali) per la gestione della griglia di calcolo del programma OpenFOAM
non è possibile svolgere direttamente tale ricerca; di conseguenza nel file createConnectivity.C
sono implementati i due algoritmi alternativi seguenti (che utilizzano estesamente la libreria di
ricerca meshSearch):
A per trovare Ωj ∗ a partire dal baricentro geometrico xij della faccia Γij si avanza iterati-
vamente nella direzione del versore normale n b ij fino a che il punto xA = sA n
b ij non cade
all’interno di un volume finito (appunto Ωj ∗ ) differente da quello di partenza; tale algo-
ritmo funziona bene per griglie di calcolo strutturate o non-strutturate regolari, mentre
può fallire per celle di calcolo fortemente distorte.
B per trovare Ωj ∗ si cerca il volume finito all’interno del quale cade il punto xB = sB n b ij ,
ponendo sB = 4 |Ωj |/|Γij |; tale algoritmo può fallire per griglie di calcolo caratterizzate
da salti molto bruschi della funzione di spaziatura.

0000000
1111111
00000000
11111111
0000000
1111111
00000000
11111111
111111111111
000000000000 0000000
1111111
00000000
11111111
0000000
1111111
00000000
11111111
000000000000
111111111111
000000000000
111111111111 0000000
1111111
00000000
11111111
000000000000
111111111111 0000000
1111111
00000000
11111111
0000000
1111111
00000000
11111111
000000000000
111111111111
000000000000
111111111111 0000000
1111111
00000000
11111111
000000000000
111111111111 0000000
1111111
00000000
11111111
0000000
1111111
00000000
11111111
000000000000
111111111111
000000000000
111111111111 0000000
1111111
00000000
11111111
000000000000
111111111111 0000000
1111111
00000000
11111111
00000000000000
11111111111111
0
1
000000000000
111111111111 0000000
1111111
00000000
11111111
00000000000000
11111111111111
0000000
1111111 0
1
000000000000
111111111111
000000000000
111111111111
P P
00000000000000
11111111111111
0000000
1111111 0
1
000000000000
111111111111
000000000000 i
111111111111
Ω i Ω 1111111111111111111
0000000000000000000
Ω j
0000000
1111111
j
00000000000000
11111111111111
0000000
1111111 0
1
00000000000000
11111111111111
0000000
1111111
0000000000000
11111111111110
1
0000000000000000000
1111111111111111111
000000000000
111111111111
i
000000000000
111111111111

0000000000
1111111111
000000000000
111111111111
0000000000
1111111111
000
111
111111111111
000000000000
0000000000
1111111111
0000000
1111111
0000000
1111111
00000000000000
11111111111111
0000000
1111111
0000000000000
1111111111111

0000000000000
1111111111111
0
1
0
1
0000000000000000000
1111111111111111111
0000000000001111111111111111111
111111111111
0000000000
11111111110000000
1111111
0000000
1111111 j
0000000000000
1111111111111

0000000000000
1111111111111
0
1
0
1
0000000000
1111111111
111
0000000000
1111111111
000
111
0000000000
1111111111
000
111
1111111111
0001111111111
000000000000
111111111111
0000000000 0000000000000000000
00000000001111111
0000000
0000000
1111111
00000000001111111
1111111111
0000000000000
1111111111111
0000000000000
1111111111111
0
1
0
1
0000000000000000000
1111111111111111111
0000000000
1111111111
111
0000000000
1111111111
000
111 000000000000
111111111111
0000000000
1111111111
0001111111111
0000000000
0000000
b
n
0000000
11111110000000000000
1111111111111
0000000000000
1111111111111
0
1
0
1
Γ 1111111111111111111
0000000000000000000
0000000000
1111111111
0000000000
1111111111
000
111
00000000
11111111
0000000000
1111111111
000
111
00000000
11111111
000000000000
111111111111
ij
0000000000
ij
0000000
1111111
00000000001111111
1111111111
0001111111111
111 0000000
000000000000
111111111111
11111111110000000
1111111
00000000001111111
0000000
0000000000000
1111111111111
0000000000000
1111111111111
0
1
0
1
0000000000000000000
1111111111111111111
0
1
000
111
00000000
11111111
0000000000
1111111111
0001111111111
111
00000000
11111111
111111111111
0000000000 0000000000000000000
1111111111111111111
0000000000001111111111111111111
0000000
1111111
0000000
1111111
0001111111111
111
00000000
11111111
000
111
00000000
11111111
1111111111
000000000000
111111111111
0000000000 0000000000000000000
00000000001111111
0000000
0000000
1111111
000
111
00000000
11111111
0000000000001111111111111111111
111111111111
0001111111111
111
00000000
11111111
000
111
00000000
11111111
0000000000 0000000000000000000
00000000001111111
11111111110000000
0000000
1111111
000
111
00000000
11111111
000
111
00000000
11111111
000
111
00000000
11111111
000000000000
111111111111
000000000000
111111111111
000
111
00000000
11111111
000
111
00000000
11111111
000
111
00000000
11111111 000000000000
111111111111

Figura 6.3: Costruzione delle celle di calcolo estese Ωi∗ ed Ωj∗ mediante l’algoritmo A (•) poco efficace
e l’algoritmo B (•) viceversa efficace.
Flussi numerici per l’alta risoluzione 85

6.4 Flussi numerici per l’alta risoluzione


L’idea alla base di tale strategia consiste nel costruire un vettore di flussi numerici ad alta risolu-
zione FHR ij (Ui , Uj ; Ui∗ , Uj ∗ ) assemblando un vettore di flussi numerici accurato al secondo ordine
II
Fij (Ui , Uj ) che funzioni bene nelle regioni di corrente regolare con un vettore di flussi numerici
monotono accurato al primo ordine FIij (Ui , Uj ) che prevenga l’insorgere di oscillazioni spurie in
prossimità delle eventuali discontinuità. La transizione tra i due contributi deve essere regolata
da un opportuno sensore Φ(Ui , Uj ; Ui∗ , Uj ∗ ) chiamato flux limiter, che automaticamente attivi
la dissipazione numerica solo dove necessario, ovvero:
FHR I II I I
ij = Fij + Φ ( Fij − Fij ) = Fij + Aij , (6.22)
dove il contributo anti-dissipativo Aij (Ui , Uj ; Ui∗ , Uj ∗ ) bilancia l’eccessiva dissipazione nume-
rica dei metodi accurati al primo ordine; equivalentemente è possibile mettere in evidenza il
contributo dissipativo Dij (Ui , Uj ; Ui∗ , Uj ∗ ) che elimina le oscillazioni spurie dei metodi accurati
al secondo ordine, ovvero:
FHR II II I II
ij = Fij − (1 − Φ) ( Fij − Fij ) = Fij + Dij . (6.23)

6.4.1 Lax–Wendroff (LW)


Il metodo ad alta risoluzione di Lax e Wendroff (LW) richiede di aggiungere al vettore dei flussi
numerici del primo ordine costruito mediante l’Approximate Riemann Solver (ARS) di Roe
presentato in §6.2 il seguente contributo anti-dissipativo Aij (Ui , Uj ; Ui∗ , Uj ∗ ) [24]:
 
1b b ∆t b 2 b Φ,
Aij = R |Λ| − |Λ| ∆W (6.24)
2 ∆x

dove Rb e Λ b sono rispettivamente le matrici degli autovettori destri e degli autovalori della
matrice Jacobiana proiettata del vettore delle funzioni di flusso valutata in corrispondenza
dello stato intermedio secondo Roe A, b mentre ∆t = t(k+1) − t(k) e ∆x = kxj − xi k sono
rispettivamente l’intervallo di integrazione temporale e spaziale; infine il vettore del salto delle
b Φ = Φ ∆W = Φ R
variabili caratteristiche ∆W b −1 (Uj − Ui ) opportunamente limitato ad esempio
mediante la strategia proposta da B. vanLeer è pari a:

b Φ = ∆W |∆Q| + ∆Q |∆W| ,
∆W (6.25)
∆Q + ∆W + ε
dove ε è un parametro positivo piccolo per evitare problemi numerici di divisione per zero,
mentre il r-esimo elemento del vettore del salto upwind delle variabili caratteristiche ∆Q = ∆Q|r
è pari a: 
Rb −1 |r (Uj ∗ − Uj ) se br > 0
λ
∆Q = (6.26)
Rb −1 |r (Ui − Ui∗ ) se br ≤ 0.
λ

6.4.2 Jameson–Schmidt–Turkel (JST)


Il metodo ad alta risoluzione di Jameson, Schmidt e Turkel (JST) richiede di aggiungere al
vettore dei flussi numerici del secondo ordine costruito mediante l’approssimazione centrata
presentata in §6.2 il seguente contributo dissipativo Dij (Ui , Uj ; Ui∗ , Uj ∗ ) [19, 20]:
 
Dij = max( λbq ) ǫ(2) (Uj − Ui ) − ǫ(4) (Uj ∗ − 3 Uj + 3 Ui − Ui∗ ) , (6.27)
q
86 Progetto ed implementazione del solutore aerodinamico

dove ǫ(2) = κ(2) max( νi , νj ) ed ǫ(4) = max( 0, κ(4) − ǫ(2) ) sono i coefficienti che regolano la
dissipazione numerica rispettivamente del secondo e quarto ordine; essi dipendono dai parametri
empirici validi in regime di moto transonico κ(2) = 1/4 e κ(4) = 1/256 e dai sensori della
pressione termodinamica νi e νj definiti in corrispondenza delle celle di calcolo Ωi ed Ωj nel
seguente modo:
|Pj − 2 Pi + Pi∗ | |Pj ∗ − 2 Pj + Pi |
νi = e νj = . (6.28)
Pj + 2 Pi + Pi∗ Pj ∗ + 2 Pj + Pi

6.5 Estrapolazione lineare per l’alta risoluzione


L’idea alla base di tale strategia è di natura geometrica e consiste nel generalizzare il metodo di
Godunov sostituendo la rappresentazione costante a tratti della soluzione numerica su ciascuna
cella di calcolo Ui (t) con un’approssimazione più accurata U e i (x, t), ad esempio lineare ovvero:

Ue i (x, t) = Ui (t) + Ψ (∇u) · (x − xi ) con x ∈ Ωi , (6.29)
Ω i

dove il coefficiente Ψ(Ui , Uj ; Ui∗ , Uj ∗ ) chiamato slope limiter consente di limitare la pendenza
della ricostruzione lineare della soluzione numerica in modo tale da prevenire l’insorgere di
oscillazioni spurie in prossimità delle eventuali discontinuità, mentre (∇u)|Ωi è un’opportuna
approssimazione numerica del gradiente della soluzione valutata in corrispondenza della cella
e i |Γ (t) = U
di calcolo Ωi . È allora possibile calcolare gli stati U e i (xij , t) ed U
e j |Γ (t) = U
e j (xij , t)
ij ij
immediatamente a monte ed a valle dell’interfaccia Γij e successivamente costruire il vettore dei
flussi numerici Fij (Ue i |Γ , U
e j |Γ ).
ij ij

6.5.1 Barth–Jespersen (BJ)


Il metodo di Barth e Jespersen (BJ) consente di determinare il valore ottimale dello slope limiter
Ψi in corrispondenza di ogni volume finito Ωi di una griglia di calcolo in generale non strutturata.
Indicando con B(Ωi ) = { Ωq | Ωq ∩ Ωi 6= ∅ } la bolla delle celle di calcolo Ωq confinanti con
il volume finito Ωi , per ogni r-esimo elemento del vettore delle variabili conservative mediate
U = U|r è necessario applicare il seguente algoritmo:

 1 se e i |Γ − Ui = 0
U

 ij



  

 Umax − Ui e i |Γ − Ui > 0
Ψi = min( Ψij ) con Ψij = min 1, e se U ij (6.30)
j 
 U i |Γij − U i

  

 Umin − Ui

 e i |Γ − Ui < 0,
 min 0, e se U ij
Ui |Γij − Ui

dove i coefficienti Umax ed Umin sono rispettivamente i valori massimo e minimo della variabile U
all’interno della bolla di celle di calcolo B(Ωi ). Solo apparentemente le informazioni relative
alle celle estese Ωi∗ e Ωj ∗ non sono necessarie: in realtà esse sono fondamentali per costruire
un’opportuna approssimazione numerica del gradiente della soluzione (∇u)|Ωi in corrispondenza
della cella di calcolo Ωi ; mediante un’approssimazione centrata accurata al primo ordine ad
esempio è possibile scrivere:
Uj − Ui∗
(∇u)|Ωi = . (6.31)
xi − xi∗
Discretizzazione temporale 87

6.6 Discretizzazione temporale


Innanzitutto è necessario discretizzare il dominio di calcolo temporale T ⊆ R+ , ad esempio
mediante Nt intervalli di ampiezza costante ∆t in modo tale che il k-esimo istante temporale
risulti pari a t(k) = k ∆t.
Raccogliendo i vettori delle variabili conservative mediate Ui (t) relativi ai singoli volumi
finiti Ωi della griglia di calcolo nel vettore {U(t)}, è possibile riscrivere in forma compatta il
sistema di Nv equazioni differenziali ordinarie (ODE) (6.3) nel seguente modo:
d{U}
= R( t, {U} ) ∀t∈T. (6.32)
dt
Indicando il vettore soluzione {U(t)} valutato all’istante di tempo t(k) come {U}(k) = {U(t(k) )},
il problema di Cauchy (6.32) può essere risolto adottando uno schema di integrazione temporale
esplicito, in cui il vettore soluzione {U}(k+1) è funzione solo dei valori assunti in istanti di tempo
precedenti, oppure implicito, in cui il vettore soluzione {U}(k+1) dipende implicitamente anche
da se stesso mediante la funzione R( t, {U} ) [32].
Indipendentemente dalla strategia utilizzata, è necessario garantire che la soluzione numerica
si mantenga limitata per ogni istante di tempo t ∈ T , ovvero richiedere che lo schema numerico
sia assolutamente stabile. Con riferimento ad un problema modello iperbolico monodimensio-
nale, è possibile dimostrare che un metodo implicito è assolutamente stabile indipendentemente
dall’intervallo di integrazione temporale ∆t; viceversa per un metodo esplicito l’assoluta sta-
bilità è garantita solo a patto di soddisfare la condizione di Courant-Friedrichs-Lewy (CFL),
ovvero:  
∆t
max kβ i k < Comax , (6.33)
i ∆xi
dove ∆xi è la dimensione caratteristica della i-esima cella di calcolo, β i è la velocità locale di
advezione ed infine Comax è il massimo numero di Courant affinchè lo schema numerico sia
assolutamente stabile. Nel caso particolare delle equazioni di Eulero in Nd dimensioni spaziali
la relazione (6.33) può essere scritta come:
  Nf
X
|Γi | b
max ∆t max( λiq ) < Comax con |Γi | = |Γij |. (6.34)
i |Ωi | q
j=1

L’implementazione numerica di un metodo implicito è generalmente più complessa ed one-


rosa dal punto di vista dell’efficienza computazionale e dell’occupazione di memoria RAM,
poiché richiede di memorizzare e manipolare matrici di dimensioni solitamente elevate e struttu-
ra sparsa. Nonostante ciò essi sono molto utilizzati in quanto incondizionatamente assolutamen-
te stabili, per cui la scelta dell’intervallo di integrazione temporale ∆t dipende esclusivamente
dal grado di accuratezza della soluzione numerica desiderato e non dai più stringenti vincoli di
stabilità, consentendo dunque di ridurre significativamente i tempi di calcolo.
Nell’ambito del programma OpenFOAM, le strutture dati e le librerie di basso livello per
la memorizzazione e la gestione di matrici sparse e la soluzione dei sistemi lineari (lduMatrix)
rendono difficoltosa l’implementazione di un metodo implicito; di conseguenza sono utilizzati
solo schemi di integrazione temporale espliciti, scegliendo gli algoritmi con un elevato ordine
di accuratezza temporale ed una regione di assoluta stabilità il più ampia possibile. Inoltre
per velocizzare la convergenza della soluzione numerica alla condizione stazionaria è stata im-
plementata una strategia di Local Timestepping (LT), ovvero in corrispondenza di ogni i-esima
cella di calcolo Ωi è utilizzato un intervallo di integrazione temporale ottimale differente ∆tCo
i
max
.
88 Progetto ed implementazione del solutore aerodinamico

6.6.1 Linear Multistep Method (LMM)


Per la soluzione del problema (6.32) in generale si può pensare di utilizzare un metodo multipasso
lineare di ordine Np e dunque risolvere in corrispondenza di ogni volume finito Ωi della griglia
di calcolo la seguente equazione alle differenze lineare:
Np −1 Np −1
(k+1)
X (k−p)
X 
Ui = ap Ui + ∆t bp Ri t(k−p), {U}(k−p) , (6.35)
p=0 p=−1

dove i coefficienti ap e bp definiscono univocamente il metodo numerico, che è esplicito se b−1 = 0


ed in caso contrario implicito. Più in particolare sono stati implementati i seguenti schemi di
integrazione temporale:
Eulero Esplicito (EE) ovvero un metodo a Np = 1 passi definito dai coefficienti a0 = 1, b−1 = 0
e b0 = 1; tale metodo è caratterizzato da un numero di Courant massimo pari a Comax = 1
e da un ordine di accuratezza massimo pari a O(∆t);
Adams-Bashforth (AB2) ovvero un metodo a Np = 2 passi definito dai coefficienti a0 = 1,
a1 = 0, b−1 = 0, b0 = 3/2 e b1 = −1/2; tale metodo è caratterizzato da un numero di
Courant massimo pari a Comax = 1 e da un ordine di accuratezza massimo pari a O(∆t2 ).
Non sono stati implementati metodi a più di Np > 2 passi poichè comportano un significativo
aumento del costo computazionale e dell’occupazione di memoria RAM ed una diminuzione del
numero di Courant massimo [32].

6.6.2 Runge–Kutta (RK)


Nei metodi multipasso l’ordine di accuratezza temporale della soluzione numerica è incrementata
aumentando il numero di passi Np e mantenendo una struttura lineare. Viceversa nei metodi di
Runge-Kutta (RK) l’ordine di accuratezza temporale della soluzione numerica è incrementata
aumentando il numero di valutazioni funzionali all’interno di ogni intervallo di integrazione
temporale, scegliendo quindi di mantenere la struttura ad un passo Np = 1 ma sacrificare la
linearità dello schema. Applicando tale metodo al problema (6.32) è necessario risolvere il
seguente sistema di equazioni alle differenze non lineari:
Ns
X
(k+1) (k)
{U} = {U} + ∆t bs K s
s=1 (6.36)
Ns
X
(k) (k)
Ks = R( t + cs ∆t, {U} + ∆t asj Kj ) s = 1, 2, . . . , Ns ,
j=1

dove Ns è il numero di stadi del metodo ed infine asj , bs e cs definiscono univocamente lo schema
e sono generalmente raccolti in forma tabulare nell’array di Butcher. Più in particolare sono
stati implementati i seguenti schemi di integrazione temporale:
Runge-Kutta 2 (RK2) ovvero un metodo a Ns = 2 stadi, caratterizzato da un numero di
Courant massimo pari a Comax = 2 e da un ordine di accuratezza massimo pari a O(∆t2 )
e definito nel seguente modo:
1 1 
{U}(k+1) = {U}(k) + ∆t K1 + K2
2 2
(k)
K = R( t , {U} )(k) (6.37)
1

K2 = R( t(k) + ∆t, {U}(k) + ∆t K1 );


Discretizzazione temporale 89

3 3

2.5 2.5
RK3
2 2
RK4
RK2
Im

Im
1.5 1.5

1 1
EE
AB2
0.5 0.5

0 0
-3 -2.5 -2 -1.5 -1 -0.5 0 -3 -2.5 -2 -1.5 -1 -0.5 0
Re Re

Figura 6.4: Regioni di assoluta stabilità dei metodi di integrazione temporale di Eulero Esplicito (EE)
ed Adams-Bashforth (AB2) (sinistra) e di Runge-Kutta (RK2, RK3, RK4) (destra); le regioni sono
simmetriche rispetto all’asse reale Re.

Runge-Kutta 3 (RK3) ovvero un metodo a Ns = 3 stadi, caratterizzato da un numero di


Courant massimo pari a Comax = 2.5 e da un ordine di accuratezza massimo pari a O(∆t3 )
e definito nel seguente modo:
1 2 1 
(k+1) (k)
{U} = {U} + ∆t K1 + K2 + K3
6 3 6
K1 = R( t(k) , {U}(k) )
  (6.38)
∆t ∆t
K2 = R t(k) + , {U}(k) + K1
2 2
K3 = R( t(k) + ∆t, {U}(k) + ∆t K2 );

Runge-Kutta 4 (RK4) ovvero un metodo a Ns = 4 stadi, caratterizzato da un numero di


Courant massimo pari a Comax = 2.8 e da un ordine di accuratezza massimo pari a O(∆t4 )
e definito nel seguente modo:
1 1 1 1 
{U}(k+1) = {U}(k) + ∆t K1 + K2 + K3 + K4
6 3 3 6
K1 = R( t(k) , {U}(k) )
 ∆t ∆t 
K2 = R t(k) + , {U}(k) + K1 (6.39)
2 2
 ∆t ∆t 
K3 = R t(k) + , {U}(k) + K2
2 2
K4 = R( t(k) + ∆t, {U}(k) + ∆t K3 );
inoltre sono stati implementati metodi alternativi a Ns = 4 stadi opportunamente modi-
ficati per minimizzare la dissipazione numerica e l’occupazione di memoria RAM [17].
Non sono stati implementati metodi a più di Ns > 4 stadi poichè comportano un significativo
aumento del costo computazionale e dell’occupazione di memoria RAM senza garantire un
incremento dell’ordine di accuratezza temporale [32].
90 Progetto ed implementazione del solutore aerodinamico

6.7 Condizioni iniziali ed al contorno


Affinché il problema (5.1) sia ben posto è necessario assegnare opportune condizioni iniziali e
condizioni al contorno, definendo rispettivamente il valore assunto dalla soluzione in tutto il
dominio V all’istante iniziale t = 0 ovvero u(x, 0) = u0 (x) ed il valore assunto dalla soluzione su
tutto il contorno del dominio S = ∂V ad ogni istante di tempo t ∈ T ovvero u(x ∈ S, t) = b(t).
Il trattamento delle condizioni iniziali non pone particolari problemi: è sufficiente inizializ-
zare opportunamente gli elementi del vettore delle variabili conservative mediate U(k=0) = U0 ;
ad esempio conviene scegliere una soluzione iniziale di corrente uniforme.
Viceversa il trattamento delle condizioni al contorno è più complesso: in generale affinché un
problema iperbolico scalare sia ben posto è necessario assegnare le condizioni al contorno fisiche
solo sul bordo di inflow S inf low , che corrisponde alla porzione del contorno lungo cui β · nb < 0,
dove β è la velocità locale di advezione ed n b è la normale al bordo, convenzionalmente assunta
positiva se uscente. Nel caso di problema iperbolico vettoriale è possibile identificare il bordo
di inflow solo a patto di diagonalizzare il problema, riscrivendolo in funzione del vettore delle
variabili caratteristiche W = R−1 U: il numero di condizioni al contorno fisiche da assegnare Nbc
è pari al numero di elementi negativi della matrice degli autovalori Λ.
Un’ulteriore difficoltà consiste nel fatto che, per imporre numericamente le condizioni al
contorno in corrispondenza della faccia di bordo Γij ∈ Sh = ∂Vh adiacente al volume finito
interno Ωi , nell’ambito della strategia cell-centered è necessario introdurre una o più (affinché
l’espressione del vettore dei flussi numerici ad alta risoluzione sia accurata al secondo ordine
anche sul contorno) celle di calcolo fittizie o ghost cells, come illustrato in Figura 6.5. Seguendo
la strategia presentata in [17] è allora possibile distinguere i seguenti casi:

- se 0 < Nbc ≤ Nd + 2 si impongono Nbc condizioni al contorno fisiche sulle prime Nbc
variabili primitive ordinate secondo la gerarchia temperatura T , velocità v e pressione P
e quindi si ricavano Nd + 2 − Nbc condizioni al contorno numeriche imponendo che il salto
delle variabili caratteristiche in corrispondenza della ghost cell ΩGC
j sia pari al salto delle
variabili caratteristiche in corrispondenza del volume finito interno più vicino Ωi ;

- se Nbc = 0 si impone che il vettore delle variabili conservative mediate UGC j valutato in
corrispondenza della ghost cell ΩGC
j sia pari al vettore delle variabili conservative mediate
Ui valutato in corrispondenza del volume finito interno più vicino Ωi .

11111111111111
00000000000000
00000000000000
11111111111111
00000000000000
11111111111111
00000000000000
11111111111111
00000000000000
11111111111111
00000000000000
11111111111111
00000000000000
11111111111111
ΩGC
00000000000000
11111111111111
00000000000000
11111111111111
j∗
00000000000000
11111111111111 v 00000000000000
11111111111111
00000000000000
1111111111111100000000
11111111
0000000
1111111 ij
0000000000000
1111111111111
0000000
1111111 00000000000000
11111111111111
00000000000000
11111111111111
0000000
1111111
00000000000000
1111111111111100000000
11111111
0000000
1111111
0000000000000
1111111111111
0000000
1111111
00000000
11111111 00000000000000
11111111111111
0000000
1111111 0000000
1111111
0000000000000
1111111111111
0000000
1111111
00000000
11111111 00000000000000
11111111111111
0000000
1111111 0000000
1111111
0000000000000
1111111111111
0000000
1111111
00000000
11111111 00000000000000
11111111111111
0000000
1111111 0000000
1111111
0000000000000
1111111111111
0000000
1111111
00000000
11111111 u 00000000000000
11111111111111
0000000
1111111 0000000
1111111
0000000000000
1111111111111
0000000
1111111
00000000
11111111 ij
0000000
1111111
0000000
1111111 0000000
1111111
0000000000000
1111111111111
0000
1111
0000000
1111111
00000000
11111111
0000000
1111111 0000000
1111111
0000000000000
1111111111111
0000
1111
0000000
1111111
00000000
11111111 Ω GC
0000000
1111111 0000000
1111111
0000000000000
1111111111111
0000
1111
0000000
1111111
00000000
11111111 j
0000000
1111111 0000000
1111111
0000000000000
1111111111111
0000
1111
0000000
1111111
00000000
11111111 b ij
n
0000000
1111111 0000000
1111111
0000000000000
1111111111111
Ω1111111
0000000
00000000
11111111
0000000
1111111
0000000000000
1111111111111

0000000
1111111
0000000
1111111 i∗ 0000000
1111111
00000000
11111111
i
0000000
1111111
0000000000000
1111111111111
0000000
1111111
00000000
11111111
0000000
1111111
00000000000000
11111111111111
0
10000000
1111111
0000000000000
1111111111111
0000000
1111111
00000000
11111111
Γij
0000000
1111111
00000000000000
11111111111111
0
10000000
1111111
0000000000000
1111111111111
0000000
1111111
00000000
11111111
0000000
1111111
00000000000000
11111111111111
0
1 0000000000000
1111111111111
0000000
1111111
00000000
11111111
0000000000000
1111111111111
0000000
1111111
00000000000000
11111111111111
0
1 0000000
1111111
00000000
11111111
0000000000000
1111111111111
0000000
1111111
00000000000000
0000000000000
11111111111110
1
11111111111111 0000000
1111111
00000000
11111111
0000000000000
1111111111111
0000000
1111111
00000000000000
11111111111111
0000000000000
11111111111110
1 0000000
1111111
00000000
11111111
0000000
1111111
00000000000001
11111111111110 0000000
1111111
0000000000000
11111111111110
1 0000000
1111111
0000000000000
11111111111110
1 0000000
1111111
0000000000000
11111111111110
1 0000000
1111111 Sh = ∂Vh
0000000000000
11111111111110
1 0000000
1111111
0000000
1111111
0000000000000
11111111111110
1 0000000
1111111
0000000000000
11111111111110
1 0000000
1111111
0000000000000
11111111111110
1 0000000
1111111
00000000000001
11111111111110
0
1 0000000
1111111
0000000
1111111
0000000
1111111
0000000
1111111

Figura 6.5: Implementazione numerica delle condizioni al contorno mediante le ghost cells.
Condizioni iniziali ed al contorno 91

6.7.1 Condizioni al contorno di Riemann


Per quanto riguarda il trattamento delle condizioni al contorno asintotiche in corrispondenza
del bordo all’infinito S ∞ conviene implementare le condizioni al contorno di Riemann, in modo
tale che l’utente non debba conoscere a priori quali porzioni di contorno corrispondano al bordo
di inflow S inf low , ma il programma sia in grado di identificarle automaticamente.
Estrapolando opportunamente il vettore delle variabili conservative mediate Uij in corri-
spondenza del baricentro geometrico della faccia di bordo Γij in funzione delle soluzioni note
Ui ed Ui∗ relative ai volumi finiti interni Ωi ed Ωi∗ , è immediato ricavare la velocità v ij
e la velocità del suono cij . È quindi possibile distinguere le tipologie di condizioni al contorno
riassunte in Tabella 6.1, nella quale è specificato quali variabili primitive tra la temperatura T ,
la velocità v e la pressione P devono essere assegnate (condizioni al contorno fisiche) oppure
estrapolate (condizioni al contorno numeriche). Per quanto riguarda queste ultime sono state
implementate una strategia di estrapolazione costante (più robusta) e lineare (più accurata).

Tipologia Tipologia Variabili Variabili


Nbc
di contorno di corrente assegnate estrapolate

Corrente supersonica
v ij · n
b ij > cij Nd + 2 T, v, P −
S inflow (SupersonicInlet)
v ij · n
b ij < 0
Corrente subsonica
v ij · n
b ij < cij Nd + 1 T, v P
(Inlet)

Corrente supersonica
v ij · n
b ij > cij 0 − T, v, P
S outflow (ExtrapolatedOutlet)
v ij · n
b ij > 0
Corrente subsonica
v ij · n
b ij < cij 1 T v, P
(Outlet)

Tabella 6.1: Tabella riassuntiva delle possibili tipologie di condizioni al contorno.

6.7.2 Condizioni al contorno di non compenetrazione


In corrispondenza di un contorno solido S b , quale la superficie di un’ala investita da una cor-
rente fluida, è necessario imporre la condizione al contorno di non compenetrazione (Slip),
ovvero l’annullamento della componente normale della velocità locale a parete (v · n b )|S b = 0;
più in generale è possible assegnare un valore non nullo della velocità normale a parete Vn ,
detta velocità di traspirazione, in modo tale da riprodurre gli effetti geometrici e cinematici del
movimento del contorno senza effettivamente deformare la griglia di calcolo [56], come descritto
più dettagliatamente in §8.2.
92 Progetto ed implementazione del solutore aerodinamico

Dal punto di vista implementativo è innanzitutto necessario estrapolare in modo costante


(più robusto) o lineare (più accurato) i vettori delle variabili conservative mediate UGC
j e Uj∗
GC

in corrispondenza delle ghost cells Ωj ed Ωj ∗ in funzione delle soluzioni note Ui e Ui∗ relative
GC GC

ai volumi finiti interni Ωi ed Ωi∗ ; successivamente è possibile imporre l’annullamento della


componente della velocità v j normale alla faccia di bordo Γij ed eventualmente aggiungere il
contributo della velocità di traspirazione Vn (convenzionalmente assunta positiva se uscente)
ad esempio in corrispondenza della ghost cell ΩGC j nel seguente modo:

ej = v j − (v j · n
v b ij ) n
b ij + Vn n
b ij . (6.40)

Ovviamente è necessario aggiornare il valore dell’energia totale specifica per unità di volume Ejt
per tenere conto della variazione dell’energia cinetica nel seguente modo:

ejt = Ejt − 1 ρj |v j |2 + 1 ρj |e
E v j |2 . (6.41)
2 2

6.8 Valutazione del solutore aerodinamico AeroFoam


Per quantificare le prestazioni in termini di accuratezza della soluzione numerica ed efficienza
computazionale e quindi confrontarle con le prestazioni dei solutori aerodinamici disponibili
rhoSonicFoam, rhopSonicFoam e sonicFoam è opportuno mettere alla prova il solutore aerodina-
mico sviluppato AeroFoam affrontando nuovamente il problema di verifica presentato in §5.4.
Anche in questo caso sono ovviamente utilizzate le quattro griglie di calcolo ed i relativi in-
tervalli di integrazione temporale rappresentati in Figura 5.4 ed un computer AMD64 3500+
con processore AMD Athlon 64 da 2.2 GHz di frequenza massima, 1 Gbyte di memoria RAM,
512 Kbyte di cache L2 e sistema operativo Linux con kernel aggiornato alla versione 2.6.18.
Sono di seguito riportati i risultati numerici relativi al campo di pressione termodinamica P
e di densità ρ, all’ordine di accuratezza spaziale e temporale ed all’efficienza computazionale
ottenuti imponendo i parametri definiti nel file fvSchemes relativi agli schemi di discretizzazione
spaziale, discretizzazione temporale, estrapolazione delle condizioni al contorno e valutazione
del residuo riportati in Tabella 6.2.

Discretizzazione spaziale Discretizzazione temporale

fluxSplit Roe; timeScheme RK2;

slopeLim none; Condizioni al contorno

fluxLim LWVL; extrapolateBC 1;

entropyFix HH2; Valutazione del residuo

deltaEF 0.1; residualNorm L1;

Tabella 6.2: Parametri relativi agli schemi di discretizzazione spaziale, discretizzazione temporale,
estrapolazione delle condizioni al contorno e valutazione del residuo del solutore aerodinamico sviluppa-
to AeroFoam: più in particolare per esplicitare il vettore dei flussi numerici è utilizzato l’Approximate
Riemann Solver (ARS) di Roe con l’entropy fix di Harten ed Hyman (HH) combinato con il metodo
ad alta risoluzione di Lax-Wendroff (LW) opportunamente limitato mediante i flux limiters di
B. vanLeer (VL); infine è utilizzato lo schema di integrazione temporale di Runge-Kutta a 2 stadi (RK2).
Valutazione del solutore aerodinamico AeroFoam 93

Figura 6.6: Soluzione numerica del problema C ottenuta mediante il solutore aerodinamico AeroFoam
relativa al campo della pressione termodinamica P ; inoltre per evidenziare la topologia della corrente sono
rappresentate 20 isolinee del campo della densità ρ equispaziate tra il valore minimo ρmin = 1.225 kg/m3
ed il valore massimo ρmax = 3.250 kg/m3 della soluzione analitica.

× 10−3 × 10−3
100 100

10 10 O(∆t)
O(h)
||eh||L1 [−]

||eh||L1 [−]

1 1

O(h2) O(∆t2)
0.1 0.1
0.001 0.01 0.1 1 1 10 100
h[m] ∆t [ s ] × 10−6

Figura 6.7: Errore relativo keh kL1 della soluzione numerica rispetto alla soluzione analitica relativa al
campo della pressione temodinamica P (•), temperatura T (•) e velocità v (•) al diminuire del passo
di griglia h (sinistra) e dell’intervallo di integrazione temporale ∆t (destra).

× 10−2
100

CPU time [ s ]

Ne EE RK2
10
CPUtime [ s ]

400 4.49 · 10−3 8.16 · 10−3


O(Ne)
1600 1.12 · 10−2 2.07 · 10−2
1
6400 3.49 · 10−2 6.11 · 10−2

25600 1.18 · 10−1 2.22 · 10−1


O(Ne2)
0.1
100 1000 10000 100000
Ne

Figura 6.8: Tempo di esecuzione per una singola iterazione temporale CPUtime relativo agli schemi
di discretizzazione temporale Eulero Esplicito () e Runge-Kutta 2 () all’aumentare del numero di
elementi della griglia di calcolo Ne .
94 Progetto ed implementazione del solutore aerodinamico

7 Speedup
6
Ne   
5
400 1.049 3.076 3.897
S [−]

4
1600 0.950 2.855 3.446
3

2 6400 1.218 3.989 6.447


1 25600 1.976 3.857 6.274
0
100 1000 10000 100000
Ne

Figura 6.9: Fattore di Speedup S del solutore sviluppato AeroFoam rispetto ai solutori disponibili
rhoSonicFoam (), rhopSonicFoam () e sonicFoam () in funzione del numero di elementi della griglia
di calcolo Ne .

6.8.1 Analisi dei risultati


Esaminando i risultati numerici relativi al campo della pressione termodinamica P e della
densità ρ rappresentati in Figura 6.6 è innanzitutto possibile osservare che in nessuna zona del
campo di moto sono presenti oscillazioni spurie di natura numerica e sia l’urto incidente che
l’urto riflesso sono catturati in modo più che soddisfacente, in ottimo accordo con la soluzione
analitica riportata in Tabella 5.1.
La Figura 6.7 relativa all’errore keh kL1 della soluzione numerica rispetto alla soluzione ana-
litica mostra che il solutore aerodinamico sviluppato AeroFoam converge sia nello spazio che
nel tempo con un ordine di accuratezza inizialmente poco più che lineare, ma progressivamente
crescente con il numero di elementi Ne della griglia di calcolo fino quasi al secondo ordine,
e sempre significativamente maggiore rispetto a quello dei solutori aerodinamici disponibili
rhoSonicFoam, rhopSonicFoam e sonicFoam. Tutto ciò è illustrato nella Tabella 6.3 relativa ai
coefficienti A e B e agli ordini di accuratezza sperimentali p e q della legge di potenza (5.5)
con cui è possibile approssimare l’errore relativo keh kL1 , calcolati costruendo il piano di regres-
sione ai minimi quadrati dei dati numerici raccolti. Sono inoltre riportati i coefficienti di
correlazione Rh e R∆t che consentono di misurare la qualità dei risultati ottenuti.

Solutori A p Rh B q R∆t

rhoSonicFoam 0.267 0.543 0.998 0.010 0.091 0.450

rhopSonicFoam 0.425 0.765 0.998 26.79 0.601 0.964

sonicFoam 0.048 −0.045 −0.221 0.021 −0.022 −0.173

AeroFoam 1.362 1.387 0.995 13651 1.307 0.997

Tabella 6.3: Coefficienti A e B, ordini di accuratezza sperimentali p e q ed infine coefficienti di corre-


lazione Rh e R∆t del piano di regressione ai minimi quadrati dei dati numerici raccolti utilizzando come
indicatore la pressione termodinamica P .
Valutazione del solutore aerodinamico AeroFoam 95

Il fatto che il solutore aerodinamico sviuppato AeroFoam converga con un ordine di accura-
tezza spaziale e temporale medio non esattamente quadratico non deve stupire: infatti il metodo
ad alta risoluzione di Lax-Wendroff (LW) è accurato al secondo ordine solo nelle regioni di cor-
rente regolare, mentre in prossimità delle eventuali discontinuità il metodo è accurato solo al
primo ordine a causa della dissipazione numerica introdotta localmente mediante i flux limiters
per prevenire la formazione di oscillazioni spurie [13]. Inoltre il fatto che l’ordine di accuratezza
spaziale e temporale cresca progressivamente da lineare a quasi quadratico con il numero di ele-
menti della griglia di calcolo Ne può essere giustificato osservando che la viscosità numerica µh
dipende dal passo di griglia h [32].
Infine la Figura 6.8 relativa all’efficienza computazionale mostra che il solutore aerodinamico
sviluppato AeroFoam è caratterizzato da un tempo di esecuzione per ogni singola iterazione
CPUtime dipendente in modo sublineare dal numero di elementi Ne della griglia di calcolo e
significativamente inferiore rispetto al tempo di esecuzione per ogni singola iterazione CPUtime
dei solutori aerodinamici disponibili in OpenFOAM. Esaminando la Figura 6.9 è infatti possibile
osservare che il solutore sviluppato AeroFoam consente di raggiungere un fattore di Speedup
mediamente pari a S = 1.298 rispetto al solutore rhoSonicFoam, S = 5.016 rispetto al solutore
rhopSonicFoam ed infine S = 3.444 rispetto al solutore sonicFoam, leggermente superiori anche
rispetto a quelli dell’analogo solutore aerodinamico CentralFoam presentato in [14].
96 Progetto ed implementazione del solutore aerodinamico
Capitolo 7

Problemi di verifica aerodinamici

In questo Capitolo il solutore aerodinamico sviluppato AeroFoam è messo alla prova affrontando
alcuni problemi di verifica di complessità crescente, in Nd = 2 e Nd = 3 dimensioni spaziali
su griglie di calcolo in generale poliedriche strutturate e non strutturate. Più in particolare
l’obiettivo è valutare l’accuratezza dei risultati numerici ottenuti con riferimento alla soluzione
analitica se disponibile, ai risultati numerici e sperimentali reperibili in Letteratura ed infine
ad i risultati numerici ottenuti mediante il solutore aerodinamico commerciale FLUENT [43],
in un campo il più ampio possibile di regimi di moto (da basso subsonico ad alto supersonico).
Per quanto riguarda i problemi bidimensionali (Nd = 2) in §7.1 la soluzione numerica della
corrente stazionaria subsonica (al limite incomprimibile) inviscida attorno ad un cilindro è con-
frontata con la soluzione analitica della teoria del potenziale; in §7.2 la soluzione numerica della
corrente stazionaria subsonica e transonica inviscida attorno ad un profilo alare NACA 0012
è confrontata con i risultati sperimentali e numerici; in §7.3 la soluzione numerica della corrente
non stazionaria transonica inviscida attorno ad un profilo alare lenticolare soggetto ad una raffi-
ca a scalino è confrontata con la soluzione analitica; in §7.4 la soluzione numerica della corrente
stazionaria all’interno ed all’esterno di un ugello convergente-divergente è confrontata con la
soluzione analitici della teoria quasi-1D e delle caratteristiche; in §7.5 la soluzione numerica
della corrente non stazionaria supersonica inviscida nel condotto di Woodward e Colella è con-
frontata con i risultati numerici. Per quanto riguarda i problemi tridimensionali (Nd = 3) in §7.6
e §7.7 le soluzioni numeriche delle correnti stazionarie transoniche attorno all’ala ONERA M6
ed al velivolo completo RAE A sono confrontate con i risultati sperimentali e e numerici.
Tali problemi aerodinamici di verifica sono risolti su un computer AMD64 3500+ con proces-
sore AMD Athlon 64 da 2.2 GHz di frequenza massima, 1 Gbyte di memoria RAM, 512 Kbyte
di cache L2 e sistema operativo Linux con kernel aggiornato alla versione 2.6.18.

7.1 Cilindro
Si richiede di risolvere numericamente il campo di moto bidimensionale attorno ad un cilindro
di raggio R = 0.5 m investito da una corrente asintotica uniforme subsonica di fluido ideale con
γ = 1.4 e R = 287.05 kgJK caratterizzata da una pressione termodinamica P∞ = 101325 P a,
una temperatura T∞ = 288.15 K, un numero di Mach M∞ = 0.1 ed infine un angolo di
incidenza α = 0◦ .
Tale problema di verifica semplice è fondamentale per valutare le prestazioni del solutore
aerodinamico sviluppato AeroFoam in prossimità del limite incomprimibile. Infatti, per numeri
di Mach della corrente asintotica inferiori a M∞ < 0.3, i solutori che si appoggiano ad una

97
98 Problemi di verifica aerodinamici

riscrittura del problema aerodinamico (5.1) in variabili caratteristiche soffrono numericamente


la disparità tra la velocità della corrente v e la velocità delle onde acustiche c, a meno di
implementare un’opportuna strategia di Time Derivative Preconditioning (TDP) [13].
Il dominio spaziale V è rappresentato in Figura 7.1 ed è costituito da una circonferenza
interna S b in corrispondenza della quale sono imposte le condizioni al contorno di non compe-
netrazione e da una circonferenza esterna S ∞ di raggio R∞ = 25 m ≫ R in corrispondenza della
quale sono imposte le condizioni al contorno di Riemann. La griglia di calcolo è rappresentata
in Figura 7.1 ed è costituita da Nv = 15247 volumi finiti triangolari e da Nn = 15484 nodi con
un passo di griglia minimo pari a h = 0.02 m in corrispondenza della circonferenza interna.
Il dominio temporale T = [ 0 s, 0.2 s ] è discretizzato in Nt = 20000 intervalli di integrazione
temporale di ampiezza costante pari a ∆t = 1 · 10−5 s scelta in modo tale che il numero di
Courant massimo sia pari a Comax ≃ 1.5.
Il tempo di esecuzione per ogni singola iterazione temporale è pari a CPUtime = 0.09 s;
di conseguenza il tempo di esecuzione complessivo è pari a CPUtime = 30.00 min.
11111111111111111111111111111
00000000000000000000000000000
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111

S
00000000000000000000000000000
11111111111111111111111111111
b
n
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
y
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
0000000000
1111111111
b
00000000000000000000000000000
11111111111111111111111111111
0000000000
1111111111
00000000000000000000000000000
11111111111111111111111111111
0000000000
1111111111
00000000000000000000000000000
11111111111111111111111111111
S
0000000000
1111111111
00000000000000000000000000000
11111111111111111111111111111
R
0000000000
1111111111
00000000000000000000000000000
11111111111111111111111111111
0000000000
1111111111
00000000000000000000000000000
11111111111111111111111111111
0000000000
1111111111
M∞ 00000000000000000000000000000
11111111111111111111111111111
0000000000
1111111111
00000000000000000000000000000
11111111111111111111111111111 x
0000000000
1111111111
00000000000000000000000000000
11111111111111111111111111111
0000000000
1111111111
00000000000000000000000000000
11111111111111111111111111111
0000000000
1111111111
00000000000000000000000000000
11111111111111111111111111111
0000000000
1111111111
00000000000000000000000000000
11111111111111111111111111111
P∞ 0000000000
1111111111
00000000000000000000000000000
11111111111111111111111111111
0000000000
1111111111
00000000000000000000000000000
11111111111111111111111111111
0000000000
1111111111
00000000000000000000000000000
11111111111111111111111111111
0000000000
1111111111 b
n
00000000000000000000000000000
11111111111111111111111111111
0000000000
1111111111
00000000000000000000000000000
11111111111111111111111111111
T∞ 0000000000
1111111111
00000000000000000000000000000
11111111111111111111111111111
0000000000
1111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
Slip
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
R
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111

00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
Riemann
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111

Figura 7.1: Definizione qualitativa del problema (sinistra) e dettaglio della griglia di calcolo (destra).
3.5

2.5

2
−Cp [−]

1.5

0.5

-0.5

-1
-1 -0.5 0 0.5 1
x/R [−]

Figura 7.2: Isolinee del coefficiente di pressione Cp attorno al cilindro (sinistra) e confronto tra i
risultati numerici ottenuti mediante AeroFoam (◦) e la soluzione analitica (−) relativi alla distribuzione
del coefficiente di pressione Cp sulla superficie del cilindro (destra).
Profilo alare NACA 0012 99

In Figura 7.1 sono presentati i risultati numerici relativi alla distribuzione del coefficiente di
pressione Cp sulla superficie del cilindro ottenuti imponendo i parametri relativi agli schemi di
discretizzazione spaziale, discretizzazione temporale, estrapolazione delle condizioni al contorno
e valutazione del residuo riportati in Tabella 6.2; è possibile osservare un ottimo accordo con la
soluzione analitica calcolata secondo la teoria del potenziale [1], ovvero:

CpExact = 1 − 4 sin2 (θ) con x = R cos(θ). (7.1)

7.2 Profilo alare NACA 0012


Si vuole risolvere numericamente il campo di moto bidimensionale attorno ad un profilo alare
NACA 0012 di corda c = 1 m investito da una corrente asintotica uniforme subsonica e transoni-
ca di fluido ideale con γ = 1.4 e R = 287.05 kgJK caratterizzata da una pressione termodinamica
P∞ = 85419 P a, una temperatura T∞ = 260 K, un numero di Mach M∞ = 0.5 e M∞ = 0.75 ed
infine un angolo di incidenza α = 0◦ , α = 2◦ e α = 4◦ . Successivamente si richiede di confron-
tare i risultati numerici cosı̀ ottenuti con quelli forniti dal solutore aerodinamico commerciale
FLUENT e con i dati sperimentali riportati in [40].
Il dominio spaziale V è rappresentato in Figura 7.3 ed è costituito da un profilo alare S b
in corrispondenza del quale sono imposte le condizioni al contorno di non compenetrazione e
da una circonferenza esterna S ∞ di raggio R∞ = 25 m ≫ c in corrispondenza della quale sono
imposte le condizioni al contorno di Riemann. La griglia di calcolo aerodinamica è rappresentata
in Figura 7.3 ed è costituita da Nv = 6620 volumi finiti triangolari e da Nn = 6864 nodi con un
passo di griglia minimo pari a h = 0.01 m in corrispondenza del profilo alare.
Il dominio temporale T = [ 0 s, 0.035 s ] è discretizzato in Nt = 7000 e Nt = 11667
intervalli di integrazione temporale di ampiezza costante pari a ∆t = 5 · 10−6 s e ∆t = 3 · 10−6 s
scelte in modo tale che il numero di Courant massimo sia sempre pari a Comax ≃ 1.95 rispetti-
vamente nel caso di M∞ = 0.5 e M∞ = 0.75.
Il tempo di esecuzione per ogni singola iterazione temporale è pari a CPUtime = 0.045 s;
di conseguenza il tempo di esecuzione complessivo è pari a CPUtime = 5.25 min nel caso di
M∞ = 0.5 e CPUtime = 8.75 min nel caso di M∞ = 0.75.

11111111111111111111111111111
00000000000000000000000000000
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111

00000000000000000000000000000
11111111111111111111111111111 S
b
n
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
y
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
c
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
b
M∞ 00000000000000000000000000000
11111111111111111111111111111
00000000000
11111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000
11111111111
S x
00000000000000000000000000000
11111111111111111111111111111
00000000000
11111111111
t
00000000000000000000000000000
11111111111111111111111111111
00000000000
11111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000
11111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000
11111111111
00000000000000000000000000000
11111111111111111111111111111
P∞ 00000000000000000000000000000
11111111111111111111111111111
Slip
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
T∞ 00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
R
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111

00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
Riemann
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111

Figura 7.3: Definizione qualitativa del problema (sinistra) e dettaglio della griglia di calcolo (destra).
100 Problemi di verifica aerodinamici

In Figura 7.4 e nelle Figure 7.5–7.7 sono presentati i risultati numerici relativi rispet-
tivamente alle isolinee del coefficiente di pressione Cp attorno al profilo alare NACA 0012
ed alla distribuzione del coefficiente di pressione Cp sulla superficie del profilo alare NACA
0012 ottenuti imponendo i parametri relativi agli schemi di discretizzazione spaziale, discretiz-
zazione temporale, estrapolazione delle condizioni al contorno e valutazione del residuo riportati
in Tabella 6.2; è possibile osservare un ottimo accordo con i risultati numerici ottenuti mediante
il solutore aerodinamico commerciale FLUENT (con un tempo di esecuzione per ogni singola
iterazione temporale CPUtime del tutto confrontabile) ed un soddisfacente accordo con i dati
sperimentali riportati in [40]; ovviamente le discrepanze che è possibile osservare in prossimità
delle onde d’urto normali che si formano sul dorso del profilo alare per M∞ = 0.75 ed α ≥ 2◦
sono dovute all’azione degli sforzi viscosi che tendono ad addolcire le eventuali discontinuità.

Figura 7.4: Isolinee del coefficiente di pressione Cp attorno al profilo alare NACA 0012 per M∞ = 0.75
ed α = 4◦ calcolate mediante AeroFoam (sinistra) e FLUENT (destra).

1 1

0.5 0.5
−Cp [−]

−Cp [−]

0 0

-0.5 WT -0.5 WT
FLUENT FLUENT
AeroFoam AeroFoam
-1 -1
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
x/c [−] x/c [−]

Figura 7.5: Confronto tra i risultati numerici ottenuti mediante AeroFoam (), i risultati numerici
ottenuti mediante FLUENT () ed i dati sperimentali WT (◦) relativi alla distribuzione del coefficiente
di pressione Cp sulla superficie del profilo alare NACA 0012 per M∞ = 0.5 (sinistra) e M∞ = 0.75
(destra) ed α = 0◦ .
Risposta temporale ad una raffica a scalino di un profilo alare lenticolare 101

1.5 1.5

Upper Surface
1 1
Upper Surface
0.5 0.5
−Cp [−]

−Cp [−]
Lower Surface Lower Surface
0 0

WT WT
-0.5 -0.5
FLUENT FLUENT
AeroFoam AeroFoam
-1 -1
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
x/c [−] x/c [−]

Figura 7.6: Confronto tra i risultati numerici ottenuti mediante AeroFoam (), i risultati numerici
ottenuti mediante FLUENT () ed i dati sperimentali WT (◦) relativi alla distribuzione del coefficiente
di pressione Cp sulla superficie del profilo alare NACA 0012 per M∞ = 0.5 (sinistra) e M∞ = 0.75
(destra) ed α = 2◦ .

1.5 1.5

Upper Surface
1 1
Upper Surface
0.5 0.5
−Cp [−]

−Cp [−]

0 Lower Surface 0 Lower Surface

WT WT
-0.5 -0.5
FLUENT FLUENT
AeroFoam AeroFoam
-1 -1
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
x/c [−] x/c [−]

Figura 7.7: Confronto tra i risultati numerici ottenuti mediante AeroFoam (), i risultati numerici
ottenuti mediante FLUENT () ed i dati sperimentali WT (◦) relativi alla distribuzione del coefficiente
di pressione Cp sulla superficie del profilo alare NACA 0012 per M∞ = 0.5 (sinistra) e M∞ = 0.75
(destra) ed α = 4◦ .

7.3 Risposta temporale ad una raffica a scalino di un profilo


alare lenticolare
Si richiede di calcolare numericamente la variazione non stazionaria della pendenza della curva
di portanza CL/α (τ ) in funzione del tempo adimensionale τ = t V∞ /La con La = c/2 di un
profilo alare lenticolare a doppio arco di circonferenza di corda c = 1 m e spessore massimo
t = 0.01 m ≪ c investito da una corrente asintotica bidimensionale uniforme transonica di
fluido ideale con γ = 1.4 e R = 287.05 kgJK caratterizzata da una pressione termodinamica
P∞ = 101325 P a, una temperatura T∞ = 288.15 K ed un numero di Mach M∞ = 0.5,
M∞ = 0.7, M∞ = 1.0 e M∞ = 1.2 e soggetto ad una raffica di ampiezza vg /V∞ = tan(1◦ ).
102 Problemi di verifica aerodinamici

Tale problema di verifica semplice è fondamentale per valutare l’accuratezza del soluto-
re aerodinamico sviluppato AeroFoam nel risolvere numericamente il transitorio aerodinamico
(fondamentale ai fini dell’analisi aeroelastica) nei regimi di moto subsonico, transonico e super-
sonico, confrontando i risultati numerici ottenuti con la soluzione analitica calcolata secondo la
teoria dei profili sottili [6].
Il dominio spaziale V è rappresentato in Figura 7.8 ed è costituito da un profilo alare S b
in corrispondenza del quale sono imposte le condizioni al contorno di non compenetrazione e
da una circonferenza esterna S ∞ di raggio R∞ = 25 m ≫ c in corrispondenza della quale sono
imposte le condizioni al contorno di Riemann. La griglia di calcolo aerodinamica è rappresentata
in Figura 7.8 ed è costituita da Nv = 6498 volumi finiti triangolari e da Nn = 6740 nodi con un
passo di griglia minimo pari a h = 0.01 m in corrispondenza del profilo alare.

11111111111111111111111111111
00000000000000000000000000000
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111

S
00000000000000000000000000000
11111111111111111111111111111
b
n
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
y
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
c
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
v
00000000000000000000000000000
11111111111111111111111111111
g b
00000000000000000000000000000
11111111111111111111111111111
S
00000000000000000000000000000
11111111111111111111111111111
M∞ 00000000000000000000000000000
11111111111111111111111111111 x
00000000000000000000000000000
11111111111111111111111111111
0000000000000
1111111111111
t
00000000000000000000000000000
11111111111111111111111111111
0000000000000
1111111111111
00000000000000000000000000000
11111111111111111111111111111
0000000000000
1111111111111
00000000000000000000000000000
11111111111111111111111111111
0000000000000
1111111111111
P∞ 00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
Slip
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
T∞ 00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
R
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111

00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
Riemann
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111
00000000000000000000000000000
11111111111111111111111111111

Figura 7.8: Definizione qualitativa del problema (sinistra) e dettaglio della griglia di calcolo (destra).

1.6 1.6

1.4 1.4
M∞=1.0
M∞=0.7
1.2 1.2
CL/α/2π [−]

CL/α/2π [−]

1 1
M∞=0.5
M∞=1.2
0.8 0.8

0.6 0.6

0.4 0.4
0 2 4 6 8 10 12 14 16 0 2 4 6 8 10 12 14 16
τ [−] τ [−]

Figura 7.9: Confronto tra i risultati numerici ottenuti mediante AeroFoam (◦) con la soluzione analitica
calcolata secondo la teoria dei profili sottili (−) relativi alla variazione non stazionaria della pendenza della
curva di portanza CL/α (τ ) in funzione del tempo adimensionale τ = t V∞ /La di un profilo alare lenticolare
soggetto ad una raffica a scalino in direzione trasversale di ampiezza massima vg /V∞ = tan(1◦ ).
Ugello convergente-divergente 103

Il dominio temporale T = [ 0 s, 0.05 s ] è discretizzato in Nt = 10000, Nt = 12500,


Nt = 20000 e Nt = 25000 intervalli di integrazione temporale di ampiezza costante pari a
∆t = 5 · 10−6 s, ∆t = 4 · 10−6 s, ∆t = 2.5 · 10−6 s e ∆t = 2 · 10−6 s scelte in modo tale
che il numero di Courant massimo sia sempre pari a Comax ≃ 1.95 rispettivamente nel caso di
M∞ = 0.5, M∞ = 0.7, M∞ = 1.0 e M∞ = 1.2.
Il tempo di esecuzione per ogni singola iterazione temporale è pari a CPUtime = 0.045 s;
di conseguenza il tempo di esecuzione complessivo è pari a CPUtime = 7.50 min nel caso di
M∞ = 0.5, CPUtime = 9.35 min nel caso di M∞ = 0.7, CPUtime = 15.00 min nel caso di
M∞ = 1.0 e CPUtime = 18.75 min nel caso di M∞ = 1.2.
In Figura 7.9 sono presentati i risultati numerici relativi alla variazione non stazionaria della
pendenza della curva di portanza CL/α (τ ) in funzione del tempo adimensionale τ = t V∞ /La del
profilo alare lenticolare soggetto ad una raffica a scalino di ampiezza massima vg /V∞ = tan(1◦ )
ottenuti imponendo i parametri relativi agli schemi di discretizzazione spaziale, discretizzazione
temporale, estrapolazione delle condizioni al contorno e valutazione del residuo riportati in
Tabella 6.2; è possibile osservare un ottimo accordo con la soluzione analitica calcolata secondo
la teoria dei profili sottili [6].

7.4 Ugello convergente-divergente


Si vuole calcolare numericamente la corrente bidimensionale stazionaria di fluido ideale con
γ = 1.4 e R = 287.05 kgJK all’interno ed all’esterno di un condotto convergente-divergente di
lunghezza L = 7.5 m caratterizzato dalla seguente legge di variazione della semi-altezza della
sezione:
2
h(x) = 1 + hT − e−A (x−xT ) con x < L, (7.2)

dove hT = 0.5 m è la semi-altezza in corrispondenza della sezione di gola xT = 1.5 m ed infine


il coefficiente A = 0.2 m−2 . Tale condotto a monte è posto in comunicazione con un serbatoio
di aria in quiete caratterizzato da una pressione totale P t = 20 atm ed una temperatura
totale T t = 564.55 K ed a valle scarica in atmosfera in quiete caratterizzata da una pressione
termodinamica Pa = 101325 P a ed una temperatura Ta = 288.15 K. Successivamente si richiede
di confrontare i risultati numerici cosı̀ ottenuti con la soluzione analitica calcolata secondo la
teoria quasi-1D e delle caratteristiche [34].
Il dominio spaziale V è rappresentato in Figura 7.10 ed è costituito dalla sola metà su-
periore (per minimizzare il costo computazionale) del condotto convergente-divergente S b in
corrispondenza del quale sono imposte le condizioni al contorno di non compenetrazione e da
un rettangolo esterno S ∞ di base L∞ = 40 m e di altezza h∞ = 20 m in corrispondenza del
quale sono imposte le condizioni al contorno di Riemann. La griglia di calcolo aerodinami-
ca è rappresentata in Figura 7.8 ed è costituita da Nv = 30900 volumi finiti triangolari e da
Nn = 31728 nodi con un passo di griglia minimo pari a h = 0.1 m in corrispondenza dell’asse
di simmetria.
Il dominio temporale T = [ 0 s, 0.5 s ] è discretizzato in Nt = 50000 intervalli di integrazione
temporale di ampiezza costante pari a ∆t = 1 · 10−5 s scelta in modo tale che il numero di
Courant massimo sia sempre pari a Comax ≃ 1.85.
Il tempo di esecuzione per ogni singola iterazione temporale è pari a CPUtime = 0.22 s
di conseguenza il tempo di esecuzione complessivo è pari a CPUtime = 3.00 h.
ts
104 Problemi di verifica aerodinamici

10000000000000000000000000000000000000000000000000000000
0111111111111111111111111111111111111111111111111111111110
0
1
0
1 S ∞ 1010
0
1 1010
0
1 1010
0
1
0
1
0
1 10
0
1 h 1010
0
1 ∞
10
0
1
0
1 1010
0
1
0
1 1010
0
1 10
0
1
0
1 Riemann 1010

Riemann
01111111111111111111111111111111111111111111111
10000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000
1111111111111111111111111111111111111111111111 10
0000000000000000000000000000000000000000000000
1111111111111111111111111111111111111111111111
b
n
0000000000000000000000000000000000000000000000
1111111111111111111111111111111111111111111111 1010
0000000000000000000000000000000000000000000000
1111111111111111111111111111111111111111111111 1010
0000000000000000000000000000000000000000000000
1111111111111111111111111111111111111111111111
l i p
0000000000000000000000000000000000000000000000
1111111111111111111111111111111111111111111111
S
0000000000000000000000000000000000000000000000
1111111111111111111111111111111111111111111111
x 10
1010
0
1
0
10000000000000000000000000000000000000000000000
1111111111111111111111111111111111111111111111
01111111111111111111111111111111111111111111111
0000000000000000000000000000000000000000000000
SupersonicInlet

10000000000000000000000000000000000000000000000
1111111111111111111111111111111111111111111111
b 1010
0
1
0
1
S
0000000000000000000000000000000000000000000000
1111111111111111111111111111111111111111111111 10
0
10000000000000000000000000000000000000000000000
1111111111111111111111111111111111111111111111 1010
0
1
0
1 t 1010
0
1 P hT h(x)
0
1 10
0
1 t 1010
0
1
0
1 T x 1010
0
1 T
0
1 10
0
1 SymmetryPlane
01111111111111111111111111111111111111111111111
10000000000000000000000000000000000000000000000 00000
11111 1100
0000000000000000000000000000000000000000000000
1111111111111111111111111111111111111111111111 0000010
11111
L L∞

Figura 7.10: Definizione qualitativa del problema (sinistra) e dettaglio della griglia di calcolo (destra).

Nelle Figure 7.11 e 7.12 sono presentati i risultati numerici relativi alle isolinee del numero di
Mach M all’interno ed all’esterno del condotto convergente-divergente (7.2) ed alla distribuzione
della pressione termodinamica P e del numero di Mach M lungo l’asse di simmetria del condotto
convergente-divergente ottenuti imponendo i parametri relativi agli schemi di discretizzazione
spaziale, discretizzazione temporale, estrapolazione delle condizioni al contorno e valutazione
del residuo riportati in Tabella 6.2; è possibile osservare un ottimo accordo con la soluzione
analitica calcolata secondo la teoria quasi-1D e la teoria delle caratteristiche [34]. Inoltre, dato
che la pressione atmosferica Pa è inferiore alla pressione termodinamica in corrispondenza della
sezione di efflusso Pe ovvero Pa < Pe , l’ugello è detto sottoespanso ed esternamente ad esso si
genera una serie periodica teoricamente infinita (in assenza di dissipazione viscosa o numerica)
di onde di espansione e compressione delimitate da una discontinuità di contatto di spessore
teoricamente infintesimo (in assenza di dissipazione viscosa o numerica).

2.00
1.50
1.00
0.50
0.00
0.00 2.00 4.00 6.00 8.00 10.00 12.00 14.00 16.00 18.00 20.00

Figura 7.11: Isolinee del numero di Mach M all’interno ed all’esterno del condotto convergente-
divergente (7.2) calcolate mediante AeroFoam (in alto) e secondo la teoria delle caratteristiche [34]
(al centro). È inoltre riportato (in basso) il reticolo delle linee caratteristiche della famiglia C + ()
e della famiglia C − () su cui è nota la soluzione analitica; sono inoltre messe in evidenza le porzioni del
contorno in corrispondenza delle quali si impone la condizione al contorno sulla velocità (−) piuttosto
che sulla pressione (−).
Scalino di Woodward-Colella 105

1 3

2.5
0.8

2
0.6
P/P0 [−]

M [−]
1.5
0.4
1

0.2
0.5

xT xT
0 0
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
x/L [−] x/L [−]

Figura 7.12: Confronto tra i risultati numerici ottenuti mediante AeroFoam (◦) con la soluzione analitica
calcolata secondo la teoria quasi-1D () e delle caratteristiche () relativi alla distribuzione della pres-
sione termodinamica P (sinistra) e del numero di Mach (destra) lungo l’asse di simmetria del condotto
convergente-divergente.

7.5 Scalino di Woodward-Colella


Si richiede di calcolare numericamente la corrente bidimensionale non stazionaria supersonica
di fluido ideale con γ = 1.4 e R = 0.714 kgJK caratterizzata da una pressione termodinamica
P∞ = 1 P a, una temperatura T∞ = 1 K ed un numero di Mach M∞ = 3 all’interno del condotto
di Woodward e Colella [55]. Successivamente si richiede di confrontare i risultati numerici cosı̀
ottenuti con quelli forniti dal solutore aerodinamico CentralFoam riportati in [14].
Il dominio spaziale V è rappresentato in Figura 7.13 ed è costituito da un condotto ret-
tangolare di lunghezza L = 3 m e di altezza h = 1 m; in corrispondenza della coordinata
xS = 0.6 m è inoltre presente uno scalino rettangolare di altezza hS = 0.2 m. In corrispondenza
delle pareti superiore ed inferiore sono imposte le condizioni al contorno di non compenetra-
zione, mentre in corrispondenza della sezione di ingresso e di uscita sono imposte le condizioni
al contorno di Riemann. La griglie di calcolo aerodinamiche sono rappresentate in Figura 7.13
e sono costituite da Nv = 6559 volumi finiti triangolari e da Nn = 6830 nodi (A), da Nv = 7560
volumi finiti quadrangolari ortogonali e da Nn = 15542 nodi (B) ed infine da Nv = 7500 volumi
finiti poliedrici e da Nn = 30776 nodi (C). Il passo di griglia minimo è pari a h = 0.03 m
in corrispondenza dello scalino.
Il dominio temporale T = [ 0 s, 4 s ] è discretizzato in Nt = 4000 intervalli di integrazione
temporale di ampiezza costante pari a ∆t = 1 · 10−3 s scelta in modo tale che il numero di
Courant massimo sia sempre pari a Comax ≃ 1.98.
Il tempo di esecuzione per ogni singola iterazione temporale è pari a CPUtime = 0.012 s
di conseguenza il tempo di esecuzione complessivo è pari a CPUtime = 48 s
In Figura 7.14 sono presentati i risultati numerici relativi alle isolinee della velocità v e
della densità ρ all’istante di tempo t = 4 s all’interno del condotto di Woodward e Colella
ottenuti imponendo i parametri relativi agli schemi di discretizzazione spaziale, discretizzazione
temporale, estrapolazione delle condizioni al contorno e valutazione del residuo riportati in
Tabella 6.2; è possibile osservare un ottimo accordo con i risultati numerici ottenuti mediante
il solutore aerodinamico CentralFoam riportati in [14].
ts
106 Problemi di verifica aerodinamici

y
Slip
011011111111111111111111111111111111111111111111111
00000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000001010
11111111111111111111111111111111111111111111111
1010 1010

ExtrapOutlet
L
SupersonicInlet

1010 1010
1010 M ∞ 1010
h
1010 P∞ 1010
1010 T 1010
1010 ∞ Slip
00000000000000000000000000000000000000
11111111111111111111111111111111111111 1010
1010 x 00000000000000000000000000000000000000
11111111111111111111111111111111111111
S 00000000000000000000000000000000000000
11111111111111111111111111111111111111
h x nb
101111111111
000000000000000000000000000000000000000000000000
11111111111111111111111111111111111111
S
000000000011111111111111111111111111111111111111
111111111100000000000000000000000000000000000000

Figura 7.13: Definizione qualitativa del problema (in alto a sinistra) e dettaglio della griglia di calcolo
A non strutturata a volumi finiti triangolari (in alto a destra), della griglia di calcolo B strutturata a
volumi finiti quadrangolari ortogonali (in basso a sinistra) e della griglia di calcolo C non strutturata a
volumi finiti poligonali (in basso a destra). La griglia di calcolo C è generata a partire dalla griglia di
calcolo A mediante il programma Tri2Poly scritto in linguaggio SciLab.

Figura 7.14: Confronto tra la soluzione numerica relativa al campo di velocità v e 30 isolinee equispaziate
del campo di densità ρ ottenuta mediante CentralFoam sulla griglia di calcolo B riportata in Letteratura
[14] (in alto a sinistra) con quella ottenuta mediante AeroFoam sulla griglia di calcolo A (in alto a destra),
B (in basso a sinistra) e C (in basso a destra).

7.6 Ala ONERA M6


Si vuole risolvere numericamente il campo di moto tridimensionale attorno ad un’ala ONERA
M6 rappresentata in Figura 7.15 investita da una corrente asintotica uniforme transonica di
fluido ideale con γ = 1.4 e R = 287.05 kgJK caratterizzata da una pressione termodinamica
P∞ = 31500 P a, una temperatura T∞ = 255.6 K, un numero di Mach M∞ = 0.84 ed infine ad
un angolo di incidenza α = 3.06◦ . Successivamente si richiede di confrontare i risultati numerici
cosı̀ ottenuti con quelli forniti dal solutore aerodinamico commerciale FLUENT e con i dati
sperimentali riportati in [35].
Ala ONERA M6 107
ct

6
7 Geometria Sezioni y/b
5
AR 3.8 1 0.20
4

b 1.196 m 2 0.44
3
M∞ c ΛLE 30◦ 3 0.65
b
2
ΛT E 15.8◦ 4 0.80
y
λ 0.562 5 0.90
1111111111111111
0000000000000000
1
0000000000000000
1111111111111111
ΛLE 1111111111111111
0000000000000000
ΛT E
0000000000000000
1111111111111111 c 0.646 m 6 0.95
0000000000000000
1111111111111111 x
0000000000000000
1111111111111111
111111111111111111111111111111
000000000000000000000000000000
111111111111111111111111111111
000000000000000000000000000000 S 1.506 m2 7 0.99
0.44 cr
cr
Figura 7.15: Geometria dell’ala ONERA M6.

Figura 7.16: Griglia di calcolo (sinistra) e dettaglio della griglia di calcolo (destra).

Il dominio spaziale V è rappresentato in Figura 7.16 ed è costituito da un’ala ONERA M6 S b


in corrispondenza della quale sono imposte le condizioni al contorno di non compenetrazione
e da un cubo esterno S ∞ di base b∞ = 11 m, spessore s∞ = 5 m e di altezza h∞ = 10 m in
corrispondenza del quale sono imposte le condizioni al contorno di Riemann. La griglia di
calcolo aerodinamica è rappresentata in Figura 7.16 ed è costituita da Nv = 341797 volumi
finiti tetraedrici e da Nn = 72791 nodi con un passo di griglia minimo pari a h = 0.001 m in
corrispondenza del bordo d’attacco della superficie alare.
Il dominio temporale T = [ 0 s, 0.025 s ] è discretizzato in Nt = 75000 intervalli di integra-
zione temporale di ampiezza costante pari a ∆t = 5 · 10−7 s scelto in modo tale che il numero
di Courant massimo sia sempre pari a Comax ≃ 1.95.
Il tempo di esecuzione per ogni singola iterazione temporale è pari a CPUtime = 3.48 s
di conseguenza il tempo di calcolo complessivo è pari a CPUtime = 72.50 h.
108 Problemi di verifica aerodinamici

In Figura 7.17 e nelle Figure 7.18–7.19 sono presentati i risultati numerici relativi rispettiva-
mente alle isolinee del campo di pressione termodinamica P ed alla distribuzione del coefficiente
di pressione Cp valutati in corrispondenza della superficie dell’ala ONERA M6 ottenuti impo-
nendo i parametri relativi agli schemi di discretizzazione spaziale, discretizzazione temporale,
estrapolazione delle condizioni al contorno e valutazione del residuo riportati in Tabella 6.2;
è possibile osservare un ottimo accordo con i risultati numerici ottenuti mediante il solutore
aerodinamico commerciale FLUENT (con un tempo di esecuzione per ogni singola iterazione
temporale CPUtime del tutto confrontabile) ed un soddisfacente accordo con i dati sperimentali
riportati in [35]; ovviamente le discrepanze che è possibile osservare in prossimità delle onde
d’urto normali che si formano sulla superficie alare sono dovute all’azione degli sforzi viscosi
che tendono ad addolcire le eventuali discontinuità.

Figura 7.17: Isolinee del campo di pressione termodinamica P sulla superficie dell’ala ONERA M6 e
sul piano di simmetria del dominio esterno calcolate mediante AeroFoam (sinistra) e FLUENT (destra).

× 10−4 1.5
100 y/b = 0.20
ρ
m 1
10 Upper Surface
Et
0.5
−Cp [−]
||∆||L1 [−]

1
0 Lower Surface

0.1 WT
-0.5
FLUENT
AeroFoam
0.01 -1
0.001 0.01 0.1 1 10 100 1000 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
t[s] × 10−4 x/c [−]

Figura 7.18: Convergenza temporale della soluzione numerica ottenuta mediante AeroFoam relativa alla
densità ρ (), quantità di moto m () e energia totale specifica per unità di volume E t () (sinistra) e
confronto tra i risultati numerici ottenuti mediante AeroFoam (), i risultati numerici ottenuti mediante
FLUENT () ed i dati sperimentali WT (◦) relativi alla distribuzione del coefficiente di pressione Cp in
corrispondenza delle sezioni alari definite in Figura 7.15 (destra).
Ala ONERA M6 109

1.5 1.5
y/b = 0.44 y/b = 0.65

1 1
Upper Surface Upper Surface

0.5 0.5
−Cp [−]

−Cp [−]
0 Lower Surface 0 Lower Surface

WT WT
-0.5 -0.5
FLUENT FLUENT
AeroFoam AeroFoam
-1 -1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x/c [−] x/c [−]

1.5 1.5
y/b = 0.80 y/b = 0.90

1 1
Upper Surface Upper Surface
0.5 0.5
−Cp [−]

−Cp [−]

0 Lower Surface 0
Lower Surface
WT WT
-0.5 -0.5
FLUENT FLUENT
AeroFoam AeroFoam
-1 -1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x/c [−] x/c [−]

1.5 1.5
y/b = 0.95 y/b = 0.99

1 1
Upper Surface Upper Surface
0.5 0.5
−Cp [−]

−Cp [−]

0 0 Lower Surface
Lower Surface
WT WT
-0.5 -0.5
FLUENT FLUENT
AeroFoam AeroFoam
-1 -1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x/c [−] x/c [−]

Figura 7.19: Confronto tra i risultati numerici ottenuti mediante AeroFoam (), i risultati numerici
ottenuti mediante FLUENT () ed i dati sperimentali WT (◦) relativi alla distribuzione del coefficiente
di pressione Cp in corrispondenza delle sezioni alari definite in Figura 7.15.
110 Problemi di verifica aerodinamici

7.7 Ala RAE A e corpo assisimmetrico


Si richiede di risolvere numericamente il campo di moto tridimensionale attorno ad un corpo
assisimmetrico e da un’ala RAE A rappresentati in Figura 7.20 investiti da una corrente asin-
totica uniforme transonica di fluido ideale con γ = 1.4 e R = 287.05 kgJK caratterizzata da
una pressione termodinamica P∞ = 29765 P a, una temperatura T∞ = 275.3872 K, un numero
di Mach M∞ = 0.9 ed infine ad un angolo di incidenza α = 1◦ . Successivamente si richie-
de di confrontare i risultati numerici cosı̀ ottenuti con quelli forniti dal solutore aerodinamico
commerciale FLUENT e con i dati sperimentali riportati in [41].
Il dominio spaziale V è rappresentato in Figura 7.21 ed è costituito da corpo assisimmetrico
e da un’ala RAE A S b in corrispondenza dei quali sono imposte le condizioni al contorno di non
compenetrazione e da un parallelepipedo esterno S ∞ di base b∞ = 14 m, spessore s∞ = 12 m
ed altezza h∞ = 12 m in corrispondenza del quale sono imposte le condizioni al contorno di
Riemann. La griglia di calcolo aerodinamica è rappresentata in Figura 7.21 ed è costituita da
Nv = 459487 volumi finiti tetraedrici e da Nn = 95668 nodi con un passo di griglia minimo pari
a h = 0.025 m in corrispondenza del bordo d’attacco della superficie alare.
Il dominio temporale T = [ 0 s, 0.02 s ] è discretizzato in Nt = 100000 intervalli di integra-
zione temporale di ampiezza costante pari a ∆t = 2 · 10−7 s scelto in modo tale che il numero
di Courant massimo sia sempre pari a Comax ≃ 1.85.
Il tempo di esecuzione per ogni singola iterazione temporale è pari a CPUtime = 4.52 s;
di conseguenza il tempo di esecuzione complessivo è pari a CPUtime = 125.55 h.

L = 1.928 m

xw = 0.609 m

xo = 0.508 m cr = 0.228 m xb = 0.760 m

R(x) Ro = 0.076 m Λc/2 = 30◦ Rb = Ro /2

1
x

11111111
00000000
00000000 ϕ
11111111 c b = 0.457 m
00000000
11111111
00000000
11111111
3

00000000
11111111
00000000
11111111
00000000
11111111
4

00000000
11111111 5

ct = 0.076 m

Figura 7.20: Geometria del corpo assisimmetrico e dell’ala RAE A; sono inoltre messe in evidenza
le sezioni alari e della fusoliera in corrispondenza delle quali sono rilevati mediante prese di pressione
i risultati sperimentali riportati in [41].
Ala RAE A e corpo assisimmetrico 111

Figura 7.21: Griglia di calcolo (sinistra) e dettaglio della griglia di calcolo (destra).

In Figura 7.22 e nelle Figure 7.23–7.24 sono presentati i risultati numerici relativi rispettiva-
mente alle isolinee del campo di pressione termodinamica P ed alla distribuzione del coefficiente
di pressione Cp valutati in corrispondenza della superficie del corpo assisimmetrico e dell’ala
RAE A ottenuti imponendo i parametri relativi agli schemi di discretizzazione spaziale, di-
scretizzazione temporale, estrapolazione delle condizioni al contorno e valutazione del residuo
riportati in Tabella 6.2; è possibile osservare un ottimo accordo con i risultati numerici otte-
nuti mediante il solutore aerodinamico commerciale FLUENT (con un tempo di esecuzione per
ogni singola iterazione temporale CPUtime del tutto confrontabile) ed un soddisfacente accordo
con i dati sperimentali riportati in [41]; ovviamente le discrepanze che è possibile osservare in
prossimità delle onde d’urto normali che si formano sulla superficie alare sono dovute all’azione
degli sforzi viscosi che tendono ad addolcire le eventuali discontinuità.

Figura 7.22: Isolinee del campo di pressione termodinamica P sulla superficie del corpo assisimmetrico
e dell’ala RAE A calcolate mediante AeroFoam (sinistra) e FLUENT (destra).
112 Problemi di verifica aerodinamici

× 10−4 0.4
10
ϕ = +15°
ρ
0.2
m
0
Et
1

−Cp [−]
||∆||L1 [−]

-0.2
ϕ = −15°
-0.4

0.1
-0.6 WT

-0.8 FLUENT
AeroFoam
0.01 -1
0.001 0.01 0.1 1 10 100 1000 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
t[s] × 10−4 x/L [−]

0.4 0.4
ϕ = +30° ϕ = +45°
0.2 0.2

0 0
ϕ = −45°
ϕ = −30°
−Cp [−]

−Cp [−]

-0.2 -0.2

-0.4 -0.4

-0.6 WT -0.6 WT

-0.8 FLUENT -0.8 FLUENT


AeroFoam AeroFoam
-1 -1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x/L [−] x/L [−]

0.4 0.4
ϕ = +60° ϕ = +90°
0.2 0.2

0 0
ϕ = −60° ϕ = −90°
−Cp [−]

−Cp [−]

-0.2 -0.2

-0.4 -0.4

-0.6 WT -0.6 WT

-0.8 FLUENT -0.8 FLUENT


AeroFoam AeroFoam
-1 -1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x/L [−] x/L [−]

Figura 7.23: Convergenza temporale della soluzione numerica ottenuta mediante AeroFoam relativa
alla densità ρ (), quantità di moto m () e energia totale specifica per unità di volume E t () (alto
a sinistra) e confronto tra i risultati numerici ottenuti mediante AeroFoam (), i risultati numerici
ottenuti mediante FLUENT () ed i dati sperimentali WT (◦) relativi alla distribuzione del coefficiente
di pressione Cp in corrispondenza delle sezioni longitudinale del corpo assisimmetrico.
Ala RAE A e corpo assisimmetrico 113

1 1
y/b = 0.25 y/b = 0.40

Upper Surface
Upper Surface
0.5 0.5

Lower Surface
−Cp [−]

−Cp [−]
Lower Surface
0 0

-0.5 WT -0.5 WT
FLUENT FLUENT
AeroFoam AeroFoam
-1 -1
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
x/c [−] x/c [−]

1 1
y/b = 0.60 y/b = 0.75

Upper Surface Upper Surface


0.5 0.5
−Cp [−]

−Cp [−]

Lower Surface Lower Surface


0 0

-0.5 WT -0.5 WT
FLUENT FLUENT
AeroFoam AeroFoam
-1 -1
0 0.2 0.4 0.6 0.8 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x/c [−] x/c [−]

1 1
y/b = 0.85 y/b = 0.925

Upper Surface Upper Surface


0.5 0.5
−Cp [−]

−Cp [−]

Lower Surface Lower Surface


0 0

-0.5 WT -0.5 WT
FLUENT FLUENT
AeroFoam AeroFoam
-1 -1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x/c [−] x/c [−]

Figura 7.24: Confronto tra i risultati numerici ottenuti mediante AeroFoam (), i risultati numerici
ottenuti mediante FLUENT () ed i dati sperimentali WT (◦) relativi alla distribuzione del coefficiente
di pressione Cp in corrispondenza delle sezioni alari definite in Figura 7.20.
114 Problemi di verifica aerodinamici
Capitolo 8

Interfaccia aeroelastica

In questo Capitolo in §8.1 è affrontato il problema di come costruire ed implementare nume-


ricamente uno schema di interfaccia aeroelastica che consenta di realizzare praticamente la
connessione ad anello chiuso tra il sistema strutturale ed il sistema aerodinamico mediante
un’opportuna procedura di interpolazione, presentando in particolare una procedura di inter-
polazione lineare molto semplice ed una più raffinata procedura di interpolazione ai minimi
quadrati mobili o Moving Least Squares (MLS) [28].
Grazie a tale schema di interfaccia aeroelastica è possibile interpolare gli spostamenti e
le velocità strutturali sui nodi aerodinamici appartenenti al contorno del corpo. Per tradurre
queste informazioni in una variazione delle condizioni al contorno del sistema aerodinamico l’ap-
proccio concettualmente più semplice e corretto, ma contemporaneamente più oneroso consiste
nel deformare la griglia di calcolo aerodinamica [56] e riformulare il problema aerodinamico
secondo una strategia Arbitrary Lagrangian-Eulerian (ALE) [30]. Una strategia meno costosa
è presentata in §8.2 e consiste nel modificare la condizione al contorno di non compenetrazione
assegnando un valore non nullo della velocità normale Vn , detta velocità di traspirazione, in
modo tale da riprodurre gli effetti geometrici e cinemtatici del movimento del contorno senza
effettivamente deformare la griglia di calcolo.

8.1 Schema di interfaccia aeroelastica


L’obiettivo della schema di interfaccia aeroelastica è quello di realizzare praticamente la con-
nessione ad anello chiuso tra il sistema strutturale ed il sistema aerodinamico mediante un’op-
portuna procedura di interpolazione e garantire che lo scambio di informazioni avvenga in
modo accurato, efficiente e flessibile. Ad esempio è necessario sapere tradurre gli spostamenti
e le velocità strutturali in variazioni delle condizioni al contorno del sistema aerodinamico ed
analogamente le forze aerodinamiche in una condizione di carico agente sul sistema strutturale.
Come descritto più dettagliatamente in §2.4 progettare ed implementare numericamente
uno schema di interfaccia che soddisfi tali requisiti non sono operazioni banali, poiché i modelli
strutturale ed aerodinamico da interconnettere sono in generale caratterizzati da differenti do-
mini spaziali e griglie di calcolo (per tipologia di elementi, numero e posizionamento dei nodi).
In Figura 8.1 sono ad esempio rappresentati il modello strutturale ad elementi finiti (FEM) di
piastra caratterizzato da un numero di gradi di libertà ridotto Ns = 101 ed il modello aero-
dinamico a volumi finiti (FV) tetraedrici caratterizzato da un numero di gradi di libertà sul
contorno elevato Nab = 5506 per il problema aeroelastico di verifica dell’ala AGARD 445.6 [8].

115
116 Interfaccia aeroelastica

Figura 8.1: Griglia di calcolo del modello strutturale ad elementi finiti (FEM) di piastra (sinistra) e
contorno della griglia di calcolo del modello aerodinamico a volumi finiti (FV) tetraedrici (destra) per il
problema aeroelastico di verifica dell’ala AGARD 445.6 [8].

Innanzitutto è possibile affrontare il problema della costruzione dello schema di interfaccia


secondo un approccio agli spostamenti, ovvero cercando un operatore lineare che, noto il vet-
tore degli spostamenti strutturali, restituisca il vettore degli spostamenti interpolati sui nodi
aerodinamici appartenenti al contorno del corpo nel seguente modo:

{ua } = [ I ] {us }, (8.1)


b
dove [ I(x) ] ∈ RNa ×Ns è la matrice di interfaccia incognita. Equivalentemente è possibile
ricorrere ad un approccio alle forze: come dimostrato in §2.4, per garantire la conservazione
della quantità di moto e dell’energia scambiate tra il sistema strutturale ed il sistema aerodi-
namico, l’operatore lineare che consente di riportare i carichi aerodinamici sui nodi strutturali
b
corrisponde infatti alla matrice di interfaccia incognita trasposta [ I(x) ]T ∈ RNs ×Na , ovvero:

{F as } = [ I ]T {F aa }, (8.2)

8.1.1 Interpolazione lineare composita


La strategia concettualmente più semplice e più efficiente dal punto di vista computazionale
per esplicitare la matrice di interfaccia incognita [ I ] secondo un approccio agli spostamenti
consiste nell’utilizzare uno schema di interpolazione lineare composita. Tale strategia funziona
molto bene nel caso in esame del problema aeroelastico di verifica dell’ala AGARD 445.6,
ma in generale è caratterizzata da un campo di applicabilità piuttosto ristretto.
Supponendo che la griglia di calcolo aerodinamica, caratterizzata da un numero di gradi di
libertà sul contorno elevato, sia geometricamente sovrapponibile alla griglia di calcolo struttu-
rale, viceversa caratterizzata da un numero di gradi di libertà ridotto, e che quest’ultima sia
costituita da elementi di piastra piani triangolari, è innanzitutto necessario partizionare la gri-
glia di calcolo aerodinamica sovrapponendola a quella strutturale come illustrato in Figura 8.2.
Più in particolare è possibile proiettare ogni i-esimo nodo aerodinamico xa, i sulla griglia di
calcolo strutturale e successivamente trovare all’interno di quale j-esimo elemento strutturale Ωj
cada l’i-esimo nodo aerodinamico proiettato x⊥ a, i = xa, i − (xa, i · n
bj) n
b j , dove n
bj è il versore
normale al j-esimo elemento strutturale Ωj .
Schema di interfaccia aeroelastica 117

∆b
nj
us, j2
b 0, j
n
bj
n
xs, j3 e s, j (x)
u

ua, i
us, j1
x⊥
a, i
xs, j1
us, j3
Ωj xs, j2

Figura 8.2: Partizionamento della griglia di calcolo aerodinamica dell’ala AGARD 445.6 distinguendo
rispettivamente in () e () facce di contorno appartenenti ad elementi strutturali differenti (sinistra)
e schema di interpolazione lineare sul j-esimo elemento strutturale Ωj (destra).

Indicando con j1 , j2 e j3 gli indici con riferimento alla numerazione globale dei gradi di
libertà dei nodi strutturali xs, j1 , xs, j2 e xs j3 che corrispondono ai vertici del j-esimo elemento
strutturale Ωj e con us, j1 , us, j2 e us, j3 i relativi spostamenti, è possibile costruire la seguente
funzione interpolante ad esempio al primo ordine:

e s, j (x) = us, j1 φ1 (x) + us, j2 φ2 (x) + us, j3 φ3 (x),


u (8.3)

dove φk (x) sono opportune funzioni di base polinomiali lagrangiane tali per cui φk (xjk ) ≡ 1.
Supponendo che il versore normale ad ogni j-esimo elemento strutturale Ωj sia parallelo al
versore beZ del sistema di riferimento globale, come nel caso in esame del problema aeroelastico
di verifica dell’ala AGARD 445.6, la k-esima funzione di base assume la seguente forma:

φk (x) = ak + bk x + ck y, (8.4)

dove i coefficienti ak , bk e ck possono essere facilmente determinati invertendo analiticamente


la seguente matrice:
   −1
a1 a2 a3 1 xs, j1 ys, j1
 b1 b2 b3  =  1 xs, j2 ys, j2 ; (8.5)
c1 c2 c3 1 xs, j3 ys, j3
ovviamente affinché tale matrice sia invertibile è necessario che il determinante sia diverso da
zero, ovvero non esistano elementi strutturali di area nulla. Per ogni i-esimo nodo aerodinamico
proiettato x⊥a, i interno al j-esimo elemento strutturale Ωj è quindi possibile calcolare il relativo
spostamento ua, i = u e (x⊥
a, i ); analogamente è possibile assemblare la matrice di interpolazione
incognita [ I ] inizializzando ogni jk -esima colonna relativa all’i-esima riga nel seguente modo:

[ I|i, jk ] = φk (x⊥
a, i ). (8.6)

Infine è opportuno osservare che tale schema di interpolazione lineare a tratti del campo
degli spostamenti e delle velocità strutturali corrisponde ad uno schema di interpolazione co-
stante a tratti del campo delle variazioni ∆b n=n b−n b 0 dei versori normali deformati rispetto
alla configurazione indeformata: infatti ogni i-esima faccia di contorno della griglia di calcolo
aerodinamica il cui baricentro geometrico proiettato x⊥ a, i cada all’interno dello stesso elemento
strutturale Ωj è caratterizzata dalla variazione del versore normale ∆b ni = ∆bnj ∀ xa, i ∈ Ωj .
118 Interfaccia aeroelastica

Per verificare il corretto funzionamento di tale schema di interfaccia nelle Figure 8.3–8.6
sono rappresentate la griglia di calcolo strutturale ad elementi finiti (FEM) di piastra ed il
contorno della griglia di calcolo aerodinamica a volumi finiti (FV) tetraedrici opportunamente
deformate mediante la libreria motionSolver del programma OpenFOAM secondo le prime
quattro forme modali sperimentali dell’ala AGARD 445.6 riportate in [8]: è possibile osservare
che la ricostruzione delle superfici mediante lo schema di interpolazione lineare composita (8.3)
è sempre più che soddisfacente.

Figura 8.3: Confronto tra la griglia di calcolo strutturale ad elementi finiti (FEM) di piastra (sinistra)
ed il contorno della griglia di calcolo aerodinamica a volumi finiti (FV) tetraedrici (destra) deformate
secondo la forma modale sperimentale n◦ 1 (flessionale) dell’ala AGARD 445.6.

Figura 8.4: Confronto tra la griglia di calcolo strutturale ad elementi finiti (FEM) di piastra (sinistra)
ed il contorno della griglia di calcolo aerodinamica a volumi finiti (FV) tetraedrici (destra) deformate
secondo la forma modale sperimentale n◦ 2 (torsionale) dell’ala AGARD 445.6.
Schema di interfaccia aeroelastica 119

Figura 8.5: Confronto tra la griglia di calcolo strutturale ad elementi finiti (FEM) di piastra (sinistra)
ed il contorno della griglia di calcolo aerodinamica a volumi finiti (FV) tetraedrici (destra) deformate
secondo la forma modale sperimentale n◦ 3 (flessionale) dell’ala AGARD 445.6.

Figura 8.6: Confronto tra la griglia di calcolo strutturale ad elementi finiti (FEM) di piastra (sinistra)
ed il contorno della griglia di calcolo aerodinamica a volumi finiti (FV) tetraedrici (destra) deformate
secondo la forma modale sperimentale n◦ 4 (torsionale) dell’ala AGARD 445.6.

8.1.2 Interpolazione ai minimi quadrati mobili (MLS)


Una strategia più raffinata e flessibile, ma più costosa dal punto di vista computazionale per
esplicitare la matrice di interfaccia incognita [ I ] secondo un approccio agli spostamenti consiste
nell’utilizzare uno schema di interpolazione ai minimi quadrati mobili o Moving Least Squares
(MLS) [28], che consente di costruire un’approssimazione sufficientemente regolare ed accurata
del campo degli spostamenti e delle velocità strutturali in corrispondenza dei nodi aerodinamici
appartenenti al contorno del corpo conoscendo la soluzione solo all’interno di una nuvola di
nodi strutturali in generale irregolarmente distribuiti e dei quali non è nota la connettività:
di conseguenza è lecito attendersi che tale strategia sia caratterizzata da un campo di applica-
bilità molto ampio.
120 Interfaccia aeroelastica

Il campo degli spostamenti e delle velocità strutturali è approssimato in corrispondenza dei


nodi aerodinamici appartenenti al contorno del corpo mediante il seguente sviluppo polinomiale
ad Nk termini:
XNk
e (x) =
u φk (x) ak (x), (8.7)
k=1
dove φk (x) è la k-esima funzione di base polinomiale di ordine opportuno, generalmente lineare
o quadratica per evitare problemi di instabilità numerica, ed ak (x) è il k-esimo coefficiente
moltiplicativo incognito. Questi ultimi possono essere determinati minimizzando un’opportuna
norma dell’errore locale commesso utilizzando la funzione interpolante u e (x) mediante il me-
todo dei minimi quadrati pesati, ovvero minimizzando il seguente funzionale scritto in forma
variazionale: Z
J = W (x) kε(x)k2 dV, (8.8)
V
dove W (x) è un’opportuna funzione peso ed ε(x) è l’errore locale. Considerando ad esempio un
supporto di Nj nodi strutturali xs, j , in generale irregolarmente distribuiti ed in corrispondenza
dei quali siano noti gli spostamenti strutturali us, j , i coefficienti moltiplicativi incogniti ak (x)
possono esere determinati minimizzando il seguente funzionale scritto in forma discretizzata:
Nj X 2
X m
J = W (x − xs, j )
φk (xs, j ) ak (x) − us, j
. (8.9)
j=1 k=1

La regolarità del campo degli spostamenti e delle velocità interpolate in corrispondenza dei
nodi aerodinamici appartenenti al contorno del corpo dipende significativamente dalla scelta del-
la funzione peso; tipicamente sono utilizzate le Radial Basis Functions (RBF) a supporto com-
patto e di grado minimo espresse nella forma W (r/δ), dove r = kx−xs, j k e δ è un fattore di scala
che consente di modificare localmente le dimensioni Nj del supporto dei nodi strutturali xs, j ,
considerandone solo un numero minimo sufficiente di relativamente vicini e scartando viceversa
quelli più distanti in modo tale da contenere il costo computazionale. In [9] sono ad esempio
utilizzate le seguenti funzioni peso radiali a supporto compatto di grado minimo:

C0 : W (r) = (1 − r)2+ (8.10a)

C2 : W (r) = (1 − r)4+ (4 r + 1) (8.10b)

C4 : W (r) = (1 − r)6+ (35 r 2 + 18 r + 3). (8.10c)

8.2 Condizioni al contorno di traspirazione


Mediante lo schema di interfaccia aeroelastica è possibile interpolare il vettore degli spostamenti
e delle velocità strutturali {us (t)} e {u̇s (t)} sui nodi aerodinamici appartenenti al contorno del
corpo {ua (t)} e {u̇a (t)}. Per tradurre queste informazioni in una variazione delle condizioni
al contorno del sistema aerodinamico l’approccio concettualmente più semplice e corretto, ma
contemporaneamente più oneroso consiste nel deformare la griglia di calcolo aerodinamica, ad
esempio interpreteando le singole celle di calcolo come elementi discreti di rigidezza assegnata
e risolvendo il problema elastico conseguente [56], e riformulare il problema aerodinamico (5.1)
secondo una strategia Arbitrary Lagrangian-Eulerian (ALE), aggiungendo al vettore dei flussi
numerici il contributo relativo alla velocità di interfaccia [30].
Condizioni al contorno di traspirazione 121

D’altronde è opportuno ricordare che per contenere i tempi di calcolo lo studio del problema
di flutter corrisponde all’analisi delle proprietà di stabilità in piccolo del sistema aeroelasti-
co tempo-invariante (localmente) linearizzato per spostamenti infinitesimi nell’intorno di una
condizione di equilibrio, come descritto più dettagliatamente in §2.6. Una strategia alternativa
molto più efficiente e coerente con tale linearizzazione consiste nel mantenere inalterata la griglia
di calcolo aerodinamica e viceversa modificare la condizione al contorno di non compenetrazio-
ne assegnando un valore non nullo della velocità normale Vn , detta velocità di traspirazione, in
modo tale da riprodurre gli effetti geometrici e cinemtatici del movimento del contorno.

8.2.1 Formulazione linearizzata


Supponendo di disporre di una descrizione parametrica della superficie del corpo nella configu-
razione indeformata x0 (ξ, η) in funzione dei parametri spaziali ξ e η, è possibile ricavare una
descrizione parametrica della superfice del corpo nella configurazione deformata x(ξ, η, t) nel
sistema di riferimento globale solidale alla configurazione indeformata del corpo nel seguente
modo:
x(ξ, η, t) = x0 (ξ, η) − V ∞ t + s(ξ, η, t), (8.11)

eX del sistema di riferimento


dove V ∞ è la velocità di volo in generale non allineata con il versore b
globale e s(ξ, η, t) è il campo di piccoli spostamenti strutturali (tale contributo comprende sia la
deformazione del corpo conseguente all’applicazione dei carichi aerodinamici che la deflessione
imposta delle superfici di controllo).
Nell’ambito del modello matematico delle equazioni di Eulero (5.1) in corrispondenza di
un contorno solido S b , quale la superficie di un’ala investita da una corrente fluida, è neces-
sario imporre la condizione al contorno di non compenetrazione, ovvero l’annullamento della
componente normale della velocità locale a parete (v · n b )|S b = 0. Di conseguenza è neces-
sario esplicitare con riferimento alla relazione (8.11) l’espressione per la velocità locale v(ξ, η, t)
ed il versore normale alla superficie del corpo nella configurazione deformata n b (ξ, η, t).
Per quanto riguarda la velocità locale v(ξ, η, t), essa è definita nel sistema di riferimento
globale solidale alla configurazione indeformata del corpo nel seguente modo:

dx(ξ, η, t)
v(ξ, η, t) ≡ = −V ∞ + ṡ(ξ, η, t). (8.12)
dt

Viceversa per quanto riguarda il versore normale alla superficie del corpo nella configu-
razione deformata nb (ξ, η, t), esso è definito nel sistema di riferimento globale solidale con la
configurazione indeformata nel seguente modo:

x/ξ × x/η (x0/ξ + s/ξ ) × (x0/η + s/η )


b (ξ, η, t) ≡
n = . (8.13)
kx/ξ × x/η k k(x0/ξ + s/ξ ) × (x0/η + s/η )k

Svolgendo opportunamente i conti e trascurando nell’ipotesi di spostamenti infinitesimi i termini


di ordine superiore al primo in s(ξ, η, t), è infine possibile ottenere la seguente espressione
linearizzata:
b (ξ, η, t) ≡ n
n n(ξ, η, t) + O(s2 (ξ, η, t)),
b 0 (ξ, η, t) + ∆b (8.14)
122 Interfaccia aeroelastica

dove il versore normale alla superficie del corpo nella configurazione indeformata nb 0 (ξ, η, t)
e la variazione del versore normale conseguente alla deformazione strutturale ∆b
n(ξ, η, t) sono
definiti come:

x0/ξ × x0/η
b 0 (ξ, η, t) =
n (8.15a)
kx0/ξ × x0/η k

(x0/ξ × s/η ) − (x0/η × s/ξ ) (x0/ξ × s/η ) − (x0/η × s/ξ )


∆b
n(ξ, η, t) = −n b0 ·
b0 n (8.15b)
kx0/ξ × x0/η k kx0/ξ × x0/η k

Sostituendo le relazioni (8.12) e (8.14) nella definizione della condizione al contorno di non
compenetrazione e trascurando i termini di ordine superiore al primo in s(ξ, η, t) è possibile
scrivere:

(v · n
b )|S b = (−V ∞ + ṡ) · (b n) = −V ∞ · n
n0 + ∆b b 0 − V ∞ · ∆b b 0 + O(s2 ),
n + ṡ · n (8.16)

dove è possibile distinguere, oltre al contributo relativo alla configurazione indeformata, un


contributo geometrico proporzionale alla variazione della geometria della superficie del corpo,
ovvero alla variazione del versore normale ∆b n(ξ, η, t), ed infine un contributo cinematico pro-
porzionale alla velocità della superficie del corpo ṡ(ξ, η, t). Per riprodurre gli effetti geometrici
e cinematici del movimento del contorno senza effettivamente deformare la griglia di calcolo
aerodinamica, è allora possibile modificare la condizione al contorno di non compenetrazione
assegnando un valore non nullo della velocità normale Vn , detta velocità di traspirazione, diret-
ta come il versore normale alla superficie del corpo nella configurazione indeformata n b 0 (ξ, η, t),
ovvero:
Vn = −V ∞ · ∆b
n + ṡ · n
b 0. (8.17)

Supponendo di approssimare il campo di spostamenti s(ξ, η, t) mediante un metodo alla


Ritz come il prodotto di una base completa di funzioni di forma [ N (ξ, η) ] dipendente dai soli
parametri spaziali ξ e η e scelta a priori in modo tale da rispettare le condizioni al contorno
essenziali, e di un vettore di coordinate libere {q(t)} dipendenti dalla sola variabile temporale t
ed incognite, ovvero s(ξ, η, t) = [ N (ξ, η) ] {q(t)}, è possibile riscrivere la velocità di traspirazione
linearizzata nel seguente modo:

Vn = [ A(ξ, η) ] {q(t)} + [ B(ξ, η) ] {q̇(t)}, (8.18)

dove i vettori riga [ A(ξ, η) ] e [ B(ξ, η) ] che moltiplicano rispettivamente i vettori degli spo-
stamenti (contributo geometrico) e delle velocità (contributo cinematico) generalizzate {q(t)} e
{q̇(t)} sono definiti come:

 (x0/ξ × [ N /η ]) − (x0/η × [ N /ξ ])
[ A(ξ, η) ] = −V ∞ · [ I ] − n b0 ·
b0 n (8.19a)
kx0/ξ × x0/η k

[ B(ξ, η) ] = [ N (ξ, η) ] · n
b 0. (8.19b)
Condizioni al contorno di traspirazione 123

Un vantaggio dell’espressione linearizzata (8.17) della velocità di traspirazione Vn consiste


nella possibilità di sfruttare il Principio di Sovrapposizione delle Cause e degli Effetti (PSCE),
ovvero considerare separatamente il contributo geometrico (preponderante a regime) ed il contri-
buto cinematico (preponderante durante il transitorio) delle condizioni al contorno di traspira-
zione relative alla legge di movimento assegnata (ad esempio a scalino raccordato) dell’i-esimo
spostamento generalizzato qi (t). Come illustrato in [28] è allora possibile costruire separa-
tamente e successivamente sommare le matrici delle funzioni di trasferimento aerodinamiche
rispettivamente geometriche [ Ham G (k) ] e cinematiche [ H C (k) ] nel seguente modo:
am

G C
[ Ham (k) ] = [ Ham (k) ] + ik [ Ham (k) ]. (8.20)

8.2.2 Formulazione linearizzata per differenze finite


Supponendo di disporre di una griglia di calcolo aerodinamica che approssimi accuratamente
la reale geometria del corpo, è possibile sostituire all’approssimazione linearizzata (8.15b) della
variazione del versore normale ∆b n(ξ, η, t) la seguente espressione non lineare calcolata mediante
uno schema numerico a differenze finite:

∆b b (ξ, η, t) − n
n(ξ, η, t) = n b 0 (ξ, η, t). (8.21)

Più in particolare utilizzando lo schema di interpolazione lineare composito descritto in §8.1.1


per esplicitare la matrice di interfaccia incognita [I], per ogni i-esima faccia di contorno della
griglia di calcolo aerodinamica il cui baricentro geometrico proiettato x⊥a, i cada all’interno dello
stesso elemento strutturale Ωj , la variazione del versore normale ∆b ni = ∆b n j ∀ x⊥a, i ∈ Ωj può
essere calcolata ricordando che:
(xs, j2 − xs, j1 ) × (xs, j3 − xs, j1 )
b 0, j =
n
k(xs, j2 − xs, j1 ) × (xs, j3 − xs, j1 )k
(8.22)
[(xs, j2 + us, j2 ) − (xs, j1 + us, j1 )] × [(xs, j3 + us, j3 ) − (xs, j1 + us, j1 )]
bj =
n ,
k[(xs, j2 + us, j2 ) − (xs, j1 + us, j1 )] × [(xs, j3 + us, j3 ) − (xs, j1 + us, j1 )]k
dove us, j1 , us, j2 e us, j3 sono gli spostamenti strutturali valutati in corrispondenza dei vertici
xs, j1 , xs, j2 e xs, j3 del j-esimo elemento strutturale Ωj ordinati in senso antiorario; è opportuno
osservare che, se gli spostamenti strutturali sono effettivamente molto piccoli, la variazione del
versore normale ∆b n(ξ, η, t) risulta linearizzata numericamente.
L’espressione non lineare (8.21) della variazione del versore normale ∆b n(ξ, η, t) è vantaggiosa
rispetto all’approssimazione linearizzata (8.15b) in quanto notevolmente più semplice dal punto
di vista implementativo ed efficiente dal punto di vista del costo computazionale; inoltre è lecito
attendersi che essa sia valida anche per spostamenti strutturali non proprio piccoli.

8.2.3 Formulazione non lineare per differenze finite


Sostituendo la relazione (8.12) e (8.21) nella definizione della condizione al contorno di non
compenetrazione e conservando i termini di ordine superiore al primo in s(ξ, η, t) è possibile
ottenere la seguente espressione non linearizzata per la velocità di traspirazione Vn :

Vn = −V ∞ · ∆b
n + ṡ · n
b 0 + ṡ · ∆b
n. (8.23)
124 Interfaccia aeroelastica

Anche in questo caso è opportuno osservare che se gli spostamenti strutturali sono effettiva-
mente molto piccoli, la velocità di traspirazione Vn risulta linearizzata numericamente dal mo-
mento che il contributo non lineare geometrico-cinematico è trascurabile rispetto al contributo
singolarmente geometrico e cinematico.
Nonostante tale strategia non sia del tutto coerente con la linearizzazione dei carichi aerodi-
namici nell’intorno di una condizione di equilibrio di riferimento presentata in §2.3, l’espressione
non lineare (8.23) della velocità di traspirazione Vn è caratterizzata da un campo di validità
in termini di numeri di Mach della corrente asinotica M∞ , angoli di incidenza α e spessori
percentuali t/c più ampio rispetto all’approssimazione linearizzata (8.17).

8.2.4 Limiti di validità per problemi bidimensionali

Inanzitutto è opportuno determinare i limiti di validità per problemi bidimensionali in termini


di numero di Mach M∞ ed angolo di incidenza α delle condizioni al contorno di traspirazione
per riprodurre gli effetti geometrici e cinematici del movimento del corpo senza effettivamente
deformare la griglia di calcolo. A tale scopo si richiede di risolvere numericamente il campo
di moto bidimensionale attorno ad un profilo alare NACA 0012 di corda c = 1 m investito
da una corrente asintotica uniforme subsonica, transonica e supersonica di fluido ideale con
γ = 1.4 e R = 287.05 kgJK caratterizzata da una pressione termodinamica P∞ = 85419 P a,
una temperatura T∞ = 260 K, un numero di Mach M∞ = 0.5, M∞ = 0.75 e M∞ = 1.0
ed infine un angolo di incidenza simulato mediante il solo contributo geometrico delle condizioni
al contorno di traspirazione (senza effettivamente ruotare la corrente asintotica) α = 2◦ , α = 4◦
e α = 6◦ .
Successivamente si richiede di confrontare tali risultati con quelli presentati in §7.2 viceversa
ottenuti ruotando la corrente asintotica ed imponendo una condizione al contorno di non com-
penetrazione in corrispondenza del profilo alare; il dominio spaziale V, il dominio temporale T
e le relative griglie di calcolo sono le stesse utilizzate in §7.2.
Nelle Figure 8.7 e 8.8 sono presentati i risultati numerici relativi alle curve di portanza
CL − α ed agli errori relativi keCL k = kCLNC − CLT k/kCLNC k e keCD k = kCD NC
− CD T
k/kCDNC
k
rispettivamente sul coefficiente di portanza CL e sul coefficiente di resistenza CD del profilo alare
NACA 0012 al variare del numero di Mach della corrente asintotica M∞ , imponendo i parametri
relativi agli schemi di discretizzazione spaziale, discretizzazione temporale, estrapolazione delle
condizioni al contorno e valutazione del residuo riportati in Tabella 6.2. Innanzitutto è possibile
osservare che in regime di moto subsonico il metodo di traspirazione tende a sovrastimare il
coefficiente di portanza CL , mentre in regime di moto supersonico tale tendenza si inverte.
In ogni caso l’errore relativo sul coefficiente di portanza keCL k cresce all’aumentare dell’angolo di
incidenza α, è massimo in regime di moto transonico ma è sempre inferiore a circa keCL k < 8%;
l’errore relativo sul coefficiente di resistenza keCD k mostra un comportamento analogo ma è
leggermente superiore.
Il fatto che l’errore relativo massimo sia sul coefficiente di portanza keCL kmax che sul coeffi-
ciente di resistenza keCD kmax si verifichi in regime di moto transonico a M∞ = 0.75 può essere
giustificato esaminando i risultati numerici relativi alla distribuzione del coefficiente di pressione
Cp sulla superficie del profilo alare NACA 0012 presentati nelle Figure 8.9 e 8.10: seppure il
metodo di traspirazione tenda a sovrastimare solo leggermente la posizione in corda dell’on-
da d’urto, questo comporta un errore significativo sui carichi aerodinamici poiché il salto del
coefficiente di pressione Cp a cavallo dell’onda d’urto è molto intenso.
Condizioni al contorno di traspirazione 125

1.2 1.2 1.2


Non Compenetrazione Non Compenetrazione Non Compenetrazione
1 Traspirazione 1 Traspirazione 1 Traspirazione
−− Prandtl−Glauert −− Prandtl−Glauert
0.8 0.8 0.8
CL [−]

CL [−]

CL [−]
0.6 0.6 0.6

0.4 0.4 0.4

0.2 0.2 0.2

0 0 0
0 1 2 3 4 5 6 0 1 2 3 4 5 6 0 1 2 3 4 5 6
α [°] α [°] α [°]

Figura 8.7: Confronto tra i risultati numerici ottenuti imponendo la condizione al contorno di non
compenetrazione (•) e di traspirazione () relativi alla curva di portanza CL −α per M∞ = 0.5 (sinistra),
M∞ = 0.75 (centro) e M∞ = 1.0 (destra).

0.08 0.14

0.07 0.12

0.06 0.1
||eC || [−]
||eC || [−]

0.05 0.08
D
L

0.04 0.06

0.03 0.04

0.02 0.02

0.01 0
0.5 0.6 0.7 0.8 0.9 1 0.5 0.6 0.7 0.8 0.9 1
M∞ [−] M∞ [−]

Figura 8.8: Errore relativo tra i risultati numerici ottenuti imponendo la condizione al contorno di
non compenetrazione e di traspirazione sul coefficiente di portanza keCL k (sinistra) e sul coefficiente di
resistenza keCD k (destra) per M∞ = 0.5 (•), M∞ = 0.75 (•) e M∞ = 1.0 (•).

2 2

1.5 1.5

1 1 Upper Surface
Upper Surface
−Cp [−]

−Cp [−]

0.5 0.5

0 Lower Surface 0
Lower Surface

-0.5 Non Compenetrazione -0.5 Non Compenetrazione


Traspirazione Traspirazione
-1 -1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x/c [−] x/c [−]

Figura 8.9: Confronto tra i risultati numerici ottenuti ottenuti imponendo la condizione al contorno di
non compenetrazione (•) e di traspirazione (•) relativi alla distribuzione del coefficiente di pressione Cp
sulla superficie del profilo alare NACA 0012 per M∞ = 0.5 ed α = 2◦ (sinistra) e α = 4◦ (destra).
126 Interfaccia aeroelastica

2 2

1.5 1.5

Upper Surface Upper Surface


1 1
−Cp [−]

−Cp [−]
0.5 0.5

Lower Surface
0 0 Lower Surface

-0.5 Non Compenetrazione -0.5 Non Compenetrazione


Traspirazione Traspirazione
-1 -1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x/c [−] x/c [−]

Figura 8.10: Confronto tra i risultati numerici ottenuti ottenuti imponendo la condizione al contorno di
non compenetrazione (•) e di traspirazione (•) relativi alla distribuzione del coefficiente di pressione Cp
sulla superficie del profilo alare NACA 0012 per M∞ = 0.75 ed α = 2◦ (sinistra) e α = 4◦ (destra).

8.2.5 Limiti di validità per problemi tridimensionali

Infine è opportuno determinare i limiti di validità per problemi tridimensionali in termini di


numero di Mach M∞ ed angolo di incidenza α delle condizioni al contorno di traspirazio-
ne per riprodurre gli effetti geometrici e cinematici del movimento del corpo senza effettiva-
mente deformare la griglia di calcolo. A tale scopo si richiede di risolvere numericamente il
campo di moto tridimensionale attorno ad un’ala AGARD 445.6 rappresentata in Figura 9.1
investita da una corrente asintotica uniforme subsonica, transonica e supersonica di fluido ideale
con γ = 1.4 e R = 287.05 kgJK caratterizzata da una pressione termodinamica P∞ , una tem-
peratura T∞ , un numero di Mach M∞ riportati in Tabella 8.1 ed infine un angolo di incidenza
simulato mediante il solo contributo geometrico delle condizioni al contorno di traspirazione
(senza effettivamente ruotare la corrente asintotica) α = 2◦ , α = 4◦ e α = 6◦ .
Successivamente si richiede di confrontare tali risultati con quelli viceversa ottenuti ruotando
la corrente asintotica ed imponendo una condizione al contorno di non compenetrazione in
corrispondenza della superficie alare; il dominio spaziale V, il dominio temporale T e le relative
griglie di calcolo sono le stesse utilizzate in §9.1.

Problema P∞ [ P a ] T∞ [ K ] M∞ [ − ]

A 17302.300 289.790 0.678

C 4662.340 257.810 0.960

E 5690.370 254.150 1.140

Tabella 8.1: Pressione termodinamica P∞ , temperatura T∞ e numero di Mach M∞ della corrente


asintotica relativi ai problemi A, B, C presentati in §9.1.
Condizioni al contorno di traspirazione 127

Nelle Figure 8.11 e 8.12 sono presentati i risultati numerici relativi alle curve di portanza
CL − α ed agli errori relativi keCL k e keCD k rispettivamente sul coefficiente di portanza CL
e sul coefficiente di resistenza CD dell’ala AGARD 445.6 al variare del numero di Mach della
corrente asintotica M∞ , imponendo i parametri relativi agli schemi di discretizzazione spaziale,
discretizzazione temporale, estrapolazione delle condizioni al contorno e valutazione del residuo
riportati in Tabella 6.2. Come nel caso precedente è possibile osservare che in regime di moto
subsonico il metodo di traspirazione tende a sovrastimare il coefficiente di portanza CL , mentre
in regime di moto supersonico tale tendenza si inverte. In ogni caso l’errore relativo sul coeffi-
ciente di portanza keCL k cresce all’aumentare dell’angolo di incidenza α e del numero di Mach
della corrente asintotica M∞ ed è sempre inferiore a circa keCL k < 4%; l’errore relativo sul
coefficiente di resistenza keCD k mostra un comportamento analogo ma è leggermente superiore.
Il fatto che l’errore relativo massimo sia sul coefficiente di portanza keCL kmax che sul coeffi-
ciente di resistenza keCD kmax siano inferiori per l’ala AGARD 445.6 rispetto al profilo alare
NACA 0012 non deve stupire, dal momento che il profilo alare supercritico NACA 65A004
dell’ala AGARD 445.6 è caratterizzato da uno spessore percentuale t/c inferiore.

0.5 0.5 0.5


Non Compenetrazione Non Compenetrazione Non Compenetrazione
Traspirazione Traspirazione Traspirazione
0.4 0.4 0.4

0.3 0.3 0.3


CL [−]

CL [−]

CL [−]

0.2 0.2 0.2

0.1 0.1 0.1

0 0 0
0 1 2 3 4 5 6 0 1 2 3 4 5 6 0 1 2 3 4 5 6
α [°] α [°] α [°]

Figura 8.11: Confronto tra i risultati numerici ottenuti imponendo la condizione al contorno di non
compenetrazione (•) e di traspirazione () relativi alla curva di portanza CL − α per M∞ = 0.678
(sinistra), M∞ = 0.960 (centro) e M∞ = 1.14 (destra).

0.04 0.05

0.03 0.04
||eC || [−]
||eC || [−]

0.02 0.03
D
L

0.01 0.02

0 0.01
0.6 0.7 0.8 0.9 1 1.1 1.2 0.6 0.7 0.8 0.9 1 1.1 1.2
M∞ [−] M∞ [−]

Figura 8.12: Errore relativo tra i risultati numerici ottenuti imponendo la condizione al contorno di
non compenetrazione e di traspirazione sul coefficiente di portanza keCL k (sinistra) e sul coefficiente di
resistenza keCD k (destra) per M∞ = 0.678 (•), M∞ = 0.960 (•) e M∞ = 1.140 (•).
128 Interfaccia aeroelastica

0.6 0.8
y/b = 0.10 y/b = 0.35

0.4 0.6
Upper Surface Upper Surface
0.4
0.2
−Cp [−]

−Cp [−]
0.2
0
0 Lower Surface

-0.2
Lower Surface
-0.2

-0.4 Non Compenetrazione -0.4 Non Compenetrazione


Traspirazione Traspirazione
-0.6 -0.6
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
x/c [−] x/c [−]

Figura 8.13: Confronto tra i risultati numerici ottenuti ottenuti imponendo la condizione al contorno
di non compenetrazione (•) e di traspirazione (•) relativi alla distribuzione del coefficiente di pressione
Cp in corrispondenza delle sezioni y/b = 0.1 (sinistra) e y/b = 0.35 (destra) dell’ala AGARD 445.6.

1 1.2
y/b = 0.70 y/b = 0.95
0.8 1
Upper Surface 0.8
0.6 Upper Surface
0.6
0.4
−Cp [−]

−Cp [−]

0.4
0.2
0.2
0 Lower Surface
0 Lower Surface
-0.2
-0.2
Non Compenetrazione Non Compenetrazione
-0.4 -0.4
Traspirazione Traspirazione
-0.6 -0.6
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
x/c [−] x/c [−]

Figura 8.14: Confronto tra i risultati numerici ottenuti ottenuti imponendo la condizione al contorno
di non compenetrazione (•) e di traspirazione (•) relativi alla distribuzione del coefficiente di pressione
Cp in corrispondenza delle sezioni y/b = 0.7 (sinistra) e y/b = 0.95 (destra) dell’ala AGARD 445.6.

Infine nelle Figure 8.13 e 8.14 sono presentati i risultati numerici relativi alla distribuzione
del coefficiente di pressione Cp in corrispondenza delle sezioni y/b = 0.1, y/b = 0.35, y/b = 0.7
ed infine y/b = 0.95 dell’ala AGARD 445.6 per M∞ = 0.960 ed α = 6◦ : come nel caso precedente
è possibile osservare che il metodo di traspirazione tende a sovrastimare la posizione in corda
delle eventuali onde d’urto.
Capitolo 9

Applicazioni aeroelastiche

In questo Capitolo il solutore strutturale Code Aster ed il solutore aerodinamico AeroFoam


(opportunamente interconnessi mediante lo schema di interfaccia aeroelastica ad interpolazione
composita e le condizioni al contorno di traspirazione) e più in generale tutti i metodi numerici
per costruire dei modelli localmente linearizzati di ordine ridotto (ROM) del sistema aerodi-
namico e successivamente per risolvere il problema di flutter sono messi alla prova affrontando
il tipico problema di verifica aeroelastico in regime di moto transonico dell’ala AGARD 445.6
e confrontando i risultati numerici ottenuti con i risultati sperimentali e numerici disponibili in
Letteratura.
Dopo avere presentato in §9.1 il problema di verifica aeroelastico dell’ala AGARD 445.6
in esame ed i relativi modelli strutturale ed aerodinamico, in §9.2 è calcolata la soluzione
stazionaria di riferimento, confrontando i carichi aerodinamici nella condizione di equilbrio
con i risultati numerici disponibili in Letteratura, ed è svolta un’analisi di linearità dinamica
per verificare entro quale campo di piccoli spostamenti il sistema aerodinamico sia localmente
linearizzabile. Successivamente in §9.3 è costruita la matrice delle funzioni di trasferimento
aerodinamiche e sono calcolati i diagrammi V∞ − ω e V∞ − g dell’ala AGARD 445.6 in esame:
tutti i risultati numerici ottenuti mediante il solutore aerodinamico sviluppato AeroFoam sono
confrontati con i risultati numerici forniti dal solutore aerodinamico EDGE [48] e con i risultati
numerici e sperimentali disponibili in Letteratura.

9.1 Ala AGARD 445.6


L’obiettivo di tale problema di verifica aeroelastico consiste nel determinare la velocità di flutter
VF e la frequenza di flutter ωF dell’ala AGARD 445.6 in regime di moto transonico e più
in particolare per i numeri di Mach della corrente asinotica: M∞ = 0.678, M∞ = 0.901,
M∞ = 0.960, M∞ = 1.072 ed infine M∞ = 1.140 e successivamente confrontare i risultati
numerici cosı̀ ottenuti con i risultati disponibili in Letteratura relativi ad un’estesa campagna
sperimentale svolta presso la galleria del vento Transonic Dynamics Tunnel (TDT) del NASA
Langley Reasearch Center [8].
Tale problema di verifica aeroelastico è stato uno dei primi ad essere affrontato nell’ambito
dell’aeroelasticità computazionale o Computational Aeroelasticity (CA) [23] abbandonando i
tradizionali strumenti di analisi linearizzata del campo di moto aerodinamico per il più raffinato,
ma più oneroso dal punto di vista del costo computazionale, modello matematico delle equazioni
di Eulero o delle equazioni di Navier-Stokes eventualmente mediate alla Reynolds (RANS).

129
130 Applicazioni aeroelastiche

ct

M∞ c
b
y
1111111111111111
0000000000000000
2
NACA 65A004
Λc/4
1
x
0000000000000000000000000000000
1111111111111111111111111111111
0000000000000000000000000000000
1111111111111111111111111111111
0000000000000000000000000000000
1111111111111111111111111111111

cr /4
cr

Figura 9.1: Geometria del modello sperimentale n◦ 3 dell’ala AGARD 445.6.

Questo poiché in regime di moto transonico è possibile osservare un’improvvisa diminuzione


della velocità di flutter VF detta buca transonica, che i metodi numerici linearizzati tendono
a non riprodurre accuratamente. Nonostante ciò quasi tutti i risultati numerici disponibili
in Letteratura [10, 22, 23, 28, 30, 56] tendono a sovrastimare significativamente la velocità
di flutter VF rispetto ai dati sperimentali riportati in [8] per numeri di Mach della corrente
asintotica supersonici M∞ > 1.
Tra tutti i modelli sperimentali utilizzati nell’estesa campagna sperimentale presso la galleria
del vento Transonic Dynamics Tunnel (TDT) del NASA Langley Reasearch Center [8] è preso
in esame il modello sperimentale n◦ 3 rappresentato in Figura 9.1 costruito in mogano laminato e
successivamente indebolito come descritto in §4.2. Esso è caratterizzato da una corda alla radice
cr = 0.558 m, un’apertura alare b = 0.762 m, un angolo di freccia valutato al 25% della corda
locale Λc/4 = 45◦ , un allungamento alare AR = 1.65 ed un rapporto di rastremazione λ = 0.66.
Infine l’ala non è svergolata ed è utilizzato un profilo alare simmetrico molto sottile NACA
65A004 orientato nella direzione parallela al versore b eX del sistema di riferimento globale.

9.1.1 Modello strutturale


Come osservato in §4.2 è molto difficile tarare il modello strutturale ad elementi finiti (FEM) di
piastra dell’ala AGARD 445.6 per riprodurre numericamente in modo soddisfacente le frequenze
proprie e le forme modali sperimentali riportate in [8]; di conseguenza si sceglie di utilizzare di-
rettamente il modello strutturale modale risultante dalle prove sperimentali di vibrazione a terra
o Ground Vibration Test (GVT) e dunque descritto in termini degli smorzamenti generalizzati
[rcr] = [r2 ξ ω0 r] con ξ ≃ 0.02, delle pulsazioni o frequenze [rω0 r] = [r2 π f0 r] e delle forme [ U ],
normalizzate a massa generalizzata unitaria e successivamente riscalate cosicché [rmr] = [r1r] in
unità di misura del sistema internazionale, dei primi Ns = 6 modi propri. Come suggerito in [8]
si considerano solo le prime quattro frequenze proprie e le relative forme modali rappresentate
nelle Figure 9.2 e 9.3, poiché i modi propri di ordine superiore non partecipano significativamen-
te alla risposta dinamica del sistema aeroelastico (ad esempio la massima frequenza di flutter
misurata sperimentalmente ωF max è circa sette volte inferiore alla frequenza del sesto modo
proprio).
Ala AGARD 445.6 131

Inoltre in [11, 23] si ossserva che solo i primi due modi, rispettivamente flessionale e torsiona-
le, sono effettivamente responsabili del meccanismo di flutter, mentre il terzo ed il quarto modo
proprio hanno un’influenza secondaria solamente per numeri di Mach della corrente asintotica
superiori all’unità M∞ > 1. Contrariamente a quanto fatto in [23] le forme modali non sono
proiettate nella direzione del versore normale alla pianta alare, ma sono conservate anche le
componenti fuori dal piano del vettore degli spostamenti.

Figura 9.2: Griglia di calcolo strutturale ad elementi finiti (FEM) di piastra dell’ala AGARD 445.6
deformata secondo la forma modale n◦ 1 (flessionale) di frequenza propria f1 = 9.60 Hz (sinistra)
e secondo la forma modale n◦ 2 (torsionale) di frequenza propria f2 = 38.17 Hz (destra).

Figura 9.3: Griglia di calcolo strutturale ad elementi finiti (FEM) di piastra dell’ala AGARD 445.6
deformata secondo la forma modale n◦ 3 (flessionale) di frequenza propria f1 = 48.35 Hz (sinistra)
e secondo la forma modale n◦ 4 (torsionale) di frequenza propria f2 = 91.54 Hz (destra).
132 Applicazioni aeroelastiche

9.1.2 Modello aerodinamico


Per calcolare la variazione non stazionaria dei carichi aerodinamici rispetto ad una condizione di
equilibrio di riferimento conseguente al movimento strutturale si utilizza il modello matematico
delle equazioni di Eulero (in grado di fornire un ottimo compromesso specialmente in regime
di moto transonico tra l’accuratezza dei risultati e l’efficienza computazionale) e si approssima
il reale comportamento dell’aria mediante il modello termodinamico di gas ideale politropico
(PIG) con γ = 1.4 e R = 287.05 kgJK . Oltretutto in [8] non sono disponibili le informazioni
relative al livello di turbolenza nella galleria del vento Transonic Dynamics Tunnel (TDT)
ed alle modalità di transizione dello strato limite sulla superficie alare, viceversa necessarie per
tarare i parametri e definire le condizioni iniziali corrette per un eventuale modello di turbolenza
delle equazioni di Navier-Stokes mediate alla Reynolds (RANS).
Il dominio di calcolo V è rappresentato in Figura 9.4 ed è costituito da un’ala AGARD 445.6
S b in corrispondenza della quale sono imposte le condizioni al contorno di traspirazione e da un
cilindro esterno S ∞ di raggio R∞ = 5 m > 10 c ed altezza h∞ = 3.9 m > 5 b in corrispondenza
del quale sono imposte le condizioni al contorno di Riemann. La griglia di calcolo è rappresentata
in Figura 9.4 ed è costituita da Nv = 118480 volumi finiti tetraedrici e da Nn = 22014 nodi
con un passo di griglia minimo pari a h = 0.01 m in corrispondenza del bordo d’attacco della
superficie alare. Nonostante la discretizzazione della superficie alare ed in particolare della
regione in prossimità del bordo d’attacco non sia molto dettagliata, si è comunque utilizzata
tale griglia di calcolo innanzitutto per confrontare i risultati numerici con quelli disponibili in
Letteratura [28, 30, 56] a parità di numero di incognite del problema, ma anche per contenere
il tempo di calcolo, che costituisce il limite principale del solutore aerodinamico AeroFoam
nell’ambito dello schema di discretizzazione temporale esplicito descritto in §6.6.
Per quanto riguarda il calcolo della soluzione stazionaria di riferimento, è utilizzata la stra-
tegia di Local Timestepping (LT) presentata in §6.6, ovvero in corrispondenza di ogni i-esima
cella di calcolo Ωi è definito un intervallo di integrazione temporale differente ∆ti cosicché
Coi = Comax ≃ 2.0; la soluzione è considerata a regime quando i residui k∆kL1 sulla densità ρ,
sulla quantità di moto m e sull’energia totale specifica per unità di volume E t sono inferiori alla
soglia ε = 10−6 . Viceversa per quanto riguarda il calcolo della variazione non stazionaria dei
carichi aerodinamici conseguenti ad un movimento strutturale modale imposto, il dominio tem-
porale T è discretizzato in intervalli di integrazione temporale di ampiezza costante ∆t = 2·10−7
scelta in modo tale che il numero di Courant massimo sia sempre inferiore a Comax ≃ 1.95

Figura 9.4: Griglia di calcolo (sinistra) e dettaglio della griglia di calcolo (destra).
Condizione di equilibrio di riferimento 133

per tutti i numeri di Mach della corrente asintotica di interesse M∞ ∈ [ 0.678, 1.140 ]; la solu-
zione numerica del campo di moto non stazionario attorno all’ala AGARD 445.6 è prolungata
fino al tempo massimo adimensionale τ∞ = t∞ V∞ /La = 12 dove La = c = 0.463 m.
I parametri relativi agli schemi di discretizzazione spaziale, discretizzazione temporale, estra-
polazione delle condizioni al contorno e valutazione del residuo sono riportati in Tabella 6.2.
Il tempo di esecuzione per ogni singola iterazione temporale è pari a CPUtime = 1.11 s
su un computer AMD64 3500+ con processore AMD Athlon 64 da 2.2 GHz di frequenza mas-
sima, 1 Gbyte di memoria RAM, 512 Kbyte di cache L2 e sistema operativo Linux con kernel
aggiornato alla versione 2.6.18; nel seguito sono risportati solo i tempi di esecuzione complessivi.

9.2 Condizione di equilibrio di riferimento


Innanzitutto è necessario determinare la condizione di equilibrio o trim del sistema aeroelastico
e verificare che essa sia stazionaria, accoppiando la soluzione numerica del problema aerodina-
mico e la soluzione numerica del problema strutturale ad esempio mediante il metodo iterativo
riassunto in Figura 2.7. Per il problema di verifica aeroelastico in esame è opportuno ricordare
che l’ala AGARD 445.6 utilizza un profilo alare NACA 65A004 simmetrico, non è svergolata ed
è sempre calettata ad un angolo di incidenza α = 0◦ : di conseguenza la risultante dei carichi
aerodinamici è identicamente nulla cosı̀ come la deformata statica del sistema strutturale, ov-
vero la soluzione stazionaria di riferimento corrisponde a quella dell’ala rigida. Come in [11, 23]
tutto ciò è opportunamente sfruttato per ridurre anche se minimamente i tempi di calcolo.
Successivamente è opportuno verificare che il sistema aerodinamico sia localmente lineariz-
zabile nell’intorno della soluzione stazionaria di riferimento e valutare mediante un esperimento
numerico entro quale campo di piccoli spostamenti strutturali tale approssimazione sia valida in
modo robusto. A questo scopo è necessario svolgere delle prove di linearità dinamica come in [28],
ovvero verificare che ad esempio raddoppiando l’ampiezza massima della legge di movimento
strutturale modale assegnata raddoppino anche le forze aerodinamiche generalizzate.
Con riferimento ai risultati riportati in [8] relativi al modello sperimentale n◦ 3 dell’ala
AGARD 445.6 sono affrontati i problemi A, B, C, D ed E, caratterizzati da una pressione
termodinamica P∞ , una temperatura T∞ ed un numero di Mach M∞ della corrente asintotica
riportati in Tabella 9.1; per brevità sono riportati in forma grafica solo i risultati numerici
relativi ai problemi A, C ed E. Per ogni numero di Mach della corrente asinotica M∞ il tempo
di esecuzione complessivo per raggiungere la soluzione di regime è pari a CPUtime = 38.19 h.

Problema P∞ [ P a ] T∞ [ K ] M∞ [ − ]

A 17302.300 289.790 0.678

B 7667.780 269.820 0.901

C 4662.340 257.810 0.960

D 4136.400 257.320 1.072

E 5690.370 254.150 1.140

Tabella 9.1: Pressione termodinamica P∞ , temperatura T∞ e numero di Mach M∞ della corrente


asintotica relativi ai problemi presentati in [8].
134 Applicazioni aeroelastiche

9.2.1 Calcolo della soluzione stazionaria di riferimento


Nelle Figure 9.5–9.9 sono riportati i risultati numerici relativi alle soluzioni stazionarie di
riferimento per M∞ = 0.678, M∞ = 0.960 e M∞ = 1.140: più in particolare sono rappre-
sentate le isolinee del campo di pressione termodinamica P e la distribuzione del coefficiente
di pressione Cp in corrispondenza delle sezioni y/b = 0.1, y/b = 0.35, y/b = 0.7 e y/b = 0.95
dell’ala AGARD 445.6.
E’ possibile osservare un buon accordo sia qualitativo che quantitativo con i risultati numerici
relativi alle soluzioni stazionarie di riferimento per M∞ = 0.960 e M∞ = 1.140 riportati in [23],
nonostante la griglia di calcolo aerodinamica qui utilizzata sia molto più rada.
0.6
0.4
0.2
0
-0.2
-0.4

0.8

0.6

0.4

0.2 1.2
0.8 1
0.4 0.6
0 0.2
0

Figura 9.5: Isolinee del campo di pressione termodinamica P sulla superficie dell’ala AGARD 445.6 e
sul piano di simmetria del dominio esterno (sinistra) e distribuzione del coefficiente di pressione Cp sul
dorso () e sul ventre () in corrispondenza delle sezioni y/b = 0.1, y/b = 0.35, y/b = 0.7 e y/b = 0.95
dell’ala AGARD 445.6 (destra) per M∞ = 0.678 e α = 0◦ .

0.6
0.4
0.2
0
-0.2
-0.4

0.8

0.6

0.4

0.2 1.2
0.8 1
0.4 0.6
0 0.2
0

Figura 9.6: Isolinee del campo di pressione termodinamica P sulla superficie dell’ala AGARD 445.6 e
sul piano di simmetria del dominio esterno (sinistra) e distribuzione del coefficiente di pressione Cp sul
dorso () e sul ventre () in corrispondenza delle sezioni y/b = 0.1, y/b = 0.35, y/b = 0.7 e y/b = 0.95
dell’ala AGARD 445.6 (destra) per M∞ = 0.960 ed α = 0◦ .
Condizione di equilibrio di riferimento 135

Figura 9.7: Isolinee del numero di Mach relative alla soluzione numerica presentata in Letteratura [23]
(sinistra) e alla soluzione numerica ottenuta mediante AeroFoam (destra) per M∞ = 0.960.

0.6
0.4
0.2
0
-0.2
-0.4

0.8

0.6

0.4

0.2 1.2
0.8 1
0.4 0.6
0 0.2
0

Figura 9.8: Isolinee del campo di pressione termodinamica P sulla superficie dell’ala AGARD 445.6 e
sul piano di simmetria del dominio esterno (sinistra) e distribuzione del coefficiente di pressione Cp sul
dorso () e sul ventre () in corrispondenza delle sezioni y/b = 0.1, y/b = 0.35, y/b = 0.7 e y/b = 0.95
dell’ala AGARD 445.6 (destra) per M∞ = 1.140 ed α = 0◦ .

Figura 9.9: Isolinee del numero di Mach relative alla soluzione numerica presentata in Letteratura [23]
(sinistra) e alla soluzione numerica ottenuta mediante AeroFoam (destra) per M∞ = 1.140.
136 Applicazioni aeroelastiche

9.2.2 Verifica di linearità dinamica


Nelle Figure 9.10–9.14 sono riportati i risultati numerici relativi alla verifica di linearità dinamica
per M∞ = 0.678, M∞ = 0.960 e M∞ = 1.140: più in particolare è rappresentato l’andamento
in funzione del tempo adimensionale τ = t V∞ /La della legge di movimento a scalino assegnata
dello spostamento generalizzato q1 (τ ) e della relativa forza generalizzata Q11 (τ ), le isolinee del
campo di pressione termodinamica P ed infine la distribuzione del coefficiente di pressione Cp
per τ = 1.5 in corrispondenza delle sezioni y/b = 0.1, y/b = 0.35, y/b = 0.7 e y/b = 0.95 dell’ala
AGARD 445.6 opportunamente deformata.
Inoltre in Tabella 9.2 sono riportati la media µH , la deviazione standard σH e l’errore relativo
keH k rispetto al valore teorico per un sistema dinamico lineare tempo-invariante H exact = 1/2
del rapporto H = Q(1) (2)
11 (τ )/Q11 (τ ) tra le forze generalizzate relative alle leggi di movimento a
scalino assegnate degli spostamenti generalizzati q1(1) (τ ) e q1(2) (τ ) = 2 q1(1) (τ ): è possibile osservare
che l’ipotesi di linearità locale del sistema aerodinamico è verificata in modo soddisfacente.

× 10−3 × 10−1
4 0

3.5
-0.5
3
-1
2.5
Q11 [ m2 ]
q1 [ m ]

2 -1.5

1.5
-2
1
(1) -2.5 (1)
0.5
(2) (2)
0 -3
0 0.5 1 1.5 2 2.5 3 0 0.5 1 1.5 2 2.5 3
τ[−] τ[−]

Figura 9.10: Leggi di movimento a scalino assegnate degli spostamenti generalizzati q1(1) (τ ) e q1(2) (τ )
(sinistra) e relative forze generalizzate Q(1) (2)
11 (τ ) e Q11 (τ ) (destra) per M∞ = 0.678.

0.6
0.4
0.2
0
-0.2
-0.4

0.8
0.6
0.4
0.2 1.2
0.8 1
0.4 0.6
0 0 0.2

Figura 9.11: Isolinee del campo di pressione termodinamica P sulla superficie dell’ala AGARD 445.6 e
sul piano di simmetria del dominio esterno (sinistra) e distribuzione del coefficiente di pressione Cp sul
dorso () e sul ventre () in corrispondenza delle sezioni y/b = 0.1, y/b = 0.35, y/b = 0.7 e y/b = 0.95
dell’ala AGARD 445.6 (destra) per M∞ = 0.678 ed α = 0◦ .
Condizione di equilibrio di riferimento 137

× 10−3 × 10−1
4 0

3.5

3 -0.5

2.5

Q11 [ m2 ]
q1 [ m ]

2 -1

1.5

1 -1.5
(1) (1)
0.5
(2) (2)
0 -2
0 0.5 1 1.5 2 2.5 3 0 0.5 1 1.5 2 2.5 3
τ[−] τ[−]

Figura 9.12: Leggi di movimento a scalino assegnate degli spostamenti generalizzati q1(1) (τ ) e q1(2) (τ )
(sinistra) e relative forze generalizzate Q(1) (2)
11 (τ ) e Q11 (τ ) (destra) per M∞ = 0.960.

0.6
0.4
0.2
0
-0.2
-0.4

0.8
0.6
0.4
0.2 1.2
0.8 1
0.4 0.6
0 0 0.2

Figura 9.13: Isolinee del campo di pressione termodinamica P sulla superficie dell’ala AGARD 445.6 e
sul piano di simmetria del dominio esterno (sinistra) e distribuzione del coefficiente di pressione Cp sul
dorso () e sul ventre () in corrispondenza delle sezioni y/b = 0.1, y/b = 0.35, y/b = 0.7 e y/b = 0.95
dell’ala AGARD 445.6 (destra) per M∞ = 0.960 ed α = 0◦ .
× 10−3 × 10−1
4 0

3.5

3 -0.5

2.5
Q11 [ m2 ]
q1 [ m ]

2 -1

1.5

1 -1.5
(1) (1)
0.5
(2) (2)
0 -2
0 0.5 1 1.5 2 2.5 3 0 0.5 1 1.5 2 2.5 3
τ[−] τ[−]

Figura 9.14: Leggi di movimento a scalino assegnate degli spostamenti generalizzati q1(1) (τ ) e q1(2) (τ )
(sinistra) e relative forze generalizzate Q(1) (2)
11 (τ ) e Q11 (τ ) (destra) per M∞ = 1.140.
138 Applicazioni aeroelastiche

0.6
0.4
0.2
0
-0.2
-0.4

0.8
0.6
0.4
0.2 1.2
0.8 1
0.4 0.6
0 0 0.2

Figura 9.15: Isolinee del campo di pressione termodinamica P sulla superficie dell’ala AGARD 445.6 e
sul piano di simmetria del dominio esterno (sinistra) e distribuzione del coefficiente di pressione Cp sul
dorso () e sul ventre () in corrispondenza delle sezioni y/b = 0.1, y/b = 0.35, y/b = 0.7 e y/b = 0.95
dell’ala AGARD 445.6 (destra) per M∞ = 1.140 ed α = 0◦ .

Problema M∞ [ − ] µH [ − ] σH [ − ] keH k [ − ]

A 0.678 0.5011 0.0259 0.317 %

C 0.960 0.5052 0.0172 1.100%

E 1.140 0.5057 0.0146 1.226 %

Tabella 9.2: Media µH , deviazione standard σH ed errore relativo keH k rispetto al valore teorico
per un sistema dinamico lineare tempo-invariante H exact = 1/2 del rapporto H = Q(1) (2)
11 (τ )/Q11 (τ )
per M∞ = 0.678, M∞ = 0.960 e M∞ = 1.140.

9.3 Flutter
Per contenere i tempi di calcolo, lo studio del problema di flutter è ricondotto all’analisi delle
proprietà di stabilità in piccolo del sistema aeroelastico tempo-invariante linearizzato per piccoli
spostamenti nell’intorno della condizione di equilibrio o trim di riferimento: è allora necessario
costruire un modello di ordine ridotto (ROM) lineare del sistema aerodinamico, rappresentato
dalla matrice delle funzioni di trasferimento aerodinamiche [ Ham (k, M∞ ) ].
Per ogni j-esimo numero di Mach della corrente asinotica M∞, j in corrispondenza del quale
sia nota la soluzione stazionaria di riferimento, è utilizzata la strategia riassunta nelle Figure
2.8 e 2.6 per calcolare l’i-esima colonna della matrice delle funzioni di trasferimento aerodina-
miche [ Ham (k, M∞, j )|i ] come il rapporto tra le trasformate di Fourier del segnale in uscita ed
ingresso al sistema aerodinamico, ovvero rispettivamente il vettore delle forze aerodinamiche
generalizzate {Qa (t)} e l’i-esimo spostamento generalizzato qi (t).
Per eccitare opportunamente il sistema aeroelastico è utilizzato il segnale in ingresso a
scalino raccordato rappresentato in Figura 2.5; per ogni i-esimo spostamento generalizzato qi (t)
l’ampiezza massima della legge di movimento assegnata è calcolata mediante la relazione (2.24)
scegliendo La = c = 0.463 m come lunghezza di riferimento aerodinamica, kmax = 10 come
massima frequenza ridotta di interesse ed infine ε = tan(1◦ ) per rimanere sempre nel campo di
piccole perturbazioni evidenziato mediante le prove di linearità dinamica.
Flutter 139

Nell’ambito della aeroelasticità moderna è infine necessario costruire una rappresentazione


agli stati nel dominio del tempo del sistema aerodinamico risolvendo il problema di identifi-
cazione del modello (2.41) mediante il programma MASSA [31]: più in particolare è utilizzato
il metodo di Rogers, mentre l’ordine della rappresentazione agli stati nel dominio del tempo
sistema aerodinamico è scelto per ridurre l’errore relativo massimo di identificazione sotto la
soglia keI k < 5%. È allora possibile costruire i diagrammi V∞ − ω e V∞ − g e successivamen-
te determinare la frequenza di flutter ωF e la velocità di flutter VF (o meglio i relativi indici
adimensionali Iω ed Iv ) in funzione del numero di Mach della corrente asinotica M∞ .
Come nel caso precedente, nonostante siano affrontati tutti i problemi A, B, C, D ed E rias-
sunti in Tabella 9.1, per brevità sono riportati in forma grafica solo i risultati relativi ai problemi
A, C ed E. Per ogni numero di Mach della corrente asintotica M∞ il tempo di esecuzione comples-
sivo per calcolare la variazione non stazionaria del vettore delle forze aerodinamiche generalizzate
{Qa (t)} conseguente ad un i-esimo spostamento generalizzato qi (t) è pari a CPUtime = 24.44 h.

9.3.1 Calcolo della matrice delle funzioni di trasferimento aerodinamiche


In Figura 9.16 è rappresentato l’andamento in funzione del tempo adimensionale τ = t V∞ /La
della legge di movimento a scalino raccordato di ogni i-esimo spostamento generalizzato qi (τ ),
scelta per eccitare opportunamente il sistema aerodinamico e non invalidare l’ipotesi di piccole
perturbazioni.
Successivamente nelle Figure 9.17, 9.19 e 9.21 è rappresentato l’andamento in funzione del
tempo adimensionale τ = t V∞ /La delle forze aerodinamiche generalizzate {Qa (τ )} conseguenti
al movimento strutturale imposto per M∞ = 0.678, M∞ = 0.960 e M∞ = 1.140: è possibile
osservare un discreto accordo in regime di moto subsonico e transonico con i risultati nume-
rici ottenuti mediante il solutore aerodinamico EDGE [48] su una griglia di calcolo molto più
raffinata (specialmente nella regione in prossimità del bordo d’attacco della superficie alare) e
deformabile. I risultati numerici completi sono riportati in §A.1.
Infine nelle Figure 9.18, 9.20 e 9.22 è rappresentato l’andamento in funzione della frequen-
za ridotta k = ω La /V∞ ∈ [0, 1] della matrice delle funzioni di trasferimento aerodinamiche
[ Ham (k, M∞ ) ] calcolata mediante il programma NAEMO [9] per M∞ = 0.678, M∞ = 0.960 e
M∞ = 1.140: è possibile osservare un discreto accordo in regime di moto subsonico e transonico
con i risultati numerici disponibili in Letteratura [30] ottenuti sulla stessa griglia di calcolo,
ma deformabile e con i già citati risultati numerici ottenuti mediante il solutore aerodinamico
EDGE [48]. I risultati numerici completi sono riportati in §A.1.

× 10−1 × 10−1
2 2

1.5 1.5
q1 [ m ]

q2 [ m ]

1 1

0.5 0.5

0 0
0 1 2 3 4 5 0 1 2 3 4 5
τ[−] τ[−]

Figura 9.16: Legge di movimento a scalino raccordato dell’i-esimo spostamento generalizzato qi (τ ).


140 Applicazioni aeroelastiche

× 10−1 × 10−1
2 20

1 15

0 10
Q11 [ m2 ]

Q12 [ m2 ]
-1 5

-2 0

-3 -5

-4 -10
0 1 2 3 4 5 0 1 2 3 4 5
τ[−] τ[−]
× 10−1 × 10−1
2 20

1 15

0 10
Q21 [ m2 ]

-1 Q22 [ m2 ] 5

-2 0

-3 -5

-4 -10
0 1 2 3 4 5 0 1 2 3 4 5
τ[−] τ[−]

Figura 9.17: Confronto tra i risultati numerici ottenuti mediante AeroFoam () ed i risultati numerici ot-
tenuti mediante EDGE () relativi alla variazione non stazionaria delle forze aerodinamiche generalizzate
{Qa (τ )} conseguenti al movimento strutturale imposto per M∞ = 0.678.
1 9

6
0
Ham, 11 [ m ]

Ham, 12 [ m ]

3
-1
0

-2 Re Re
-3
Im Im
-3 -6
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
k[−] k[−]
1 9

6
0
Ham, 21 [ m ]

Ham, 22 [ m ]

3
-1
0

-2 Re Re
-3
Im Im
-3 -6
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
k[−] k[−]

Figura 9.18: Confronto tra i risultati numerici ottenuti mediante AeroFoam (), i risultati numerici
disponibili in Letteratura [30] () ed i risultati numerici ottenuti mediante EDGE () relativi alla parte
reale Re (◦) ed immaginaria Im () della matrice delle funzioni di trasferimento aerodinamiche [ Ham (k) ]
per M∞ = 0.678.
Flutter 141

× 10−1 × 10−1
1 15

0 10
Q11 [ m2 ]

Q12 [ m2 ]
-1 5

-2 0

-3 -5

-4 -10
0 1 2 3 4 5 0 1 2 3 4 5
τ[−] τ[−]
× 10−1 × 10−1
1 15

0 10
Q21 [ m2 ]

Q22 [ m2 ]
-1 5

-2 0

-3 -5

-4 -10
0 1 2 3 4 5 0 1 2 3 4 5
τ[−] τ[−]

Figura 9.19: Confronto tra i risultati numerici ottenuti mediante AeroFoam () ed i risultati numerici ot-
tenuti mediante EDGE () relativi alla variazione non stazionaria delle forze aerodinamiche generalizzate
{Qa (τ )} conseguenti al movimento strutturale imposto per M∞ = 0.960.
1 10

0
5
Ham, 11 [ m ]

Ham, 12 [ m ]

-1
0
-2

Re -5 Re
-3
Im Im
-4 -10
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
k[−] k[−]
1 10

0
5
Ham, 21 [ m ]

Ham, 22 [ m ]

-1
0
-2

Re -5 Re
-3
Im Im
-4 -10
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
k[−] k[−]

Figura 9.20: Confronto tra i risultati numerici ottenuti mediante AeroFoam (), i risultati numerici
disponibili in Letteratura [30] () ed i risultati numerici ottenuti mediante EDGE () relativi alla parte
reale Re (◦) ed immaginaria Im () della matrice delle funzioni di trasferimento aerodinamiche [ Ham (k) ]
per M∞ = 0.960.
142 Applicazioni aeroelastiche

× 10−1 × 10−1
1 15

10
0
Q11 [ m2 ]

Q12 [ m2 ]
5
-1
0
-2
-5

-3 -10
0 1 2 3 4 5 0 1 2 3 4 5
τ[−] τ[−]
× 10−1 × 10−1
1 15

10
0
Q21 [ m2 ]

Q22 [ m2 ]
5
-1
0
-2
-5

-3 -10
0 1 2 3 4 5 0 1 2 3 4 5
τ[−] τ[−]

Figura 9.21: Confronto tra i risultati numerici ottenuti mediante AeroFoam () ed i risultati numerici ot-
tenuti mediante EDGE () relativi alla variazione non stazionaria delle forze aerodinamiche generalizzate
{Qa (τ )} conseguenti al movimento strutturale imposto per M∞ = 1.140.
1 10

0
5
Ham, 11 [ m ]

Ham, 12 [ m ]

-1
0
-2

Re -5 Re
-3
Im Im
-4 -10
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
k[−] k[−]
1 10

0
5
Ham, 21 [ m ]

Ham, 22 [ m ]

-1
0
-2

Re -5 Re
-3
Im Im
-4 -10
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
k[−] k[−]

Figura 9.22: Confronto tra i risultati numerici ottenuti mediante AeroFoam (), i risultati numerici
disponibili in Letteratura [30] () ed i risultati numerici ottenuti mediante EDGE () relativi alla parte
reale Re (◦) ed immaginaria Im () della matrice delle funzioni di trasferimento aerodinamiche [ Ham (k) ]
per M∞ = 1.140.
Flutter 143

9.3.2 Diagrammi V∞ − ω e V∞ − g

Nelle Figure 9.23–9.25 sono riportati i diagrammi V∞ − ω e V∞ − g costruiti mediante il


programma MASSA [31] relativi ai primi Ns = 4 modi propri dell’ala AGARD 445.6 per
M∞ = 0.678, M∞ = 0.960 e M∞ = 1.140: in prossimità della condizione limite di stabilità
g ≡ 0 è possibile osservare il caratteristico fenomeno di coalescenza delle frequenze dei modi
propri dinamicamente più rilevanti per il meccanismo del flutter [5].
Successivamente in Figura 9.26 è rappresentato l’andamento in funzione del numero di Mach
della corrente asinotica M∞ della frequenza di flutter ωF e della velocità di flutter VF dell’ala
AGARD 445.6, o meglio degli indici adimensionali seguenti:

VF ωF
Iv = √ e Iω = , (9.1)
La ω α µ ωα

dove La è la lunghezza aerodinamica di riferimento, ωα è la prima frequenza propria torsionale


ed infine µ è il rapporto tra la massa strutturale e la massa di fluido contenuta in un cilindro di
raggio di base pari alla lunghezza aerodinamica di riferimento La e di altezza pari alla apertura
alare b ed è tabulato in [8].
Per numeri di Mach della corrente asintotica subsonici M∞ < 1 è possibile osservare un
discreto accordo con i risultati sperimentali riportati in [8] con un errore relativo massimo sul
rapporto delle frequenze pari a circa keIω kmax ≃ 12% e sull’indice della velocità di flutter
pari a circa keIv kmax ≃ 7% per M∞ = 0.678. Viceversa per numeri di Mach della corren-
te asintotica supersonici M∞ > 1 quasi tutti i risultati numerici disponibili in Letteratura
[10, 22, 23, 28, 30, 56] (ad eccezione di quelli ottenuti mediante EDGE [48]), tendono a sovra-
stimare significativamente la frequenza di flutter ωF e la velocità di flutter VF rispetto ai dati
sperimentali riportati in [8]; in particolare i risultati ottenuti mediante AeroFoam sono caratte-
rizzati da un errore relativo massimo sul rapporto delle frequenze pari a circa keIω kmax ≃ 47%
e sull’indice di velocità di flutter pari a circa keIv kmax ≃ 62% per M∞ = 1.140, con un leggero
miglioramento rispetto ai risultati numerici ottenuti mediante FLUENT [10].
Sebbene in [10, 23] si osservi un miglioramento dei risultati numerici per M∞ = 1.140
utilizzando il modello matematico delle equazioni di Navier-Stokes mediante alla Reynolds
(RANS), la discrepanza rispetto ai dati sperimentali rimane significativa. Tuttavia i risultati
numerici ottenuti mediante EDGE utilizzando il modello matematico delle equazioni di Eulero
su una griglia di calcolo molto più raffinata (soprattutto in prossimità del bordo d’attacco della
superficie alare) sono in ottimo accordo con i dati sperimentali: di conseguenza la discrepanza
rispetto ai dati sperimentali è probabilmente dovuta non tanto al particolare modello matema-
tico, ma alla capacità della griglia di calcolo di risolvere accuratamente l’onda d’urto staccata
che si forma a monte della superficie alare in regime di moto supersonico [11].
Infine in Figura 9.27 sono presentati i risultati numerici relativi alla sensitività del rapporto
delle frequenze Iω e dell’indice della velocità di flutter Iv in funzione del numero Ns di modi
propri utilizzati (ovvero al numero di gradi di libertà del sistema strutturale) per M∞ = 0.678,
M∞ = 0.960 e M∞ = 1.140: in ottimo accordo con i risultati numerici presentati in [23],
è possibile osservare che per numeri di Mach della corrente asintotica subsonici M∞ < 1 tale
sensitività è minima; viceversa per numeri di Mach della corrente asintotica supersonici M∞ > 1
all’aumentare del numero Ns di modi propri utilizzati il rapporto delle frequenze Iω e l’indice
della velocità di flutter Iv tendono ad aumentare cosı̀ come l’errore relativo rispetto ai dati
sperimentali.
144 Applicazioni aeroelastiche

100 0.6

0.4
80 0.2

0
60
f [ Hz ]

-0.2

g[−]
-0.4
40
-0.6

20 -0.8

-1
VF VF
0 -1.2
200 220 240 260 280 300 200 220 240 260 280 300
V∞ [ m/s ] V∞ [ m/s ]

Figura 9.23: Diagramma V∞ − ω (sinistra) e diagramma V∞ − g (destra) per i modi propri n◦ 1 (•),
n◦ 2 (), n◦ 3 (H) e n◦ 4 (N) dell’ala AGARD 445.6 per M∞ = 0.678.

100 0.2

0.1
80

0
60
f [ Hz ]

g[−]

-0.1
40
-0.2

20
-0.3

VF VF
0 -0.4
200 250 300 350 400 200 250 300 350 400
V∞ [ m/s ] V∞ [ m/s ]
Figura 9.24: Diagramma V∞ − ω (sinistra) e diagramma V∞ − g (destra) per i modi propri n◦ 1 (•),
n◦ 2 (), n◦ 3 (H) e n◦ 4 (N) dell’ala AGARD 445.6 per M∞ = 0.960.

100 0.05

80
0

60
f [ Hz ]

g[−]

-0.05
40

-0.1
20

VF VF
0 -0.15
300 350 400 450 500 550 600 650 300 350 400 450 500 550 600 650
V∞ [ m/s ] V∞ [ m/s ]

Figura 9.25: Diagramma V∞ − ω (sinistra) e diagramma V∞ − g (destra) per i modi propri n◦ 1 (•),
n◦ 2 (), n◦ 3 (H) e n◦ 4 (N) dell’ala AGARD 445.6 per M∞ = 1.140.
Flutter 145

0.8 0.7
Experimental Experimental
CFL3D CFL3D
0.7 EDGE 0.6 EDGE
FLUENT FLUENT
AeroFoam AeroFoam
0.6 0.5
Iω [ − ]

Iv [ − ]
0.5 0.4

0.4 0.3

0.3 0.2
0.6 0.7 0.8 0.9 1 1.1 1.2 0.6 0.7 0.8 0.9 1 1.1 1.2
M∞ [ − ] M∞ [ − ]

Figura 9.26: Confronto tra l’andamento in funzione del numero di Mach della corrente asinotica M∞
del rapporto delle frequenze Iω (sinistra) e dell’indice della velocità di flutter Iv (destra) calcolati nume-
ricamente mediante AeroFoam (•), mediante FLUENT (H), mediante EDGE (N), mediante CFL3D ()
con i dati sperimentali (◦) riportati in [8].

0.6 0.5 0.8

0.45 0.7
0.55
Experimental
0.4 0.6
Iω [ − ]

Iω [ − ]

Iω [ − ]

0.5 0.35 0.5

Experimental
0.3 0.4
Experimental
0.45
0.25 0.3

M∞= 0.678 M∞= 0.960 M∞= 1.140


0.4 0.2 0.2
1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
Ns Ns Ns
0.5 0.4 0.8

0.7
0.45 0.35

Experimental 0.6
Experimental
Iv [ − ]

Iv [ − ]

Iv [ − ]

0.4 0.3
0.5

0.35 0.25 Experimental


0.4

M∞= 0.678 M∞= 0.960 M∞= 1.140


0.3 0.2 0.3
1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
Ns Ns Ns

Figura 9.27: Confronto tra i risultati numerici ottenuti mediante AeroFoam (•), i risultati numerici
presentati in Letteratura [23] (•) ed i dati sperimentali [8] relativi alla sensitività del rapporto delle
frequenze Iω (in alto) e dell’indice della velocità di flutter Iv (in basso) in funzione del numero Ns di
modi propri utilizzati per M∞ = 0.678, M∞ = 0.960 e M∞ = 1.140.
146 Applicazioni aeroelastiche
Capitolo 10

Conclusioni

In questo lavoro di tesi è stato sviluppato un toolbox per la soluzione di problemi aeroelastici
in regime di moto transonico in ambito accademico ed industriale, utilizzando (forse per la
prima volta) esclusivamente strumenti di analisi liberamente disponibili in rete, non solo per la
soluzione del problema strutturale ed aerodinamico, ma anche per le fasi di pre/post–processing.
Più in particolare per risolvere il problema strutturale sono stati utilizzati il solutore strut-
turale libero ad elementi finiti (FEM) Code Aster ed il pre/post–processore Salomé ; affrontando
alcuni problemi di verifica di complessità crescente è stato possibile dimostrare che le prestazioni
in termini di accuratezza dei risultati ed efficienza di calcolo del programma Code Aster sono del
tutto confrontabili con quelle del solutore strutturale commerciale di riferimento MSC.Nastran.
Analogamente per risolvere il problema aerodinamico sono stati utilizzati il solutore aerodi-
namico libero a volumi finiti (FV) OpenFOAM, il generatore di griglie triangolari e tetraedriche
Gmsh ed il post–processore ParaView; affrontando un problema di verifica molto semplice è
stato tuttavia possibile dimostrare che le prestazioni in termini di accuratezza dei risultati ed
efficienza di calcolo dei solutori aerodinamici disponibili rhoSonicFoam, rhopSonicFoam ed infine
SonicFoam non sono del tutto soddisfacenti con riferimento al solutore aerodinamico commer-
ciale FLUENT. Di conseguenza si è scelto di progettare e sviluppare in linguaggio C++ un
nuovo solutore aerodinamico chiamato AeroFoam, utilizzando solo le librerie del programma
OpenFOAM per la gestione delle strutture dati relative alla griglia di calcolo ed alla soluzione
numerica e per le fasi di pre/post–processing.
Successivamente è stato affrontato il problema di come costruire uno schema di interfaccia
aeroelastica robusto e flessibile che consenta di realizzare praticamente la connessione ad anello
chiuso tra il sistema strutturale ed il sistema aerodinamico; per contenere i tempi di calcolo si è
scelto di simulare gli effetti geometrici e cinematici del movimento del corpo mediante le condi-
zioni al contorno di traspirazione sia nella formulazione linearizzata analitica che non lineare per
differenze finite (delle quali sono stati valutati numericamente i campi di applicabilità), senza
implementare un algoritmo di deformazione della griglia di calcolo.
Dopo avere opportunamente verificato il corretto funzionamento dei singoli strumenti del
toolbox, è stato infine affrontato il tipico problema di verifica aeroelastico in regime di moto
transonico dell’ala AGARD 445.6: è stato possibile osservare un discreto accordo con i risultati
sperimentali disponibili in Letteratura ed un buon accordo con i risultati numerici ottenuti
ad esempio mediante i solutori aerodinamici EDGE e FLUENT. Tuttavia il limite principale
del solutore aerodinamico sviluppato AeroFoam è costituito dal tempo di calcolo molto elevato
conseguente alla scelta obbligata di uno schema di integrazione temporale esplicito.

147
148 Conclusioni
Appendice A

Matrici delle funzioni di


trasferimento aerodinamiche

In questa Appendice sono riportati per completezza tutti i risultati numerici ottenuti mediante
il solutore aerodinamico sviluppato AeroFoam relativi alle Ns × Ns = 16 forze aerodinamiche
generalizzate {Qa (t)} conseguenti al movimento strutturale imposto ed i relativi elementi della
matrice delle funzioni di trasferimento aerodinamiche [ Ham (k, M∞ ) ].

A.1 Risultati numerici


In Figura A.1 è rappresentato l’andamento in funzione del tempo adimensionale τ = tV∞ /La di
ogni i-esimo spostamento generalizzato qi (τ ); successivamente nelle Figure A.2–A.4 è rappresen-
tato l’andamento in funzione del tempo adimensionale τ = t V∞ /La delle forze aerodinamiche
generalizzate {Qa (τ )} conseguenti al movimento strutturale imposto e nelle Figure A.5–A.7
è rappresentato l’andamento in funzione della frequenza ridotta k = ω La /V∞ ∈ [0, 1] del-
la matrice delle funzioni di trasferimento aerodinamiche [ Ham (k, M∞ ) ] calcolata mediante il
programma NAEMO [9].
È possibile osservare un discreto accordo almeno in regime di moto subsonico e transonico
e per i modi propri n◦ 1 e n◦ 2 con i risultati numerici ottenuti mediante il solutore aerdinamico
EDGE [48]; le discrepanze in regime di moto supersonico e per i modi propri n◦ 3 e n◦ 4 sono
probabilmente dovute alla differente risoluzione delle griglie di calcolo utilizzate e ai differenti
schemi di interfaccia aeroelastica.

× 10−1 × 10−1 × 10−1 × 10−1


3 3 3 3

2.5 2.5 2.5 2.5

2 2 2 2
q1 [ m ]

q2 [ m ]

q3 [ m ]

q4 [ m ]

1.5 1.5 1.5 1.5

1 1 1 1

0.5 0.5 0.5 0.5

0 0 0 0
0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5
τ[−] τ[−] τ[−] τ[−]

Figura A.1: Legge di movimento a scalino raccordato dell’i-esimo spostamento generalizzato qi (τ ).

149
150 Matrici delle funzioni di trasferimento aerodinamiche

× 10−1 × 10−1 × 10−1 × 10−1


2 20 10 6

1 15 5 4

0 10 0 2
Q11 [ m2 ]

Q12 [ m2 ]

Q13 [ m2 ]

Q14 [ m2 ]
-1 5 -5 0

-2 0 -10 -2

-3 -5 -15 -4

-4 -10 -20 -6
0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5
τ[−] τ[−] τ[−] τ[−]

× 10−1 × 10−1 × 10−1 × 10−1


2 20 10 6

1 15 5 4

0 10 0 2
Q21 [ m2 ]

Q22 [ m2 ]

Q23 [ m2 ]

Q24 [ m2 ]
-1 5 -5 0

-2 0 -10 -2

-3 -5 -15 -4

-4 -10 -20 -6
0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5
τ[−] τ[−] τ[−] τ[−]

× 10−1 × 10−1 × 10−1 × 10−1


2 20 10 6

1 15 5 4

0 10 0 2
Q31 [ m2 ]

Q32 [ m2 ]

Q33 [ m2 ]

Q34 [ m2 ]

-1 5 -5 0

-2 0 -10 -2

-3 -5 -15 -4

-4 -10 -20 -6
0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5
τ[−] τ[−] τ[−] τ[−]

× 10−1 × 10−1 × 10−1 × 10−1


2 20 10 6

1 15 5 4

0 10 0 2
Q41 [ m2 ]

Q42 [ m2 ]

Q43 [ m2 ]

Q44 [ m2 ]

-1 5 -5 0

-2 0 -10 -2

-3 -5 -15 -4

-4 -10 -20 -6
0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5
τ[−] τ[−] τ[−] τ[−]

Figura A.2: Confronto tra i risultati numerici ottenuti mediante AeroFoam () ed i risultati numerici ot-
tenuti mediante EDGE () relativi alla variazione non stazionaria delle forze aerodinamiche generalizzate
{Qa (τ )} conseguenti al movimento strutturale imposto per M∞ = 0.678.
Risultati numerici 151

× 10−1 × 10−1 × 10−1 × 10−1


1 15 4 6

4
0 10 0

2
-1 5 -4
Q11 [ m2 ]

Q12 [ m2 ]

Q13 [ m2 ]

Q14 [ m2 ]
0
-2 0 -8
-2

-3 -5 -12
-4

-4 -10 -16 -6
0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5
τ[−] τ[−] τ[−] τ[−]

× 10−1 × 10−1 × 10−1 × 10−1


1 15 4 6

4
0 10 0

2
-1 5 -4
Q21 [ m2 ]

Q22 [ m2 ]

Q23 [ m2 ]

Q24 [ m2 ]
0
-2 0 -8
-2

-3 -5 -12
-4

-4 -10 -16 -6
0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5
τ[−] τ[−] τ[−] τ[−]

× 10−1 × 10−1 × 10−1 × 10−1


1 15 4 6

4
0 10 0

2
-1 5 -4
Q31 [ m2 ]

Q32 [ m2 ]

Q33 [ m2 ]

Q34 [ m2 ]

0
-2 0 -8
-2

-3 -5 -12
-4

-4 -10 -16 -6
0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5
τ[−] τ[−] τ[−] τ[−]

× 10−1 × 10−1 × 10−1 × 10−1


1 15 4 6

4
0 10 0

2
-1 5 -4
Q41 [ m2 ]

Q42 [ m2 ]

Q43 [ m2 ]

Q44 [ m2 ]

0
-2 0 -8
-2

-3 -5 -12
-4

-4 -10 -16 -6
0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5
τ[−] τ[−] τ[−] τ[−]

Figura A.3: Confronto tra i risultati numerici ottenuti mediante AeroFoam () ed i risultati numerici ot-
tenuti mediante EDGE () relativi alla variazione non stazionaria delle forze aerodinamiche generalizzate
{Qa (τ )} conseguenti al movimento strutturale imposto per M∞ = 0.960.
152 Matrici delle funzioni di trasferimento aerodinamiche

× 10−1 × 10−1 × 10−1 × 10−1


1 15 5 6

4
10
0 0
2
5
Q11 [ m2 ]

Q12 [ m2 ]

Q13 [ m2 ]

Q14 [ m2 ]
-1 -5 0
0
-2
-2 -10
-5
-4

-3 -10 -15 -6
0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5
τ[−] τ[−] τ[−] τ[−]

× 10−1 × 10−1 × 10−1 × 10−1


1 15 5 6

4
10
0 0
2
5
Q21 [ m2 ]

Q22 [ m2 ]

Q23 [ m2 ]

Q24 [ m2 ]
-1 -5 0
0
-2
-2 -10
-5
-4

-3 -10 -15 -6
0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5
τ[−] τ[−] τ[−] τ[−]

× 10−1 × 10−1 × 10−1 × 10−1


1 15 5 6

4
10
0 0
2
5
Q31 [ m2 ]

Q32 [ m2 ]

Q33 [ m2 ]

Q34 [ m2 ]

-1 -5 0
0
-2
-2 -10
-5
-4

-3 -10 -15 -6
0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5
τ[−] τ[−] τ[−] τ[−]

× 10−1 × 10−1 × 10−1 × 10−1


1 15 5 6

4
10
0 0
2
5
Q41 [ m2 ]

Q42 [ m2 ]

Q43 [ m2 ]

Q44 [ m2 ]

-1 -5 0
0
-2
-2 -10
-5
-4

-3 -10 -15 -6
0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5
τ[−] τ[−] τ[−] τ[−]

Figura A.4: Confronto tra i risultati numerici ottenuti mediante AeroFoam () ed i risultati numerici ot-
tenuti mediante EDGE () relativi alla variazione non stazionaria delle forze aerodinamiche generalizzate
{Qa (τ )} conseguenti al movimento strutturale imposto per M∞ = 1.140.
Risultati numerici 153

1 9 2 6

1 4
6
0
0 2
Ham, 11 [ m ]

Ham, 12 [ m ]

Ham, 13 [ m ]

Ham, 14 [ m ]
3
-1 -1 0
0
-2 -2
-2
-3
Re Re -3 Re -4 Re
Im Im Im Im
-3 -6 -4 -6
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
k[−] k[−] k[−] k[−]

1 9 2 6

1 4
6
0
0 2
Ham, 21 [ m ]

Ham, 22 [ m ]

Ham, 23 [ m ]

Ham, 24 [ m ]
3
-1 -1 0
0
-2 -2
-2
-3
Re Re -3 Re -4 Re
Im Im Im Im
-3 -6 -4 -6
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
k[−] k[−] k[−] k[−]

1 9 2 6

1 4
6
0
0 2
Ham, 31 [ m ]

Ham, 32 [ m ]

Ham, 33 [ m ]

Ham, 34 [ m ]

3
-1 -1 0
0
-2 -2
-2
-3
Re Re -3 Re -4 Re
Im Im Im Im
-3 -6 -4 -6
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
k[−] k[−] k[−] k[−]

1 9 2 6

1 4
6
0
0 2
Ham, 41 [ m ]

Ham, 42 [ m ]

Ham, 43 [ m ]

Ham, 44 [ m ]

3
-1 -1 0
0
-2 -2
-2
-3
Re Re -3 Re -4 Re
Im Im Im Im
-3 -6 -4 -6
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
k[−] k[−] k[−] k[−]

Figura A.5: Confronto tra i risultati numerici ottenuti mediante AeroFoam (), i risultati numerici
disponibili in Letteratura [30] () ed i risultati numerici ottenuti mediante EDGE () relativi alla parte
reale Re (◦) ed immaginaria Im () della matrice delle funzioni di trasferimento aerodinamiche [ Ham (k) ]
per M∞ = 0.678.
154 Matrici delle funzioni di trasferimento aerodinamiche

1 10 4 8

0 2
5 4
Ham, 11 [ m ]

Ham, 12 [ m ]

Ham, 13 [ m ]

Ham, 14 [ m ]
-1 0
0 0
-2 -2

-5 -4
-3 -4
Re Re Re Re
Im Im Im Im
-4 -10 -6 -8
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
k[−] k[−] k[−] k[−]

1 10 4 8

0 2
5 4
Ham, 21 [ m ]

Ham, 22 [ m ]

Ham, 23 [ m ]

Ham, 24 [ m ]
-1 0
0 0
-2 -2

-5 -4
-3 -4
Re Re Re Re
Im Im Im Im
-4 -10 -6 -8
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
k[−] k[−] k[−] k[−]

1 10 4 8

0 2
5 4
Ham, 31 [ m ]

Ham, 32 [ m ]

Ham, 33 [ m ]

Ham, 34 [ m ]

-1 0
0 0
-2 -2

-5 -4
-3 -4
Re Re Re Re
Im Im Im Im
-4 -10 -6 -8
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
k[−] k[−] k[−] k[−]

1 10 4 8

0 2
5 4
Ham, 41 [ m ]

Ham, 42 [ m ]

Ham, 43 [ m ]

Ham, 44 [ m ]

-1 0
0 0
-2 -2

-5 -4
-3 -4
Re Re Re Re
Im Im Im Im
-4 -10 -6 -8
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
k[−] k[−] k[−] k[−]

Figura A.6: Confronto tra i risultati numerici ottenuti mediante AeroFoam (), i risultati numerici
disponibili in Letteratura [30] () ed i risultati numerici ottenuti mediante EDGE () relativi alla parte
reale Re (◦) ed immaginaria Im () della matrice delle funzioni di trasferimento aerodinamiche [ Ham (k) ]
per M∞ = 0.960.
Risultati numerici 155

1 10 4 8

0 2
5 4
Ham, 11 [ m ]

Ham, 12 [ m ]

Ham, 13 [ m ]

Ham, 14 [ m ]
-1 0
0 0
-2 -2

-5 -4
-3 -4
Re Re Re Re
Im Im Im Im
-4 -10 -6 -8
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
k[−] k[−] k[−] k[−]

1 10 4 8

0 2
5 4
Ham, 21 [ m ]

Ham, 22 [ m ]

Ham, 23 [ m ]

Ham, 24 [ m ]
-1 0
0 0
-2 -2

-5 -4
-3 -4
Re Re Re Re
Im Im Im Im
-4 -10 -6 -8
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
k[−] k[−] k[−] k[−]

1 10 4 8

0 2
5 4
Ham, 31 [ m ]

Ham, 32 [ m ]

Ham, 33 [ m ]

Ham, 34 [ m ]

-1 0
0 0
-2 -2

-5 -4
-3 -4
Re Re Re Re
Im Im Im Im
-4 -10 -6 -8
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
k[−] k[−] k[−] k[−]

1 10 4 8

0 2
5 4
Ham, 41 [ m ]

Ham, 42 [ m ]

Ham, 43 [ m ]

Ham, 44 [ m ]

-1 0
0 0
-2 -2

-5 -4
-3 -4
Re Re Re Re
Im Im Im Im
-4 -10 -6 -8
0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1 0 0.2 0.4 0.6 0.8 1
k[−] k[−] k[−] k[−]

Figura A.7: Confronto tra i risultati numerici ottenuti mediante AeroFoam (), i risultati numerici
disponibili in Letteratura [30] () ed i risultati numerici ottenuti mediante EDGE () relativi alla parte
reale Re (◦) ed immaginaria Im () della matrice delle funzioni di trasferimento aerodinamiche [ Ham (k) ]
per M∞ = 1.140.
156 Matrici delle funzioni di trasferimento aerodinamiche
Bibliografia

[1] A. Baron. Alcune Note sul Corso di Fluidodinamica. Politecnico di Milano, 2001.

[2] P. Batten, N. Clarke, C. Lambert, e D. M. Causon. “On the Choice of Wavespeeds for the
HLLC Riemann Solver”. SIAM Journal of Scientific Computing, 1996.

[3] R. J. Beaubien, F. Nitsche, e D. Feszty. “Time and Frequency Domain Flutter


Solutions for the AGARD 445.6 Wing”. International Forum on Aeroelasticity and
Structural Dynamics, 2005.

[4] R. M. Bennet e J. W. Edwards. “An Overview of Recent Developments in Computational


Aeroelasticity”. Proceedings of the 29th AIAA Fluid Dynamics Conference, 1998.

[5] G. Bindolino, P. Mantegazza, e P. Masarati. Aeroelasticità. Politecnico di Milano, 2000.

[6] R. L. Bisplinghoff, H. Ashley, e R. L. Halfman. Aeroelasticity. Dover, 1996.

[7] C. Geuzaine and J. F. Remacle. “Gmsh v.2.2 User’s Guide”. www.geuz.org/gmsh, 2008.

[8] E. Carson Yates. “AGARD Standard Aeroelastic Configurations for Dynamic Response.
Candidate Configuration I Wing 445.6”. NASA Technical Memorandum 100492, 1987.

[9] L. Cavagna. “Manuale di utilizzo di NAEMO (Numerical AeroElastic MOdeller)”.


Politecnico di Milano, 2007.

[10] L. Cavagna, G. Quaranta, G. L. Ghiringhelli, e P. Mantegazza. “Efficient Applica-


tion of CFD Aeroelastic Methods Using Commercial Software”. International Forum on
Aeroelasticity and Structural Dynamics, 2005.

[11] L. Cavagna, G. Quaranta, e P. Mantegazza. “Aeroelasticità Computazionale con Modelli


CFD”. Bollettino del Cilea 98, 2005.

[12] L. Cavagna, G. Quaranta, P. Mantegazza, D. Marchetti, e M. Martegani. “Preliminary


Assessment of the Complete Aeroelastic Simulation of the M-346 in Transonic Condition
with a CFD Navier-Stokes Solver”. XVIII Congresso Nazionale AIDAA, 2005.

[13] M. Feistauer, J. Felcman, e I. Straškraba. Mathematical and Computational Methods for


Compressible Flow. Oxford University Press, 2003.

[14] L. Gasparini. “Some Results Using a New Compressible Flow Solver for OpenFOAM”.
Fondmetal Technologies, 2007.

[15] V. Giavotto. Strutture Aeronautiche. Edizioni Città Studi, 1995.

157
158 Bibliografia

[16] A. Guardone e L. Quartapelle. “Spatially Factorized Galerkin and Taylor-Galerkin Schemes


for Multidimensional Conservation Laws”. Politecnico di Milano, 2000.

[17] R. J. Hirsch. Numerical Computation of Internal and External Flows. Wiley & Sons, 1989.

[18] T. H. Holst e T. H. Pullman. “Aerodynamic Shape Optimization Using a Real Number


Encoded Genetic Algorithm”. AIAA Technical Paper 2001-2463, 2001.

[19] A. Jameson. “Analysis and Design of Numerical Schemes for Gas Dynamics 1: Arti-
ficial Diffusion, Upwind Biasing, Limiters and Their Effect on Accuracy and Multigrid
Convergence”. NASA Contractor Report 196477, 1994.

[20] A. Jameson. “Analysis and Design of Numerical Schemes for Gas Dynamics 2: Artificial
Diffusion and Discrete Shock Structure”. NASA Contractor Report 196476, 1994.

[21] H. Jasak. “Error Analysis and Estimation for the Finite Volume Method with Application
to Fluid Flows”. Ph.D. Thesis, Imperial College, London, 1996.

[22] E. M. Lee-Rausch e J. T. Batina. “Calculation of AGARD Wing 445.6 Flutter Using


Navier-Stokes Aerodynamics”. AIAA Technical Paper 1993-3476, 1993.

[23] E. M. Lee-Rausch e J. T. Batina. “Wing Flutter Boundary Prediction Using Unsteady


Euler Aerodynamic Method”. NASA Technical Memorandum 107732, 1993.

[24] R. J. LeVeque. Numerical Methods for Conservation Laws. Birkäuser Verlag, 1992.

[25] R. J. LeVeque. Finite Volume Methods for Hyperbolic Problems. Cambridge University
Press, 2002.

[26] M. S. Liou e C. J. Steffen. “A New Flux Splitting Scheme: AUSM”. NASA Technical
Memorandum 104404, 1991.

[27] P. Mantegazza. Dinamica e Controllo delle Strutture. Politecnico di Milano, 2006.

[28] M. Martegani. “Un Metodo per il Calcolo del Flutter Linearizzato in Regime Transonico”.
Tesi di Laurea, Politecnico di Milano, 2003.

[29] E. Moglen e R. Stallman. “The GNU General Public License (GPL)”. Free Software
Foundation Inc., 1991.

[30] D. Muffo, G. Quaranta, A. Guardone, e P. Mantegazza. “Interface Velocity Consistency in


Time-accurate Flow Simulations on Dynamic Meshes”. Politecnico di Milano, 2007.

[31] G. Quaranta. “Manuale di utilizzo di MASSA (Modern Aeroelastic State Space Analysis)”.
Politecnico di Milano, 2004.

[32] A. Quarteroni, R. Sacco, e F. Saleri. Matematica Numerica. Springer Verlag, 2004.

[33] D. M. Richwine e D. F. Fisher. “In-Flight Leading-Edge Extension Vortex Flow-Field


Survey Measurements on a F-18 Aircraft at High Angle of Attack”. NASA Technical
Memorandum 4398, 1992.

[34] F. Sabetta. Gasdinamica. Edizioni Ingegneria, 1999.


Bibliografia 159

[35] V. Schmitt e F. Charpin. “Experimental Data Base for Computer Program Assessment:
Pressure Distribution on the ONERA M6 Wing at Transonic Mach Numbers”. AGARD
Advisory Report 138, 1979.

[36] J. Schöberl. “Netgen v.4.4 User’s Guide”. www.hpfem.jku.at/netgen/, 2004.

[37] A. H. Shapiro. Dynamics and Termodynamics of Compressible Fluid Flows. Crieger, 1983.

[38] H. Si. “TetGen v.1.4 User’s Guide”. http://tetgen.berlios.de, 2006.

[39] C. H. Stephens. “Modeling the Benchmark Active Control Technology Wind-Tunnel Model
for Application To Flutter Suppression”. M.Sc. Thesis, Oklahoma State University, 1995.

[40] J. J. Thibert, M. Grandjacques, e L. H. Ohman. “Experimental Data Base for Computer


Program Assessment: NACA 0012 Airfoil”. AGARD Advisory Report 138, 1979.

[41] D. A. Treadgold, A. F. Jones, e K. H. Wilson. “Experimental Data Base for Computer


Program Assessment: Pressure Distribution Measured in the RA 8 f t×6 f t Transonic Wind
Tunnel on RAE Wing A in Combination with an Axisymmetric Body at Mach Numbers
of 0.4, 0.8 and 0.9”. AGARD Advisory Report 138, 1979.

[42] Various Authors. “FEMAP v.9.2 User’s Guide1”. www.ugs.com, 2005.

[43] Various Authors. “FLUENT v.6.2 User’s Guide”. www.fluent.com, 2005.

[44] Various Authors. “GAMBIT v.2.2 User’s Guide”. www.fluent.org, 2005.

[45] Various Authors. “MSC.Nastran v.68 User’s Guide”. www.mscsoftware.com, 2005.

[46] Various Authors. “Tecplot v.360 User’s Guide”. www.tecplot.com, 2005.

[47] Various Authors. “Code Aster v.9.1 User’s Guide”. www.code-aster.org, 2007.

[48] Various Authors. “EDGE v.4.1 User’s Guide”. www.foi.se/edge, 2007.

[49] Various Authors. “Gnuplot v.4.2 User’s Guide”. sourceforge.net/projects/gnuplot, 2007.

[50] Various Authors. “OpenFOAM v.1.4.1 User’s Guide”. www.opencfd.co.uk, 2007.

[51] Various Authors. “ParaView v.2.4 User’s Guide”. www.paraview.org, 2007.

[52] Various Authors. “Salomé v.3.2.6 User’s Guide”. www.salome-platform.org, 2008.

[53] Various Authors. “SciLab v.4.1.2 User’s Guide”. www.scilab.org, 2008.

[54] M. R. Waszak. “Modeling the Benchmark Active Control Technology Wind-Tunnel Model
for Application To Flutter Suppression”. AIAA Technical Paper 1996-3437, 1996.

[55] P. Woodward e P. Colella. “The Numerical Simulation of Two-Dimensional Fluid Flow


with Strong Shocks”. Journal of Computational Physics, 54:115–173, 1984.

[56] L. Zaccheddu. “Sviluppo di un Algoritmo per la Deformazione di Griglie Aerodinamiche


con Applicazioni a Problemi Aeroelastici”. Tesi di Laurea, Politecnico di Milano, 2005.