MODELLO DI SIMULAZIONE DELLA PROPAGAZIONE DEL MOTO ONDOSO IN ACQUE BASSE: CELERIS
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
Dipartimento di Ingegneria Corso di Laurea Magistrale in “Ingegneria Civile per la Protezione dei Rischi Naturali” Relazione di fine tirocinio Anno Accademico 2016-2017 MODELLO DI SIMULAZIONE DELLA PROPAGAZIONE DEL MOTO ONDOSO IN ACQUE BASSE: CELERIS Tutor: Tirocinante: Prof. Giorgio Bellotti Alessandro Renna Matricola: 451452
INDICE 1. INTRODUZIONE ................................................................................................................... 3 1.1. GENERALITÀ SU CELERIS ........................................................................................................................ 3 2. MODELLO MATEMATICO ..................................................................................................... 3 2.1. EQUAZIONI CHE GOVERNANO IL PROBLEMA........................................................................................ 3 2.2. RISOLUZIONE NUMERICA DELLE EQUAZIONI ........................................................................................ 6 2.2.1. DISCRETIZZAZIONE SPAZIALE ..................................................................................................... 7 2.2.2. INTEGRAZIONE NEL TEMPO....................................................................................................... 8 2.3. CONDIZIONI AL CONTORNO .................................................................................................................. 9 2.3.1. PARETE SOLIDA COMPLETAMENTE RIFLETTENTE ..................................................................... 9 2.3.2. STRATO SPUGNA...................................................................................................................... 10 2.3.3. GENERATORE DI ONDA SINUSOIDALE ..................................................................................... 10 2.3.4. GENERATORE DI ONDE IRREGOLARI E SERIE TEMPORALI ....................................................... 10 2.4. CONDIZIONI INIZIALI ............................................................................................................................ 11 2.4.1. ONDA SOLITARIA ..................................................................................................................... 11 2.4.2. PARAMETRI DI FLUSSO ............................................................................................................ 11 2.5. FRANGIMENTO .................................................................................................................................... 11 2.6. RUN UP ................................................................................................................................................ 11 2.7. ATTRITO ............................................................................................................................................... 12 3. DESCRIZIONE DEL SOFTWARE ............................................................................................ 12 3.1. FILE DI INPUT ....................................................................................................................................... 13 3.1.1. FILE DI INPUT CML ................................................................................................................... 13 3.1.2. FILE DI INPUT PER LA BATIMETRIA .......................................................................................... 17 3.1.3. FILE DI INPUT PER LE ONDE IRREGOLARI................................................................................. 18 3.1.4. FILE DI INPUT PER LA SERIE TEMPORALE................................................................................. 19 3.2. INTERFACCIA GRAFICA (GUI) ............................................................................................................... 19 3.2.1. DASH ........................................................................................................................................ 20 3.2.2. SETTINGS.................................................................................................................................. 21 3.2.3. INITIAL CONDITIONS ................................................................................................................ 22 3.2.4. BOUNDARY .............................................................................................................................. 22 3.2.5. GRAPHICS................................................................................................................................. 23 3.3. FILE DI OUTPUT.................................................................................................................................... 24 4. ESEMPI APPLICATIVI .......................................................................................................... 25 4.1. SIMULAZIONE 1 ................................................................................................................................... 25 4.2. SIMULAZIONE 2 ................................................................................................................................... 27 1
4.3. SIMULAZIONE 3 ................................................................................................................................... 28 4.4. SIMULAZIONE 4 ................................................................................................................................... 28 5. BIBLIOGRAFIA ................................................................................................................... 32 2
1. INTRODUZIONE 1.1. GENERALITÀ SU CELERIS Celeris è il primo software interattivo per la simulazione di onde costiere (acque basse) non lineari. È gestito dal Coastal Engineering Group e dal Tsunami Research Center dell’università del sud della California. Celeris ha bisogno della versione recente di DirectX per essere correttamente installato su un computer Windows. Questa libreria, ad oggi, è integrata come parte del sistema operativo e pertanto Celeris verrà eseguito su una macchina Windows recente senza alcun problema. La simulazione e la visualizzazione sono eseguite direttamente sulla GPU (Graphics Processing Unit), utilizzando librerie Direct3D che consentono al software di correre più velocemente rispetto al tempo reale. In questo software, tramite un’interfaccia grafica (GUI), l'utente può modificare la superficie libera dell'acqua e la batimetria mentre il modello è in funzione, attraverso l’utilizzo del mouse. Possono essere inoltre modificati velocemente i parametri fisici e numerici caratteristici del moto ondoso Ad esempio, un'onda solitaria può essere aggiunta al campo di soluzione, oppure può essere introdotta un'onda sinusoidale ad un contorno, il tutto sempre mentre il modello è in esecuzione. Dunque la simulazione del moto ondoso avviene in tempo reale e l’osservazione simultanea dei risultati avviene tramite un rendering fotorealistico o colormapped. Le misurazioni effettuate durante la simulazione, invece, vengono salvate in file Matlab oppure in file di testo, che possono essere visualizzati e analizzati a fine simulazione. 2. MODELLO MATEMATICO 2.1. EQUAZIONI CHE GOVERNANO IL PROBLEMA Celeris, per la simulazione della propagazione delle onde in acque basse, utilizza le equazioni di Boussinesq. Queste equazioni sono derivate integrando sulla verticale le equazioni di Eulero tridimensionali (forma semplificata delle equazioni di Navier-Stokes), utilizzando un’approssimazione polinomiale del profilo verticale del campo di velocità. In questo modo il problema si riduce da tridimensionale a bidimensionale, che è più efficiente da risolvere numericamente. Le equazioni di Boussinesq sono una buona alternativa alle equazioni del moto di Eulero e consentono simulazioni su domini spaziali di dimensioni molto maggiori. Sono molto efficaci per lo studio della dinamica sotto costa (acque basse), includendo sia gli effetti non lineari che dispersivi (dispersione delle onde in frequenza) e sono in grado di simulare onde relativamente corte (ovvero con lunghezza d’onda maggiore della profondità). Possono essere utilizzate, per esempio, per descrivere la trasformazione non lineare e la dispersione delle onde superficiali, in acque poco profonde, a causa degli effetti di shoaling, rifrazione, diffrazione e riflessione. Le equazioni di Boussinesq offrono la più semplice modellizzazione matematica di tali effetti ma sono comunque limitate a campi debolmente non lineari e dispersivi Un’altra limitazione importante delle equazioni di Boussinesq è il loro ristretto campo di applicabilità, che è limitato a profondità relativamente basse, in modo tale che la distribuzione semplificata della velocità, che permette l’integrazione lungo la verticale, rimanga un’approssimazione valida. A partire dalle note equazioni di Boussinesq sviluppate da Peregrine, diverse ulteriori modellazioni sono state ricavate e si sono affermate nel tempo, come le equazioni di Nwogu e di Madsen e Sørensen. Queste, rispetto 3
al modello di partenza, presentano dei coefficienti di dispersione migliori, che consentono di trovare la soluzione del campo di velocità con maggiore accuratezza. L’estensione delle equazioni di Boussinesq considerata è quella derivata da Madsen e Sørensen, che è rappresentata dalle seguenti equazioni: + + =0 (1) + + + ℎ + + = 0 (2) ℎ ℎ + + + ℎ + + = 0 (3) ℎ ℎ I pedici x e y, presenti nell’equazione, denotano la variazione spaziale rispetto alle corrispondenti direzioni; mentre il pedice t denota la variazione temporale. È poi presente h che è la profondità totale dell’acqua, η che è l’elevazione della superficie libera, P e Q che sono i flussi integrati lungo la verticale, rispettivamente nelle direzioni x e y, g è l’accelerazione gravitazionale, f1 e f2 sono i termini che rappresentano l’attrito di fondo e infine ψ1 e ψ2 sono i termini dispersivi, che si esplicano attraverso le seguenti relazioni: 1 =− + + − + − 3 1 1 1 − + + 2 + − + (4) 3 6 6 1 =− + + − + − 3 1 1 1 − + + 2 + − + (5) 3 6 6 Dove B = 1/15 è il coefficiente di calibrazione per le proprietà di dispersione delle equazioni. Le equazioni di Boussinesq estese prevedono in maniera sufficientemente accurata le caratteristiche di dispersione lineare e shoaling per valori di kd < 3, dove k è il numero d'onda. Le caratteristiche non lineari tendono a essere sottostimate per valori di Kd > 0.5, poiché viene considerato solamente un basso ordine di non linearità. Si noti che queste equazioni si riducono automaticamente al sistema di Saint-Venant di equazioni non-lineari in acque basse (NLSW), per d = 0. Nei luoghi dove la quota altimetrica della superficie d’acqua calma non è definita, come sulle terre sopra il livello del mare, abbiamo impostato d = 0, quindi il solutore passa automaticamente alle NLSW. Dunque, per riprodurre il fenomeno della risalita (run up) dell’onda, il set di equazione che si utilizza è quello delle NLSW. Le equazioni (1), (2) e (3) possono essere riscritte al fine di ottenere una forma conservativa che si adatta all’applicazione del metodo ai volumi finiti, che verrà utilizzato nella risoluzione numerica delle equazioni. L’elevazione della superficie libera è espressa dalla relazione: = ℎ − , dove d è la profondità dell’acqua in condizioni indisturbate (acqua calma). 4
Figura 1- Elevazione della superficie libera Considerando la variazione del fondale nulla nel tempo (quindi il fondale rimane costante nel tempo), le derivate dell’elevazione η diventano: =ℎ ; = ℎ − ; =ℎ − (6) Le derivate spaziali della profondità dell’acqua calma (d), rappresentano la variazione spaziale del fondale. Dunque, i termini che contengono l’elevazione della superficie libera, possono essere riscritti nel seguente modo: ℎ ℎ = ℎℎ − ℎ = + ℎ (7) 2 ℎ ℎ = ℎℎ − ℎ = + ℎ (8) 2 Dove z è l’elevazione del fondale rispetto a un riferimento fissato (vedi figura 1). Introducendo le equazioni (6), (7) e (8) nelle equazioni (1), (2) e (3), il sistema diventa il seguente: ℎ + + =0 (9) ℎ + + + + ℎ + + = 0 (10) ℎ 2 ℎ ℎ + + + + ℎ + + = 0 (11) ℎ ℎ 2 Questo sistema, per semplicità, può essere visto in una forma vettoriale compatta: + ( ) + ( ) + ( ) = 0 (12) 5
Dove: ⎡ ⎤ ⎡ ⎤ ℎ ℎ 0 ⎢ + ⎥ ⎢ ⎥ = ; ( ) = ⎢ ℎ 2 ⎥ ; ( ) = ⎢ ℎ ⎥ ; ( ) = ℎ + + ⎢ ⎥ ⎢ ℎ ⎥ ℎ + + ⎣ + ⎦ ⎣ ℎ ⎦ ℎ 2 U il vettore delle forze conservative che consideriamo come l’insieme di variabili sconosciute, F(U) e G(U) sono i vettori di flusso avvettivo e infine, S(U) è il termine sorgente che include la pendenza del fondale, l’attrito e i termini dispersivi. 2.2. RISOLUZIONE NUMERICA DELLE EQUAZIONI Diversi schemi numerici sono stati proposti per risolvere le equazioni estese di Boussinesq. Wei e Kirby, per risolvere queste equazioni, hanno sviluppato un codice numerico che è preciso al quarto ordine nel tempo e nello spazio. Al fine di poter risolvere per via numerica le equazioni di Boussinesq, l’equazione (12) può essere riscritta, secondo Wei e Kirby, nel seguente modo: ℎ = ( , ) (13) ∗ = (ℎ, , ) + [ ∗ ( )] (14) ∗ = (ℎ, , ) + [ ∗ ( )] (15) I termini presenti all’interno delle tre equazioni sono definiti nel seguente modo: 1 1 ∗ = − − + (16) 3 3 1 1 ∗ = − − + (17) 3 3 ( , ) = − + (18) ℎ (ℎ, , ) = − + − − ℎ − + + + ℎ 2 ℎ + 2 + + (19) ℎ (ℎ, , ) = − + − − ℎ − + + + ℎ 2 ℎ + 2 + + (20) 1 1 1 ∗ ( ) = + + + (21) 6 6 3 6
1 1 1 ∗ ( ) = + + + (22) 6 6 3 Questo riformulazione attuata da Wei e Kirby, permette di riscrivere l’equazione (1) come un’equazione differenziale ordinaria rispetto al tempo. I termini a primo membro nelle equazioni (13), (14) e (15) vengono discretizzati nel tempo. I termini [F*(Q)]t e [G*(P)]t presenti a secondo membro, vengono invece valutati tramite un’estrapolazione nel tempo (ossia si ricavano i valori approssimati di queste funzioni, basandosi su valori noti). Tutti i restanti termini a secondo membro sono invece noti allo step di tempo corrente. Verrà utilizzato un metodo predictor/corrector (predittore/correttore) al IV ordine per l’evoluzione nel tempo e le derivate spaziali del primo ordine saranno discretizzate con un’accuratezza al IV ordine; in questo modo tutti gli errori di troncamento saranno ridotti a un livello più piccolo rispetto ai termini dispersivi considerati dal modello. Quindi i risultati che si otterranno, saranno più accurati. 2.2.1. DISCRETIZZAZIONE SPAZIALE Per quanto riguarda la discretizzazione spaziale, si ricorre a un metodo ibrido volumi/differenza finite (FVM/FDM) al fine di risolvere le equazioni su griglie cartesiane uniformi. Il dominio spaziale viene discretizzato tramite celle rettangolari di dimensioni fisse Δx e Δy. Ogni cella svolge il ruolo di volume di controllo per il metodo di discretizzazione ai volumi finiti, mentre i centri delle celle sono utilizzati come nodi computazionali per il metodo alle differenze finite. I termini dispersivi sono considerati come termini sorgente e vengono discretizzati utilizzando il metodo alle differenze finite (centrato), mentre i termini avvettivi insieme e quelli che identificano la pendenza del fondo sono discretizzati utilizzando il second order well balanced positivity preserving central upwind scheme, introdotto da Kurganov e Petrova, noto anche come metodo KP07. Quest’ultimo è un metodo ai volumi finiti per risolvere il sistema di Saint- Venant delle equazioni di shallow water. Essendo ben bilanciato (well balanced) mantiene la stazionarietà e garantisce la positività della profondità del fluido calcolata. Supporta poi la condizione asciutta, senza bisogno di tenere traccia del fronte bagnato/asciutto e si adatta a una batimetria irregolare. Inoltre, è particolarmente adatto all’implementazione sulla GPU ed è per questo che viene utilizzato per la progettazione interattiva e ad alte prestazioni di Celeris. Per semplicità, il metodo KP07 non sarà trattato in dettaglio, ma verranno mostrati i passaggi attraverso cui si esplica. Il KP07 originale, utilizzato per risolvere le equazioni di shallow water, è costituito dai seguenti passaggi: 1- Le variabili sconosciute [ℎ, , ] sono linearmente valutate alle interfacce di cella, applicando sulle loro derivate un limitatore minmod generalizzato (limitatore di flusso). 2- Una semplice correzione conservativa viene applicata su h per garantire la positività della profondità del fluido. Le velocità del flusso, u e v, sono calcolate nel seguente modo: √2ℎ( ) √2ℎ( ) = ; = (23) ℎ + max(ℎ , ) ℎ + max(ℎ , ) Dove è una piccola tolleranza prestabilita che serve per evitare la divisione per valori molto piccoli o per zero. 3- I flussi vengono calcolati a ogni interfaccia di cella utilizzando il central upwind scheme. 4- Vengono valutati i termini sorgente e vengono trovate le variabili sconosciute che servono per il successivo step 7
Nell’ultimo passaggio del metodo KP07, si aggiungono i termini dispersivi, discretizzati con il metodo alle differenze finite. 2.2.2. INTEGRAZIONE NEL TEMPO Le variabili indipendenti si discretizzano come: = ∆ ; = ∆ ; = ∆ , dove n si riferisce all’informazione allo step temporale corrente. L’integrazione nel tempo viene eseguita tramite uno schema esplicito di Adams-Bashforth del terzo ordine come step di previsione e tramite uno schema di Adams- Moulton del quarto ordine come step correttore. Lo schema di Adams-Bashforth è il seguente: ∆ ℎ =ℎ + 23 − 16 + 5 (24) 12 ∆ ∗ = ∗ + 23 − 16 + 5 + 2 ∗ − 3 ∗ + ∗ (25) 12 ∆ ∗ = ∗ + 23 − 16 + 5 + 2 ∗ − 3 ∗ + ∗ (26) 12 Come già accennato, lo step di previsione è esplicito nel tempo, dunque tutte le variabili a secondo membro sono note. Lo schema di Adams-Moulton è invece il seguente: ∆ ℎ =ℎ + 9 + 19 − 5 + (27) 24 ∆ ∗ = ∗ + 9 + 19 − 5 + + ∗ − ∗ (28) 24 ∆ ∗ = ∗ + 9 + 19 − 5 + + ∗ − ∗ (29) 24 Come si può notare, lo step correttore è implicito nel tempo. Al fine di risolverlo, i termini (n+1), da inserire nella prima iterazione dello step correttore, sono calcolati con lo step di previsione (e una volta fatta la prima iterazione correttrice, si utilizzano i termini al passo n+1 dell’iterazione correttrice precedente a quella che si sta considerando) e si continua a iterare lo schema correttore finché non si arriva a convergenza, ovvero finche il risultato di due iterazioni successive raggiunge un limite richiesto (errore). L’errore è calcolato per ciascuna variabile h, P, Q ed è definito come: ( )∗ ∑ , , − , ∆ = (30) ∑ , , Dove f denota ciascuna delle variabili e ( )* indica la precedente stima. Le iterazioni si fermano quando Δf supera il valore 0.001. Questa stessa procedura viene poi applicata per lo step temporale successivo. Poiché le variabili dei passi (n+1) e (n+2) non sono definite per i primi due step temporali (ossia per n=1 e n=2), per questi viene utilizzato il metodo di integrazione temporale di Eulero del primo ordine. 8
L’elevazione della superficie libera hn+1 si determina risolvendo le equazioni (24) e (27). Mentre per determinare i parametri di flusso, si devono risolvere le equazioni (16) e (17). Per calcolare quindi il parametro P, l’equazione (16) è risolta separatamente per ciascuna linea delle celle della griglia computazionale, parallela all’asse x; le variabili spaziali sono discretizzate utilizzando il metodo alle differenze finite: 1 1 − + , + 1+2 + , + 6∆ 3 ∆ 3 ∆ 1 + − − + , = ∗ ∀ (31 6∆ 3 ∆ Per calcolare il parametro Q, si effettua un’operazione analoga, dove l’equazione (17) è risolta per ciascuna linea delle celle della griglia computazionale, parallela all’asse y. Viene discretizzata nel seguente modo: 1 1 − + , + 1+2 + , + 6∆ 3 ∆ 3 ∆ 1 + − − + , = ∗ ∀ (32) 6∆ 3 ∆ Le equazioni (31) e (32) si riducono a un sistema tridiagonale di equazioni per ogni riga/colonna di celle in direzione x/y. Al fine di risolvere efficacemente questi insiemi di equazioni sulla GPU, si utilizza il metodo di riduzione ciclica (CR). Questo metodo si divide in due fasi: una riduzione in avanti e una sostituzione all’indietro. Nella fase di riduzione in avanti, il sistema è successivamente ridotto a un sistema più piccolo con la metà del numero delle incognite, fino ad ottenere un sistema di due incognite che può essere risolto banalmente. Nella seconda fase, di sostituzione all’indietro, l’altra metà delle incognite viene determinata sostituendo i valori precedentemente trovati nelle equazioni. 2.3. CONDIZIONI AL CONTORNO Per ciascun confine, sono stati considerati due strati di celle fantasma utilizzati per implementare le condizioni al contorno. Le condizioni al contorno che possono essere applicate in Celeris sono: - Parete solida completamente riflettente - Strato spugna - Generatore di onda sinusoidale - Generatore di onde irregolari - Serie temporali 2.3.1. PARETE SOLIDA COMPLETAMENTE RIFLETTENTE Le pareti solide sono considerate come confini completamente riflettenti. Al fine di poter imporre queste condizione, i valori sulle due celle più vicine al confine sono specchiati sulle celle fantasma. Il rispecchio garantisce che siano soddisfatte le seguenti condizioni: ( , ) ∙ = 0 ; ∇ ∙ = 0 (33) 9
Dove n è il vettore normale alla parete solida. 2.3.2. STRATO SPUGNA Gli strati spugna vengono implementati in Celeris moltiplicando i valori di η, P e Q per un coefficiente di smorzamento, definito nel seguente modo: 1 − ( , ) ( , ) = 1 + cos (34) 2 Dove Ls è la larghezza dello strato spugna e D (x, y) è la distanza normale al contorno assorbente. Questo coefficiente viene applicato soltanto alle celle che si trovano all’interno dello strato spugna. 2.3.3. GENERATORE DI ONDA SINUSOIDALE Al fine di generare al confine onde sinusoidali regolari, caratterizzate da un determinato periodo (T), ampiezza (a) e direzione (θ), i valori di η, P e Q sono assegnati come segue: = sin − − (35) = cos (36) = sin (37) Dove: 2 = ; = ; = cos( ) ; = sin( ) (38) Mentre k, che è il numero d’onda, viene calcolato utilizzando la soluzione approssimata di Eckart per la relazione di dispersione: = √ ℎ (39) Questa implementazione non consente il trattamento delle onde che si avvicinano al confine e può essere utilizzata solo se la non linearità è insignificante. 2.3.4. GENERATORE DI ONDE IRREGOLARI E SERIE TEMPORALI Come condizione al contorno è possibile generare anche delle onde irregolari oppure riprodurre una serie temporale. Per quanto riguarda le onde irregolari, queste possono essere riprodotte assegnando come condizioni al contorno una serie di armoniche regolari (caratterizzate da diverse ampiezze, periodi e direzioni) la cui somma restituisce il segnale irregolare. Per quanto riguarda invece la serie temporale, è possibile inserire al contorno delle registrazioni dell’elevazione della superficie libera nel tempo, riferite alle mareggiate che si vogliono simulare, misurate tramite boe ondametriche o altri strumenti. 10
2.4. CONDIZIONI INIZIALI Le condizioni iniziali che si possono assegnare sono: - Onda solitaria - Parametri di flusso 2.4.1. ONDA SOLITARIA Un’onda solitaria, o anche detta solitone, è un’onda che si propaga su un fondo orizzontale, a una celerità costante, senza mutare le proprie caratteristiche (ovvero senza mutare la forma). Le equazioni di Boussinesq consentono una tale onda con forma stazionaria a condizione che gli effetti non lineari e dispersivi siano in equilibrio (si annullano tra di loro). Celeris accetta come file di input un insieme di onde solitarie, con date altezze d’onda, direzioni e posizioni della cresta. Queste possono essere aggiunte al dominio anche successivamente, mentre il modello è in esecuzione, tramite interfaccia grafica (GUI). Le onde solitarie vengono sovrapposte al dominio aggiungendo in ciascuna cella i valori di η, P e Q definiti nel seguente modo: = sech ( − ) cos( ) + ( − ) sin( ) (40) cos( ) = (41) sin( ) Dove Hs è l’altezza dell’onda solitaria, θ è la sua direzione e (x0, y0) è la posizione iniziale della cresta. Il numero d’onda e la celerità dell’onda solitaria (ks e Cs) sono dati dalle seguenti relazioni: 3| | = (42) 4 = ( + ) (43) 2.4.2. PARAMETRI DI FLUSSO I valori di η, P e Q possono essere assegnati su tutto il dominio. Ad ogni cella del dominio si deve assegnare un valore. 2.5. FRANGIMENTO In Celeris il frangimento non viene eseguito con un trattamento diretto. Tuttavia, è stato dimostrato che la dissipazione numerica del programma, prodotta principalmente dall’utilizzo del limitatore minmod, imita la dissipazione fisica prevista dal frangimento. 2.6. RUN UP Il run up è la risalta dell’onda su una spiaggia o su una parete inclinata. Come già accennato precedentemente, il solutore per simulare il run up passa automaticamente dalle equazioni di Boussinesq alle equazioni di shallow water non lineari (NLSW). Dunque, per la simulazione dei fenomeni quali frangimento e run up, i modelli alla Boussinesq non bastano, ma è necessaria una modellazione aggiuntiva rispetto alle equazioni di base. 11
2.7. ATTRITO I termini di attrito (f1 e f2) presenti all’interno delle equazioni di Boussinesq, sono particolarmente importanti e significativi nelle misurazioni del run up. Questi due termini sono dati da: + = (44) ℎ Dove f è il coefficiente di attrito. In Celeris, l’utente può scegliere se impostare il coefficiente di attrito come un valore costante, oppure ricavarlo localmente utilizzando l’equazione di Manning: = (45) ℎ / Dove n è il coefficiente di scabrezza di Manning. Dato che l’equazione di Manning è adimensionale, è importate sottolineare il fatto che le grandezze che sono presenti all’interno dell’equazione, g e h, hanno unità di misura appartenente al sistema internazionale (rispettivamente m/s2 e m). Per evitare la divisione per valori molto piccoli di h o addirittura per zero, si adotta la stessa tecnica utilizzata nell’equazione (23). 3. DESCRIZIONE DEL SOFTWARE Celeris è scritto in linguaggio C++ e HLSL (cioè linguaggio shader di Microsoft). Il file denominato “Main.cpp” si occupa del flusso, includendo la lettura dei file di input e richiama, all’interno del ciclo, le funzioni appropriate. La maggior parte del codice si trova all’interno del file “engine.cpp”, all’interno del quale sono contenuti i codici che guidano la GPU (processore grafico). Questo file chiama gli shader appropriati per la simulazione e il rendering grafico e inoltre scrive i dati sul disco con una frequenza definita dall’utente. Gli shader di simulazione sono contenuti nel file “compute.hlsl” mentre gli shader di grafica sono contenuti nel file “graphics.fx”. Infine, l’interfaccia grafica (GUI) è gestita dal file “gui_manager.cpp”. Il software viene eseguito facendo correre il file “Celeris.exe”. Se viene visualizzato un errore riguardante un file di DirectX, occorre aggiornare quest’ultimo. Nel momento in cui si avvia il programma, si apre una finestra Windows in cui viene richiesto di selezionare il file di input che si intende aprire. Quest’ultimo è un file con estensione “.CML”. Se, all’apertura del file, Celeris riscontra problemi, è possibile che le dimensioni del dominio di studio, settate all’interno del file CML, siano eccessive, oppure è possibile che qualche elemento presente sempre nel file CML sia stato definito in maniera errata. Di seguito viene riportato un diagramma di flusso attraverso cui funziona Celeris: 12
Figura 2 -Diagramma di flusso del funzionamento di Celeris 3.1. FILE DI INPUT Quindi il file di input principale attraverso il quale si avvia la simulazione è quello con estensione CML. All’interno di questo poi vengono richiamati altri file di input quali: - File con estensione cbf per la batimetria - File con estensione txt per l’inserimento di onde irregolari (condizioni al contorno) - File con estensione txt per l’inserimento di serie temporali (condizioni al contorno) - File con estensione chf per l’inserimento dei parametri di flusso (condizioni iniziali) 3.1.1. FILE DI INPUT CML I settaggi principali di uno specifico esperimento, possono essere assegnati a Celeris mediante file con estensione CML. Questi possono essere facilmente modificati mediante l’utilizzo di qualsiasi editor di testo, come ad esempio Notepad++ e il loro formato è leggibile sia dalla macchina che dall’uomo. I file CML sono composti da elementi e in genere questi ultimi iniziano e terminano con un tag; ciascun tag è racchiuso tra due parentesi angolari (< …. >). Tutti i caratteri all’interno dei due tag rappresentano il contenuto dell’elemento stesso. La figura seguente, a titolo d’esempio, mostra un elemento che descrive il nome di un esperimento: 13
Figura 3 - Esempio di un elemento che compone i file CML In questo esempio il tag di apertura è , il tag di chiusura invece, distinto da quello di apertura per la presenza di una barra, è . Il contenuto dell’elemento può essere rappresentato o da attributi o da un altro elemento. Per capire meglio, l’immagine che segue mostra l’elemento westBoundary: Figura 4 - Elemento CML che contiene elementi e attributi L’elemento ha tre attributi che sono type, seaLevel e widthNum; contiene poi anche un altro elemento che è , all’interno del quale sono presenti attributi riferiti a quest’ultimo. Nella figura (4) viene mostrato anche un commento che, nei file CML, in generale inizia con . Di seguito viene riportato un file CML di input completo, per un esperimento d’esempio in Celeris. Figura 5 - Esempio di un file CML di input 14
Tutti gli elementi presenti in un file CML devono trovarsi all’interno di un elemento “root” (radice). Quest’ultimo, nell’esempio riportato in figura (5), è rappresentato dall’elemento . Il nome del progetto viene inserito nell’elemento . Le impostazioni del modello che viene utilizzato in Celeris sono incorporate nell’elemento , il quale ha un attributo (type) e due elementi e , che a loro volta contengono altri attributi. L’attributo type può essere settato su “BSNQ” se si vuole lavorare con un modello alla Boussinesq, oppure “NLSW” se si vuole lavorare con le equazioni non lineari di shallow water. L’attributo epsilon (ε), riferito all’elemento , è quel parametro descritto in precedenza che viene utilizzato nelle equazioni governanti per evitare la divisione per numeri molto piccoli o per zero. Il valore di questo parametro può avere effetto sulle misurazioni della risalita (run up) e sulla stabilità del modello. Valori più grandi rendono il codice più stabile (evitando il crash della simulazione), ma aumentano il numero di elementi nella simulazione della risalita dell’onda. In genere simulazioni in aree con profondità dell’acqua minori di ε1/4 possono avere anomalie. L’attributo correctionStepsNum, invece, stabilisce il numero di passaggi correttivi nel processo di integrazione temporale. L’attributo timestep indica la dimensione del passo temporale (dt) della simulazione, in secondi (aumentando il dt, come avviene per il parametro ε. L’attributo type dell’elemento può essere scelto tra “Manning” o “Quadratic”; nel primo caso l’attrito verrà calcolato secondo Manning e quindi all’attributo coef si assegnerà il coefficiente di scabrezza di Manning n (lo si può trovare tabellato su internet e il valore cambia a seconda del materiale che si sta considerando: spiaggia, scogliera, ecc…), nel secondo caso invece si assegnerà il coefficiente di attrito quadratico (f). Aumentando il coefficiente di attrito, cosi come il dt e il parametro ε, il modello risulterà più stabile. Si passa poi al settaggio delle caratteristiche del dominio (campo di soluzione), all’interno del quale viene effettuata la simulazione. Gli elementi che stabiliscono queste caratteristiche sono: , e . Il primo di questi tre elementi contiene tre attributi: - Width (larghezza): indica la dimensione del dominio in direzione x (espressa in metri). - Length(lunghezza): indica la dimensione del dominio in direzione y (espressa in metri). - stillWaterElevation: rappresenta livello che la superficie del mare assume in condizioni di calma, ossia in assenza di onde (espresso in metri). Questa misura è calcolata rispetto a un riferimento fisso e il più delle volte è impostata su zero. L’elemento contiene due attributi: - nx: definisce il numero di celle e quindi il numero di punti computazionali in direzione x (in metri). - ny: definisce il numero di celle e quindi il numero di punti computazionali in direzione y (in metri). L’elemento richiama il file di testo, che verrà descritto successivamente, all’interno del quale è riportata la batimetria che caratterizza il dominio. In questo elemento deve essere trascritto il nome del file di batimetria il quale deve essere contenuto nella stessa cartella del file CML. Si assegnano poi le condizioni iniziali (se presenti nella simulazione) attraverso gli elementi e . Nel contenuto del primo elemento viene richiamato il file di testo (anche questo descritto più avanti) che definisce i valori, su tutto il dominio, di η (che nel software viene indicato come w), P e Q, ovvero i parametri di flusso. Quindi questi tre valori dovranno essere assegnati a ogni cella in quanto Celeris non effettua in questo caso interpolazioni. Questo elemento nella figura (5) non viene definito e infatti è riportato N/A. Invece, nel contenuto dell’elemento che definisce l’onda solitaria, devono essere definiti i seguenti attributi: - Altezza d’onda (H) espressa in metri - Angolo di incidenza dell’onda (θ), ovvero l’angolo che la direzione del fronte d’onda forma con la normale alla costa, espresso in gradi. - Coordinate del centro dell’onda (xc e yc) 15
Uno stesso file CML può contenere più onde solitarie. Si passa poi al settaggio delle condizioni al contorno per ciascun confine (nord, sud, est e ovest). Celeris, per implementare le condizioni la contorno, utilizza due strati di celle fantasma su ogni lato del dominio. Questo significa che per un esperimento caratterizzato da una griglia di dimensioni nx x ny, Celeris definisce una matrice di dimensione (nx+4) x (ny+4) per memorizzare i parametri di flusso. Gli indici di cella partono da zero in entrambe le direzioni e terminano con nx+3 oppure ny+3 su ciascuna direzione. I confini ovest e est sono definiti paralleli all’asse y e si trovano rispettivamente sulla xj=2 e xj=nx+1; allo stesso modo i confini sud e nord sono definiti paralleli all’asse x e si trovano rispettivamente alle posizioni yi=2 e yi=ny+1. Le condizioni al contorno devono essere settate tutte insieme all’interno del file CML, come attributi degli elementi: , , e . Gli attributi di questi elementi sono: - Type: serve per definire il tipo di condizione che si vuole assegnare al determinato confine; può essere settato su “solid” (mura solide riflettenti), “sponge” (strato spugna che assorbe il moto ondoso) o “sineWave” (generatore di onda sinusoidale). Per quest’ultimo, l’elemento di confine, dovrà contenere un altro elemento () in cui si dovranno specificare gli attributi che definiscono l’onda sinusoidale quali l’ampiezza, il periodo e angolo di incidenza. - seaLevel: serve per definire l’elevazione dell’acqua, in condizioni di calma, sul confine. Per la maggior parte degli esperimenti di ingegneria costiera deve avere lo stesso valore dell’attributo stillWaterElevation, definito all’inizio. - widthNum: serve per definire il numero di celle del contorno e deve essere fissato a 2 se le condizioni al contorno sono “solid” o “sineWave”, mentre per la condizione “sponge” si considera il valore corrispondente alla lunghezza dello strato spugna. All’attributo type possono essere assegnate altre due condizioni al contorno che non sono state riportate nella figura (5) e che sono: onde irregolari (IrregularWaves) e serie temporale dell’elevazione della superficie libera nel tempo (UniformTimeSeries); per entrambe le condizioni, l’elemento di confine dovrà contenere un altro elemento in cui si richiamano i file di testo che descrivono le due condizioni e che comunque verranno trattati più avanti. Figura 6 - Settaggio delle onde irregolari come condizione al contorno Figura 7 – Settaggio della serie temporale come condizione al contorno Infine, si effettua il settaggio delle impostazioni per effettuare misurazioni durante la simulazione; in particolare vengono inseriti dei pressure gauge che misurano la variazione dell’elevazione della superficie libera dovuta al passaggio dell’onda, in punti prestabiliti del dominio. Tale registrazione viene settata attraverso l’elemento che contiene a sua volta due attributi: 16
- doLog: per abilitare la registrazione deve essere settato su true, altrimenti, se settato su false, la registrazione non avviene. - logStep: definisce gli intervalli temporali tra una registrazione e l’altra. Settandolo su 20, verrà registrato un valore ogni 20 timestep. All’interno dell’elemento deve essere impostato il percorso relativo alla cartella destinata a contenere i file in cui sono salvati i valori delle registrazioni. Le posizioni alle quali avvengono le registrazioni sono definite attraverso gli indici di cella del dominio e possono essere fissate i due modi. Il primo è attraverso la definizione di un range e in ogni punto computazionale, interno a questo, vengono effettuate le misurazioni. Il range si identifica come un rettangolo ed è definito delle coordinate (indici di cella) di due punti opposti che rappresentano il vertice sinistro basso e il vertice destro alto del rettangolo. Questi intervalli sono impostati nell’elemento , all’interno del quale è presente sia l’attributo filename, che indica il nome del file di testo che verrà salvato e che conterrà le registrazioni, sia altri due elementi, e , ognuno dei quali contenente due attributi x e y. In questi due attributi devono essere riportate gli indici di cella relativi alle posizioni dei due vertici del rettangolo. Un file CML può contenere diversi range per la registrazione dei dati. Un altro metodo per la registrazione è quello di inserire dei misuratori di pressioni in punti computazionali del dominio. Il nome del file, in cui vengono salvate le misurazioni, viene assegnato all’attributo filename (come per i range di registrazione). Le coordinate dei misuratori sono espresse come coppia di valori (x,y) e vengono assegnate all’interno dell’elemento . Questi valori sono separati da una virgola e rappresentano gli indici di cella. Ad esempio, se si considera l’esperimento riportato in figura (5), allora l’elevazione della superficie libera, insieme ai parametri di flusso, verranno salvati nel file “gauges.txt”, nella cartella “C:\\conical_island”, presso i misuratori posti alle posizioni (116,152), (126,152), (177,152), (178,152), (152,126), ogni 20 passi temporali. Un file CML può contenere un solo elemento . Tutte le impostazioni viste in questo paragrafo, vanno settate all’interno del file CML, come viene riportato in figura (5). 3.1.2. FILE DI INPUT PER LA BATIMETRIA Come detto precedentemente, all’interno del file CML, per settare la batimetria del dominio, si deve richiamare un file di testo (txt) che contiene i dati batimetrici, ossia le quote del fondale in ogni punto computazionale del dominio. Di seguito viene riportato un esempio di come deve essere un file di batimetria: Figura 8 - Esempio di un file di testo per la batimetria È possibile realizzare questi file mediante l’utilizzo del software Matlab. Su quest’ultimo si ricostruisce, la batimetria desiderata e poi, tramite il richiamo di una function (write_bathy.m), è possibile trascrivere la batimetria su file di testo. La function viene fornita insieme al software Celeris. Di seguito, a titolo di esempio, viene riportato un file Matlab, tramite il quale si ricostruisce una batimetria caratterizzata da batimetriche rettilinee, parallele alla costa, con una secca presente nel mezzo: 17
Figura 9 - Esempio di un file Matlab per la realizzazione della batimetria A questo punto, al file di testo realizzato, si deve cambiare estensione, passando da “.txt” a “.CBF” , altrimenti la batimetria non viene letta da Celeris. 3.1.3. FILE DI INPUT PER LE ONDE IRREGOLARI Per inserire onde irregolari come condizioni al contorno, come già detto, si deve richiamare un file di testo all’interno del file CML, che è così strutturato: Figura 10 - Esempio di un file di testo per la realizzazione di onde irregolari 18
Per generare un’onda irregolare si devono inserire, all’interno di questo file di testo, le caratteristiche delle singole componenti armoniche che sommate danno il segnale irregolare. Nell’esempio sopra riportato è stata considerata un’onda irregolare composta dalla somma di 3 onde monocromatiche regolari. Ciascuna riga rappresenta una componente armonica. I quattro elementi all’interno di ciascuna riga, invece, descrivono le caratteristiche dell’onda; partendo da sinistra, il primo valore rappresenta l’ampiezza dell’onda, il secondo rappresenta il periodo, il terzo rappresenta l’angolo d’incidenza (θ) e l’ultimo valore rappresenta la fase dell’onda. A differenza del file di batimetria, per questo non occorre modificare l’estensione. 3.1.4. FILE DI INPUT PER LA SERIE TEMPORALE La serie temporale si richiama, all’interno del file CML, in modo analogo all’onda irregolare. Il file di testo è definito da una serie di “=” seguiti dalla sequenza dei punti (positivi e negativi) che individuano l’elevazione della superficie libera nel tempo e dunque la registrazione della mareggiata. 3.2. INTERFACCIA GRAFICA (GUI) Una volta definito il file CML si può avviare il software, e dunque la simulazione. La visualizzazione di quest’ultima si ha sull’interfaccia grafica (GUI). Celeris è il primo software interattivo la cui interfaccia grafica può essere utilizzata per modificare i parametri di simulazione e visualizzazione, mentre il modello è in esecuzione. La seguente figura mostra come si presenta l’interfaccia grafica: Figura 11 - Interfaccia grafica di Celeris 19
Come si può notare dalla figura (11), l’interfaccia grafica si divide in tre parti. Nella parte sinistra viene visualizzata la simulazione (nel caso della figura 11 si hanno onde monocromatiche sinusoidali che si propagano su fondale costante). Nella parte in basso a destra sono presenti 6 comandi: - Reset simulation: resetta dall’inizio la simulazione avviata. - Reset bathymetry: resetta la battimetria, nel caso in cui sia stata modificata attraverso l’interfaccia grafica, nel corso della simulazione. - Save bathymetry: salva la batimetria nel caso in cui sia stata modificata rispetto a quella iniziale, data come input nel file CML. - Run simulation: nel caso in cui si metta in pausa la simulazione (ad esempio per effettuare degli screenshot), la riavvia. (nel caso in cui,invece, la simulazione è in esecuzione, al posto di questo comando compare “pause simulation” che serve appunto per mettere in pausa). - Save inundation. - Hide GUI: nasconde la parte destra dell’interfaccia, per permettere una visualizzazione della simulazione a tutto schermo. La parte in alto destra dell’interfaccia è quella tramite cui si opera la modifica dei parametri, nel corso della simulazione. Si divide in 5 sezioni 1. Dash 2. Settings 3. Initial Condition 4. Boundary 5. Graphics Ogni sezione prevede un elenco di comandi. 3.2.1. DASH In questa sezione dell’interfaccia di Celeris è possibile andare a modificare, in fase di simulazione, la quota del terreno e il livello della superficie libera dell’acqua, tramite l’utilizzo del tasto sinistro del mouse. Figura 12 - Sezione “Dash” dell’interfaccia Con il primo comando “left mouse action” si va a scegliere il tipo di azione che si vuole effettuare tramite il tasto sinistro del mouse: 20
Figura 13 - left mouse action Selezionando “add water” o “remove water” viene aggiunta o rimossa acqua da dominio (aumenta il livello superficie libera); selezionando “stir water” si applica una perturbazione (agitazione) della superficie libera, nel punto selezionato del dominio; mentre con “raise terrain” e “lower terrain” si modificano le quote del fondo e della terra emersa. Tramite il comando “left mouse radius” si può decidere l’entità del raggio della determinata azione selezionata (più aumenta, più la zona del dominio su cui si andrà ad effettuare una determinata azione sarà estesa). Tramite il comando “left mouse strength” si può decidere l’intensità dell’azione selezionata (più aumenta, più sarà consistente l’azione). Ci sono poi valori che descrivono le caratteristiche del flusso, durante la simulazione; “max depth” è la massima profondità raggiunta in tutto il dominio, per via della variazione dell’elevazione della superficie libera; “virtual time” è il tempo virtuale trascorso dall’inizio della simulazione, che può essere differente dal tempo reale effettivo trascorso (“elapsed time”). Gli ultimi valori, ovvero x, y, z, depth, u, v, indicano le coordinate, la quota del fondo, il tirante e le componenti di velocità, della posizione che si sta indicando con il puntatore all’interno del dominio (se il puntatore è posizionato all’esterno del domino, i valori saranno tutti quanti pari a -1). 3.2.2. SETTINGS In questa sezione dell’interfaccia si possono andare a modificare le impostazioni del modello e le caratteristiche del dominio. Figura 14 - Sezione “settings” dell'interfaccia Tramite i comandi “mesh size x” e “mesh size y” si cambiano le dimensioni della mesh e quindi anche il numero di celle e punti computazionali. Tramite “valley length/width” si modificano le dimensioni del dominio in larghezza e lunghezza. Con il comando “tide/surge/slr” si può tenere conto delle condizioni di marea diverse, in quanto è possibile far variare l’elevazione della superficie libera in condizioni di calma (aumentando il valore, rispetto allo zero, la quota dell’acqua sale). Tramite i comandi “gravity” e “friction” si modificano i valori rispettivamente dell’accelerazione gravitazionale e del coefficiente di attrito. Per quanto riguarda il comando “nominal CFL”, il parametro CFL sta ad indicare la condizione di Courant-Friedrichs-Lewy, che in fluidodinamica è una condizione necessaria per la convergenza numerica della soluzione di alcune equazioni alle derivate parziali. Questa condizione è sfruttata nell'impiego di schemi numerici espliciti temporali. Come conseguenza, il passo temporale deve essere più piccolo di un certo intervallo di tempo, altrimenti la simulazione produrrà risultati ampiamente scorretti. Per esempio, se un'onda attraversa una 21
griglia di calcolo discreta, allora l'intervallo temporale deve essere più piccolo del tempo necessario all'onda per attraversare due punti adiacenti della griglia. Come corollario, se la distanza tra due punti adiacenti della griglia viene ridotta, il limite superiore dell'intervallo temporale sarà anch'esso diminuito. Dunque, diminuendo il parametro CFL, diminuisce il timestep. Il comando “timesteps per frame”, invece, serve per dare fluidità alla simulazione (più è basso il valore più la simulazione avrà una visualizzazione fluida). 3.2.3. INITIAL CONDITIONS In questa sezione dell’interfaccia possono essere inserite nuove condizioni iniziali, a simulazione iniziata. Figura 15 - Sezione “initial conditions” dell'interfaccia In particolare, può essere inserita un’onda solitaria, assegnando altezza, direzione e le coordinate (numeri di cella) che individuano il centro dell’onda. 3.2.4. BOUNDARY In questa sezione si possono andare a modificare le condizioni al contorno, inserendone di nuove. Figura 16 - Sezione "boundary" dell'interfaccia Con i comandi “boundary side” e “boundary type”, rispettivamente, si seleziona il confine su cui si vuole apportare la modifica e gli si assegna una delle tipologie viste precedentemente di condizione al contorno. Figura 17 - "Boundary side" (a sisintra) e "boundary type" (a destra) Nel caso in cui si seleziona “onda sinusoidale” come condizione al contorno, bisogna anche associargli ampiezza periodo e direzione. Invece, nel caso in cui si seleziona “onda irregolare” bisogna associargli altezza significativa, periodo di picco, direzione media del segnale irregolare, che sono ricavabili dallo spettro d’energia e infine si deve anche indicare la profondità in corrispondenza della sorgente del segnale. 22
3.2.5. GRAPHICS In questa ultima sezione si vanno a modificare le caratteristiche di visualizzazione della simulazione, scegliendo tra rendering fotorealistico o colormapped. Figura 18 - Sezione "graphics" dell'interfaccia Con il primo comando si modifica la scala spaziale verticale del dominio. Con il comando “surface shading” si seleziona la tipologia di visualizzazione della superficie, scegliendo tra una superficie fotorealistica o rappresentata da una mappatura colorata. Figura 19 - Surface shading Con il comando “shading variable” si sceglie la tipologia di variabile da rappresentare attraverso le mappature colorate, come ad esempio la superficie libera, le componenti di velocità, la vorticità ecc… Figura 20 – “Shading variable" Con “terrain texture” si va a selezionare il carattere del terreno, che può essere sabbia, erba ecc... Con i comandi “colormap max” e “colormap min”, si modificano le impostazioni del colore della mappatura. 23
Con il comando “skybox” si modifica la trama dello sfondo della simulazione (ovvero la parte esterna al domnio). Si può poi andare a selezionare o deselezionare la visualizzazione della griglia, definendo anche la scala delle maglie. Possono poi essere visualizzati all’interno della simulazione le zone, sulla terra emersa, soggette a inondazione dovuta al moto ondoso (viene selezionata in viola l’area soggetta alla risalita dell’acqua). Gli ultimi comandi servono per aumentare o diminuire la scala di visualizzazione del dominio e per impostazioni di natura grafica, come alzare e abbassare la posizione del sole e controllare i riflessi sulla superficie dell’acqua. Tutte queste impostazioni grafiche della simulazione, possono anche essere settate direttamente all’interno del file CML di input, come viene mostrato nella figura seguente: Figura 21 - Settaggio opzioni grafiche su file CML Ovviamente settare le impostazioni grafiche su file CML è un’operazione opzionale ai fini della riuscita della simulazione. 3.3. FILE DI OUTPUT Come visto precedentemente, i file di output che vengono generati dal software sono dei file di testo, in formato ASCII, all’interno dei quali vengono trascritti i parametri di flusso, derivati dalle misurazioni effettuate durante la simulazione. Queste registrazioni possono essere effettuate su un range spaziale, oppure in punti precisi del dominio, definiti entrambi nel file CML di input. Il file di output restituito da Celeris a fine simulazione è il seguente: 1° registrazione 2° registrazione 3° registrazione Figura 22 - Esempio di un file di output contenente registrazioni 24
Ogni riga rappresenta un misuratore di pressione (pressure gauges); in tutto, nell’esempio riportato in figura (22), sono stati inseriti 5 sensori. Ogni 5 righe si ha una misurazione che avviene, come detto nel paragrafo 3.1.1, ogni 20 timestep (1° registrazione è rappresentata nel riquadro rosso, la seconda nel riquadro blu e la terza in quello verde nell’immagine 22). Si hanno poi, in tutto, sei colonne. Nella prima e nella seconda, partendo da sinistra, ci sono gli indici di cella j e i, rispettivamente nelle direzioni x e y. Nella terza, quarta e quinta colonna vengono riportati i parametri di flusso, rispettivamente η, P e Q. Nell’ultima colonna vengono inseriti i valori del parametro α, che deve essere ignorato dall’utente in quanto serve solamente per eseguire il debug e generalmente è pari a zero. j i η P Q α Figura 23 - Definizione delle colonne presenti nel file Questo file di testo può essere riportato e analizzato su file Matlab. Insieme al software vengono forniti due file Matlab di esempio, che servono per aiutare l’utente ad analizzare i dati. Il primo file serve per analizzare le oscillazioni della superficie libera (gauges_read.m), mentre il secondo serve per analizzare la risalita dell’onda (runup_island.m). 4. ESEMPI APPLICATIVI Per testare il software sono state effettuate diverse simulazioni, di seguito riportate: - Simulazione 1: dominio caratterizzato da una batimetria costante - Simulazione 2: dominio caratterizzato da batimetriche rettilinee parallele alla costa - Simulazione 3: dominio caratterizzato da batimetriche rettilinee parallele con presenza di una secca - Simulazione 4: dominio caratterizzato da batimetria costante con isola conica centrale 4.1. SIMULAZIONE 1 La prima simulazione è anche quella più semplice da realizzare. Il file di batimetria è costituito da tutti valori uguali in quanto si sta considerando una batimetria costante. Le dimensioni del dominio sono 50x50 m mentre le dimensioni della griglia (nx x ny) sono 100 x 100. Per quanto riguarda le condizioni al contorno, per il confine ovest è stata considerata un’onda sinusoidale, con ampiezza di 0.2m e periodo 4s; per il confine est è stata considerata la condizione di strato spugna; 25
Puoi anche leggere