Sei sulla pagina 1di 18

UNIVERSIT DEGLI STUDI DI TRIESTE

FACOLT DI INGEGNERIA
CORSO DI LAUREA SPECIALISTICA
IN STRUTTURE ED OPERE DELLINGEGNERIA CIVILE

Corso di
IDRAULICA II
Prof. Gianni Pedrizzetti
Anno Accademico 2005/2006

Analisidel
flussoaldi
sottodiuna
traversa
fluviale

Studente: Paolo Martinis


Indice
Indice 2
Introduzione 2
Note teoriche 3
Filtrazione nei mezzi porosi 3
Calcolo numerico alle differenze finite 3
Scilab 5
Il modello di calcolo 6
Ipotesi e inputs 6
Fase di calcolo 7
Output e grafici 7
Risultati 8
Grafici prodotti dallo script 8
Influenza della larghezza del dominio 10
Profilo di velocit al diminuire della profondit 11
Sollevamento del terreno 11
Conclusioni 12
Bibliografia 13

Introduzione
Il presente elaborato si propone di studiare landamento del flusso idraulico al di
sotto di una traversa fluviale con lausilio di un software appositamente realizzato
che sfrutti il metodo alle differenze finite per risolvere lequazione di Laplace.
Verranno innanzitutto presentate alcune note teoriche riguardo lidraulica dei mezzi
porosi incomprimibili, il metodo alle differenze finite e il linguaggio di
programmazione Scilab.
Si proceder poi allillustrazione dello script di calcolo realizzato ed allegato in calce
al presente documento, limitandosi a considerarne le particolarit e le difficolt
incontrate.
Infine verranno presentati i risultati di alcune simulazioni effettuate con diversi
parametri di input, sulla base delle quali verranno condotte alcune osservazioni sul
fenomeno della filtrazione al di sotto delle traverse fluviali e una comparazione tra i
risultati della simulazione numerica ed i relativi metodi analitici comunemente
utilizzati nelle costruzioni idrauliche.

PaoloMartinis Analisidelflussoaldisottodiunatraversafluviale pag.2


Note teoriche
Filtrazione nei mezzi porosi
Per filtrazione si intende generalmente il complesso dei fenomeni di moto di un
fluido attraverso un mezzo permeabile come quello costituito da un terreno sciolto
sabbioso o ghiaioso.
La presenza dei pori nel terreno fa s che il fluido trovi una rete irregolare di
canalicoli entro cui muoversi con velocit piuttosto basse, in quanto le piccole
dimensioni dei pori offrono una forte resistenza al moto. Non potendo seguire il
percorso del fluido in ogni canalicolo per le evidenti complessit geometriche che ne
deriverebbero, si studiano gli aspetti globali del moto considerando il terreno come
un mezzo continuo entro cui, per ogni sezione infinitesima per la quale passi una
portata , si possa definire una velocit di filtrazione lim .
poi possibile affermare che, con il moto del fluido, si instaura un gradiente del
carico piezometrico nella direzione del moto per compensare la dissipazione di
energia dovuta alle resistenze viscose. In questo modo la velocit di filtrazione sar
definita secondo la legge di Darcy:

nelle ulteriori ipotesi di fluido incomprimibile e di mezzo isotropo. La costante di


proporzionalit viene detta permeabilit del mezzo o coefficiente di filtrazione, ed
una caratteristica globale dellinsieme costituito dal fluido permeante e dal mezzo
permeabile.
I moti che seguono la legge di Darcy, vista la lentezza e quindi la trascurabilit dei
termini inerziali, ammettono lesistenza di un potenziale e possono cos
essere trattati allo stesso modo dei moti irrotazionali. La funzione sar quindi una
funzione armonica che, in base allequazione di continuit, soddisfa allequazione di
Laplace:
0

Le condizioni al contorno saranno determinate:


- dalla condizione di Dirichlet di costanza del carico piezometrico per superfici
libere o assunte in condizioni idrostatiche;
- dalla condizione di Neumann di annullamento della componente normale
della velocit per superfici impermeabili.

Calcolo numerico alle differenze finite


Un modello matematico del flusso sotterraneo uno strumento per rappresentare la
realt in una versione semplificata ed costituito, in generale, da un insieme di
equazioni che governano il problema della filtrazione. Laffidabilit delle previsioni
che il modello in grado di fornire strettamente dipendente dalle approssimazioni
operate al fine di descrivere la realt: risulta cos chiaro come i modelli retti da
equazioni risolvibili analiticamente in ogni punto del dominio richiedano spesso
ipotesi eccessivamente restrittive o elevati oneri di calcolo. La maggior parte dei

PaoloMartinis Analisidelflussoaldisottodiunatraversafluviale pag.3


modelli analitici risulta pertanto valida unicamente per situazioni semplici o per
risultati esageratamente approssimati.
Grazie al forte incremento nella potenza di calcolo dei computer ed il loro costo
sempre meno proibitivo quindi diventato consueto ricorrere alla risoluzione
approssimata di modelli matematici complessi mediante metodi numerici. Questi
consistono generalmente nei metodi alle differenze finite oppure agli elementi finiti.
I primi risolvono le equazioni differenziali che governano il fenomeno determinando
iterativamente, con approssimazioni sempre minori, i valori dei parametri incogniti
nei nodi di una griglia ortogonale che discretezza il continuo. Per i secondi la griglia
invece costituita dai vertici di elementi con una geometria nota e ben definita.
j

(1,1) x

Hi-1,j
(i-1,j)

(i,j-1) (i,j) (i,j+1) Hi-1,j -4Hi,j Hi,j+1


i

(i+1,j)

(n,m)
Hi+1,j

Figura 1: La griglia di riferimento e la stella di Laplace del metodo alle differenze finite usati in
questo lavoro. Lasse delle ascisse assunto positivo verso il basso al fine di poter esprimere la y
come profondit rispetto al piano campagna. La direzione degli indici i e j stata costruita
contrariamente a quanto si fa di solito al fine di mantenere lanalogia grafica con la notazione righe
per colonne: in questo senso lespressione (i,j) non rappresenta le coordinate cartesiane del nodo
della griglia ma la notazione matriciale dellelemento della matrice. Solitamente si preferisce invece
rendere (i,j) come coordinata cartesiana del nodo della griglia: in questo modo lindice di riga
corrisponde alle y e quello di colonna alle x, e la matrice che si ottiene sar, graficamente, la trasposta
della griglia cartesiana.

Nel presente lavoro lequazione di Laplace nelle due dimensioni stata risolta
utilizzando il metodo alle differenze finite utilizzando una griglia regolare, in modo
da poter rappresentare il dominio come una matrice. Con riferimento alla Figura 1 la
formula di approssimazione analitica del Laplaciano:
, , , , 4 ,


pu essere espressa, tralasciando gli infinitesimi di ordine superiore al primo, come:
, , , , 4 ,
,

e di conseguenza lequazione di Laplace nel nodo , risulta essere:
, , , , 4 , 0

PaoloMartinis Analisidelflussoaldisottodiunatraversafluviale pag.4


Le condizioni al contorno di Neumann / 0, dove la direzione normale alla
superficie impermeabile, vengono espresse considerando dei nodi fittizi esterni al
dominio: in questo modo, per esempio in direzione , si ottiene
, ,
0 , ,
2
e quindi lequazione di Laplace diventa
2 , , , 4 , 0

-4Hi,j 2Hi,j+1 Hi-1,j -4Hi,j Hi,j+1 2Hi-1,j -4Hi,j

2Hi+1,j 2Hi+1,j 2Hi+1,j

Hi-1,j Hi-1,j

-4Hi,j 2Hi,j+1 2Hi-1,j -4Hi,j

Hi+1,j Hi+1,j

2Hi-1,j 2Hi-1,j 2Hi-1,j

-4Hi,j 2Hi,j+1 Hi-1,j -4Hi,j Hi,j+1 2Hi-1,j -4Hi,j

Figura 2: Le stelle di Neumann per le pareti e gli angoli impermeabili.

Il metodo iterativo di Jacobi consiste nel ricalcolare per ogni passo di calcolo
lequazione di Laplace per il singolo nodo espressa come:
, , , ,
,
4
Va osservato che il metodo di Jacobi consente di non dover procedere in maniera
regolare da sinistra a destra e dallalto in basso lungo il dominio: cos molto pi
semplice da implementare rispetto ai metodi di Gauss-Seidel e della Successive Over
Relaxation, ma necessita di maggiori tempi di elaborazione.

Scilab
Scilab un software per il calcolo numerico sviluppato dallINRIA per applicazioni
di controllo di sistema e signal processing liberamente distribuito su internet con
licenza open-source. Pu essere visto come un clone di Matlab, il pi diffuso software
commerciale di calcolo numerico, in quanto le differenze sono minime e la filosofia di
base la stessa.
La potenza di Matlab/Scilab sta nella semplicit di manipolazione delle matrici:
operazioni basilari come concatenazione, estrazione o trasposizione vengono
realizzate come semplici operazioni quali addizioni e sottrazioni. Un altro punto di
forza la possibilit di realizzare complessi grafici bi- e tri-dimensionali con poche

PaoloMartinis Analisidelflussoaldisottodiunatraversafluviale pag.5


righe di comando. Inoltre possibile costruire e salvare degli scripts di comandi per
la definizione di funzioni personalizzate che rendono Matlab/Scilab una valida
alternativa ai linguaggi di programmazione comunemente utilizzati come FORTRAN
e C, almeno per quanto riguarda la soluzione di problemi scientifici con metodi
numerici.

Il modello di calcolo
Ipotesi e inputs
Considerata la valenza meramente didattica del presente lavoro, per non rendere
eccessivamente laboriosa la costruzione del modello sono state assunte alcune ipotesi
semplificative per quanto riguarda le caratteristiche fisiche e geometriche del
dominio di calcolo:
- il calcolo viene eseguito in modo indipendente dal tempo con riferimento alla
situazione stabile di regime determinata da una differenza costante dei livelli
idrici di monte e di valle;
- il terreno posto tra la traversa ed il sottostrato impermeabile composto da un
solo materiale che viene considerato isotropo;
- il substrato permeabile considerato orizzontale;
- lontano dalla traversa si assume una distribuzione idrostatica delle pressioni
al fine di imporre le condizioni al contorno di Dirichlet sulle pareti verticali
del dominio.

h1
x
pt
y

pi

Figura 3: Rappresentazione grafica della geometria del problema e del dominio di calcolo del
modello (in giallo). Le linee grigie rappresentano la griglia di discretizzazione, quelle verdi le zone
di frontiera con condizioni di Dirichlet, quelle rosse le zone con condizioni al contorno di Neumann.

Linput dello script di calcolo rappresentato da un vettore i cui elementi sono, oltre
alle caratteristiche geometriche di Figura 3, la permeabilit del terreno allacqua ed
i limiti del calcolo iterativo.

PaoloMartinis Analisidelflussoaldisottodiunatraversafluviale pag.6


Fase di calcolo
Il dominio di calcolo viene rappresentato mediante ununica matrice di dimensione
1, 1 avendo assunto 2 1 ed . Lintervallo di
discretizzazione stato definito come sottomultiplo dello spessore del taglionea:
in questo modo il loop di calcolo del carico piezometrico secondo la stella di Laplace
condotto sulle tre sottomatrici dei punti che stanno a sinistra, al di sotto e a destra del
taglione. In seguito, per ogni iterazione vengono calcolati i valori alle frontiere
impermeabili secondo le stelle di Neumann. Le iterazioni continuano fintantoch la
differenza , , in ogni cella minore di un certo limite o non viene raggiunto
il numero massimo di iterazioni ammesse, entrambi parametri definiti come inputs.
Una volta ottenuta la matrice dei carichi piezometrici in ogni punto del dominio, il
software procede a calcolare le componenti della velocit in ogni punto sempre
seguendo lo schema delle differenze finite. Per ogni punto interno del dominio la
componente orizzontale della velocit, ad esempio, pari a:
, ,
2
Per i punti di frontiera sottoposti alla condizione di Dirichlet la componente normale
della velocit si calcola approssimando la derivata con la sola variazione dalla
frontiera al punto immediatamente pi interno: in questo modo, prendendo come
esempio la parete limite di sinistra, abbiamo:
, ,
,

Per quanto riguarda i punti di frontiera sottoposti alla condizione di Neumann, la
componente normale ovviamente nulla mentre per quella tangenziale si procede
come per i punti interni. I punti dangolo hanno entrambe le componenti normali ad
una superficie e quindi nulle: questo comporterebbe un salto nella creazione dei
grafici a gradazione di colore agli estremi inferiori del taglione. In realt questi due
punti rappresentano un intorno che ha una superficie impermeabile solo per met
estensione in ogni direzione, e quello che si vede nel grafico sono i 34 di intorno che
non sono sottoposti alle condizioni di impermeabilit: il calcolo stato quindi
condotto come per i punti interni.

Output e grafici
Una volta terminati i calcoli, gli output della funzione sono costituiti dalla matrice
dei carichi piezometrici, dalle matrici delle componenti di velocit in ogni punto, dai
vettori delle coordinate dei nodi e da due ulteriori vettori, rappresentanti uno il
carico piezometrico alla profondit del taglione e laltro il profilo di velocit al di
sotto del taglione.
Lo script produce poi automaticamente alcuni grafici, che risultano utili sia per avere
una chiara visione del sistema che per effettuare comparazioni con altre simulazioni:

a Ci comporta dei problemi quando le altre dimensioni gioco non sono multipli dellintervallo di

discretizzazione. Unalternativa sarebbe quelle di fissare 1 , ossia pari allunit di misura


comunemente usata nelle costruzioni civili, ma i tempi di calcolo si allungherebbero notevolmente.
Unaltra sarebbe quella di costruire il dominio utilizzando una griglia non regolare, che esula dallo
scopo del presente lavoro.

PaoloMartinis Analisidelflussoaldisottodiunatraversafluviale pag.7


- i carichi piezometrici nellintero dominio sia sotto forma di gradazione di
colore secondo lintensit sia come linee equipotenziali;
- le componenti della velocit sotto forma di gradazione di colore secondo
lintensit;
- le velocit nei pressi della zona del taglione sia in rappresentazione vettoriale
che come gradazione di colore delle componenti;
- il profilo di velocit tra strato impermeabile e taglione nella mezzeria dello
stesso;
- il profilo di sovrapressione per la base del terreno interessato dal sollevamento
del fondo (si veda il capitolo successivo).

Risultati
Grafici prodotti dallo script
In primo luogo stata condotta una simulazione per visualizzare la distribuzione del
carico piezometrico e le velocit di flusso al di sotto della traversa. I dati in input
utilizzati per la simulazione sono:
variabile sigla valore
lunghezza traversa l 10m
livello monte h1 5m
livello valle h2 2m
spessore taglione s 0.5m
profondit taglione pt 4m
profondit strato impermeabile pi 10m
moltiplicatore di l per larghezza di indagine b 2
permeabilit del terreno K 0.02m/s
errore ammissibile epsilon 10-4
iterazioni massime imax 105
Con i primi due grafici citati nel capitolo precedente facile visualizzare la
variazione del carico piezometrico allinterno del dominio di calcolo:
Carico piezometrico

5.0
4

2 4.0

0
3.0
-2
2.0
-4

-6 1.0

-8
0.0

-10
0 5 10 15 20 25 30 35 40 45 50

Figura 4: Grafico sgrayplot del carico piezometrico. I valori sono espressi in metri.

PaoloMartinis Analisidelflussoaldisottodiunatraversafluviale pag.8


Carico piezometrico

2.1
-2
4.84 2.26

0.645
0.484
0.323
0.161
1.13
0.968
0.806
1.61
1.45
1.29
1.94
1.77 2.42
4.68
-4 3.23
4.52 4.35 4.19 4.03 3.87 3.71 3.55 3.39 2.58
3.062.9 2.74

-6

-8

-10
0 5 10 15 20 25 30 35 40 45 50

Figura 5: Grafico contour del carico piezometrico. I valori sono espressi in metri.

Si nota subito come il passaggio dal carico piezometrico di monte a quello di valle sia
abbastanza graduale lungo la superficie impermeabile della traversa, con delle
concentrazioni nei pressi dei punti angolosi allinizio della traversa e agli estremi
inferiori del taglione. quindi in questi punti che le velocit raggiungeranno i loro
massimi, come si pu osservare mediante gli altri due grafici prodotti dallo script:
Velocit orizzontali

2
0.010
0

-2

-4 0.005

-6

-8
0.000

-10
0 5 10 15 20 25 30 35 40 45 50

Figura 6: Grafico sgrayplot della velocit orizzontale. I valori sono espressi in metri al secondo.
Velocit verticali

4
0.010
2

0 0.005
-2
0.000
-4

-6
-0.005
-8

-10
0 5 10 15 20 25 30 35 40 45 50

Figura 7: Grafico sgrayplot della velocit verticale. I valori sono espressi in metri al secondo. Le
velocit sono considerate positive quando rivolte verso il basso.

In questo modo facile chiarire la funzione del taglione allinterno di unopera


idraulica: in sua assenza uno dei massimi delle velocit si avrebbe nello spigolo di
valle della traversa, dove le particelle fini del terreno verrebbero trascinate verso
lacqua determinando cos un vuoto e il conseguente scalzamento al piede dellopera.
Il taglione ha cos la funzione di portare i massimi delle velocit allinterno del

PaoloMartinis Analisidelflussoaldisottodiunatraversafluviale pag.9


terreno, dove le particelle risultano confinate da quelle adiacenti e viene cos
annullata lazione erosiva.

Rappresentazione vettoriale Velocit orizzontali Velocit verticali

2 2

2
0.010

0 0

0 0.010
0.005

-2 -2
-2

0.000
0.005
-4 -4
-4

-0.005
-6 -6
-6

0.000

-8 -8 -8
28.0 29.0 30.0 31.0 28.0 29.0 30.0 31.0 28.0 29.0 30.0 31.0

Figura 8: Grafici riepilogativi delle velocit nella zona del taglione. I valori sono espressi in metri al
secondo. Le velocit verticali sono considerate positive quando rivolte verso il basso.
Presso lo spigolo di monte le velocit sono rivolte verso valle e verso il basso: dal
punto di vista teorico non cos richiesta la presenza di un taglione. Nella
configurazione visualizzata nei grafici si potrebbero avere comunque dei problemi
quando il trascinamento delle particelle fini tendesse a costipare il terreno,
determinando cos un cedimento differenziale dellopera. Nella realt presso lo
spigolo di monte viene comunque sempre realizzato uno zoccolo di fondazione che,
innestandosi nel terreno, ingloba anche le caratteristiche di taglione.

Influenza della larghezza del dominio


Delle assunzioni fatte per limitare gli oneri di calcolo, la variabile che determina la
distanza dalla traversa della sezione alla quale possibile assumere una
distribuzione idrostatica delle pressioni risulta quella di definizione pi arbitraria.
Al fine di controllare linfluenza di questo parametro, i risultati della simulazione con
la variabile posta pari a 2, ossia con una larghezza del dominio pari a 5 volte quella
della traversa, sono stati messi in relazione con una simulazione con pari a 1 e gli
stessi altri parametri. Le differenze tra i valori alla frontiera calcolati con la
simulazione 2 e quelli imposti con 1 sono risultati pari, come termine
massimo, al 5,1% per la sezione di destra (con carico maggiore) e al 7,1% per la
sezione di sinistra.
Lerrore in cui si incorre nella scelta arbitraria della larghezza del dominio di calcolo
quindi non trascurabile, almeno per valori piccoli di , e rappresenta la maggiore
incognita da determinare per effettuare una corretta analisi numerica. Il raddoppio di
comporta per anche un raddoppio dei tempi di calcolo (1162 contro 633 secondi

PaoloMartinis Analisidelflussoaldisottodiunatraversafluviale pag.10


nel caso in esame), cos da rendere la determinazione di un valore accettabile per
eccessivamente lunga per lo scopo del presente lavoro.

Profilo di velocit al diminuire della profondit


-4
Come logico aspettarsi per questioni di
continuit, con il diminuire della profondit cui
posto il sottostrato impermeabile la velocit al di
-5 sotto della traversa dovr necessariamente
aumentare. Per visualizzare numericamente il
fenomeno, il software stato eseguito con
-6
profondit dello stato impermeabile di 10m e 6m
lasciando inalterati gli altri parametri. In
corrispondenza della mezzeria del taglione si
-7
sono cos ottenuti i profili di velocit riportati nel
grafico a lato.
-8

-9

Figura 9: Comparazione tra le velocit orizzontali al di


sotto del taglione per diverse profondit del sottostrato
-10
impermeabile. I valori sono espressi in metri al secondo. In
0.002 0.004 0.006 0.008 0.01 0.012 blu il profilo con 10 e in rosso il profilo con
Velocit 6 .

Sollevamento del terreno


Uno dei maggiori problemi che si incontrano nel dimensionamento delle opere
fluviali il fenomeno del sollevamento del terreno immediatamente a valle del
taglione per la spinta che lacqua in risalita esercita sullo stesso. Nella pratica delle
costruzioni idrauliche si considera una porzione rettangolare di terreno di altezza
pari a quella del taglione, larghezza pari a met dellaltezza e profondit unitaria; per
questo volume di terreno si verifica che la sottopressione indotta dalla differenza di
carico piezometrico tra monte e valle della traversa sia controbilanciata dal peso del
terreno in condizioni di completa saturazione.
Risultando impossibile ricavare analiticamente la
spinta sul terreno, questa viene solitamente
s determinata ipotizzando la variazione di carico lineare
lungo la superficie della traversa e calcolandone il
valore presso il limite inferiore del taglione mediante
una semplice proporzione. Il carico cos ottenuto viene
ipotizzato applicato a tutto il lato inferiore della
pt P porzione di terreno. Nel nostro caso il carico
calcolabile mediante lespressione:
2 3 2 2.67

Figura 10: Schema delle forze in Con lanalisi numerica possibile visualizzare la reale
gioco per il sollevamento del distribuzione del carico piezometrico sul lato inferiore
terreno (porzione in rosso).

PaoloMartinis Analisidelflussoaldisottodiunatraversafluviale pag.11


della porzione di terreno e verificare che il valore calcolato con il metodo pratico
risulta una buona approssimazione della media dei valori reali:

2.8

2.7

2.6

2.5

30.0 30.2 30.4 30.6 30.8 31.0 31.2 31.4 31.6 31.8 32.0

Figura 11: Distribuzione del carico piezometrico al di sotto del terreno interessato dal sollevamento.
La verifica condotta con il metodo pratico risulta quindi valida almeno in prima
approssimazione, avendo cura di imporre laggiunta dei consueti coefficienti di
sicurezza alla condizione .

Conclusioni
Lo script di calcolo prodotto con il presente lavoro non rappresenta certo un software
utilizzabile per fini diversi dalle considerazioni svolte nel capitolo precedente: le
migliorie necessarie per un uso professionale che si dovrebbero implementare nel
codice in termini di velocit di elaborazione, di automazione negli input e output e di
definizione geometrica e fisica del dominio esulano dallo scopo di unesercitazione
per un corso universitario.
Detto questo, il lavoro svolto comunque risultato importante per capire il metodo
alle differenze finite, per impratichirsi con luso di un potente strumento come Scilab,
per studiare il fenomeno della filtrazione nei mezzi porosi e per verificare
numericamente la formula pratica del sollevamento del terreno utilizzata nellambito
delle costruzioni idrauliche.

PaoloMartinis Analisidelflussoaldisottodiunatraversafluviale pag.12


Bibliografia
Citrini D., Noseda G., Idraulica Ambrosiana, Milano, 1975
Gamba A., Laboratorio di calcolo con Matlab Quaderni didattici del Dipartimento di
Matematica, Politecnico di Torino, 2000
Ghetti A., Idraulica Libreria Cortina, Padova, 1980
Marchi E., Rubatta A., Meccanica dei fluidi UTET, Torino, 1981
Mathews J. H., Fink K. D., Numerical methods using Matlab - Prentice Hall, New
York, 1999
Surendan K. S., Scilab for dummies www.scilab.org, 2007
Tonti E., Introduzione a Matlab www.dic.units.it/perspage/tonti, 2003
Urroz G. E., Numerical solution of Laplace equation
www.neng.usu.edu/cee/faculty/gurro/, 2007
Urroz G. E., Solution to potential flow in rectangular domain
www.neng.usu.edu/cee/faculty/gurro/, 2004
Wang H. F., Anderson M. P., Introduction to groundwater modeling Academic
Press, San Diego, 1982

PaoloMartinis Analisidelflussoaldisottodiunatraversafluviale pag.13


// UNIVERSITA' DEGLI STUDI DI TRIESTE
// DIPARTIMENTO DI INGEGNERIA CIVILE E AMBIENTALE
// CORSO DI IDRAULICA II - prof. Gianni PEDRIZZETTI
// ANNO ACCADEMICO 2006/2007

// ANALISI DEL FLUSSO AL DI SOTTO DI UNA TRAVERSA FLUVIALE


// METODO ITERATIVO DI JACOBI

// Studente: Paolo MARTINIS

function [H,U,V,x,y,yta,uta,xF,F]=GWFJAC(I)

// 1. DATI DI INPUT
// lettura caratteristiche geometriche
// prova: I=[10;5;2;.5;4;10;2;.02;1e-4;1e5]
l=I(1); // lunghezza traversa
h1=I(2); // livello monte
h2=I(3); // livello valle
s=I(4); // spessore taglione
pt=I(5); // profondit taglione
pi=I(6); // profondit strato impermeabile
b=I(7); // moltiplicatore di l per larghezza di indagine
K=I(8); // permeabilit del terreno
epsilon=I(9); //errore ammissibile
imax=I(10); //iterazioni massime
// definizione rapporti
f=l/s; // rapporto lunghezze direzione x
a=pi/pt; // rapporto lunghezze direzione y
if a==0 then,a=b,end; // campo indagine in assenza di fondo impermeabile
t1=getdate()

// 2. DEFINIZIONE DOMINIO
// definizione incrementi Dx e Dy
Dx=s/2;
Dy=Dx;
// definizione numero intervalli
n=(a*pt)/Dy;
m=((2*b+1)*l)/Dx;
fx=l/Dx;
fy=pt/Dy;
// definizione vettori x e y
x=[0:Dx:m*Dx];
y=[0:Dy:n*Dy];
// definizione punti noti
jA=b*fx+1;
jB=((b+1)*fx+1)-s/Dx;
jD=(b+1)*fx+1;
jE=(2*b+1)*fx+1;
iC=fy+1;
iF=a*fy+1;
// inizializzazione matrice
H=zeros(n+1,m+1);

// 3. CONDIZIONI AL CONTORNO
// condizioni di Dirichlet
for j=1:jA H(1,j)=h1; end;
for j=jD:jE H(1,j)=h2; end;
for i=2:iF H(i,1)=h1; end;

Page : 1
for i=2:iF H(i,jE)=h2; end;
// condizioni di Neumann: inserite nel ciclo di calcolo

// 4. CALCOLO
// definizione parametri iterazione
k=1; //valore iniziale iterazione
errmax=1;
HN=H; //matrice di nuova iterazione
//inizio loop carico piezometrico
while (k<=imax & errmax>=epsilon)
// loop primo sottodominio
for i=2:n
for j=2:jB
HN(i,j)=(H(i,j-1)+H(i,j+1)+H(i-1,j)+H(i+1,j))/4;
end;
end;
// loop secondo sottodominio
for i=iC:n
for j=jB+1:jD-1
HN(i,j)=(H(i,j-1)+H(i,j+1)+H(i-1,j)+H(i+1,j))/4;
end;
end;
// loop terzo sottodominio
for i=2:n
for j=jD:m
HN(i,j)=(H(i,j-1)+H(i,j+1)+H(i-1,j)+H(i+1,j))/4;
end;
end;
// condizioni al contorno di Neumann
for j=jA:(jB-1) HN(1,j)=(H(1,j-1)+H(1,j+1)+2*H(2,j))/4; end;
for i=2:(iC-1) HN(i,jB)=(H(i-1,jB)+H(i+1,jB)+2*H(i,jB-1))/4; end;
for j=(jB+1):(jD-1) HN(iC,j)=(H(iC,j-1)+H(iC,j+1)+2*H(iC+1,j))/4; end;
for i=2:(iC-1) HN(i,jD)=((H(i-1,jD)+H(i+1,jD))+2*H(i,jD+1))/4; end;
for j=2:(jE-1) HN(iF,j)=(H(iF,j-1)+H(iF,j+1)+2*H(iF-1,j))/4; end;
HN(1,jB)=(2*H(1,jB-1)+2*H(2,jB))/4;
HN(1,jD)=(2*H(1,jD+1)+2*H(2,jD))/4;
HN(iC,jB)=(2*H(iC,jB+1)+2*H(iC-1,jB))/4;
HN(iC,jD)=(2*H(iC,jD-1)+2*H(iC-1,jD))/4;
// matrice degli errori
for i=1:n+1
for j=1:m+1
err(i,j)=abs(HN(i,j)-H(i,j));
end;
end;
errmax=max(err);
// principale
H=HN;
k=k+1;
end;

//inizio loop velocit


U=zeros(n+1,m+1);
V=zeros(n+1,m+1);
// loop primo sottodominio
for i=2:n
for j=2:jB-1
U(i,j)=(H(i,j+1)-H(i,j-1))/(2*Dx);
V(i,j)=(H(i+1,j)-H(i-1,j))/(2*Dx);

Page : 2
end;
end;
// loop secondo sottodominio
for i=iC+1:n
for j=jB:jD
U(i,j)=(H(i,j+1)-H(i,j-1))/(2*Dx);
V(i,j)=(H(i+1,j)-H(i-1,j))/(2*Dx);
end;
end;
// loop terzo sottodominio
for i=2:n
for j=jD+1:m
U(i,j)=(H(i,j+1)-H(i,j-1))/(2*Dx);
V(i,j)=(H(i+1,j)-H(i-1,j))/(2*Dx);
end;
end;
// loop al contorno
for j=2:jA U(1,j)=(H(1,j+1)-H(1,j-1))/(2*Dx); V(1,j)=(H(2,j)-H(1,j))/Dx;
end;
for j=jD+1:jE-1 U(1,j)=(H(1,j+1)-H(1,j-1))/(2*Dx); V(1,j)=(H(2,j)-H(1,j)
)/Dx; end;
for j=jA+1:jB-1 V(1,j)=0; U(1,j)=(H(1,j+1)-H(1,j-1))/(2*Dx); end;
for j=jB+1:jD-1 V(iC,j)=0; U(iC,j)=(H(iC,j+1)-H(iC,j-1))/(2*Dx); end;
for j=2:m V(iF,j)=0; U(iF,j)=(H(iF,j+1)-H(iF,j-1))/(2*Dx); end;
for i=2:n V(i,1)=(H(i+1,1)-H(i-1,1))/(2*Dx); U(i,1)=(H(i,2)-H(i,1))/Dx;
end;
for i=2:n V(i,jE)=(H(i+1,jE)-H(i-1,jE))/(2*Dx); U(i,jE)=(H(i,jE)-H(i,jE-
1))/Dx; end;
for i=2:iC U(i,jB)=0; V(i,jB)=(H(i+1,jB)-H(i-1,jB))/(2*Dx); end;
for i=2:iC U(i,jD)=0; V(i,jD)=(H(i+1,jD)-H(i-1,jD))/(2*Dx); end;
U(iC,jB)=(H(iC,jB+1)-H(iC,jB-1))/(2*Dx);
U(iC,jD)=(H(iC,jD+1)-H(iC,jD-1))/(2*Dx);
//velocit reali
U=-K*U;
V=-K*V;
// massimi e minimi
minU=min(U);
maxU=max(U);
minV=min(V);
maxV=max(V);

xF=[(jD-1)*Dx:Dx:(jD-1)*Dx+pt/2];
F=H(iC,jD-1:1:jD-1+pt/2/Dx);

t2=getdate();
dt=etime(t2,t1);
disp(dt, "Tempo di elaborazione:");
disp(k, "Iterazioni svolte:");
disp(errmax, "Errore massimo per H:");

// 5. VISUALIZZAZIONE RISULTATI
// estremi traversa
xt=[b*l,b*l,(b+1)*l-s,(b+1)*l-s,(b+1)*l,(b+1)*l];
yt=[h1,0,0,-pt,-pt,h2];

// plot valori colorati


xset('window',1);

Page : 3
isoview(0,(2*b+1)*l,-pi,h1);
xset("colormap",jetcolormap(100));
Sgrayplot(x,-y,H', strf="011", rect=[0,-pi,(2*b+1)*l,h1+1]);;
colorbar(0,h1);
xpoly([0,b*l],[h1,h1]); hdl=get("hdl"); hdl.thickness=3; hdl.foreground=30
;
xpoly([(b+1)*l,(2*b+1)*l],[h2,h2]); hdl=get("hdl"); hdl.thickness=3; hdl.f
oreground=30;
xfpoly(xt,yt,1); hdl=get("hdl"); hdl.thickness=2; hdl.background=-2;
title("Carico piezometrico");

// plot contour map


xset('window',2);
isoview(0,(2*b+1)*l,-pi,h1)
xset("colormap",jetcolormap(100))
contour(x,-y,H',(h1-h2)*10);
xpoly([0,b*l],[h1,h1]); hdl=get("hdl"); hdl.thickness=3; hdl.foreground=30
;
xpoly([(b+1)*l,(2*b+1)*l],[h2,h2]); hdl=get("hdl"); hdl.thickness=3; hdl.f
oreground=30;
xfpoly(xt,yt,1); hdl=get("hdl"); hdl.thickness=2; hdl.background=-2;
title("Carico piezometrico");

// plot velocit orizzontale


xset('window',3);
isoview(0,(2*b+1)*l,-pi,h1);
xset("colormap",jetcolormap(100));
Sgrayplot(x,-y,U', strf="011", rect=[0,-pi,(2*b+1)*l,h1+1]);;
colorbar(minU,maxU);
xpoly([0,b*l],[h1,h1]); hdl=get("hdl"); hdl.thickness=3; hdl.foreground=30
;
xpoly([(b+1)*l,(2*b+1)*l],[h2,h2]); hdl=get("hdl"); hdl.thickness=3; hdl.f
oreground=30;
xfpoly(xt,yt,1); hdl=get("hdl"); hdl.thickness=2; hdl.background=-2;
title("Velocit orizzontali");

// plot velocit verticale


xset('window',4);
isoview(0,(2*b+1)*l,-pi,h1);
xset("colormap",jetcolormap(100));
Sgrayplot(x,-y,V', strf="011", rect=[0,-pi,(2*b+1)*l,h1+1]);;
colorbar(minV,maxV);
xpoly([0,b*l],[h1,h1]); hdl=get("hdl"); hdl.thickness=3; hdl.foreground=30
;
xpoly([(b+1)*l,(2*b+1)*l],[h2,h2]); hdl=get("hdl"); hdl.thickness=3; hdl.f
oreground=30;
xfpoly(xt,yt,1); hdl=get("hdl"); hdl.thickness=2; hdl.background=-2;
title("Velocit verticali");

// plot zona taglione


xset('window',5);
xset("colormap",jetcolormap(100));
subplot(131);
isoview((b+1)*l-4*s,-2*pt,(b+1)*l+3*s,h2+1);
champ1(x,-y,U'/K,-V'/K, rect=[(b+1)*l-4*s,-2*pt,(b+1)*l+3*s,h2+1], arfact=
1);
xpoly([(b+1)*l,(2*b+1)*l],[h2,h2]); hdl=get("hdl"); hdl.thickness=3; hdl.f
oreground=30;

Page : 4
xfpoly(xt,yt,1); hdl=get("hdl"); hdl.thickness=2; hdl.background=-2;
title("Rappresentazione vettoriale");
subplot(132);
isoview((b+1)*l-4*s,-2*pt,(b+1)*l+3*s,h2+1);
Sgrayplot(x,-y,U', strf="011", rect=[(b+1)*l-4*s,-2*pt,(b+1)*l+3*s,h2+1]);
colorbar(minU,maxU);
xpoly([(b+1)*l,(2*b+1)*l],[h2,h2]); hdl=get("hdl"); hdl.thickness=3; hdl.f
oreground=30;
xfpoly(xt,yt,1); hdl=get("hdl"); hdl.thickness=2; hdl.background=-2;
title("Velocit orizzontali");
subplot(133);
isoview((b+1)*l-4*s,-2*pt,(b+1)*l+3*s,h2+1);
Sgrayplot(x,-y,-V', strf="011", rect=[(b+1)*l-4*s,-2*pt,(b+1)*l+3*s,h2+1])
;
colorbar(minV,maxV);
xpoly([(b+1)*l,(2*b+1)*l],[h2,h2]); hdl=get("hdl"); hdl.thickness=3; hdl.f
oreground=30;
xfpoly(xt,yt,1); hdl=get("hdl"); hdl.thickness=2; hdl.background=-2;
title("Velocit verticali");

//plot profilo velocit orizzontali sotto il taglione


xset('window',6);
yta=[(iC-1)*Dy:Dy:n*Dy];
uta=U(iC:1:iF,(b+1)*fx);
plot(uta,-yta);
title("Profilo velocit orizzontali sotto il taglione");

endfunction;

Page : 5