jacobsimonsen.dkjacobsimonsen.dk/school/bolgemodelfortran.pdf · abstract in this report the...

138

Upload: others

Post on 05-Nov-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton
Page 2: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Opbygning af numerisk fladvandsbølgemodel

af

Jens Dahl Poulsen(c973463)

og

Hans Jacob Simonsen(c973782)

Special kursusved MEK, DTU, LyngbyI Samarbejde med Per Madsen og Harry Bingham

Efterar 2002

Page 3: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Abstract

In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton scheme. Windstress and bottomfrictionare included. The domain is closed and discretized using a staggered grid. A Von Neu-mann stability analysis is carried out showing a theoretical stability criterium givenas a maximum Courant-number. The numerical implementation is done in Fortran95 using MATLAB for graphical presentation of the results. A brief chapter discussesthe theory behind the linear and nonlinear water equations. The model is tested withprogressiv and standing waves and winddriven flows.

Resume

I denne rapport bliver de ulineære fladvandsligninger løst numerisk i to dimensionerved brug af Adams-Bashforth-Moulton metoden. Friktion fra vind og bund er inklud-eret. Domænet er lukket og diskretiseret ved brug af et staggered grid. Der er foretageten Von Neumann stabilitetsanalyse, som giver et teoretisk stabilitetskrav udtryk vedet maksimalt Couranttal. Den numeriske implementering er sket i Fortran 95 ogden grafiske præsentation af resultaterne sker i MATLAB. Et kort kapitel diskutererteorien bag de lineære og ulineære fladvandsligninger. Modellen bliver testet medfremadskridende og staende bølger samt vinddrevne strømninger.

2

Page 4: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Kapitel 1

Indledning

Rapporten omhandler opbygningen og testen af en to-dimensionel numerisk strømnings-og bølgemodel. Motivationen for at opbygge modellen er dels at lære programmer-ingssproget Fortran 95 i forbindelse med et praktisk problem. Numerisk implementer-ing af hydrodynamiske problemer er ligeledes en del af motivationen, idet der er mangespændende omrader at tage fat pa, bade i numerikken og teorien.

Modellen kaldes HENNING2045 efter inspiration af DHI’s MIKE21 model. For-ventningerne skal dog ikke sættes for højt, idet der pa næsten alle omrader er etstykke vej til samme funktionalitet som hos MIKE 21.

Projektet er skrevet som et specielkursus ved Institut for Mekanik, Energi ogKonstrukton, Danmarks Tekniske Universitet i Lyngby. Vejledere pa kurset var PerMadsen og Harry Bingham som vi gerne vil takke for deres hjælp og bidrag. Desudenvil vi gerne takke Jess Michelsen for hans gode rad i forbindelse med Fortran 95.

1.1 Problemformulering

Det forsøges at opbygge en numerisk model baseret pa de ulineære fladvandsligninger,der ud over bølger ogsa handterer vinddrevne strømninger og bundspænding. Derudarbejdes et teoretisk afsnit til at understøtte modellen samt vise forstaelse forbølgedynamikken bag modellen. I teoriafsnittet vil der ogsa blive gennemgaet forskel-lige numeriske aspekter ligesom der ogsa vil blive lavet en Von Neumann stabilitets-analyse af det numeriske skema.

Modellen dokumenteres med relevante testkørsler og resultaterne sammenlignesmed analytiske udregninger.

Modellen skrives i Fortran 95, idet en del af formalet med opgaven er at lære detteprogrammeringssprog.

3

Page 5: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

1.2 Læsevejledning

Meget af arbejdet med opbygningen af modellen er sket med Wei et al. (1995) som”kogebog”. Det blev gjort, da modellen oprindeligt var tiltænkt at skulle kunne med-tage Boussinesq led. Dette er baggrunden for den valgte orden af det numeriske skema,struktureringen af koden med mere.

Differentiale koefficienter benævnes med subscript saledes at ∂η∂x

= ηx. Diskreteafstande benævnes eksempelvis i x retningen ∆x

Programmet er kompileret med kompileren fra Compaq Visual Fortran version6.6B pa en Windows platform. Da programmet er et samspil mellem MATLAB ogFortran er det nødvendigt, at brugeren har MATLAB installeret pa den computerhvorfra programmet kører. Illustrative film, program og kildekoder kan downloadespa www.student.dtu.dk/~c973782/film.html

4

Page 6: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

1.3 Nomenklatur

c m/s BølgehastighedenCw - Friktionskoefficient mellem vind og vandoverfladeCu - CouranttalletE J = Nm EnergiEf N/s Energifluxf - Friktionsfaktor for vindspændingerg m/s2 Tyngde accelerationen, g= 9,82m/s2

h m VanddybdeH m Bølgehøjdenk m−1 Bølgetalletlx, ly m Domænets længde i x- og y-retningenL m BølgelængdenLrelaks m Længden af relakseringszonenM m1/3/s Manning-talletp N/m2 TrykT s BølgeperiodenW m/s Vindhastigheder i 10 m over vandoverfladenu,v,w m/s Partikelhastigheder i henholdsvis x-, y- og z-retningenx,y,z m Retvinklede koordinater. z lodret, x vandret og y vandret og op-

træder kun i 2D.x′ m Afstand fra enden af den numeriske bufferzoneα 1/s Fase af pertubationβ Vindretningens vinkel med x-aksen.Γ Generel funktion afledt i tid, dækkende η,u og v∆t s Skridtlængde i tid∆x m Skridtlængde i x-retning∆y m Skridtlængde i y-retningζ m Generelt skridt i sted dækkende bade x og yη m Overflade elevation / højde over middelvandspejlΘ - Bølgefase Θ = ωt− kxϑ Generel diskret værdi af funktion, dækkende η,u og vκ Parameter til skalering af funktionξ Diskretiseringsfaktorρ kg/m3 Massefyldeσ Ekspansions faktorτxw,τy

w m/s2 Tværspænding fra vinden i henholdsvis x- og y-retningenτxB,τy

B m/s2 Tværspænding fra bundfriktionen i henholdsvis x- og y-retningenΨ Generel funktion afledt i sted, dækkende η,u og vω s−1 Vinkelhastighed

5

Page 7: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Indhold

1 Indledning 31.1 Problemformulering . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2 Læsevejledning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.3 Nomenklatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

I Teori 9

2 Bølgeteori 102.1 Lineære fladvandsligningerne i 1D . . . . . . . . . . . . . . . . . . . . 11

2.1.1 Fremadskridende bølge . . . . . . . . . . . . . . . . . . . . . . 112.1.2 Staende bølge . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.1.3 Shoaling af lineære fladvandsbølger . . . . . . . . . . . . . . . 12

2.2 Ulineære fladvandsligninger i 1D . . . . . . . . . . . . . . . . . . . . . 142.2.1 Amplitudens indflydelse pa bølgen . . . . . . . . . . . . . . . . 142.2.2 Verifikationsudfordringer . . . . . . . . . . . . . . . . . . . . . 15

2.3 Udvidelse til 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.4 Fladvandsligningernes anvendelsesomrade . . . . . . . . . . . . . . . . 172.5 Vinddrevne strømninger og friktion . . . . . . . . . . . . . . . . . . . 18

2.5.1 Dybdevariation . . . . . . . . . . . . . . . . . . . . . . . . . . 192.5.2 Friktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.5.3 Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.6 Randbetingelser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.6.1 Reflektion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.6.2 Absorbtion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3 Numerisk teori 243.1 Diskretisering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.1.1 Diskretisering i tid . . . . . . . . . . . . . . . . . . . . . . . . 253.1.2 Diskretisering i sted . . . . . . . . . . . . . . . . . . . . . . . . 25

3.2 Randbetingelser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

6

Page 8: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

3.2.1 Reflektion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.2.2 Absorption . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.2.3 Generering af bølger . . . . . . . . . . . . . . . . . . . . . . . 28

3.3 Stabilitetsanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

II Implementering 32

4 Fortran 334.1 Hukommelsesforbrug . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.2 Hastighedsoptimering . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.3 MATLAB-Fortran sammenspil . . . . . . . . . . . . . . . . . . . . . . 34

5 Fremgangsmade 365.1 Brugervenlighed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

III Resultater 39

6 Lineære bølger 406.1 Staende bølger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406.2 Fremadskridende bølger . . . . . . . . . . . . . . . . . . . . . . . . . 48

6.2.1 Flad bund . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486.2.2 Variabel bund og shoaling . . . . . . . . . . . . . . . . . . . . 51

7 Ulineære bølger 567.1 Fremadskridende bølger . . . . . . . . . . . . . . . . . . . . . . . . . 56

7.1.1 Begrænsninger fra overfladehældningen . . . . . . . . . . . . . 577.2 Staende bølge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

8 Vindreven setup 638.1 Flad bund . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638.2 Krum bund . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

9 Von Neumann stabilitetsanalyse 76

IV Opsamling 78

10 Evaluering af model 79

11 Udvidelsesmuligheder 81

7

Page 9: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

V Bilag 83

A Analyse af ulineære fladvandsligninger 84

B Stabilitets analyse 87

C Diskretisering i sted af staggered grid 95

D Kildekode til programmet HENNING2045 98D.1 source kode for: HENNING2045.f90 . . . . . . . . . . . . . . . . . . 98D.2 source kode for: main.m . . . . . . . . . . . . . . . . . . . . . . . . . 123D.3 source kode for: runfortran.m . . . . . . . . . . . . . . . . . . . . . . 124D.4 source kode for: calcu.m . . . . . . . . . . . . . . . . . . . . . . . . . 126D.5 source kode for: findT.m . . . . . . . . . . . . . . . . . . . . . . . . . 127D.6 source kode for: vindpil.m . . . . . . . . . . . . . . . . . . . . . . . . 127D.7 source kode for: visual1.m . . . . . . . . . . . . . . . . . . . . . . . . 128D.8 source kode for: visual2.m . . . . . . . . . . . . . . . . . . . . . . . . 131D.9 source kode for: visual3.m . . . . . . . . . . . . . . . . . . . . . . . . 135

8

Page 10: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Del I

Teori

9

Page 11: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Kapitel 2

Bølgeteori

I det følgende vil fladvandsteorien blive gennemgaet med henblik pa en øget forstaelseaf modellen og resultaterne.

En vigtig forudsætning i fladvands teori er, som navnet antyder det (pa engelsk:shallow water theory), at vandet skal være lavt. Hermed forstas der, at bølgelængdenskal være meget længere en vanddybden. Altsa at kh → 0 (Svendsen & Jonsson,1982).

Idet bølgen er meget flad, h ¿ L, kan der regnes med hydrostatisk trykfordeling,hvor højden af vandsøjlen er den lokale dybde, η + h. Bunden antages ogsa at værekun svagt hældende, det vil sige at ∂h

∂x¿ 1. Desuden antages w = 0. Trykgradienten

accelerer bølgen (Fredsøe, 1994)

∂p

∂x= ρg

∂η

∂x= −ρ

du

dt= −ρ

(∂u

∂t+ u

∂u

∂x+ w

∂u

∂z

)(2.1)

En anden central antagelse i fladvandsteori er, at partikelhastigheden regnes kon-stant over dybden, ∂u

∂z= 0. Uden denne antagelse skulle Boussinesq led medtages. Et

lodret snit i x-retningen benyttes som kontrol volumen, og en analyse til tiden t ogt + dt og stedet x og x + dx giver følgende (Fredsøe, 1994)

∂(h + η)u

∂xdxdt = −∂η

∂tdxdt (2.2)

Ligningerne (2.1) og (2.2) kan skrives sammen til de generelle styrende ligningerfor bølger pa fladt vand og med svagt hældende bund

gηx + ut + uux = 0

((h + η)u)x + ηt = 0 (2.3)

10

Page 12: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

2.1 Lineære fladvandsligningerne i 1D

De konvektive led (uux) er af orden O(δ2), hvor δ = Hh, idet u er proportional med H

h

(Svendsen & Jonsson, 1982). I denne 1. ordens analyse ser vi pa lineære bølger, detvil sige bølger med en meget lille amplitude, H ¿ h, hvorfor der kan ses bort fra ledaf orden O(δ2).

Idet η ogsa er proportional med H gør lignende ordensbetragtninger, at (h +η)u tilnærmes til blot hu. Ved ovennævnte tilnærmelser er de styrende ligninger forlineære fladvandsbølger

(hu)x + ηt = 0

ut + gηx = 0 (2.4)

2.1.1 Fremadskridende bølge

En overfladeprofil af en fremadskridende lineær bølge defineres som værende

η(x,t) =H

2cos(Θ(x,t)) (2.5)

Fra de styrende ligninger (2.4) ses det umiddelbart, at hastigheden ma være i fase medoverflade profilen for at (η,u) skal være en løsning til ligningerne (2.4). Et fornuftigtgæt pa et udtryk for hastigheden er derfor

u(x,t) = A cos(Θ(x,t)) (2.6)

Indsættes (2.5) og (2.6) i de styrende ligninger, (2.4) opstar et lineært ligningssys-tem i ω og k, som kræver en determinant identisk med nul for at have en løsning tilethvert (ω, k) (Eising, 1997). Er determinanten 0 kræver det at A =

√gh

H2.

For en bølge med konstant form haves Θ(x,t), som beskrevet i Svendsen & Jonsson(1982)

Θ(x,t) = 2π

(t

T− x

L

)= ωt− kx (2.7)

Hvor k er bølgetallet og ω er vinkelhastigheden. Bølge udbredelses hastigheden, c erc = L/T = ω

k.

De styrende ligninger, (2.4), krydsdifferentieres og uxt elimineres. Ligningen i ηser da saledes ud

11

Page 13: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

gηxx = ηtt1

h(2.8)

Indsættes ligning (2.5) og (2.7) kan ligning (2.8)omskrives til

ω

k= c =

√gh (2.9)

Det ses af ligning (2.9), at hastigheden af bølgen hverken er amplitude ellerfrekvens dispertiv, men kun er afhængig af den dybde bølgen er pa. Partikel hastighe-den, u kan skrives om til

u(x,t) =cH

2hcos(ωt− kx) (2.10)

2.1.2 Staende bølge

Ved at addere to identiske, men modsatrettede, fremadskridende bølger fas en andenløsning til (2.4):

η(x,t) = H cos(kx) cos(ωt) (2.11)

Bølgen er ikke fremadskridende eller af konstant form, hvilket kan ses blandtandet ved, at der er knudepunkter i kx = pπ, p ∈ Z. For at ligningerne (2.4) skalvære opfyldt for alle (x,t) kommer et udtryk for partikelhastigheden u(x,t) til at sesaledes ud

u(x,t) = A sin(kx) sin(ωt) (2.12)

Ved pa samme made som i forrige afsnit, at indsætte (2.11) og (2.12) i de lineærefladvandsligninger (2.4), og kræve at determinanten for ligningssystemet i (u,η) er lig0 fas A =

√ghH.

2.1.3 Shoaling af lineære fladvandsbølger

Nar dybden, hvorpa bølgen bevæges, varierer, ændrer bølgen karakter. Det ses blandtandet af ligning (2.9), hvor det ses, at bølgehastigheden er proportional med

√h.

Det vides, at perioden, T er konstant, hvorfor bølgelængden ogsa ændres, jævnførdefinitionen for bølgehastigheden.

Energifluksen igennem to snit vinkelret pa bølgens retning vil være konstant forud-sat at der ingen energitab er. Som argumenteret i Svendsen & Jonsson (1982) er deri et lille lodret snit, dz, til tiden dt energien

(p+ +

1

2ρ(u2 + w2)

)udzdt (2.13)

12

Page 14: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Hvor p+ er trykket over det hydrostatiske i z = 0, som antager værdien p+ = ρgη,idet der tidligere er argumenteret for, at der kan regnes med hydrostatisk trykfordel-ing. Det vides fra tidligere, at den lodrette hastighed, w = 0. Idet vi her vil lave en2.ordens betragtning, ses der bort fra led af orden O(δ3), hvorfor leddet indeholdendeu3 ogsa smides bort.

Energien i hele dybden til tiden t er derfor fundet ved vertikal integration overdybden af (2.13):

Ef (t) =

∫ η

−h

p+udz

= p+u

∫ η

−h

dz

= p+u(η + h)

(2.14)

Idet p+u er af orden O(δ2) og η er af orden O(δ) ses der bort fra denne, da derkun ses pa led med orden mindre end O(δ3):

Ef (t) = p+uh

= ρghηu

= ρgh

(H

2

)2 √g

hcos2(Θ) (2.15)

Hvor udtrykket for partikelhastigheden u (2.10) og η (2.5) er indsat.Midles (2.15) over en periode er cos2(Θ) = 1

2, hvorfor udtrykket for middel en-

ergifluxen bliver

Ef =1

8ρgH2

√gh (2.16)

Sammenlignes ovenstaende med energifluxen i en stokes bølge ses det, at deto udtryk er ens, nar det blot holdes i mente, at udbredelses hastigheden i flad-vandsbølgen, i modsætning til stokes bølgen, er c =

√gh.

Antages ingen energitab over en strækning hvor bunden ændres, er energifluxeni to vilkarlige lodrette snit ens. Bølgehøjden kan derved udtrykkes som funktion afden lokale dybde

13

Page 15: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Ef,1 = Ef,2

⇓1

8ρgH2

2

√gh2 =

1

8ρgH2

1

√gh1

⇓H2

2

√h2 = H2

1

√h1

⇓(

H2

H1

)4

=h1

h2

(2.17)

Det ma derfor forventes sma ændringer i bølgehøjden nar dybden ændres. Nardybden mindskes i bølgens udbredelsesretning øges bølgehøjden.

2.2 Ulineære fladvandsligninger i 1D

De styrende ligninger for ulineære fladvandsbølger er dem der ses i ligning (2.3). Detses hvorledes de ekstra led der er kommet med er uux og (ηu)x.

Det bemærkes, at der ved opstilling af de ulineære fladvandsligninger ikke er gjortnogen tilnærmelser eller antagelser, hvad angar ordensbetragtninger. De normale flad-vands approksimationer er dog stadig gældende, dvs. u regnes konstant over dybdenog deraf er den lodrette hastigheds komponent w = 0 samt kh → 0.

Det er ikke umiddelbart nemt at finde en analytisk løsning til ligningerne (2.3).En perturbationsekspansion, som foreslaet i Jonsson (1990) er ikke brugbar, idetperturbationsfaktoren er omvendt proportional med kh. En central antagelse i flad-vandsteorien er, at denne er gaende mod nul, hvorfor perturbationsfaktoren vil gamod uendelig.

2.2.1 Amplitudens indflydelse pa bølgen

For at opna et udtryk for bølge udbredelseshastigheden, c, analyseres ligningerne (2.3)med en kvasilineær metode. Metoden indebærer, at det ikke-afledte led i de ulineæreled bliver betragtet som kontant. Eksempelvis bliver det konvektive led, u(x,t)ux(x,t) ≈u∗0ux(x,t), hvor u∗0 er amplituden af u regnet som konstant. De øvrige komponenter,u og η tilnærmes med dem fundet fra lineær teori, (2.5) og (2.6). Dermed bliver deten implicit antagelse i den kvasilineære analyse at H

h< 1. H

hkan derfor have større

værdier end i den lineære analyse men stadig ikke sa store værdier som i en fuldtulineære.

14

Page 16: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

I samme stil som ved lineær analyse indsættes η og u i ligningerne (2.3). Som detses i bilag A er determinanten for koefficient matricen til ligningssystemet i (η, u):

gkhk − ω2 + gk2η∗0 + ku∗0(2ω − ku∗0) (2.18)

Som tidligere kræves determinanten at være nul for at ligningssystemet skal haveen løsning. Som det ses i bilag A kan dette reduceres til

= ±√

ghH

2h±

√gh

√1 +

H

2h

=√

gh

√1 +

H

2h± H

2h

)

= ±√

gh

(1 +

(2± 1)H

4

)+ O(

(H

2h

)2

) (2.19)

Hvor sidste linie er lavet ved en Taylor polynomie med en trunkeringsfejl pa

O((

H2h

)2). Det ses ogsa, at der er fire løsninger til problemet. Vi vælger den positive,

hvor amplitude dispertionen har mindst effekt. Arsagen er, at valget giver den størsteoverensstemmelse mellem analytiske beregninger og modelforsøg.

c =√

gh

(1 +

1

4

H

h

)(2.20)

Som det ses af ligning (2.20) er bølge udbredelses hastigheden afhængig af bølge-højden H. De ulineære fladvandsligninger forventes derfor at være amplitudedispertiv.

Bemærk at udtrykkene for η og u er de samme i lineær og ulineær teori. Det sesogsa at for H

h→ 0 vil c → √

gh, som er den lineære bølgehastighed.

2.2.2 Verifikationsudfordringer

Det store problem med at verificere den ulineære model er, at de ulineære fladvands-ligninger numerisk løses eksakt i modellen, kun begrænset af diskretiseringsfejlen,som omtales senere. Det eneste sammenligning er tilnærmede analytiske løsninger,som set i forrige afsnit.

Det vides fra blandt andet Svendsen & Jonsson (1982), at bølgerne, der er løsningtil (2.3), bevæges med en hastighed afhængig af den lokale overflade elevation: c =√

g(h + η), nar H/h À h2/L2 altsa stor amplitude. Det betyder, at bølgetoppenbevæger sig hurtigere end resten af bølgen og den bliver derved asymmetrisk. Enanden konsekvens af, at toppen bevæger sig hurtigere end dalen er, at bølgen før ellersiden vil bryde sammen pa flad bund. Det vil ikke ske i praksis. En made at undga

15

Page 17: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

at bølgen bryder sammen pa grund af den voksende gradient er at tilføje Boussinesqled, som modvirker disse voksende gradienter.

Det er derfor svært at sammenligne den ulineære bølgemodel med analytiskeløsninger. Sammenlignerne laves derfor mellem centrale paramtre som eksempelvisden bølgeperioden. Af mangel pa bedre sammenlignes den i modellen fundne periodemed den der kan findes fra ligning (2.20).

2.3 Udvidelse til 2D

For at udvide de styrende ligninger til 2D vendes der tilbage til udledningen af degrundlæggende ligninger. Eulers ligning, som før sa ud som (2.1), ser i 3D saledes ud(x og y komponenterne er taget ud). Der er nu en trykgradient bade i x-retningen ogi y-retningen

g∂η

∂x= −

(∂u

∂t+ u

∂u

∂x+ v

∂u

∂y+ w

∂u

∂z

)

g∂η

∂y= −

(∂u

∂t+ u

∂v

∂x+ v

∂v

∂y+ w

∂v

∂z

)(2.21)

Det gælder selvfølgelig ogsa i y-retningen, at hastigheden regnes konstant overdybden. Derfor bliver impulsligningerne i 2D

gηx + ut + uux + vuy = 0

gηy + vt + uvx + vvy = 0 (2.22)

Fra et 3D kontrol volumen kan det indses, at kontinuitetsligningen i 2D ser udsom følger

((h + η)u)x + ((h + η)v)y + ηt = 0 (2.23)

Udledningen af de 2D lineære ligninger sker med de samme antagelser og ar-gumentation, som ved udledningen af de 1D lineære fladvandsligninger. Det ses afligningerne, at der ikke er sket nogen uventede ændringer, men blot tilføjet ekstraled. Alligevel kan sammenligningen med analytisk løsning blive meget kompliceret,selv i en lineær udgave. Især tolkningen og fremstilling af denne.

Sammenligningen bliver derfor begrænset til at sende en bølge afsted i x-retningenog sammenligne den med en analytisk 1D bølge. Samme gøres i y-retningen. Desudenmodelleres en staende bølge, der har hastigheder i begge retninger, saledes at bølgener staende i begge dimensioner.

16

Page 18: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

2.4 Fladvandsligningernes anvendelsesomrade

Der er flere begrænsninger pa anvendelsesomraderne for de lineære og ulineære flad-vandsligninger. En vigtig og meget central antagelse er, at kh er meget lille. I lineærteori er det meget nemt at lave et mal for fladvandsligningernes nøjagtighed. Den rel-ative forskel mellem bølgehatigheden af en lineær fladvandsbølge og en lineær stokesbølge er

cflad

cstokes

=

√kh√

tanh(kh)(2.24)

Stokes bølgen er ikke udledt under nogen antagelser af værdien for kh og ma derfori denne sammenligning betragtes som den ønskede løsning. Forholdet, som funktionaf kh, kan ses pa figur 2.1.

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 11

1.05

1.1

1.15

kh

c flad/c

stok

es

Figur 2.1: cflad/cstokes som funktion af kh. Det bemærkes hvorledes der allerede vedkh = 0,56 er en afvigelse pa 5%

En anden antagelse er, at H/L er lille. Det er i dette tilfælde ikke informativtat sammenligne med Stokes lineær teori, idet H/L angiver hvor ulineær bølgen er.Hvis fejlen skal findes, skal der sammenlignes med en ulineær model. En mulighed er,at sammenligne den lineære fladvandsbølge med strømfunktionen, idet denne er eneksakt løsning af de styrende ulineære ikke fladvandsligninger (Skourup, 1998). Ensadan sammenligning kan ses pa figur 2.2.

Pa figuren ses det, hvordan overfladeprofilerne afviger mere og mere for størreværdi af H/L. Det darlige resultat skyldes ogsa, at vi har antaget, at den lineæreoverflade profil er tilstrækkelig i det ulineære tilfælde. Som det ses er ligningernevi bruger som tilnærmet løsning til de ulineære fladsvandsligninger, ligning (2.5) og(2.6), ikke særlig gode.

17

Page 19: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1−0.5

0

0.5

x/(L/2)

η(x,

t)/(

H/2

)

Sammenligning mellem lineær bølge og stream function, H/L=.00044

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1−0.5

0

0.5

x/(L/2)

η(x,

t)/(

H/2

)

Sammenligning mellem lineær bølge og stream function, H/L=0.00089

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1−0.5

0

0.5

x/(L/2)

η(x,

t)/(

H/2

)

Sammenligning mellem lineær bølge og stream function, H=0.0018

Figur 2.2: Pa figuren ses sammenligning mellem overfladeelevationen af en lineærfladvandsbølge og en bølge beregnet ved hjælp af et program, der findes pahttp://www.coastal.udel.edu/faculty/rad/streamless.html. kh = 0,14, h = 50 m. Sti-plet linier markerer bølgeprofilen beregnet fra kvasilineær fladvandsteori, mens fuldtoptrukne er overflade profilen beregnet med strøm funktions teorien

Som tidligere nævnt har vi ikke lavet en analytisk løsning til de ulineære flad-vandsligninger, men blot brugt et sinusformet overfladeprofil. En sadan løsning matteforventes at passe bedre end hvad der ses pa figur 2.2.

Modellen handterer refraktion og shoaling idet vi, som tidligere argumenteret, harset hvorledes bølgehastigheden er afhængig af den lokale dybde. Det er netop dettefænomen, der fører til refraktion, hvorfor modellen handterer dette.

Modellen handterer ogsa diffraktion da den reagerer pa overflade gradienter ibegge retninger, ηx og ηy. Passerer et bølgetog en forhindring, hvor der bag den eren læside, vil der opsta overfladegradienter, som vil pavirke bølgefeltet. Modellen erdog ikke direkte designet med dette formal. Den numeriske implementering gør detderfor meget svært at vise og teste denne funktionalitet.

2.5 Vinddrevne strømninger og friktion

Idet vinden blæser over et vandomrade vil vandet blive trukket med af vinden. I etafgrænset vandomrade vil det betyde, at vandspejlet vil hælde, idet vandet vil samlesig i den ende af bassinet som vinden blæser imod. Dette fænomen kaldes vindsetup.

18

Page 20: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Nar bunden er plan, kan der opsta en stationær situation, hvor der ingen strøm er ibassinet. Hvis bunden ikke er plan, vil der, selv i den stationære tilstand, opsta merekomplicerede strømfelter.

Leddene for vindfriktion indgar i impulsligningen (2.22). De er opskrevet herunderfor henholdsvis x- og y-retningen, som formuleret af Per A. Madsen

τxw =

f

hW 2 cos(β)

τ yw =

f

hW 2 sin(β)

(2.25)

Nar disse led bliver inkluderet bliver impulsligningerne

gηx + ut + uux + vuy − f

hW 2 cos(β) = 0

gηy + vt + uvx + vvy − f

hW 2 sin(β) = 0

(2.26)

hvor W er vindhastighederne 10 m over vandspejlet, h er vanddybden, β er vindensvinkel med x-aksen, f = Cw

ρluft

ρvander friktionsfaktoren og Cw = 0,0026 er en empirisk

friktionskoefficient mellem luft og vand. Det bemærkes, at dette er en stor simplifika-tion af den virkelige interaktion mellem en fri overflade og vind. Det er ikke svært atforstille sig, at strømningsfeltet pa begge sider af overfladen bliver meget kompliceretnar overfladen ikke er plan. Desuden bør friktionen ga imod nul, nar vandhastighedenog vindhastigheden nærmes hinanden. Ovenstaende ligninger beskriver derfor dentilnærmede situation hvor strømningshastigheden er nul. Det vil kun være en godtilnærmelse, nar vindhastighederne er væsentlig større end strømningshastighederne.Simplifikationen retfærdiggøres imidlertidig i denne sammenhæng, da der ikke sespa vindgenerede bølger men pa vindsetup, som er et fænomen, der optræder i størremalestok end en enkelt bølge. Partikelhastighederne forventes derudover ogsa er værevæsentlig langsommere end vindhastighederne.

2.5.1 Dybdevariation

Bundvariationen i modellen er meget vigtig. Som det fremgar af de tidligere afsnithar vanddybden betydning bade for bølgers udbredelseshastighed, samt, som det vilfremga, for friktionen fra vinden og bunden, se ligningerne (2.25) og (2.31). Udenbundvariation vil fænonmener som refraktion og shoaling ikke kunne opsta. Bund-variationen kan pa analytisk vis eksempelvis beskrives som summen af to 2.gradspolynomier, der afhænger af henholdsvis x og y. Det vil sige

h(x,y) = a1 · x2 + b1 · x + c1 + a2 · y2 + b2 · y + c2

= a1 · x2 + b1 · x + a2 · y2 + b2 · y + hmin

(2.27)

19

Page 21: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Gradienten i x- og y-retningen findes analytisk til

∂h

∂x= 2a1 · x + b1 (2.28)

∂h

∂y= 2a2 · y + b2 (2.29)

Hvis hmin udtrykker den mindste vanddybde og resten af variablene, som vist pafigur 2.3 far man at

a1 = −hminzBuleX − zEndX · LBuleX

(LBuleX − 1) · LBuleX · l2xa2 = −hmin

zBuleY − zEndY · LBuleY

(LBuleY − 1) · LBuleY · l2yb1 = hmin

zBuleX − zEndX · LBuleX2

(LBuleX − 1) · LBuleX · lxb2 = hmin

zBuleY − zEndY · LBuleY 2

(LBuleY − 1) · LBuleY · ly

(2.30)

2.5.2 Friktion

Bundfriktionen har ifølge Svendsen & Jonsson (1982) kun væsentlig betydning narHLh2 = H

L

(Lh

)2> 20 − 30. Da de styrende ligninger i denne undersøgelse er fladvand-

sligninger ligger den betingelse implicit at hL

< 0,05 for at disse ligninger er en godtilnærmelse. Med de to betingelser ma det ogsa kræves at H

L< 20

202 = 0,05 for atbundfriktionen kan ignoreres. Fladvandsbølgen nar imidlertidig at blive begrænset afulineariteten, inden dette bliver et problem, se afsnit 2.4. Nar der ses pa tidevand, hvorbølgelængden er meget større end bølgehøjden, er det indlysende, at friktionen farstor betydning. Det samme gælder for vindsetup. Da en del af undersøgelsens formaler at se pa vinddrevne strømninger, er det derfor naturligt at medtage bundfriktioneni impulsligningerne. Bundfriktionen kan ifølge Per A. Madsen defineres som

τxB =

g

M2h4/3u√

u2 + v2

τ yB =

g

M2h4/3v√

u2 + v2(2.31)

hvor u og v er strømningshastighederne, h er dybden og M er Manning-tallet, somafhænger af bundforholdene og som typisk sættes til 32. Ønskes det at øge bundfrik-tionens betydning skal Manning-tallet, som det ses, mindskes. Med vind og friktion

20

Page 22: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

inkluderet bliver impulsligningerne

gηx + ut + uux + vuy − f

hW 2 cos(β) +

g

M2h4/3u√

u2 + v2 = 0

gηy + vt + uvx + vvy − f

hW 2 sin(β) +

g

M2h4/3v√

u2 + v2 = 0

(2.32)

2.5.3 Setup

Er bunden plan, er det forholdsvis enkelt at fa et analytisk udtryk for overfladenshældning ud fra (2.32) og (2.22). I den stationære tilstand er hastighederne og detidsafledte nul, og der fas derved følgende udtryk for overfladens hældning

ηx =f

g · hW 2 cos(β) (2.33)

ηy =f

g · hW 2 sin(β) (2.34)

Et andet specialtilfælde fas, nar dybden kun varierer pa tværs af vindretningen, foreksempel som en parabel. Ved en kanal, som er dybest pa midten, kan der regnes pahastigheden langs med kanalens sider. Der ses pa den stationære tilstand og dermeder de tidsafledte nul. Vindretningen blæser i y-retningen, β = 90 og langs kanten,dvs., for x = 0 er u = hy = 0. Midt i domænet, y = Ly/2, antages det at vy ≈ ηy ≈ 0.Herved kan fas et tilnærmet udtryk for v det pagældende sted

v2 ≈ fW 2M2h1/3

g(2.35)

2.6 Randbetingelser

De randbetingelser, der patrykkes fladvandsligningerne afhænger af den ønskede model.I denne model arbejdes der ikke med abne rande. Derfor sættes normalhastighedenpa alle rande til nul. Det kan udtrykkes som

u|x=0 = u|x=Lx = 0 (2.36)

v|y=0 = v|y=Ly = 0 (2.37)

Der er ogsa nødvendigt at sætte randbetingelser for η. Denne betingelse findes fraimpulsligningerne hvor henholdsvis u og v sættes til nul. Det bliver til

ηx|x=0 = ηx|x=Lx = 0 (2.38)

ηy|y=0 = ηy|y=Ly = 0 (2.39)

21

Page 23: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

2.6.1 Reflektion

Effektivt betyder lukkede rande, at en fremadskridende bølge vil blive fuldstændigreflekteret, og der vil kunne dannes en staende bølge. En analog situation opstar, narto bølger, der er identiske, pa nær at de har modsat fortegn pa ω eller k, mødes. Fra(2.11) og (2.12) haves følgende udtryk for hastigheden og overfladeelevationen

η = H cos(ωt) cos(kx) (2.40)

u = A sin(ωt) sin(kx) (2.41)

Det ses at u altid er nul i x = 0 og x = π/k. Differentieres overfladeelevationen medhensyn til x fas

ηx = Hk cos(ωt) sin(kx) (2.42)

Det ses at ηx = 0 for x = 0 og x = π/k, hvilket er de samme steder som hvor u = 0.Hvis domænets længde defineres som værende π/k langt vil der haves et domæne,hvor ovenstaende randbetingelser altid er opfyldt. Denne analogi kommer tydeligt tiludtryk nar randbetingelserne skal implementeres i den numeriske model.

2.6.2 Absorbtion

Ønskes det ikke at en bølge bliver reflekteret, ma der i et lukket domæne, indbygge enbølgeabsorber. Absorbtionszonen skal være mindst samme længde som bølgelængdenfor at være fuldt absorberende. Er den for kort vil noget af bølgen blive reflekteret.Der kan i den numeriske implementering af en bølgeabsorber, anvendes en relakser-ingsfunktion og en eksakt løsning, som beskrevet i Bingham & Agnon (2002). Det erher vigtigt, for alle x eller y, at relakseringsfunktionen og dens to første afledte erkontinuerte. I modsat fald vil en diskontinuitet i den 2. afledte forarsagde, at nogetaf bølgen reflekteres ved dette ”knæk”. Denne relakseringsfunktion skal virke pa η, uog v.

22

Page 24: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

z

xhmin

zEndX

LBuleX

zBuleX

Bund

z

yhmin

zEndY

LBuleY

zBuleY

Bund

Lx

Ly

Figur 2.3: Illustration af de størrelser som definerer bundprofilet i 2 dimensioner.

23

Page 25: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Kapitel 3

Numerisk teori

3.1 Diskretisering

Idet der ønskes en numerisk løsning af de partielle differentialligninger (2.3), skalder vælges en diskretiseringsmetode af variablerne i domænet. De mest nærliggendemetoder er finite volume og finte difference. Den første metode er nærliggende, hvisløsningsdomænet har en kompliceret geometri. Ulempen ved volume element i forholdtil finte difference er, at den er vanskeligere at implementere. Da løsningsdomænet eret simpelt rektangel, er der derfor ingen grund til at vælge andet end finte difference.

Den næste overvejelse vedrører fordelingen af netpunkter i domænet. Der er ogsaher flere valgmuligheder. Der kan vælges mellem at bestemme alle variablene sammested, kaldet non-staggered. Der kan ogsa vælges at bestemme alle variable i punkterforskudt fra hinanden, kaldet staggered. Den umiddelbare fordel ved staggered, for detforeliggende problem, ligger i, at det er nemt at beskrive en lukket rand. Det nemmebunder i, at man ikke nødvendigvis behøver at kende overfladeelevationen pa randen.;dette vil blive beskrevet afsnit 3.2. Ulempen ved en staggered netstruktur er først ogfremmest, at det er nødvendig med interpolation af variablene for at bestemme deresværdier oven i de andre variable. Desuden forringes stabiliteten noget. Dette vil blivenærmere beskrevet i afsnit 3.1.2 og 3.3.

Da det aktuelle løsningsdomæne er lukket, er fordelene ved et staggered netstruk-tur dog større end ulemperne, og der vælges derfor den forskudte netstruktur.

Ud over fordelingen af variablene kan det ogsa overvejes, om skridtafstandene i tidog sted skal være konstante eller variable. For at reducere trunkeringsfejlen i diskre-tiseringen, kan det være hensigtsmæssig at reducere skridtafstanden i de omraderaf løsningsdomænet, hvor de højere afledede for den pagældende variabel er store.Forklaringen ligger i, at trunkeringsfejlen afhænger af de led, som der ses bort fra iTaylorudviklingen af den pagældende variabel. Disse led er et produkt af variablensafledte i sted af en given orden samt skridtlængden opløftet i en given potens. I

24

Page 26: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

omrader med store hastighedsgradienter vil den afledte ogsa blive stor. For at holdeleddet og dermed trunkeringsfejlen lille ma skridtlængden derfor reduceres.

Eftersom løsningen ikke forventes at indeholde omrader med særligt store gradi-enter, vælges en konstant skridtlængde i tid og sted.

Efter disse indledende overvejelser med hensyn til diskretiseringen vil diskretis-eringen i tid og sted blive nærmere gennemgaet.

3.1.1 Diskretisering i tid

Stærkt inspireret af Wei et al. (1995) vælges en Adams-Bashforth-Moulton metodetil at skridte frem i tid. Denne metode tilhører familen predictor-corrector. I trad medartiklen, vælges et eksplicit 3. ordens Adams-Bashforth skema som predictor, og etimplicit 4. ordens Adams-Moulton skema som corrector. Da metoderne altsa brugerhenholdsvis 3 og 4 punkter vil de ifølge definition fra Ferziger & Peric (2002) haveordenen O(∆t3) henholdsvis O(∆t4). Lader vi Ψn betegne de sted-afhængige led tiltidsskridet n i et givent punkt (x,y) og Γn den tidafhængige variabel til tidsskridtetn i samme punkt (x,y) ser predictor skemaet saledes ud

Γn+1 ≈ Γn +∆t

12

(23Ψn − 16Ψn−1 + 5Ψn−2

)(3.1)

og corrector skemaet

Γn+1 ≈ Γn +∆t

24

(9Ψn+1 + 19Ψn − 5Ψn−1 + Ψn−2

)(3.2)

Det skal her bemærkes, at de valgte høje ordens skemaer i tid, ikke er tvingendenødvendigt for at fa nøjagtig løsninger af de lineære eller ulineære fladvandsligninger.De er valgt for at gøre det simpelt senere, at inkludere højere ordens Boussinesqled. Her er de til gængæld ogsa nødvendige, idet den situation opstar, at kildeled-dene til trunkeringsfejlen er af samme form som de dispertive Boussinesqled i destyrende ligninger (Wei et al., 1995). Den iøjefaldende ulempe ved disse højere or-dens predictor-corrector skemaer er, at de benytter løsningen fra tidligere tidsskridtog derfor kræver mere hukommelsesplads. En anden ulempe er at stabilitetskravenestrammes og tidsskridtet derfor skal være kortere end for metoderne af lavere orden,se afsnit 3.3.

Ideen bag predictor-corrector konceptet er, kort fortalt, at kombinationen af pre-dictor og corrector giver en væsentlig mere stabil metode end metoderne hver for sig.Dette bliver gennemgaet nærmere i afsnit 3.3.

3.1.2 Diskretisering i sted

Diskretiseringen af domænet med fordelingen af de diskrete variable er vist pa figur3.1

25

Page 27: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

De stedsligt første ordens afledte er diskretiseret med en 4 punkts centered differ-ence skema, CDS, af orden O(∆ζ4). Derved bliver den førsteafledte pa dette staggerednet diskretiseret til samme orden som Wei et al. (1995). Hermed fas

∂ϑ

∂ζ≈ ϑww − 27ϑw + 27ϑe − ϑee

24∆ζ(3.3)

Subindicerne ww, w, e og ee henviser til punkterne (-112, -1

2, 1

2,11

2)∆ζ fra udviklingspun-

ket regnet positiv mod højre (øst). Skemaet er udledt fra tilpasningen af et 3.grad-spolynomie til de fire punkter.

For at beregne de ulineære led numerisk, er det nødvendigt med interpolationaf variablene i det tilfælde hvor, for eksempel, ηt afhænger af u. I de tilfælde hvorværdien af u eller v ønskes kendt i et punkt hvor η er defineret, interpoleres dermed et 3. ordens polynomie. Nar det er nødvendigt at kende u ved v eller omvendt,

x

η

v,η

j

12

33

21

v

u i1 2 31 2 3

: V

: η: U

y

u,

Figur 3.1: Skematisk opstilling af det diskrete domæne med placeringen af variableneindtegnet. Desuden er nummereringen af indeks for de diskrete variable vist.

26

Page 28: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

interpoleres variablene først ind pa et punkt hvor en diskret værdi af η, og herefterbruges igen et 3. ordens polynomie.

3.2 Randbetingelser

3.2.1 Reflektion

Pa figur 3.2 ses punkterne tættest pa randen. Diskretiseringen kan forklares fra, atreflektionen, som tidligere nævnt, analytisk kan simuleres ved at addere en virtuelspejlet bølge med den virkelige. Spejlingsaksen er selvfølgelig randen, hvorfor formenaf den virkelige og den virtuelle bølge er den samme pa hver side af randen. Partikelhastighederne er derimod modsat rettede pa hver side af randen, hvorfor følgendegælder

u|x=∆x = −u|x=−∆x (3.4)

Hvor u|x=∆x angiver hastigheden i afstanden ∆x vinkelret fra randen. Ved atudnytte gradienten af η er nul pa randen og at den virtuelle bølge er af samme form,blot spejlet fas det

η|x=∆x = η|x=−∆x (3.5)

De to betingelser indsættes i den generelle 4 punkts centered difference scheme,ligning (3.3). Ordnen af skemaet pavirkes ikke idet udtrykkene (3.4) og (3.5) er baseretpa en eksakt analytisk modellering af randbetingelserne. Randbetingelserne er hergennemgaet i et 1D tilfælde. I 2D er y-retningen fuldstændig analog til x-retningen.Hjørnepunkterne bliver ligeledes ikke problematiske, da ingen variable er defineret ide punkter.

x

ηi,jηghost=η

Ughost =−U

dxdx/2

i,j=−Ui+1,j U i+1,j

i,j

Figur 3.2: Randbetingelser i η og u.

27

Page 29: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

3.2.2 Absorption

Ved den praktiske implementering af randbetingelsen er der før absorptions-/relaksa-tionszonen ogsa lagt en lille numerisk buffer, som skitseret pa figur 3.3. Grunden tilat indlægge en sadan er, at sa kan spejlingsrandbetingelsen patrykkes randen. Idet deto første punkter i henhold til figur 3.3 udregnes rent analytisk kan det tredie punkt,som er det første der udregnes numerisk, ikke ”mærke”spejl-betingelsen. Grunden tilat den ikke kan mærke randen er, at vi benytter et fire punkts centered differencescheme, som kun refererer til de nærmeste to punkter til hver side. Fordelen er sa, athele modellen kan bygges op med spejlende rande langs alle kanter og ved de kanter,hvor der ønskes absorption kan relaksationszonen slaes til.

1

Cr

x

Figur 3.3: Skitse af relaksations koefficienten Cr som funktion af x. Funktionsforløbeter ikke det der benyttes i programmet, da figuren kun skal bruges til at illustrerebeliggenheden af den numeriske buffer.

Relaksation funktionen der bruges er

Cr(x) = sech(κx′)− x′

Lrelaks

ysech,min =2

eκx′ + e−κx′ −x′

Lrelaks

ysech,min (3.6)

hvor ysech,min = sech(κLrelaks), Lrelaks er længden af relaksationslaget og κ er enfaktor, der gør, at funktionen strækkes saledes, at førnævnte gælder, nar ysech,min ogLrelaks specificeres. x′ er afstanden fra enden af den numeriske bufferzone. Cr(x′/Lrelaks)kan ses pa figur 3.4.

Maden metoden benyttes pa er her vist for η

η(x) = Cr(x)ηanalytisk(x) + (1− Cr(x))ηnumeriskskema(x). (3.7)

3.2.3 Generering af bølger

Genereringen af bølger er tæt forbundet med absorptionszonen, der er omtalt i afs-nittet ovenfor. Den analytiske funktion, der bliver multipliceret pa, vil i tilfælde af

28

Page 30: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

genererede bølger blot være et analytisk udtryk for η, u og v, hvorimod den vedabsorption vil være 0. Pa denne made kan numerikken fa den mest simple struktur.

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

0.5

1

x’/Lrelax

Cr

ysech,min

=0,1y

sech,min=0,01

ysech,min

=0,001y

sech,min=0,0001

ysech,min

=0,00001y

sech,min=10−10

CrFunk=e−κ x

Figur 3.4: Relaksationskoefficient som funktion af x for forskellige værdier af ysech,min.Funktionen ses i ligning. (3.6)

29

Page 31: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

3.3 Stabilitetsanalyse

Der laves i det efterfølgende en Von Neumann stabilitetsanalyse af de diskretiseredelineære fladvandsligninger i een dimension pa flad bund.

Der indsættes perturbationer af formen

η(j,n) = η0σneijα

u(j,n) = u0σneijα (3.8)

Hvor i er den imaginære enhed i =√−1, j er skridtet i x-retningen, n er skridtet i

tiden og α er en arbitrær bølgefase af pertubationen. Formalet med stabilitets analyseser at sætte nogle betingelser saledes at |σ| ≤ 1. Længden af σ skal være mindre end1 for at sikre, at perturbationsløsningen ikke eksploderer.

Indsættes (3.8) i (3.1) eller (3.2) indses det, at der indgar σ i en potens i alleleddene. Med hensyn til diskretiseringen i x-retningen kommer der her til at indgaled med eiα samt en faktor pa alle led af formen: eijα. Eksempelvis vil en 2 punktscentered difference i u blive til

ux =u(j + 1,n)− u(j − 1,n)

2∆x= u0σn ei(j+1)α − ei(j−1)α

2∆x= u0σneijα i sin(α)

∆x(3.9)

Diskretiseringen i stedet ændres selvfølgelig ikke i tiden, hvorfor faktoren stam-mende fra diskretiseringen i x er konstant for alle n. Saledes omskrives de stedligediskretiseringer i henholdsvis u og η som

ηx(j,n) = η0ξ(α)σneijα

ux(j,n) = u0ξ(α)σneijα (3.10)

Hvor ξ er afhængig af den diskretiseringsmetode der benyttes. ξ fra eksempletovenfor er derfor ξ = i sin(α)

∆x

∣∣max

= i∆x

. Grunden til i sin(α)∆x

er vurderet op er for at fa|σ| ≤ 1 for alle α.

Eksempelvis kommer Adams-Bashforth skemaet for massebevarelsen til at sesaledes ud

ηn+1 − ηn

∆t=

h

12(23ux(n,j)− 16ux(n− 1,j) + 5ux(n− 2,j))

η0eijα(σn+1 − σn

)= u0hξeijα

12

(23σn − 16σn−1 + 5σn−2

)

σ3 − σ2 =u0

η0

12

(23σ2 − 16σ + 5

)(3.11)

Ved at opstille de to lineære fladvandsligninger i η0 og u0 fremkommer et ho-mogent ligningssystem, som kræver determinant lig 0 for at have en løsning. Fra

30

Page 32: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

denne determinant opstar et polynomium i σ, hvor produktet Cu2 = ∆t2ξ2gh indgar.Ved at lade dette produkt gennemløbe bade positive og negative tal omkring nul ogfinde rødder i σ kan det med god nøjagtighed bestemmes hvornar |σ| > 1, altsa hvorsystemet er ustabilt.

Ved analysen af Adams-Bashforth-Moulton indsættes det implicitte led taget fraden eksplicitte Adams-Bashforth. Som det sker ved selve kodningen af program-met, findes eksempelvis ηn+1 fra Adams-Bashforth, massebevarelse. Den sættes indi Adams-Bashforth-Moulton impulsligning. Det efterlignes i stabilitetsanalysen, hvorσ = σ(ξ,u0,η0, g, h) findes fra Adams-Bashforth og substitueres ind pa højresiden iAdams-Bashforth-Moulton skemaet (3.2) til tidsskridtet n + 1.

Stabilitets analysen kan ses i bilag B. I bilaget er Adams-Bashforth, Adams-Moulton og Adams-Bashforth-Moulton analyseret, samtidig med at ξ er fundet forforskellige diskretiseringsmetoder.

Couranttallet defineres som

Cu =∆t

∆x

√gh (3.12)

I tabel 3.1 ses begrænsninger pa Couranttallet til forskellige diskretiseringer.

Tabel 3.1: Stabilitet for Adam-Bashforth-Moulton skema til forskellige diskretis-eringer. 2. række i tabellen viser ξ til de undersøgte diskretiseringer. 2. kolonne viserbegrænsningen pa γΩ

Gen. stab. betingelse 2 punkts CDS 4 punkts CDS 4 punkts CDS Staggeredξ = Ω

h = γg - i

∆xi4

3∆xi7

3∆x

A-B 0 ≥ γΩ ≥ −0,524 Cu ≤ 0,724 Cu ≤ 0,543 Cu ≤ 0,310A-M Ubetinget ustabil - - -A-B-M 0 ≥ γΩ ≥ −1,390 Cu ≤ 1,179 Cu ≤ 0,884 Cu ≤ 0,505

Det ses, at stabiliteten falder ved højere orden i x- diskretiseringen. Det bemærkesogsa, at stabiliteten falder ved brug af staggered grid. Stabiliteten falder sa meget,at en Adam-Bashforth-Moulton pa staggered grid er mindre stabil end en Adam-Bashforth pa ikke staggered grid. Desuden ses det, at Adams-Moulton skemaet forsig selv er ubetinget ustabilt. Iterationerne, der udføres i programmets corrector del,kan saledes ikke konvergere, uden at der findes et fornuftigt startgæt. I vores tilfældeleveres det af Adams-Bashforth.

Det understreges, at analysen er lavet for lineær ligninger pa flad bund i 1D.Resultatet giver derfor blot en indikation af hvordan stabiliteten af skemaet er ved,eksempelvis, variabel bund eller nar de ulineære fladvandsligninger løses.

31

Page 33: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Del II

Implementering

32

Page 34: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Kapitel 4

Fortran

4.1 Hukommelsesforbrug

For at begrænse hukommelsesforbruget ved udregningerne af mange tidsskridt er dervalgt kun at lagre de sidste 4 tidsskridt i RAM, som er dem programmet hele tidenarbejder med. Herved bliver antallet af tidsskridt kun begrænset af tid og harddiskplads, hvor det sidste sjældent er en begrænsning. Ulempen er, at skrivehastighedentil harddisken bliver en stor flaskehals i nyere systemer med hurtige CPU’er. Dettebliver særligt udtalt, nar der i hvert tidsskridt skal skrives flere variable til seperatefiler. Her bruges der ikke blot forholdsvis megen CPU tid pa skrivningen; filerne bliverogsa voldsomt fragmenteret, hvilket sænker den senere læsehastighed meget.

En anden made at begrænse hukommelsesforbruget pa, er at beskrive variablenemed mindre præcision. I den aktuelle implementering er benyttet double precision

hvilket kræver 8 bytes per element. Her kunne være benyttetsingle precision

repræsentation af variablene, som kræver 4 bytes per element. Denne løsning udsky-der dog kun det uafvendelige, idet der kun vindes en faktor 2 pa det samlede antalelementer. Dermed vil der med stor sandsynlighed alligevel skulle skrives løbende tilharddisken.

4.2 Hastighedsoptimering

Nar der skrives numeriske koder, som skal lave større beregninger, er det vigtigt atskrive koder, der afvikles effektivt pa computeren. De faktorer, der pavirker effek-tiviteten, kan inddeles i to grupper. Den ene gruppe er de faktorer som pavirkereffektiviteten uanset systemarkitekturen og den anden gruppe er afhængig af sys-temarkitekturen. Den sidste gruppe er vanskelig at beskrive uden at have nøje kend-skab til computerens indre funktionalitet. Den vil derfor ikke blive berørt nærmere.Den første og generelle gruppe vil derimod blive undersøgt nøjere.

33

Page 35: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Alle beregninger i en computer sker pa det laveste nivau i det binære talsystem.Den sædvanlige repræsentationen af tal og de fire regnearter i 10-tals systemet, ad-dition, substraktion, multiplikation og division, skal derfor omsættes til det binæretalsystem før de kan beregnes. En vigtig pointe er her, at division er en væsentligmere krævende omsætning end de 3 andre. Det er derfor hensigtsmæssigt, at undgadivision i størst muligt omfang. Det har især betydning i løkker, som kan blive gen-nemløbet tusindvis af gange. Løkker bør ogsa holdes fri for overflødige beregninger.Denne omskrivning og optimering af kode har den ulempe, at kodningen tager tid ogkoden kan blive uoverskuelig. Graden af optimering bliver derfor, som sa meget andet,et spørgsmal om at finde et fornuftigt kompromis. Koden til denne implementeringer et forsøg i den retning.

En anden vigtig pointe er hvordan programmeringssproget lagrer variable i flere di-mensioner i hukommelsen. Hukommelsen kan anses for at være endimensionel. Flerdi-mensionelle variable ma derfor nødvendigvis blive gjort endimensionelle, før de lagresi hukommelsen. I Compaq Visual Fortran og de fleste andre Fortranimplementeringersker dette ved at den ”sidste”dimension, hørende til det sidste indeks i en variabel,lægges i forlængelse af hinanden. Dette kaldes column major. Det vil sige at en todi-mensionel variabel lagres kolonnevis i hukommelsen. I programmeringssproget C, vilen todimensionel variabel blive lagret rækkevis og den form kaldes row major. (Met-calf & Reid, 2002) Nar der arbejdes med flerdimensionelle variable i løkker, skalder ikke arbejdes pa tværs af denne strutur i hukommelsen. Ellers bliver resultat envæsentlig langsommere afvikling af programmet ifølge hjælpfilen til Compaq VisualFortran.

I praksis vil mange komercielle kompilere have mulighed for at kompensere forde ovennævnte svagheder i kildekoden, nar maskinkoden, ogsa kaldet objektkoden,dannes. Det er dog meget svingende hvor meget optimeringen, fra kompilerens side,kan ændre i afviklingstiden for et program. Det afhænger meget af hvad programmeti det hele taget foretager sig.

Dette kan illustreres ved, at forskellen mellem ingen og maksimal optimering afHENNING2045 kildenkoden er omkring 20 % i afviklingstid. Optimering af et andetprogram, som har alle tidskridt i RAM, gav en reduktion i afviklingstid pa omkring70 %. Problemet med HENNING2045 er, at skrivning af de binære filer skal skesom direct access. Dette betyder, at kompileren ikke har mulighed for at benytte io-buffering. Det vil sige, at RAM bliver benyttet som buffer og programmet kan dermedskrive større mængder af data til harddisken samtidig.

4.3 MATLAB-Fortran sammenspil

MATLAB har en af sine stærkeste sider i visualiseringen af data. Et af MATLABsstørste svagheder er hastigheden hvormed den afvikler kode, her tænkes især pa

34

Page 36: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

løkker. Fortran svagheder og styrker ligger helt modsat og det er derfor oplagt atforsøge at fa det bedste fra begge verdener. For at opna dette er det nødvendigt, atprogrammerne kan udveksle data. Dette kan gøres pa flere mader, som har det tilfælles, at harddisken benyttes som midlertidigt lager.

Den metode, som er valgt, er, at information flyttes fra MATLAB til Fortran viamat-filer, som er MATLABs binære dataformat. Den anden vej flyttes informatio-nen dels i mat-filer og dels i et generelt binært dataformat. mat-filer kan læses ogskrives i Fortran ved hjælp af funktioner, der ligger i biblioteker, som følger medMATLAB. Navnet pa disse biblioteker er libmx.lib og libmat.lib og de findesi MATLABs installationsfolder under \extern\lib\win32. Det skal bemærkes, atder findes flere udgaver til hver deres udviklingsmiljø. Her er valgt version hørendetil Digital Fortran 6.0, som er en foreløber til Compaq Visual Fotran. Fortranbib-liotekerne indholder imidlertidig ikke selve funktionen, men linker videre til en rækkedynamic links liberieseller dll-filer. Det er derfor nødvendigt at have MATLABinstalleret, for at kunne afvikle Henning2045 i den aktuelle implementering. De binærefiler i det generelle dataformat skrives af Fortran og læses af MATLAB uden størrevanskeligheder.

Arsagen til, at der ikke udelukkende benyttes det generelle binære dataformatbunder i en akademisk interesse for at anvende MATLABs binære dataformat. Un-dersøgelsen af dette format har vist en svaghed i det funktionsbibliotek, som følgermed MATLAB Release 12. Svagheden ligger i, at en variable skal skrives til en mat-filpa en gang. Derved er det ikke nok at have 4 tidskridt i hukommelsen og hukommelses-forbruget kan derved ikke begrænses. Det er endnu en arsag til, at det generelle binæredataformat benyttes. En anden svaghed er, at kun variable af højest 2 dimensionerkan lagres i mat-filerne. Disse svagheder er muligvis rettet i MATLAB release 13.

I stedet for at vente pa MATLAB release 13 er der ogsa den mulighed at optimerepa I/O implementeringen i HENNING2045. En ide, som der ikke har været tid til atimplementere, bestar i at gemme mere end 4 tidsskridt i hukommelsen. Med mellem-rum, for eksempel nar 50 % af systemhukommelsen er fyldt op, skrives disse tidsskridttil harddisken. Dette forbedrer HENNING2045 pa tre omrader. For det første gar enlangt større del af CPU-tiden med at regne. For det andet bliver den gennemsnitligeskrivehastighed langt større pa harddisken nar større elementer skrives. Sidst menikke mindst bliver filerne mindre fragmenteret.

Ved fa ændringer i Fortran kildekoden kan HENNING2045 gøres uafhængig afMATLAB. Muligheden abnes derfor for sammenspil med andre programmer og grafiskepræsentationer af resultater.

35

Page 37: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Kapitel 5

Fremgangsmade

At bygge en stor kompleks model som denne op ma siges at være en udfordringogsa pa det rent organisatoriske. Tillige er programmørernes erfaring særdeles be-grænset. Derfor er modellen bygget gradvist op. Samtidig er det forsøgt, at lavesma del-modeller med en malelig funktionalitet, der kan testes og sammenlignes medan alytiske resultater. Herved bygges der hele tiden videre pa et solidt fundament.

Vi har i projektet fulgt følgende flydende opbygning

1D lineær model, O(∆x2,∆t3), ∂h∂x

= 0 Modellen blev opbygget for blandt andetat bliver komfortabel med Fortran og fa stillet alle arrayene op. Med dennemodel blev det forsøgt at implementere staende bølger samt fremadskridendebølger, som absorberes. Begge typer kan sammenlignes med analytisk, lineærteori og modellen var derfor ideel til verificering af det numeriske skema.

1D lineær model, O(∆x2,∆t4), ∂h∂x

= 0 Udvidelse af ovenstaende til at inkluderehele predictor-corrector skemaet, Adams-Bashforth-Moulton, hvor forrige kunvar correctoren, Adams-Bashforth.

1D lineær model, O(∆x4,∆t4), ∂h∂x

= 0 Udvidelse fra en 2-punkts CDS til 4 CDSdiskretisering i sted. Skridtet følger umiddelbart af ovenstaende og er igen fuldtsammenligneligt med lineær teori.

1D Ulineær model, O(∆x4,∆t4), ∂h∂x

= 0 Ved at addere flere led til de styrendeligninger opnas en ulineær model. Modellen er ikke umiddelbart sammenligneligmed analytiske løsninger, men der kan dannes en formodning om hvor godtmodellen virker ved at sammenligne centrale parametre som perioden, T mm.

2D lineær model, O(∆x4,∆y4,∆t4), ∂h∂x

= 0 Modellen udvides fra forrige blot medde ulineære led slaet fra. Grunden til at de slaes fra er, at modellen derved igenbliver sammenlignelig med lineær analytisk teori. Staende bølger i hver retning

36

Page 38: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

samt i begge retninger pa en gang bruges til at teste om modellen virker. Tilsidst testes en fremadskridende bølge.

2D lineær model, O(∆x4,∆t4) Modellen udvides til at kunne handtere variabelbund. Det kan testes ved at sammenligne med lineær shoaling og eventuel re-fraktion.

2D ulineær model, O(∆x4,∆y4,∆t4) Er en efterfølgende sammenlægning af de toforrige punkter. Ved atter at lægge de ulineære led til skulle modellen virke.Modellens virkning sandsynliggøres ved test af fremadskridende bølger. Fornemhedens skyld sættes bundens gradient til 0.

2D ulineær model med vind-setup, O(∆x4,∆y4,∆t4) Ved at addere bund- ogoverfladespændinger udvides modellen til at kunne handtere vind-setup. Ennærliggende testcase er med flad bund, hvor der vil indstilles en stationær til-stand med setup. Stationariteten betyder, at ligningerne er nemme at beregneanalytisk og sammenligningen er oplagt.

Programmet er funktions orienteret, saledes at skelettet i Adams-Bashforth-Moultonskridtning i tid ikke ændres. Diskretiseringerne i sted hentes ind ved funktionskald.Pa den made er det nemmere og mere overskueligt at udvide modellen.

5.1 Brugervenlighed

Det er forsøgt sa vidt muligt at lave programmet brugervenligt. Der blev dog ikketid til at lave et direkte guided user interface. Som tidligere omtalt har vi lavet enMATLAB entry til Fortran programmet.

Der er opsat forskellige parametre saledes, at en parameter styrer eksempelvis omulinearitet er slaet til eller fra osv.

Følgende er muligt at styre ved ændringer af parametre i MATLAB entryen

• Absorption eller reflektion i x = lx

• Lineære led er slaet til eller fra

• Bundfriktion slaet til eller fra

Tre forskellige cases kan køres. Det grafiske output er afhængigt af hvilken caseder køres.

1. Staende bølger. Til tiden t = 0 s sættes en overfladeprofil svarende til staendebølger. Bølgen sættes gradvis ”fri”i løbet af en opvarmnings periode.

37

Page 39: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

2. Genererede bølger. Bølgerne genereres i en relaksations zone omkring x = 0 m

3. Vinddrevne bølger.

Kildekoden til programmet kan ses i bilag D.

38

Page 40: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Del III

Resultater

39

Page 41: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Kapitel 6

Lineære bølger

6.1 Staende bølger

Staende linære bølger er velbeskrevet analytisk. Der er derfor en række størrelser,som kan vise hvor godt modellen løser de partielle differentialligninger. Der er ogsaen made at teste modellen i 2D, idet de staende bølger kan vende i begge retninger.Løsningen skulle gerne blive den samme, uanset orienteringen af domænet.

Testdomænet er 20 m langt i udbredelsesretningen og 0,5 m pa tværs. Dybden er0,25 m og simuleringstiden svarer altid til to bølgeperioder. Der er kørt med bølger aflængden 5 m, 10 m og 20 m og de er opløst i 40 punkter per bølgelængde. Da bølgerneer en-dimensionelle betyder Couranttallet i retningen pa tværs af udbredelsesretnin-gen ikke noget for stabiliteten. Ved at se pa figur 6.1 og 6.2, hvor orienteringen afdomænet er vendt 90 , kan det ses, at bølgen er een-dimensionel og beregningerneuafhængig af domænets orientering.

For at minimere hukommelsesforbruget er der benyttet 10 punkter pa tværs afudbredelsesretningen. 10 punkter er det mindste bogholderiet i programmet kan ar-bejde med. Couranttallet i udbredelsesretningen holdes under 0,32, se her afsnit 3.3.Bølgehøjden betyder ikke noget, teoretisk set, og er sat til 4 · 10−9 m.

Resultatet af kørslerne ses af de tre konvolutplot pa figur 6.3, 6.4 og 6.5. De malteperioder er samlet i tabel 6.1. Det ses her, at bølgeperioden i modellen er den sammesom forudsagt af teorien for alle tre bølgelængder. Det bemærkes ogsa, at knudepunk-terne, som forventet, star skarpt pa alle konvolutplot. Bølgehøjden ses ogsa pa disseplot at være 4 · 10−9, hvilket er i overenstemmelse med begyndelsesbetingelserne.

For at afrunde afsnittet om staende lineære bølger vises resultatet fra en simuleringmed staende bølger i begge retninger. Domænet er 20 m pa hver led og bølgenlængdener 10 m. Pa figur 6.6 ses hastigheden at være π/2 ud af fase med overfladeelevatio-nen. Pa figur 6.7 ses ændringen af overfladeelevationen hen over en bølgeperiode. Paplottet ses det ogsa, at overfladegradienten normal til randen er nul, som specificeret

40

Page 42: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Tabel 6.1: Resultater fra maling af perioden for lineære staende bølger

L kh Tteori Tmodel Fejl i %5 0,079 12,77 12,77 010 0,16 6,38 6,38 020 0,31 3,19 3,19 0

i randbetingelserne (se afsnit 2.6).En animation af en staende bølge i begge retninger kan downloades fra:

www.student.dtu.dk/~c973782/film.html.

510

1520 0.1

0.20.3

0.4

−5

0

5

x 10−10

y, m

Til tiden 0.5

x, m

510

1520 0.1

0.20.3

0.4

−5

0

5

x 10−10

y, m

Til tiden 1.1

x, m

510

1520 0.1

0.20.3

0.4

−5

0

5

x 10−10

y, m

Til tiden 1.6

x, m

510

1520 0.1

0.20.3

0.4

−5

0

5

x 10−10

y, m

Til tiden 2.1

x, m

510

1520 0.1

0.20.3

0.4

−5

0

5

x 10−10

y, m

Til tiden 2.7

x, m

510

1520 0.1

0.20.3

0.4

−5

0

5

x 10−10

y, m

Til tiden 3.2

x, m

Figur 6.1: Plot af overflade til forskellige tidspunkter. Bølgeoverfladen ses at værekonstant i y-retningen.

41

Page 43: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

0.10.2

0.30.4 5

1015

20

−5

0

5

x 10−10

y, m

Til tiden 0.5

x, m

0.10.2

0.30.4 5

1015

20

−5

0

5

x 10−10

y, m

Til tiden 1.1

x, m

0.10.2

0.30.4 5

1015

20

−5

0

5

x 10−10

y, m

Til tiden 1.6

x, m

0.10.2

0.30.4 5

1015

20

−5

0

5

x 10−10

y, m

Til tiden 2.1

x, m

0.10.2

0.30.4 5

1015

20

−5

0

5

x 10−10

y, m

Til tiden 2.7

x, m

0.10.2

0.30.4 5

1015

20

−5

0

5

x 10−10

y, m

Til tiden 3.2

x, m

Figur 6.2: Plot af overflade til forskellige tidspunkter. Bølgeoverfladen ses at værekonstant i x-retningen. Sammen med figur 6.1 viser det at modellen kan regne pabølger i begge retninger.

42

Page 44: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

2 4 6 8 10 12 14 16 18

−8

−6

−4

−2

0

2

4

6

8

x 10−10

Konvolut snit i y=0.25 m T

x=T

y= 3.2s, H=1e−009m, L

x=L

y= 5m, h=0.25m, kh=0.31, H/L=2e−010, Cr=0.31 dx=dy=0.13m, dt=0.025s

x (m)

Ove

rfla

de e

leva

tion,

eta

(m

)

Figur 6.3: Konvolutplot af overfladeelevationen for en staende bølge med enbølgelængde pa 5 m.

43

Page 45: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

2 4 6 8 10 12 14 16 18

−8

−6

−4

−2

0

2

4

6

8

x 10−10

Konvolut snit i y=0.25 m T

x=T

y= 6.4s, H=1e−009m, L

x=L

y= 10m, h=0.25m, kh=0.16, H/L=1e−010, Cr=0.31 dx=dy=0.25m, dt=0.05s

x (m)

Ove

rfla

de e

leva

tion,

eta

(m

)

Figur 6.4: Konvolutplot af overfladeelevationen for en staende bølge med enbølgelængde pa 10 m.

44

Page 46: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

2 4 6 8 10 12 14 16 18

−8

−6

−4

−2

0

2

4

6

8

x 10−10

Konvolut snit i y=0.25 m T

x=T

y= 13s, H=1e−009m, L

x=L

y= 20m, h=0.25m, kh=0.079, H/L=5e−011, Cr=0.31 dx=dy= 0.5m, dt= 0.1s

x (m)

Ove

rfla

de e

leva

tion,

eta

(m

)

Figur 6.5: Konvolutplot af overfladeelevationen for en staende bølge med enbølgelængde pa 20 m.

45

Page 47: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Figur 6.6: Plot af overfladeelevationen med staende bølger i begge retninger. Derødlige nuancer er bølgetoppe og de blalige nuancer er bølgedale. Bemærk athastighederne er π/2 ude af fase i forholdt til overfladen. Dette forventes ogsa udfra teorien.

46

Page 48: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

510

1520

510

1520

−1

0

1

x 10−9

y, m

Til tiden 1.1

x, m

510

1520

510

1520

−1

0

1

x 10−9

y, m

Til tiden 2.1

x, m

510

1520

510

1520

−1

0

1

x 10−9

y, m

Til tiden 3.2

x, m

510

1520

510

1520

−1

0

1

x 10−9

y, m

Til tiden 4.3

x, m

510

1520

510

1520

−1

0

1

x 10−9

y, m

Til tiden 5.3

x, m

510

1520

510

1520

−1

0

1

x 10−9

y, m

Til tiden 6.4

x, m

Figur 6.7: Overfladeelevationen med staende bølger i begge retninger til forskelligetider. Bølgelængden er 10 m og perioden er 6,4 s. Som det ses er domænet symetriski bade x- og y-retningen. Det bemærkes hvorledes overfladegradienterne i begge ret-ninger i knudepunkterne er nul til alle tider. Ved en-dimensionelle staende bølger ergradienten kun nul 2 gange per periode. Dette er et godt tidspunkt at se filmen, somkan dowloades pa omtalte hjemmeside.

47

Page 49: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

6.2 Fremadskridende bølger

For at simulere en fremadskridende bølge, absorberes bølgen, som omtalt i afsnit 3.2,i den modsatte ende af hvor den bliver genereret. Forskellige bølger vil i det følgendeblive simuleret i modellen pa henholdsvis flad og ikke flad bund.

6.2.1 Flad bund

Pa figur 6.8 ses et konvolutplot. Det ses pa figuren hvordan relaksationslaget ab-sorberer den indkomne bølge. Tillige ses det hvordan bølgehøjden pa H = 0,001 mrammes meget præcist. Pa figur 6.10 ses udviklingen af hele domænets forskel i over-fladelevation (ηmax−ηmin) i tiden. Det ses, at ηmax−ηmin i starten vokser i opvarmn-ingsperioden, men nar bølgen har fuld højde forbliver den H = 0,001 m. Hvis reflek-tion forekommer sker det teoretisk til tiden lx/

√gh hvor lx er domænets udstrækning

i x retningen. Nar lx = 1200 m og h = 1 m, som det er tilfældet pa figuren, vil re-flektion ske til tiden t = 382 s forudsat at reflektionen sker pa randen. Reflektionenkan, som tidligere nævnt, ogsa ske ved overgangen mellem det uforstyrrede domæneog relaksationszonen. Pa figur 6.10 ses en meget lille reflektion af størrelsesordenen0,15 %. Reflektionen er vurderet visuelt ved at zoome kraftigt ind pa figur 6.10.

Erfaring viser, at reflektionen er afhængig af værdien af ysech,min. I tabel 6.2 sesudvalgte værdier for ysech,min og den tilhørende relative reflektion. I det efterfølgendebenyttes ysech,min = 0,001, da det ses, at den resulterer i den laveste reflektion.

Tabel 6.2: Reflekteret bølge ved forskellige værdier af ysech,min. Den reflekteredebølgehøjde er vurderet ved at zoome kraftigt ind pa grafen. lx = 1200 m, L = 240 m,kh = 0,026, H = 0,001 m, ∆x = 6 m, ∆t = 0,3 s

ysech,minHreflek

H

0,1 0,0051 · 10−3 0,00155 · 10−4 0,003510−6 0,023

Der simuleres forskellige bølgelængder i modellen. En forventet periode T beregnesfra lineær fladvandsteori, idet det er de ligninger modellen bygger pa. Saledes kan denforventede periode udregnes til

Tforventet =L√gh

(6.1)

Dybden, h holdes pa en konstant værdi, h = 1 m, domænets dimensioner sættes tillx = 250 m og ly = 25 m. Opløsningen af domænet samt simuleringstid konstrueres

48

Page 50: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

0 200 400 600 800 1000 1200−5

−4

−3

−2

−1

0

1

2

3

4

5x 10

−4 T= 77, H=0.001, L=2.4e+002, hmin= 1 kh=0.026, H/L=4.2e−006, Cr=0.24, dx= 6, dy= 5, dt=0.45

x (m)

Ove

rfla

de e

leva

tion,

eta

(m

)

Figur 6.8: Konvolutplot af fremadskriden bølge. L = 240 m, h = 1 m, kh = 0,026,ysech,min = 0,001.

saledes, at en bølgelængde bliver opløst med i størrelsesordnen 50 punkter. Samtidigholdes Couranttallet omkring 0,4.

Tabel 6.3: Afvigelsen i perioden i forholdt til bølgehastigheden af en lineær flad-vandsbølge for forskellige bølgelængder.

L kh Tforventet Tmodel Tfejl TstokesTStokes

Tmodel

62,8 0,10 20,05 20,04 0,01 20,08 1,00120,9 0,30 6,67 6,67 0,00 6,77 1,01511,2 0,56 3,57 3,59 0,02 3,75 1,044

Perioden i modellen er fundet ved en zerocrossing analyse. Lineær interpolationblev brugt til at finde skæringspunktet. Under undersøgelsen blev det bemærkethvorledes nøjagtigheden af Tmodel set i forholdt til Tforventet afhang af blandt an-det af opløsningen af en bølge og antal simulerede bølger. Det kom ikke som nogen

49

Page 51: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Figur 6.9: Bølgeprofilen som funktion af tiden. Det ses hvordan bølgen bevæger sigelængere og længere ned gennem domænet for til sidst at blive absorberet i omkringx = 1000 m. L = 240 m, h = 1 m, kh = 0,026, ysech,min = 0,001.

overraskelse, idet det er meget svært at bestemme perioden af en darlig opløst bølge.Er bølgen derimod meget godt opløst eller er der stort statistisk materiale fra mangesimulerede bølger vil nøjagtigheden af zerocrossing analysen forbedres.

Fra tabellen ma det konkluderes, at modellen handterer lineære fremadskridendebølger tilfredsstillende. Bølgehastigheden, der blev fundet, stemte godt overens medden forventede. Det kan selvfølgelig ikke forventes, at modellen finder Stokes bølge-hastigheden, da ligningerne der ligger til grund for modellen netop resulterer bølge-hastigheden for lineære fladvandsbølger. Grunden til at perioderne beregnet ud fraStokes lineære dispertions relation er medtaget, er blot at illustrere, at den ikke giverdet samme som den fladvandsdipertionsrelationen.

50

Page 52: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

0 50 100 150 200 250 300 350 400 4500

0.2

0.4

0.6

0.8

1

1.2x 10

−3

t ,sek

H, m

Figur 6.10: Forskellen mellem maksimal og minimal overfladeelevation i hele domænetsom funktion af tiden. Absorptionslaget er ca. 1,1L. ysech,min = 0,001. Samme bølgesom ses pa figur 6.8.

6.2.2 Variabel bund og shoaling

Shoaling

Som omtalt i afsnit 2.1.3 ændres bølgernes karakteristika nar vanddybden ændres.Ved at ændre bunden lineært fra dybden h = 1 m i x = 0 m til dybden h = 0,5 m i x =1200 m og holde den uændret i y-retningen, forventes der ændringer i bølgehøjden,-længden og -hastigheden. Pa figur 6.11 ses hvordan bølgehøjden varierer med afs-tanden. I afstanden x = 921 m, hvor bunden saledes er h = 0,616 m, er bølgehøjdenH = 1,09 · 10−3 m. Fra teoriafsnittet vides det, at bølgehøjden kan udregnes til

H2 = 4

√h1

h2

H1 = 4

√1m

0,62m1 · 10−3m = 1,13 · 10−3m (6.2)

Forskellen mellem den beregnede og den i modellen fundne bølgehøjde er 3,5%og skyldes formodentlig de antagelser der er gjort i forbindelse med udledning afbølgehøjdens variation med h. Under udledningen blev der set bort fra led af højereorden end 2. Modellen derimod ignorerer ikke de højere ordens led.

Pa nederste del af figur 6.11 ses ogsa et lille set-down. Set-down-et vil ikke blive

51

Page 53: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

kvantificeret, men tilstedeværelsen bemærkes og det vides fra blandt andet Svendsen& Jonsson (1982), at fænomenet kan forventes.

0 200 400 600 800 1000 1200

−5

0

5x 10

−4 T= 77, H=0.001, L=2.4e+002, hmin= 1 kh=0.026, H/L=4.2e−006, Cr=0.24, dx= 6, dy= 5, dt=0.45

x (m)

Ove

rfla

de e

leva

tion,

eta

(m

)

0 200 400 600 800 1000 12000

0.2

0.4

0.6

0.8

1

1.2x 10

−3

x (m)

H (

m)

maksimal bølgehøjde H=0.00109m i x= 921m, h=0.616m

Figur 6.11: Bølge konvolut af bølge pa variabel bund. Nederste plot viser bølgehøjdensom funktion af x. h = 1 m for x = 0 m og h = 0,5 m for x = 1200 m. L = 240 m,h = 1 m, kh = 0,026, ysech,min = 0,001.

Pa figur 6.12 ses et plot af bølgeprofilen som funktion af tiden. Det bemærkeshvordan bølgetoppene, de røde linier ikke, som i tilfældet med flad bund, er rette linier.Det skyldes, at hastigheden ændres nar bunden ændres. Hældningen af de røde linierhar udtrykket ∂x

∂t, som er hastigheden af bølgerne. Det ses hvorledes hældningen, og

dermed hastigheden, falder som dybden falder. Det stemmer overens med udtrykketfor bølgehastigheden, nemlig c =

√gh.

Refraktion

Nar der tales om refraktion udnyttes det, at bølgen ændrer hastighed nar bundenændres. I 2 dimensioner kan retningen af bølgefronten dreje hvis bunden ændres ibegge dimensioner.

Pa figur 6.13 ses domænet oppe fra. Det ses hvorledes bølgerne drejer. I øverstehøjre hjørne er dybden h = 0,20 m og i nederste venstre hjørne er dybden h = 1 m.Situationen er analog med en der ses pa eksempelvis en strand. Bølgerne har en vinkelpa kysten pa 45.

52

Page 54: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Figur 6.12: Bølgeprofil som funktion af tiden, t pa variabel bund. h = 1 m for x = 0 mog h = 0,5 m for x = 1200 m. L = 240 m, h = 1 m, kh = 0,026, ysech,min = 0,001.

Bundvariationen i henholdsvis y = 0 m og y = 1200 m er udtryk som

h(x)∣∣y=0m

= 1m− 0,4

1200x

h(x)∣∣y=1200m

= 0,6m− 0,4

1200x (6.3)

Starter en bølge i x = 0 m til tiden t = 0 s kan tiden det tager at bevægesstrækningen l udregnes til. Det antages her, at bølge hastigheden kun er langs x-aksen. Dvs. en meget lille drejning.

53

Page 55: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

t(l) =

∫ l

0

∆x

clokal

=

∫ l

0

∆x√gh(x)

=

∫ l

0

∆x√g(a− bx)

=

[− 2(a− bx)

b√

g(a− bx)

]l

0

=2a

b√

ga− 2(a− bl)

b√

g(a− bl)(6.4)

Hvis en bølgefront starter til samme tid to forskellige steder pa fronten. Til enstidpunkter (lidt senere) er der stadig tale om ”samme bølgefront”blot et andet sted.Ved at opstille ligning (6.4) to forskellige steder pa samme bølgefront kan tiden elim-ineres, da hele bølgefronten har været ”afsted”i lige lang tid. Langs kanten y = 0 msættes a = a1 og ved kanten med y = 1200 m er a = a2. b, hældningen i x-retningen= ∂h

∂x, er ens pa de to kanter.

√a1 −

√a1 − bl1 =

√a2 −

√a2 − bl2 (6.5)

Det aflæses visuelt pa figur 6.13, at for y = 0 m er der en bølgetop i x ≈ 850 m.Samme bølgetop observeres i y = 1200 og x ≈ 700 m.

Ved indsættelse af l1 = 850 og a1, a2 og b som i ligning 6.4 findes l2 = 642 m.Værdien er ca. 60 m forbi den i modellen beregnede. Afvigelsen svarer til 9% i forholdttil den teoretiske værdi.

Grunden til fejlen er formodentligt, at bunden varierer i en sadan grad, at an-tagelsen om svagt varierende bund ikke er god nok. Desuden er bølgen drejet 7 i(x, y) = (700 m, 1200 m) hvorfor antagelsen om, at bølgerne ikke drejer ikke er heltopfyldt.

Schnells lov kan ikke bruges i denne situation, idet bunden varierer væsentligt overen bølgelængde. En vinkel i samme punkt som beregningseksemplet ovenfor, giver fraSchnells lov 51 , hvilket er endnu mere forkert.

Det bemærkes, at modellen ogsa kan lave fremadskridende bølger, som reflekteresi modsatte ende og kastet tilbage. En animation af det kan downloades pa:www.student.dtu.dk/~c973782/film.html.

54

Page 56: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Figur 6.13: Plot af domænet set oppe fra. h = 1 m for (x,y) = (0m,0m) og h = 0,2 mfor (x,y) = (1200m,1200m). L = 240 m, h = 1 m, kh = 0,026, ysech,min = 0,001.Pa www.student.dtu.dk/∼c973782/film.html kan en animation svarende til plottetdownloades.

55

Page 57: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Kapitel 7

Ulineære bølger

7.1 Fremadskridende bølger

Figur 7.1 viser et snit i bølgens udbredelses retning. Som det ses ”tipper”bølgen lidtfremad. Som det blev nævnt i teoriafsnittet skyldes det, at nar der regnes ulineærtafhænger hastigheden af højden af den lokale vandsøjle, h + η, hvorfor bølgetoppenbevæges hurtigere end bølgedalen. Pa den sidste bølge i x ≈ 920 m ses toppen atvære forskellig fra den der fysisk matte forventes. Grunden hertil er, at de gradienteroverfladen har i det punkt er sa store, at modellen ikke kan handtere dem.

En tidsserie for samme bølge som figur 7.1 kan ses pa figur 7.2. Den røde stipledelinie er en tidsserie for en lineær bølge. Det ses, at formen af bølgerne er megetforskellige, men at perioden stemmer nogenlunde.

Tabel 7.1: L = 239,8 m, h = 1 m

Hh

Tlin Tulin Tmodel

0,01 76,53 s 76,72 s 76,58 s0,001 76,53 s 76,54 s 76,58 s0,0001 76,53 s 76,53 s 76,58 s

Tabel 7.1 viser malte og beregnede perioder for forskellige værdier af H/h. Frateorien omtalt i afsnit 2.2.1 matte det forventes, at bølgen skulle være amplitudedipertiv. Modellen er dog ikke særlig amplitude dispertiv. Det er kun ved H/h = 0,001perioden beregnet fra den kvasi-ulineære udtryk for bølgehastigheden, ligning (2.20),giver et bedre resultat end den lineære. I det første tilfælde, hvor H/h = 0,01 er bølgentilsyneladende sa ulineær, at den kvasilineære analyse der blev lavet i teoriafsnittetikke kan benyttes. Ved H/h = 0,0001 er bølgen sa lineær, at ulineariteten ikke harnogen synlig effekt.

56

Page 58: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

7.1.1 Begrænsninger fra overfladehældningen

Bliver bølgehøjden tilstrækkelig stor ses det, at modellen bryder sammen. Grundenhertil er, at bølgetoppen er pa vej til at ”overhale”bølgedalen, hvorved overfladegradi-enten bliver for stor. Sammenbrudet vil ske før eller siden nar bare H/h À L2/h2. Pafigur 7.1 ses det, at bølgen sa smat er ved at bryde sammen ved den sidste bølge. Detses ogsa hvordan toppen fra bølge til bølge kommer tættere og tættere pa dalen. Føreller siden bryder bølgen saledes sammen. Pastanden om at bølgen bryder sammenfør eller siden understøttes ved at sammenligne figur 7.1 og 7.3, hvor samme bølge erplottet. Pa figur 7.3 er domænet hvori bølgen bevæges blot forlænget saledes at der

100 200 300 400 500 600 700 800 900 1000 1100−0.03

−0.02

−0.01

0

0.01

0.02

0.03

Sammenligning med sinus kurver og snit i x til tiden t=450.00 T= 77, H=0.05, L=2.4e+002, hmin= 1 kh=0.026, H/L=0.00021, Cr=0.24, dx= 6, dy= 6, dt=0.45

x

Ove

rfla

deel

evat

ion

Beregnede overflade elevationLineær analytisk bølge til sammenligningOverfladehældningen, eta

x. OBS: ganges med faktor 0.09.|max(eta

x)|=0.0023

Figur 7.1: Figuren viser en sammenligning mellem den ulineært modelleredebølgeprofil og en sinuskurve, dvs. bølgeprofilen, hvis der blev regnet lineært. H/h =0,05, L = 240 m, kh = 0,026.

57

Page 59: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

kan være yderligere 2 bølgerlængder sammenlignet med domænet i figur 7.1.En made problemet kan løses pa, er ved at tilføre numerisk diffusion ved en an-

den diskretisering i sted (Ferziger & Peric, 2002) eller en form for udglatning pa defluktuationer der opstar. Den metode udglatter overfladeprofilen, men problemet erdet samme: Bølgetoppen er pa vej til at overhale bølgedalen; formen af bølgen er ikkekonstant pa konstant dybde.

En mere oplagt og langt mere anvendelig made er ved at lave om pa de styrendeligninger. Ved at tilføje Boussinesq led vil bølgen ikke ændre form pa konstant dybde.

Det bemærkes, at modellen finder en løsning til de opstillede ligninger selv omresultatet ser ufysisk ud. Løsningen der ses pa figur 7.4 er eksempelvis fundet medmaksimal 8 iterationer hvor minimum residualet er 1 · 10−7. Altsa modellen finder enløsning, der passer i de styrende ligninger, men løsningen er ufysisk.

220 240 260 280 300 320 340 360 380 400 420−0.025

−0.02

−0.015

−0.01

−0.005

0

0.005

0.01

0.015

0.02

0.025 T= 77, H=0.05, L=2.4e+002, hmin= 1 kh=0.026, H/L=0.00021, Cr=0.24, dx= 6, dy= 6, dt=0.45

t

Ove

rfla

deel

evat

ion

Tidsserie af η fra modellenTidsserie af lineær bølge

Figur 7.2: Tidsserie af overfladeelevationen. H/h = 0,05, L = 240 m, kh = 0,026.

58

Page 60: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

200 400 600 800 1000 1200 1400 1600

−0.04

−0.03

−0.02

−0.01

0

0.01

0.02

0.03

0.04

Sammenligning med sinus kurver og snit i x til tiden t=450.00 T= 77, H=0.05, L=2.4e+002, hmin= 1 kh=0.026, H/L=0.00021, Cr=0.24, dx= 6, dy= 6, dt=0.45

x

Ove

rfla

deel

evat

ion

Beregnede overflade elevationLineær analytisk bølge til sammenligningOverfladehældningen, eta

x. OBS: ganges med faktor 0.13.|max(eta

x)|=0.0051

Figur 7.3: Samme bølge som ved figur 7.1 blot i et længere domæne. H/h = 0,05,L = 240 m, kh = 0,026.

59

Page 61: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

100 200 300 400 500 600 700 800 900 1000 1100

−0.1

−0.08

−0.06

−0.04

−0.02

0

0.02

0.04

0.06

0.08

0.1

Sammenligning med sinus kurver og snit i x til tiden t=450.00 T= 77, H= 0.1, L=2.4e+002, hmin= 1 kh=0.026, H/L=0.00042, Cr=0.24, dx= 6, dy= 6, dt=0.45

x

Ove

rfla

deel

evat

ion

Beregnede overflade elevationLineær analytisk bølge til sammenligningOverfladehældningen, eta

x. OBS: ganges med faktor 0.14.|max(eta

x)|=0.014

Figur 7.4: Bølgeprofil ved sammenbrud. H/h = 0,1, L = 240 m, kh = 0,026.

60

Page 62: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

7.2 Staende bølge

0 50 100 150 200 250 300 350 400 450 500

−8

−6

−4

−2

0

2

4

6

8

x 10−3

x (m)

Ove

rfla

de e

leva

tion,

eta

(m

)

Figur 7.5: Profilet af en staende bølge hvor ulineære led er medtaget. H/h = 0,01,L = 166,7 m, kh = 0,038.

Af figurene 7.5 og 7.6 ses det hvordan ulineariteten bliver særligt udtalt vedstaende bølger. Ved en zerocrossing analyse af variationen af η i et enkelt punktfindes perioden til T = 53,19 s for begge tilfælde. Som ogsa konkluderet i sidste afs-nit er bølgen meget lidt amplitude dispertiv, idet der ikke er nogen malbar forskel iperioderne.

Det ses ogsa, at knudepunkterne, som i det lineære tilfælde la helt stille nubevæges. Ikke overraskende er den effekt, der selvfølgelig stammer fra de lineæreled, mest fremhævet ved den mest ulineære bølge.

61

Page 63: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

0 50 100 150 200 250 300 350 400 450 500

−4

−3

−2

−1

0

1

2

3

4

x 10−4

x (m)

Ove

rfla

de e

leva

tion,

eta

(m

)

Figur 7.6: Staende bølge. Bølgen er mindre ulineær end bølgen vist pa figur 7.5H/h = 0,0005, L = 166,7 m, kh = 0,038.

62

Page 64: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Kapitel 8

Vindreven setup

For at teste HENNING2045s beregninger af vinddrevne strømninger og overfladesetupses der pa en række domænekonfigurationer. De har det til fælles, at de alle dækkeret omrade pa 5 km gange 2km og har et skridtafstand i sted pa 100 m.

8.1 Flad bund

I den først test sættes vanddybden til 10 m over hele domænet og vinden blæsermed 35 m/s. Manning tallet sættes til 1 for hurtigere at opna den stationære til-stand. Dette har ikke betydning for overfladens stationære hældning, da friktionensbetydning forsvinder nar hastighederne alle er nul. Det betyder dog at hastighedenaf udviklingen i tid ikke vil være den samme som hvis Manning-tallet var højere. Pafigur 8.1 ses resultatet af simuleringen.

Ud fra ligning (2.33) kan hældningen af overfladen beregnes som

ηx =0,0026 1,25 kg/m3

1000 kg/m3

9,82 m/s2 · 10 m(35 m/s)2 cos(0) = 40,5µ m/m (8.1)

ηy =0,0026 1,25 kg/m3

1000 kg/m3

9,82 m/s2 · 10 m(35 m/s)2 sin(90) = 0 (8.2)

Dette skulle give en højdeforskel i et 5000 m langt domæne pa 0,20 m. Som detses af 8.2 passer dette fint med resultatet fra modellen, som ogsa giver en forskel pa0,2 m. Pa figur 8.3 ses det hvordan vandet skvulper frem og tilbage i domænet medaftagende hastighed. Da bunden er plan vil fluksen igennem et snit i begge retningervære propertional med udsvingene i hastighed. Det ses pa figur 8.4.

En lidt anden situation fas ved at gøre domænet kvadratisk med en sidelængde pa5 km. Herefter sættes vinden ind i en 45 graders vinkel pa domænet. Overfladehæld-ningen bliver nu den samme i begge retninger og af størrelsen 28,7 µ m/m, hvilket var

63

Page 65: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

lidt lavere end før. Det svarer til en elevationsforskel pa 0,14m i begge retninger. Detses ogsa af figur 8.5 og 8.6. Strømningsfeltet er vist pa figur 8.7. Her ses to hvirvler ihjørnerne. Det skyldes at strømningen ikke kan ændre retning i et punkt, da det vilkræve uendelig acceleration. Derfor sker der seperation og hvirvlerne opstar. Mindskesskridtlængden vil flere og flere af denne type hvirvler komme til syne. I virkelighedenvil fænomenet ophøre nar hvirvlerne bliver af en størrelsesorden hvor viskositetendominerer.

Figur 8.1: Ovefladeelevationen og strømningsforholdene efter lidt over 2 timer. Be-mærk at den længste vektor repræsenterer en hastighed under 10−4 m/s.

64

Page 66: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Figur 8.2: Overfladeelevationens udvikling i tid. Det ses, at overfladeelevationen ikkeændrer sig væsentligt efter 7000 s. Forskellen mellem den højste og laveste overfladeel-evation er 0,2 m.

65

Page 67: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

0 1000 2000 3000 4000 5000 6000 7000 8000−0.01

−0.005

0

0.005

0.01

0.015

0.02

0.025

0.03

U og V hastighederne som funktion af tiden i punktet (x,y)=(2600.00,1000.00) h

min= 10m, h

max= 10m, dx=1e+002m, dy= 1e+002m, dt= 2.2m, Cr

x,max=0.22, Cr

y,max=0.22

tid

Has

tighe

der,

U o

g V

(m

/s)

UV

Figur 8.3: u ses at ga imod nul midt i domænet og v er altid nul.

66

Page 68: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

0 1000 2000 3000 4000 5000 6000 7000 8000−200

−100

0

100

200

300

400

500

600

hmin

= 10m, hmax

= 10m, dx=1e+002m, dy= 1e+002m, dt= 2.2m, Crx,max

=0.22, Cry,max

=0.22

tid − [s]

flux

− [m

3/s]

Flux igennem snit i x−retningenFlux igennem snit i y−retningen

Figur 8.4: Da bunden er vandret ses fluksen, pa samme made som hastigheden, at gaimod nul igennem et snit midt i domænet.

Figur 8.5: Forskellen i overfladeelevation i x-retningen ses at være omkring 0,14 m.

67

Page 69: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Figur 8.6: Forskellen i overfladeelevation i y-retningen ses at være omkring 0,14 m.Det er den samme som i x-retningen.

68

Page 70: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

0 500 1000 1500 2000 2500 3000 3500 4000 4500 50000

500

1000

1500

2000

2500

3000

3500

4000

4500

5000

Hastighedsfelt til tiden t=7999.92s. Maks hastighed: umax

=0.0002m/s h

min= 10m, h

max= 10m, dx=1e+002m, dy= 1e+002m, dt= 2.2m, Cr

x,max=0.22, Cr

y,max=0.22

x, m

y, m

Figur 8.7: Her ses strømningsfeltet efter lidt over 2 timer med vinden ind pa i en 45graders vinkel op mod øverste højre hjørne. Bemærk at det længste vektor svarer tilen hastighed pa 2 · 10−4 m/s. Det vil sige den er næsten stationær. u → 0 for t →∞.Domænets udformning har ogsa bevirket at der er opstaet to afkoblede hvirvler ihjørnerne.

69

Page 71: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

8.2 Krum bund

En anden interessant opsætning af domænet er med en størrelse pa 5 km gange 2 km,men nu med en variabel bunddybde. Dybden opnas ved følgende opsætning af bund-parametrene

hmin 10zEndX 0zEndY 0zBuleX -4zBuleY 0LBuleX 0,5LBuleY 0,5

Opsætningen giver en bund 50 m under overfladen det dybeste sted og 10 m detlaveste. Dybden varierer kun i x-retningen og variationen er parabolsk. Vinden er sattil at blæse i y-retningen, som ogsa er den længste led. Resultat ses af figur 8.8. Somdet ses er hastighederne ikke nul i den stationære situation og der er dannet to storehvirvler. Vandet løber mod vinden pa det dybeste sted. Det skyldes at bundfriktionener lavest her. Et plot kun af hastighedsvektorerne ses pa figur 8.9.

Ligning (2.35) fra teorien i afsnit 2.5.2 benyttes til at estimere v-hastigheden paen af siderne i punktet for x = 0 m og y = 2500 m:

v ≈√

fW 2M2h1/3

g=

√√√√0,0026 1,25 kg/m3

1000 kg/m3 (35 m/s)212(10 m)1/3

9,82m/s2 = 0,030 m/s (8.3)

Dette er dog under forudsætning af en stationær tilstand hvor vy ≈ ηy ≈ 0. v-hastigheden i modellen pa den pagældende sted er 0,0256 m/s. Dette afviger lidt men”kvaliteten”af resultatet afhænger ogsa af hvorvidt antagelserne er opfyldt. Det førsteder skal være opfyldt er at tilstanden er stationær. Af figur 8.10 ses det at ændringenaf overflade hældningen gar imod nul. Hastighederne er ogsa ved at blive stationære,hvilket ses af figur 8.11

Fra modellen estimeres gradienterne med en CDS til vy = 3,1 · 10−9 og aflæst pafigur 8.12 til ηy = 1 · 10−5. Antagelsen omkring vy ≈ 0 ma siges at være opfyldt,da gradienten er meget lille i forhold til hastigheden pa 0,0256 m/s. Forklaringen iafvigelsen mellem den teoretiske og malte v-hastighed ligger mere i ηy ≈ 0. Den malteηy er stadig stor. Den er kun en faktor 10 lavere end den der blev fundet i afsnit 8.1,hvor bunden var plan.

70

Page 72: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Figur 8.8: Plottet viser et næsten stationært strømningsfelt dannet pa en krum bund.Som det ses er hastighederne ikke forsvindende pa samme made som for plan bund.Den højeste hastighed ses at være 0,026 m/s. Der ses at være dannet to store hvirvleri domænet. Vandet løber mod vindretningen pa det dybeste sted.

71

Page 73: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

−500 0 500 1000 1500 2000 25000

1000

2000

3000

4000

5000

6000

Hastighedsfelt til tiden t=4999.95s. Maks hastighed: umax

=0.0256m/s h

min= 10m, h

max= 50m, dx=1e+002m, dy= 1e+002m, dt= 1.1m, Cr

x,max=0.25, Cr

y,max=0.25

x, m

y, m

Figur 8.9: Her ses et næsten stationært strømningsfelt dannet pa en krum bund. Denhøjeste hastighed ses at være 0,026 m/s. Der ses at være dannet to store hvirvler idomænet.

72

Page 74: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000−800

−600

−400

−200

0

200

400

600

800

1000

hmin

= 10m, hmax

= 50m, dx=1e+002m, dy= 1e+002m, dt= 1.1m, Crx,max

=0.25, Cry,max

=0.25

tid − [s]

flux

− [m

3/s]

Flux igennem snit i x−retningenFlux igennem snit i y−retningen

Figur 8.10: Af plottet ses at fluksen igennem et snit i begge retninger gar mod nul.Dette betyder at overfladehældningen ogsa er ved at rette sig ind pa en stationærtilstand.

73

Page 75: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000−0.02

−0.015

−0.01

−0.005

0

0.005

0.01

U og V hastighederne som funktion af tiden i punktet (x,y)=(1100.00,2500.00) h

min= 10m, h

max= 50m, dx=1e+002m, dy= 1e+002m, dt= 1.1m, Cr

x,max=0.25, Cr

y,max=0.25

tid

Has

tighe

der,

U o

g V

(m

/s)

UV

Figur 8.11: Hastigheden i et punkt i domænet er vist her. Ændringerne i v-hastighedenbliver mindre og indikerer at tilstanden er næsten stationær. u-hastigheden er altidnæsten nul.

74

Page 76: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Figur 8.12: Overfladehældning i tilfældet med en krum bund. Overfladehældningen iy-retningen aflæses her til ηy ≈ 1 · 10−5.

75

Page 77: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Kapitel 9

Von Neumann stabilitetsanalyse

Stabiliteten, som blev undersøgt teoretisk i afsnit 3.3 bliver i det følgende undersøgtpraktisk med modellen. Det er kun konvergensen der bliver undersøgt og ikke hvorvidtmodellen giver fysiske resultater blot løsningen konvergerer. Undersøgelsen blev fore-taget med trial and error ; indsætte værdier og se om der er konvergens. Nøjagtighedenstrækker sig til tredie decimal. Ikke fordi det er væsentligt at have en sa høj nøjagtighed,men fordi sammenligningerne, som det senere ses, gør det nødvendigt.

I tabel 9.1 ses resultatet af undersøgelsen, hvor der blev undersøg tre forskelligefaktorer: linearitet, H/h og kh. Overraskende nok ses det, at H/h spiller en rolle ikonvergenskriteriet for bade lineære og ulineære bølger. Konvergensen for de lineærebølger burde, som undersøgt med Von Neumann stabilitetsanalysen, kun afhænge af∆t, ∆x og

√gh. Ud over at bade den lineære og ulineære begge afhænger af H/h ses

det, at de ogsa begge afhænger af kh, dog i en noget mindre grad. Det bemærkes ogsahvorledes stabilitetskravene generelt er skrappere for den lineære model i forholdt tilden ulineære.

Men hensyn til størrelsen af det maksimale Couranttal ligger det omkring 0,4.I følge stabilitetsanalysen fra afsnit 3.3 burde Couranttallet i det lineære tilfældekunne antage værdier helt op til 0,505. Men det eksperimentelt fundne Couranttal ertæt pa det teoretiske, hvorfor det teoretiske tjener som en god indikation til hvilkenstørrelsesorden Couranttallet maksimalt ma antage.

For at undersøge stabilitetsforholdene yderligere blev stabiliteten undersøgt forsamme konfiguration som i afsnit 8.2, dvs. vindsetup pa krum bund. Her blev sta-bilitetsgrænsen fundet ved et Couranttal pa 0,302 baseret pa den maksimale dybde.Dette er lavere end kravene fra Von Neumann analysen.

Konklusionen er derfor, at kravet til Couranttallet fra Von Neumann analysenkun er et nødvendigt krav og ikke et tilstrækkeligt krav.

76

Page 78: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Tabel 9.1: Eksperimentelt fundne Cumaks.

Hh

kh Cumax

lineær 0,001 0,026 0,443lineær 0,01 0,026 0,376lineær 0,001 0,016 0,439ulineær 0,001 0,026 0,446ulineær 0,01 0,026 0,376ulineær 0,001 0,016 0,440

77

Page 79: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Del IV

Opsamling

78

Page 80: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Kapitel 10

Evaluering af model

Evalueringen af modellen kan deles op i to omrader. Dels vurderingen af modellensnumeriske egenskaber og dels evalueringen af modellens resultater i hydrodynamisksammenhæng.

For at tage det numeriske op først, sa er en af HENNING2045s bedste sider denstrukturerede kode. Dette har blandt andet den fordel, at koden er nem at udvidemed højere ordens Boussinesqled. Desuden er det nemt at finde fejl. Det betyder sidstmen ikke mindst, at koden er nem at læse og finde rundt i.

I diskretiseringen af de styrende ligninger er der valgt staggered grid sammen meden diskretisering til 4. orden i sted. Skridtene i tid foretages med en 4. ordens Adam-Bashforth-Moulton predictor-corrector metode. Denne høje orden af diskretiseringensikrer, at Boussinesq leddene med en begrænset indsats kan medtages.

Staggered grid har været en stor fordel i modelleringen af lukkede rande. Imidler-tidig har det betydet at den øvre grænse for Couranttallet teoretisk set er reduceretmed 40 % i forhold til hvis det var non-staggered. Det vil i realiteten sige, at det ernødvendigt med mindre tidsskridt for at fa konvergens. Det har ogsa haft den ulempe,at bogholderiet i programmet er vokset i forhold til hvis gridded havde være non-staggered. Stabilitsanalysen viste ogsa, at højere ordens diskretisering i sted, teoretiskset betyder en reduktion af det maksimale Courranttal.

Det maksimale Courranttal er fundet ud fra en Von Neumann stabilitetsanalyseaf de diskretiserede ligninger. Resultatet fra denne analyse har sat en øvre grænse forCourranttallet pa 0,505. Modellen konvergerede i praksis først ved et lavere Courrant-tal. For fremadskridende bølger blev modellen ustabil ved 0,44 og med vinddrevensetup allerede ved 0,3.

Ses der pa valget af programmeringssprog sa er fordelen ved at implementerenumerikken i Fortran 95 at den umiddelbart er klar til parallelprocessering. Det erdog utvivlsomt nødvendigt, at justere en del ting for at fa det fulde udbytte af atafvikle programmet pa flere processorer.

Samspillet med MATLAB har fungeret upaklageligt. Brugen af MATLAB har

79

Page 81: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

givet gode muligheder for at fa resultaterne visualiseret pa en nem og flot made. Ulem-pen er dog i denne sammenhæng, at programmets I/O-del er knyttet unødvendigttæt til MATLAB. En yderligere ulempe ved I/O-delen er den darlige udnyttelse afprocessoren og harddisken, idet data bliver skrevet i meget sma portioner til hard-disken.

Vurderingen af de hydrodynamiske resultater for programmet er pa sin vis vanske-lig. Pa den ene side kunne det ønskes at modellen kunne handtere ulineære bølgerbedre end den gør. Pa den anden side er modellen ikke bedre i beskrivelsen afbølgefænomener end de styrende ligninger gør den i stand til.

I handteringen af linære fladsvandsbølger gav modellen gode resultater bade forstaende og fremadskridende bølger. Den teoretiske beregnede periode og perioden imodellen havde under 0,02 % afvigelse. Ved shoaling fandtes en afvigelse pa under 4% mellem den teoretiske ændring af bølgehøjden og modellens. Modellens handteringaf refraktion er lidt vanskelig at vurdere, da teorien muligvis ikke er helt korrekt. Derkan derfor ikke tillægges stor betydning til de 9 % afvigelse, der blev fundet.

Teorien til vurdering af ulineære bølger er ogsa lidt svag. Ifølge teorien skulleulineære bølger være amplitudedispertiv. Det vil betyde at T skulle øges for voksendeHh

men i modellen ændredes den ikke.Modellens handtering af vinddreven setup kan ogsa siges at være fornuftig. For

setup pa plan bund fandtes der ingen forskel mellem den beregnede højdeforskelover domænet og højdeforskellen i modellen. For at vurdere modellens resultat narbundprofilet var krum blev der i et givent punkt beregnet en hastighed pa 0,030 m/s.Strømningshastigheden i modellen i samme punkt var 0,026, altsa en afvigelse pa-15 %. Det kunne dog sandsynliggøres at denne afvigelse skyldtes de antagelser, derla bag den teoretiske udregning.

Det ma konstateres at medtagelse af de ulineære led kun har relevans for vind-drevne strømninger. I forbindelse med fremadskridende og staende bølger gjorde deulineære led mere skade end gavn. Resultaterne viser at disse ulineære led kun skalmedtages sammen med Boussinesqleddene. I modsat fald fas blot en mere ufysiskbølge.

80

Page 82: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Kapitel 11

Udvidelsesmuligheder

En oplagt udvidelses mulighed er at tilføje Boussinesq leddene. Gennem opbygnin-gen af modellen, af diskretiseringsordnen samt implementeringen af koden er lavetmed henblik pa senere implementering af Boussinesq led. Boussinesq leddene vil,som nævnt, forbedre modellen væsentligt pa bølgeomradet. Denne udvidelse af degrundlæggende analytiske ligninger og det numeriske skema kan udbygges successivtmed led af højere og højere orden.

Et andet indsatsomrade er randene, hvor der er forskellige ting der kan forbedres.Skal udviddelsen forega nogenlunde kontinuert i sværhedsgrad ville første oplagteudvidelse være at abne randene. Derved ville de vinddrevne strømningers anven-delsesomrade ekspanderes. Laves pundprofilet mere fleksibelt, som er næste udvidelses-mulighed, og ikke bundet af et 2.gradspolynomium i to retninger abner det mulig forat sammenligne modellen med virkelige strømningssituationer med mere komplicerettypografi. Skulle modellen ogsa virke op mod kysten ville det ogsa være nødvendigtat handtere et ikke firkantet domæne. Implementeringen af denne udvidelse er umid-delbart mere kompliceret end de øvrige, men ikke umulig.

Pa programmerings omradet kan programmet I/O handtering forbedres som om-talt afsnit 4.2. Desuden vil det være hensigtsmæssigt overfor de brugere der ikkehar MATLAB installeret, at fjerne afhængigheden af samspillet mellem Fortran ogMATLAB. Nar den afhængighed er fjerne er vejen banet til eksempelvis at laveen web-baseret version af programmet, hvor brugerfladen skrives i Java, eller andrebrugerflader, hvor MATLAB ikke nødvendigvis bruges som præsentationsværktøj.

81

Page 83: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Litteratur

Bingham, H. B. & Agnon, Y. (2002). A fully dispersive fourier-boussinesq methodfor nolinear water waves. Submitted to Royal Society.

Eising, J. (1997). Lineær Algebra. Institut for Matematik Danmarks Tekniske Uni-versitet. 3. oplag.

Ferziger, J. & Peric, M. (2002). Computational Methods for Fluid Dynamics. Springer,3rd edition.

Fredsøe, J. (1994). Hydrodynamik. Den private Ingeniørfond. 3 udgave.

Jonsson, I. (1990). Steep water waves. Lecture note to ISVA courses, DTU, Denmark.

Metcalf, M. & Reid, J. (2002). Fortran 90/95 explained. Oxford University Press,2nd edition.

Skourup, J. (1998). Stream function wave theory. Lecture note to ISVA courses,DTU, Denmark.

Svendsen, I. A. & Jonsson, I. G. (1982). Hydrodynamics of Coastal Regions. Denprivate Ingeniørfond.

Wei, G., Kirby, J. T., Grilli, S. T., & Subramanya, R. (1995). A fully nonlinear boussi-nesq model for surface waves. part 1. highly nonlinear unsteady waves. Journal ofFluid Mechanics, 294, 71–92.

82

Page 84: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Del V

Bilag

83

Page 85: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Bilag A

Analyse af ulineærefladvandsligninger

84

Page 86: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG A. ANALYSE AF ULINEÆRE FLADVANDSLIGNINGER 85

Analyse af ikke lineære fladvandsligninger

Definition af fasen

In[1]:= t k x;

Bølgens form antages at være den samme som den lineære:

In[2]:= x_, t_ a1Cos;In[3]:= ux_, t_ u1Cos;Styrende ligninger. De ikke-afledte led i de ulineære led regnes som konstante. Vi har derfor en kvasi-unlineær analyse.

In[4]:= mom g x x, t tux, t uk xux, t;In[5]:= mas h xux, t ukxx, t akxux, t tx, t;Koefficient matricen i a1og u1.

In[6]:= Matr ExpandCoefficientmom, mas, a1, u1, a1, u1Out[6]= g k Sink x t , Sink x t k Sink x t uk, Sink x t k Sink x t uk, h k Sink x t k Sink x t akDeterminanten, som kræves til 0 for at det lineære ligningssystem har en løsning.

In[7]:= MatrDet

FullSimplifyDetMatr Sink x t 2 2 . ak H2

. uk gh

H2

. c k

Out[7]=

4 c2 h 4 cgh

h H g 4 h2 2 h H H2

4 c2 h

Bølgehastigheden, c, findes:

In[8]:= cRule FullSimplifyFlattenSolve MatrDet . g

cg2

h

0, c

Out[8]= c 1

2cg2

h2H

cg 2 h H

2

h

, c 1

2cg2

h2H

cg 2 h H

2

h

Bemærk, at cg2h2

= ± cgh

. Den positive bølgehastighed vælges.

In[9]:= cVal c . cRule2 . cg2h2

cgh

Out[9]=cg H

2 hcg

2 h H

2

h

Taylor ekspansionen af ovenstående:

unlinAnalyse.nb 1

Page 87: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG A. ANALYSE AF ULINEÆRE FLADVANDSLIGNINGER 86

In[10]:= FullSimplifySeriescVal . H x 2h, x, 0, 3 . x

H

2 h

Out[10]= cg

3 cg H

2 2 h

1

8cg H

2 h2

1

16cg H

2 h3

O H

2 h4

unlinAnalyse.nb 2

Page 88: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Bilag B

Stabilitets analyse

87

Page 89: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG B. STABILITETS ANALYSE 88

Play0.2 Sin1000Pi Exp t, t, 0, 1;

Pertubation

Un_ : n ExpI j

Analyse af diskretisering i tid

AdamB_, _ :

n 1 n

dt

1

1223 n 16 n 1 5 n 2

I x indgår eij i alle led og kan derfor forkortes ud. Når der diskretiseres i x kommer der led indeholdende

ei j1, ei j1 osv. Det betyder, at der i ligningen foran alle led kommer en faktor afhængig af diskretiseringen i x.

Faktoren er den samme idet den stedslige diskretisering er ens for alle tidsskridt. Faktoren kaldes her .

Ut U

Ukonstxn_ n;

Un_ n;

sol1 SimplifyAdamB U, Ukonstx12 dt2n . dt Cu

5 Cu 16 Cu 12 23 Cu 2 12

3

Bemærk, at Cu=dt

Cun_ : FindRootsol1 . ExpI n 2 Pi, Cu, I

ParametricPlotReCu . Cun, ImCu . Cun,

n, 0, 1, AxesLabel "ReCu", "ImCu"

-0.5 -0.4 -0.3 -0.2 -0.1 0.1

ReCu

-0.6

-0.4

-0.2

0.2

0.4

0.6

ImCu

Graphics

stabilitet_koefficietMetode.nb 1

Page 90: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG B. STABILITETS ANALYSE 89

Som det ses på grafen herover er skeamet stabilt for reelle Cu-tal når dette er mellem -0.54 og 0. Når Cu er rent komple-

kst skal det ligge mellem -i0.72 og i0.72

Analyse af diskretisering i tid

2 punkts centered difference, ikke staggered

Ut Ux

Som tidligere argumenteret handler det her om at finde . er koeffienten til n, hvis U[j,n] ser ud som herunder og

der diskretiseres til tidsskridtet n.

Uj_, n_ n ExpI j ;

Ux Uj 1, n Uj 1, n

2 dx

1j n 1j n

2 dx

FullSimplifyCoefficientUx, n ExpI j

Sin

dx

Det vil sige, at er rent imaginært og har en maksimal længde på 1dx

.

4 punkts centerede difference, ikke staggered

Ut Ux

Ux

1

12dxUj 2, n 8Uj 1, n 8Uj 1, n Uj 2, n

2j n 8 1j n 8 1j n 2j n

12 dx

FullSimplifyCoefficientUx, n ExpI j

4 Cos Sin

3 dx

I dette tilfælde er rent imaginær og har en maksimal lægnde på 43 dx

.

4 punkts centerede difference, STAGGERED

Ux

1

24dxUj 32, n 27Uj 1 2, n 27Uj 1 2, n Uj 32, n

3

2j

n 27 1

2j

n 27 1

2j

n 3

2j

n

24 dx

FullSimplifyCoefficientUx, n ExpI j

13 Cos Sin 2

6 dx

stabilitet_koefficietMetode.nb 2

Page 91: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG B. STABILITETS ANALYSE 90

er rent imaginær med en maksimal længde på 73dx

.

2 ligninger

Adams-Bashforth

Clear

Nye perturbationer

UAn_ : U0n

An_ : 0n

Der ses nu på 2 ligninger med to ubekendte. Det gælder dog som før, at diskretiseringen i x kun giver en konstant i

forskel. Derfor er et godt start eksempel at lave nedenstående:

t ux 0ut x 0

og er de faktorer der kommer fra diskretiseringen i sted. Størrelsen er, som set ovenfor, eksempelvis idx

for en to

punkts centered difference.

UAxn_ U0 n;

Axn_ 0 n;

eq2a SimplifyAdamBA, UAx n2

12 dt

dt 5 16 23 2 U0 12 1 2 0

eq2b SimplifyAdamBUA, Ax n2

12 dt

12 1 2 U0 dt 5 16 23 2 0

Matr Coefficienteq2a, eq2b, U0, 0, U0, 0dt 5 16 23 2 , 12 1 2, 12 1 2, dt 5 16 23 2

det2 FullSimplifyDetMatr . dt2 Cu2

144 1 2 4 Cu2 5 16 23 2

Bemærk, at Cu (=

Cu2 ) her er defineret som dt .

sol2CuVar_ : Abs . NSolvedet2 . Cu2 CuVar 0,

stabilitet_koefficietMetode.nb 3

Page 92: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG B. STABILITETS ANALYSE 91

ShowTablePlotsol2Cui, Cu, 0.6, 0.2, DisplayFunction Identity,

i, 1, 6, DisplayFunction $DisplayFunction,

GridLines Automatic, AxesLabel "Cu2dt2 ", ""

-0.6 -0.4 -0.2 0.2

Cu2dt2

0.25

0.5

0.75

1

1.25

1.5

Graphics

Det ses, at || altid er større end 1 for alle Cu2 0. Derfor har vi ubetinget ustabilitet for alle reele værdier af Cu. For

komplekse Cu (Cu2 0) er løsningen stabil for 0>Cu2>-0.524.

Herunder ses de lineære fladvandsligninger på flad bund i een dimension. Der er ikke forskel på den måde u og

diskretiseres i sted. Derfor er og fra ovenstående analyse af Adam-Bashforth skemaet:

= g

= h

Hvor svarer til den der blev fundet ved analysen af den ene ligning i een variabel.

Ut g x 0

t h Ux 0

Adams-Moulton (Corrector)

Clear,

Adam Moulton skema:

AdamM_, _ : n 1 n

dt

124

9n 1 19 n 5 n 1 n 2

Der er i ovenstående skema ikke den store forskel i forholdt til Adam-Bashforth i 2 dimension som analyseret herover.

Derfor gennemgås de samme analyser:

UAn_ : U0n

An_ : 0n

stabilitet_koefficietMetode.nb 4

Page 93: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG B. STABILITETS ANALYSE 92

UAxn_ U0 n;

Axn_ 0 n;

eq2a SimplifyAdamMA, UAx n2

24dt

dt 1 5 19 2 9 3 U0 24 1 2 0

eq2b SimplifyAdamMUA, Ax n2

24 dt

24 1 2 U0 dt 1 5 19 2 9 3 0

Matr Coefficienteq2a, eq2b, U0, 0, U0, 0dt 1 5 19 2 9 3 , 24 1 2, 24 1 2, dt 1 5 19 2 9 3

det2 FullSimplifyDetMatr . dt2 Cu2

576 1 2 4 Cu2 1 5 19 9 2

sol2CuVar_ : Abs . NSolvedet2 . Cu2 CuVar 0, ShowTablePlotsol2Cui, Cu, 2, 0.2, DisplayFunction Identity, i, 1, 6,DisplayFunction $DisplayFunction,

GridLines Automatic, AxesLabel "Cu2dt2 ", ""

-2 -1.5 -1 -0.5Cu2dt2

0.25

0.5

0.75

1

1.25

1.5

Graphics

På plottet ses det, at løsningen er ubetinget ustabil for alle CuC.

Adams-Bashforth-Moulton

Clear,

Fra Adam-Bashforth metoden bruges leddene un1og n1 til indsættelse i Adam-Moulton metoden.

stabilitet_koefficietMetode.nb 5

Page 94: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG B. STABILITETS ANALYSE 93

eqBasha SimplifyAdamBA, UAx n2

12 dt

dt 5 16 23 2 U0 12 1 2 0

eqBashb SimplifyAdamBUA, Ax n2

12 dt

12 1 2U0 dt 5 16 23

2 0

etaIntoMoul FlattenSolveExpandeqBasha . 30 etaBash 0, etaBash

etaBash 112

5 dt U0 16 dt U0 23 dt 2 U0 12 2 0

uIntoMoul FlattenSolveExpandeqBashb . 3U0 uBash 0, uBash

uBash 112

12 2 U0 5 dt 0 16 dt 0 23 dt 2 0

U n1 og n1 rules ind i Adam-Moulton skemaet:

eqMoula SimplifyExpandAdamMA, UAx n2

24dt

. 3 U0 uBash . uIntoMoul

dt 1 5 28 2 U0 34

32 3 5 dt2 16 dt

2 2 32 23 dt

2 0

eqMoulb SimplifyExpandAdamMUA, Ax n2

24 dt

. 3 0 etaBash . etaIntoMoul

34

32 3 5 dt2 16 dt2 2 32 23 dt2 U0 dt 1 5 28 2 0

Matr CoefficienteqMoula, eqMoulb, U0, 0, U0, 0

dt 1 5 28 2 ,34

32 3 5 dt2 16 dt2 2 32 23 dt2 ,

34

32 3 5 dt2 16 dt2 2 32 23 dt2 , dt 1 5 28 2

FullSimplifyDetMatr576 1 2 4 dt

2 1 10 99 4 119 155 207

916

dt4 2 5 16 23 2 2

det2 FullSimplifyExpandDetMatr . dt2 Cu2

. dt4

Cu2

2

. dt 0

576 1 2 4 916

Cu22 5 16 23 2

Cu2 1 10 99 4 119 155 207

sol2CuVar_ : Abs . NSolvedet2 . Cu2 CuVar 0,

stabilitet_koefficietMetode.nb 6

Page 95: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG B. STABILITETS ANALYSE 94

ShowTablePlotsol2Cui, Cu, 1.5, 0.2, DisplayFunction Identity,

i, 1, 6, DisplayFunction $DisplayFunction,

GridLines Automatic, AxesLabel "Cu2dt2 ", ""

-1.5 -1.25 -1 -0.75 -0.5 -0.25Cu2dt2

0.25

0.5

0.75

1

1.25

1.5

Graphics

Som det ses på figuren er skemaet stabilt for 0>Cu2>-1.390. Det betyder, at kun komplekse værdier af Cu har en stabill

løsning.

Play0.2 Sin1000Pi Exp t, t, 0, 1;

stabilitet_koefficietMetode.nb 7

Page 96: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Bilag C

Diskretisering i sted af staggeredgrid

95

Page 97: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG C. DISKRETISERING I STED AF STAGGERED GRID 96

Polynomie fitting

Staggered grid

For at opnå 3. orden fittes der hele tiden til et 3.gradspolynomie af formen:

In[1]:= polynomx_ a x3 b x2 c x d;

Ved at tilpasse polynomiet i de fire punkter omkring udviklingspunktet, 0, fås følgende polynomie koefficienter:

In[9]:= stagRule SimplifySolvepolynom32

d ww &&

polynom12

d w &&

polynom12d e &&

polynom32d ee, a, b, c, d

Out[9]= a 3 e ee 3 w ww

6 d3

, b e ee w ww

4 d2

,

c 27 e ee 27 w ww

24 d, d

116

9 e ee 9 w ww

Differential koefficienten findes til:

In[10]:= Diffx x polynomx . x 0 . stagRule

Out[10]= 27 e ee 27 w ww

24 d

Interpolationen:

In[11]:= interpolx polynom0 . stagRule

Out[11]= 116

9 e ee 9 w ww

Ikke staggered grid:

In[2]:= nonStagRule SimplifySolvepolynom2d ww &&

polynomd w &&

polynomd e &&

polynom2d ee, a, b, c, d

Out[2]= a 2 e ee 2 w ww

12 d3

, b e ee w ww

6 d2

,

c 8 e ee 8 w ww

12 d, d

164 e ee 4 w ww

Differential koefficienten:

five_point_cent_staggerd.nb 1

Page 98: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG C. DISKRETISERING I STED AF STAGGERED GRID 97

In[3]:= Diffx x polynomx . x 0 . nonStagRule

Out[3]= 8 e ee 8 w ww

12 d

Interpolationen:

In[4]:= interpolx polynom0 . nonStagRule

Out[4]= 164 e ee 4 w ww

five_point_cent_staggerd.nb 2

Page 99: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

Bilag D

Kildekode til programmetHENNING2045

D.1 source kode for: HENNING2045.f90

! ***************************************************************************!! *** ****!! *** \\\|||||||||||||||||||||||||||||||||||||||||||||||||||||||/// ****!! *** \ +--------------------------------------------------------+/ ****!! *** \ | |/ ****!! *** - | HENNING20 4/5 PROGRAM |- ****!! *** - | ======================= |- ****!! *** - | |- ****!! *** - | |- ****!! *** - | af |- ****!! *** - | |- ****!! *** - | Jens Dahl Poulsen |- ****!! *** - | og |- ****!! *** - | Hans Jacob Simonsen |- ****!! *** / | |\ ****!! *** / +--------------------------------------------------------+\ ****!! *** ///|||||||||||||||||||||||||||||||||||||||||||||||||||||||\\\ ****!! *** ****!! ***************************************************************************!! *** ****!! *** ****!! *** >>>>19-12-02<<<< ****!! *** ****!! *** Følgende er opdateret: ****!! *** - Courant-tallet beregnes pa baggrund af den maksimale dybde ****!! *** - 3.ordens interpolationer ****!

98

Page 100: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 99

! *** - opdateringsliste ;-) ****!! *** - interpolationsfejl rettet ****!! *** - fejl i absorber rettet ****!! *** - yrMin parameter til styring af CfFunx form tilføjet ****!! *** - bundhældningen, 1 -> j...! ****!! *** - randbetingelsen beregnes af lokal dybde ****!! *** ****!! *** ****!! ***************************************************************************!

! ***************************************************************************!! *** ****!! *** +--------------------------------------------------------+ ****!! *** | | ****!! *** | INITALISERINGER | ****!! *** | | ****!! *** +--------------------------------------------------------+ ****!! *** ****!! ***************************************************************************!

program waveMod

implicit none

! ************ Logicals *****************************************************!

logical :: &reflektion, uliniaritet, bundFriktion

! ************ Integers *****************************************************!

integer :: &timeSteps,gridPointsX,gridPointsY, &i,j,n,ite,maxIte, itemax, &relaxSteps, warmupSteps, &calcMole, nInMemo,reflek, &matOpen,matClose,matgetMatrix, &status,mxGetPr,mxCreateFull, &ms,ps,mp,pa1,pa2,pa3, &reclen,typer, bundfrik, ulin

! ************ Doubles ******************************************************!

Page 101: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 100

double precision :: &dt,dx,dy,iteTol,residual, &waveHeightX,waveHeightY,wavePeriod,waveLength,P,k,omega, &domLengthX,domLengthY,simTime, &tempMax,dxInv,dyInv,dtInv,Inv12,Inv16,Inv24, &hmin,ax,ay,bx,by,yrMin, &gravity,pi,Manning,fot,windAngle,windSpeed, &Cw,rhoAir,rhoWater,windFactorX,windFactorY,BotFactor, &config(30),maxh

! ************ double arrays ************************************************!

double precision, allocatable :: &hAtEta (:,:) , dhdxAtEta(:,:) , dhdyAtEta(:,:) , &hAtU (:,:) , hAtV (:,:) , &U (:,:,:), V (:,:,:), eta (:,:,:), &E (:,:,:), F (:,:,:), G (:,:,:), &res1 (:,:) , res2 (:,:) , res3 (:,:)

! ***************************************************************************!! *** ****!! *** +--------------------------------------------------------+ ****!! *** | | ****!! *** | TILDELING AF VARIABLE | ****!! *** | | ****!! *** +--------------------------------------------------------+ ****!! *** ****!! ***************************************************************************!

! ************ Hente variable fra matlab*************************************!ms = matOpen(’settings.mat’, ’r’)ps = matgetMatrix(ms,’data’)call mxCopyPtrToReal8(mxGetPr(ps),config,30)call mxFree(ps)status = matClose(ms)

! ************ Uafhængige Parametre ****************************************!

domLengthX = config(1) ! Domænets udstrækning i x-retningengridPointsX = int(config(2)) ! Antal beregningspunkter i x-retn.

Page 102: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 101

domLengthY = config(3) ! Domænets udstrækning i y-retningengridPointsY = int(config(4)) ! Antal beregningspunkter i y-retn.simTime = config(5) ! Tidsinterval i modellen [s]timeSteps = int(config(6)) ! Antal tidsskridt i modelleniteTol = config(7) ! Iteration tolerancemaxIte = int(config(8)) ! Grænse for antallet af iterationerP = config(9) ! P/2 er antallet af bølgelængderwaveHeightX = config(10) ! Bølgehøjden [m]relaxSteps = int(config(11)) ! Skridt til relaxationmethodwarmupSteps = int(config(12)) ! Skridt til opvarmingreflek = int(config(13))recLen = 1hmin = config(14) ! mindste dybdenax = config(15)ay = config(16)bx = config(17)by = config(18)Manning = config(19)windAngle = config(20)windSpeed = config(21)Cw = config(22)rhoAir = config(23)rhoWater = config(24)typer = int(config(25))ulin = int(config(26))bundfrik = int(config(27))yrMin = config(28)

waveHeightY = waveHeightX

if(reflek==1) then ; reflektion =.true.else ; reflektion =.false. ; end if

if(ulin ==1) then ; uliniaritet =.true.else ; uliniaritet =.false. ; end if

if(bundfrik==1)then ; bundFriktion =.true.else ; bundFriktion =.false. ; end if

! ************ Forskellige parametre ****************************************!calcMole = 3nInMemo = 4gravity = 9.82 ! Tyngdeaccelerationen [m/s^2]pi = acos(-1.d0) ! Pi pa en fjollet madetempMax = 1itemax = 0

! ************ Allokeringer *************************************************!allocate( hAtEta ( gridPointsX , gridPointsY ))

Page 103: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 102

allocate( dhdxAtEta ( gridPointsX , gridPointsY ))allocate( dhdyAtEta ( gridPointsX , gridPointsY ))allocate( U ( gridPointsX+1, gridPointsY ,nInMemo ))allocate( hAtU ( gridPointsX+1, gridPointsY ))allocate( V ( gridPointsX , gridPointsY+1,nInMemo ))allocate( hAtV ( gridPointsX , gridPointsY+1 ))allocate( eta ( gridPointsX , gridPointsY ,nInMemo ))allocate( E ( gridPointsX , gridPointsY ,nInMemo ))allocate( F (2:gridPointsX , gridPointsY ,nInMemo ))allocate( G ( gridPointsX ,2:gridPointsY ,nInMemo ))allocate( res1 ( gridPointsX , gridPointsY ))allocate( res2 (2:gridPointsX , gridPointsY ))allocate( res3 ( gridPointsX ,2:gridPointsY ))

! ************ Afhængige Parametre ******************************************!

dx = domLengthX/gridPointsX ! Skridtlængden i steddxInv = 1/dxdy = domLengthY/gridPointsY ! Skridtlængden i steddyInv = 1/dydt = simTime/timeSteps ! Skridtlængden i tiddtInv = 1/dtwaveLength = 2*domLengthX/P ! Bølgelænden [m]k = 2*pi/waveLength ! Bølgetallet [m^-1]omega = k*(sqrt(gravity*hmin)) ! Bølgefrekvens [s^-1]Inv12 = 1./12Inv16 = 1./16Inv24 = 1./24fot = 4./3.windFactorX= Cw*rhoAir/rhoWater*cos(windAngle/360.d0*2*pi)*windSpeed**2windFactorY= Cw*rhoAir/rhoWater*sin(windAngle/360.d0*2*pi)*windSpeed**2BotFactor = gravity/Manning**2

! ************ Bunden laves og gradienterne findes***************************!

forall (i=1:gridPointsX); forall (j=1:gridPointsY)hAtEta(i,j) = ax*((i-.5)*dx)**2 &

+ ay*((j-.5)*dy)**2 &+ bx* (i-.5)*dx &+ by* (j-.5)*dy &+ hmin

dhdxAtEta(i,j) = 2*ax* (i-.5)*dx &+ bx

dhdyAtEta(i,j) = 2*ay* (j-.5)*dy &+ by

end forall; end forall

Page 104: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 103

forall (i=1:gridPointsX+1); forall (j=1:gridPointsY)hAtU(i,j) = ax*((i- 1. )*dx)**2 &

+ ay*((j- .5)*dy)**2 &+ bx* (i- 1. )*dx &+ by* (j- .5)*dy &+ hmin

end forall; end forall

forall (i=1:gridPointsX); forall (j=1:gridPointsY+1)hAtV(i,j) = ax*((i- .5)*dx)**2 &

+ ay*((j- 1. )*dy)**2 &+ bx* (i- .5)*dx &+ by* (j- 1. )*dy &+ hmin

end forall; end forall

! Beregning af maksimal dybdemaxh = max(maxval(abs(hAtEta)), &

maxval(abs(hAtU )), &maxval(abs(hAtV )))

! ************ h-arrayet gemmes i .mat fil **********************************!

mp = matOpen(’harray.mat’, ’w’)

pa1 = mxCreateFull(gridPointsX ,gridPointsY ,0)pa2 = mxCreateFull(gridPointsX+1,gridPointsY ,0)pa3 = mxCreateFull(gridPointsX ,gridPointsY+1,0)

call mxSetName(pa1,’hArrAtEta’)call mxSetName(pa2,’hArrAtU’)call mxSetName(pa3,’hArrAtV’)

call mxCopyReal8ToPtr(hAtEta, mxGetPr(pa1), gridPointsX * gridPointsY)call mxCopyReal8ToPtr(hAtU , mxGetPr(pa2),(gridPointsX+1) * gridPointsY)call mxCopyReal8ToPtr(hAtV , mxGetPr(pa3), gridPointsX *(gridPointsY+1))

call matPutMatrix(mp,pa1)call matPutMatrix(mp,pa2)call matPutMatrix(mp,pa3)

call mxFree(pa1)call mxFree(pa2)call mxFree(pa3)

Page 105: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 104

status = matClose(mp)

! ************ Forskellige parametre udskrives til skærmen ******************!

print ’(a40,f16.8)’, &’ dt: ’ , dt, &’ dx: ’ , dx, &’ dy: ’ , dy, &’ Tidsskridt: ’ , timeSteps*1.0, &’ Grid punkter, x: ’ , gridPointsX*1.0, &’ Grid punkter, y: ’ , gridPointsY*1.0, &’ Courant nummer, dx: ’ , sqrt(gravity*maxh)*dt/dx, &’ Courant nummer, dy: ’ , sqrt(gravity*maxh)*dt/dy

if(typer==1)then ! staende bølgeprint ’(a40,f16.8)’, &’ Wavelength: ’ , waveLength, &’ Wave height x: ’ , waveHeightX, &’ Wave height y: ’ , waveHeightY, &’ T: ’ , 2*pi/omega, &’ Hx/L: ’ , waveHeightX/waveLength, &’ Hy/L: ’ , waveHeightY/waveLength, &’ kh: ’ , k*hmin, &’ h/L: ’ , hmin/waveLength, &’ Antal simulerede perioder: ’ , simTime*omega/(2*pi), &’ Antal tidsskridt per boelgeperiode: ’ , 2*pi/(omega*dt), &’ Antal x-punkter per bølgelængde: ’ , waveLength/dx

else if(typer==2)then ! genererede bølgerprint ’(a40,f16.8)’, &’ Punkter i relax laget: ’ , 1.*relaxSteps, &’ Opvarmningsskridt: ’ , 1.*warmupSteps, &’ Wavelength: ’ , waveLength, &’ Wave height x: ’ , waveHeightX, &’ Wave height y: ’ , waveHeightY, &’ T: ’ , 2*pi/omega, &’ Hx/L: ’ , waveHeightX/waveLength, &’ Hy/L: ’ , waveHeightY/waveLength, &’ kh: ’ , k*hmin, &’ h/L: ’ , hmin/waveLength, &’ H/h: ’ , waveHeightX/hmin, &’ Antal simulerede perioder: ’ , simTime*omega/(2*pi), &’ Antal tidsskridt per boelgeperiode: ’ , 2*pi/(omega*dt), &’ Antal x-punkter per bølgelængde: ’ , waveLength/dx

else if(typer==3)then ! vind drevne bølger

Page 106: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 105

print ’(a40,f16.8)’, &’ Vindhastighed: ’ , 1.*windSpeed, &’ Vindens vinkel i grader: ’ , 1.*windAngle

end if

! ************ Forskellige parametre skrives til en fil *********************!

open(unit=1, file=’varFile.txt’)write(1,’(5f9.4)’) dx,dy,dt,omega,kclose(1)

open(unit=1, file=’CrFunk.dat’)do i=1,gridPointsX

write(1,’(5f9.4)’) CrFunc(i,4)end doclose(1)

! ***************************************************************************!! *** ****!! *** +--------------------------------------------------------+ ****!! *** | | ****!! *** | BEREGNINGER | ****!! *** | | ****!! *** +--------------------------------------------------------+ ****!! *** ****!! ***************************************************************************!

! ************ Filer hvor eta, u og v gemmes ********************************!

open(unit=1, file=’etaFile.dat’ ,access=’direct’,recl=8,form=’binary’)open(unit=2, file=’uFile.dat’ ,access=’direct’,recl=8,form=’binary’)open(unit=3, file=’vFile.dat’ ,access=’direct’,recl=8,form=’binary’)open(unit=4, file=’gradFile.dat’,access=’direct’,recl=8,form=’binary’)

! ************ Startbetingelser/Opstart *************************************!

! randbetingelser, gælder hele tidenV(1:gridPointsX,1 ,1:nInMemo)=0V(1:gridPointsX, gridPointsY+1,1:nInMemo)=0U(1 ,1:gridPointsY ,1:nInMemo)=0U(gridPointsX+1,1:gridPointsY ,1:nInMemo)=0

if(typer==2 .or. typer==3)then! Overfladeprofilen og Starthastigheden med wavemakereta(1:gridPointsX,1:gridPointsY,1:3)=0

Page 107: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 106

U (2:gridPointsX,1:gridPointsY,1:3)=0V (1:gridPointsX,2:gridPointsY,1:3)=0

end if

! Overfladeprofilen og Starthastigheden uden wavemaker! og sat op til staende bølge

if(typer==1)then

forall(i=1:gridPointsX,j=1:gridPointsY,n=1:3)eta(i,j,n) = waveHeightX*cos(k*dx*(i-0.5))*cos(omega*dt*(n-1)) &

+waveHeightY*cos(k*dy*(j-0.5))*cos(omega*dt*(n-1))end forall

forall(i=2:gridPointsX,j=1:gridPointsY,n=1:3)U (i,j,n) = omega*waveHeightX/(k*hAtU(i,j)) &

*sin(k*dx*(i-1))*sin(omega*dt*(n-1))end forall

forall(i=1:gridPointsX,j=2:gridPointsY,n=1:3)V (i,j,n) = omega*waveHeightY/(k*hAtV(i,j)) &

*sin(k*dy*(j-1))*sin(omega*dt*(n-1))end forall

end if

! E, F og Gforall(i=1:gridPointsX,j=1:gridPointsY,n=1:3); E(i,j,n) = Efunc(i,j,n); end forallforall(i=2:gridPointsX,j=1:gridPointsY,n=1:3); F(i,j,n) = Ffunc(i,j,n); end forallforall(i=1:gridPointsX,j=2:gridPointsY,n=1:3); G(i,j,n) = Gfunc(i,j,n); end forall

! ============ Genneløb af tidsskridt =======================================!

do n=4,timeSteps+1

! ************ Predictor ****************************************************!

!--------- eta -----------------------------------------------------------forall(i=1:gridPointsX,j=1:gridPointsY)

eta(i,j,4)= &warmup(n)*((1-CrFunc(i,j))* (eta(i,j,3)+dt*Inv12*( &

23*E(i,j,3) &-16*E(i,j,2) &+ 5*E(i,j,1) &

)) + CrFunc(i,j)*etaBCFunc(i,j,n) &)

Page 108: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 107

end forall

!--------- U -------------------------------------------------------------forall(i=2:gridPointsX,j=1:gridPointsY)

U(i,j,4)=warmup(n)*( &(1-CrFunc(i,j))*(U(i,j,3)+dt*Inv12*( &

23*F(i,j,3) &-16*F(i,j,2) &+ 5*F(i,j,1) &

)) + CrFunc(i,j)*UBCFunc(i,j,n) &)

end forall

!--------- V -------------------------------------------------------------forall(i=1:gridPointsX,j=2:gridPointsY)

V(i,j,4)=warmup(n)*( &(1-CrFunc(i,j))*(V(i,j,3)+dt*Inv12*( &

23*G(i,j,3) &-16*G(i,j,2) &+ 5*G(i,j,1) &

)) + CrFunc(i,j)*VBCFunc(i,j,n) &)

end forall

! ============ Corrector do løkke ===========================================!

ite=0residual=iteTol*10do

!--------- E,F,G ---------------------------------------------------------forall(i=1:gridPointsX,j=1:gridPointsY);E(i,j,4)=Efunc(i,j,4);end forallforall(i=2:gridPointsX,j=1:gridPointsY);F(i,j,4)=Ffunc(i,j,4);end forallforall(i=1:gridPointsX,j=2:gridPointsY);G(i,j,4)=Gfunc(i,j,4);end forall

!--------- Exit betingelser ----------------------------------------------if(residual<iteTol)then

exitendifif(ite>=maxIte)then

stop ’maxIte opnaet’endifif(abs(minval(eta(:,:,4)))>minval(hAtEta))then

print ’(a7,f7.4,a7,f7.4)’, &’eta: ’, abs(minval(eta(:,:,4))),’> h: ’,minval(hAtEta)stop ’Bølgedal under bunden’

endif

!--------- eta -----------------------------------------------------------

Page 109: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 108

forall(i=1:gridPointsX,j=1:gridPointsY)res1(i,j)=-eta(i,j,4)+ (1-CrFunc(i,j))*(eta(i,j,3)+dt*Inv24*(&

9*E(i,j,4) &+19*E(i,j,3) &- 5*E(i,j,2) &+ E(i,j,1) &

)) + CrFunc(i,j)*etaBCFunc(i,j,n)eta(i,j,4)=res1(i,j)+eta(i,j,4)

end forall

!--------- U -------------------------------------------------------------forall(i=2:gridPointsX,j=1:gridPointsY)

res2(i,j)=-U(i,j,4)+(1-CrFunc(i,j))*(U(i,j,3)+dt*Inv24*( &9*F(i,j,4) &

+19*F(i,j,3) &- 5*F(i,j,2) &+ F(i,j,1) &

)) + CrFunc(i,j)*UBCFunc(i,j,n)U(i,j,4)=res2(i,j)+U(i,j,4)

end forall

!--------- V -------------------------------------------------------------forall(i=1:gridPointsX,j=2:gridPointsY)

res3(i,j)=-V(i,j,4)+ (1-CrFunc(i,j))*(V(i,j,3)+dt*Inv24*( &9*G(i,j,4) &

+19*G(i,j,3) &- 5*G(i,j,2) &+ G(i,j,1) &

)) + CrFunc(i,j)*VBCFunc(i,j,n)V(i,j,4)=res3(i,j)+V(i,j,4)

end forall

!--------- Residualet-----------------------------------------------------

residual=max(maxval(abs(res1)), &maxval(abs(res2)), &maxval(abs(res3)))

ite=ite+1

end do

! ============ Corrector stop ===============================================!

if(itemax<ite)then; itemax = ite; end if

Page 110: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 109

! ************ Skrivning til fil ********************************************!

!--------- eta -----------------------------------------------------------do j=1,gridPointsY;do i=1,gridPointsX

write(1,rec= &i &

+(j-1)*gridPointsX &+(n-4)*gridPointsY*gridPointsX) &

eta(i,j,1)end do;end do

!--------- U -------------------------------------------------------------do j=1,gridPointsY;do i=1,gridPointsX+1

write(2,rec= &i &

+(j-1)*(gridPointsX+1) &+(n-4)*gridPointsY*(gridPointsX+1)) &

U(i,j,1)end do;end do

!--------- V -------------------------------------------------------------do j=1,gridPointsY+1;do i=1,gridPointsX

write(3,rec= &i &

+(j-1)*gridPointsX &+(n-4)*(gridPointsY+1)*gridPointsX) &

V(i,j,1)end do;end do

!--------- deta/dx -------------------------------------------------------do j=1,gridPointsY;do i=1,gridPointsX

write(4,rec= &i &

+(j-1)*gridPointsX &+(n-4)*gridPointsY*gridPointsX) &

EtaAfledtXAtEta(i,j,1)end do;end do

! ************ Variablene rykkes en plads ***********************************!

do i=1,nInMemo-1eta(:,:,i)=eta(:,:,i+1)

U(:,:,i)= U(:,:,i+1)V(:,:,i)= V(:,:,i+1)E(:,:,i)= E(:,:,i+1)F(:,:,i)= F(:,:,i+1)G(:,:,i)= G(:,:,i+1)

end do

Page 111: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 110

! ============ Stopper tidsskridt løkken ====================================!end do

! ************ Skrivning af de sidste elementer******************************!

do n=2,nInMemo

!--------- eta -----------------------------------------------------------do j=1,gridPointsY; do i=1,gridPointsX

write(1,rec= &i &

+(j-1)*gridPointsX &+(timeSteps+n-4)*gridPointsY*gridPointsX) &

eta(i,j,n)end do; end do

!--------- U -------------------------------------------------------------do j=1,gridPointsY; do i=1,gridPointsX+1

write(2,rec= &i &

+(j-1)*(gridPointsX+1) &+(timeSteps+n-4)*gridPointsY*(gridPointsX+1)) &

U(i,j,n)end do; end do

!--------- V -------------------------------------------------------------do j=1,gridPointsY+1; do i=1,gridPointsX

write(3,rec= &i &

+(j-1)*gridPointsX &+(timeSteps+n-4)*(gridPointsY+1)*gridPointsX) &

V(i,j,n)end do; end do

!--------- deta/dx -------------------------------------------------------do j=1,gridPointsY; do i=1,gridPointsX

write(4,rec= &i &

+(j-1)*gridPointsX &+(timeSteps+n-4)*gridPointsY*gridPointsX) &

EtaAfledtXAtEta(i,j,n)end do;end do

end do

! ************ Filerne lukkes og variablene deallokeres**********************!

Page 112: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 111

close(1)close(2)close(3)close(4)deallocate(U,V,eta,E,F,G,res1,res2,res3,hAtEta,hAtU,hAtV,dhdxAtEta,dhdyAtEta)

! ************ Slutmeddelelse til skærmen ***********************************!

print ’(a,i5,a)’, ’Beregningerne blev udført med maksimalt’,itemax,’ iterationer’

CONTAINS! ***************************************************************************!! *** ****!! *** +--------------------------------------------------------+ ****!! *** | | ****!! *** | FUNKTIONER | ****!! *** | | ****!! *** +--------------------------------------------------------+ ****!! *** ****!! ***************************************************************************!

! ***************************************************************************!! *** ****!! *** BEREGNING af E, F og G ****!! *** ****!! ***************************************************************************!

! ************ E funktion ***************************************************!

pure function Efunc(i,j,n)double precision :: Efuncinteger, intent(in) :: i,j,nEfunc= &

-dhdxAtEta (i,j) * UAtEta (i,j,n) &-hAtEta (i,j) * UAfledtXAtEta(i,j,n) &-dhdyAtEta (i,j) * VAtEta (i,j,n) &-hAtEta (i,j) * VAfledtYAtEta(i,j,n)

Page 113: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 112

if(uliniaritet)thenEfunc= Efunc &

-eta (i,j,n)* UAfledtXAtEta(i,j,n) &-EtaAfledtXAtEta(i,j,n)* UAtEta (i,j,n) &-eta (i,j,n)* VAfledtYAtEta(i,j,n) &-EtaAfledtYAtEta(i,j,n)* VAtEta (i,j,n)

end if

end function Efunc

! ************ F funktion ***************************************************!

pure function Ffunc(i,j,n)double precision :: Ffuncinteger, intent(in) :: i,j,nFfunc= &

-gravity * etaAfledtXAtU(i,j,n) &+WindFactorX/hAtU(i,j)

if(uliniaritet)thenFfunc= Ffunc &

-U (i,j,n)* UAfledtXAtU (i,j,n) &-VAtU (i,j,n)* UAfledtYAtU (i,j,n)

end if

if(bundFriktion)thenFfunc= Ffunc &

-BotFactor*U(i,j,n)* &sqrt(U(i,j,n)**2+VAtU(i,j,n)**2)/hAtU(i,j)**fot

end ifend function Ffunc

! ************ G funktion ***************************************************!

pure function Gfunc(i,j,n)double precision :: Gfuncinteger, intent(in) :: i,j,nGfunc= &

-gravity * etaAfledtYAtV(i,j,n) &+WindFactorY/hAtV(i,j)

if(uliniaritet)thenGfunc= Gfunc &

-UAtV (i,j,n)* VAfledtXAtV(i,j,n) &-V (i,j,n)* VAfledtYAtV(i,j,n)

end if

Page 114: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 113

if(bundFriktion)thenGfunc= Gfunc &

-BotFactor*V(i,j,n)* &sqrt(UAtV(i,j,n)**2+V(i,j,n)**2)/hAtV(i,j)**fot

end ifend function Gfunc

! ***************************************************************************!! *** ****!! *** BEREGNING AF AFLEDTE ****!! *** ****!! ***************************************************************************!

! ************ dU/dx i eta **************************************************!

pure function UAfledtXAtEta(i,j,n)double precision :: UAfledtXAtEta, varWW,varW,varE,varEEinteger, intent(in) :: i,j,n

varW = U(i ,j,n)varE = U(i+1,j,n)

if(i==1) then; varWW=-U(i+1,j,n)else; varWW= U(i-1,j,n); end if

if(i==gridPointsX) then; varEE=-U(i ,j,n)else; varEE= U(i+2,j,n); end if

UAfledtXAtEta=(varWW-27*varW+27*varE-varEE)*dxInv*inv24end function UAfledtXAtEta

! ************ dV/dx i eta **************************************************!

pure function VAfledtYAtEta(i,j,n)double precision :: VAfledtYAtEta, varNN,varN,varS,varSSinteger, intent(in) :: i,j,n

varN = V(i,j+1,n)varS = V(i,j ,n)

if(j==1) then; varSS=-V(i,j+1,n)

Page 115: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 114

else; varSS= V(i,j-1,n); end ifif(j==gridPointsY) then; varNN=-V(i,j ,n)

else; varNN= V(i,j+2,n); end if

VafledtYAtEta=(varSS-27*varS+27*varN-varNN)*dyInv*inv24end function VAfledtYAtEta

! ************ deta/dx i eta ************************************************!

pure function EtaAfledtXAtEta(i,j,n)double precision :: EtaAfledtXAtEta,varWW,varW,varE,varEEinteger, intent(in) :: i,j,n

if(i==1)thenvarWW = eta(i+1,j,n) ! spejletvarW = eta(i ,j,n) ! spejletvarE = eta(i+1,j,n)varEE = eta(i+2,j,n)

else if(i==2)thenvarWW = eta(i-1,j,n) ! spejletvarW = eta(i-1,j,n)varE = eta(i+1,j,n)varEE = eta(i+2,j,n)

else if(i==gridPointsX)thenvarWW = eta(i-2,j,n)varW = eta(i-1,j,n)varE = eta(i ,j,n) ! spejletvarEE = eta(i-1,j,n) ! spejlet

else if(i==gridPointsX-1)thenvarWW = eta(i-2,j,n)varW = eta(i-1,j,n)varE = eta(i+1,j,n)varEE = eta(i+1,j,n) ! spejlet

elsevarWW = eta(i-2,j,n)varW = eta(i-1,j,n)varE = eta(i+1,j,n)varEE = eta(i+2,j,n)

end if

EtaAfledtXAtEta=(-varEE+8*varE-8*varW+varWW)*dxInv*inv12

end function EtaAfledtXAtEta

! ************ deta/dy i eta ************************************************!

pure function EtaAfledtYAtEta(i,j,n)

Page 116: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 115

double precision :: EtaAfledtYAtEta,varSS,varS,varN,varNNinteger, intent(in) :: i,j,n

if(j==1)thenvarSS=eta(i,j+1,n) ! spejletvarS =eta(i,j ,n) ! spejletvarN =eta(i,j+1,n)varNN=eta(i,j+2,n)

else if(j==2)thenvarSS=eta(i,j-1,n) ! spejletvarS =eta(i,j-1,n)varN =eta(i,j+1,n)varNN=eta(i,j+2,n)

else if(j==gridPointsY)thenvarSS=eta(i,j-2,n)varS =eta(i,j-1,n)varN =eta(i,j ,n) ! spejletvarNN=eta(i,j-1,n) ! spejlet

else if(j==gridPointsY-1)thenvarSS=eta(i,j-2,n)varS =eta(i,j-1,n)varN =eta(i,j+1,n)varNN=eta(i,j+1,n) ! spejlet

elsevarSS=eta(i,j-2,n)varS =eta(i,j-1,n)varN =eta(i,j+1,n)varNN=eta(i,j+2,n)

end if

EtaAfledtYAtEta=(-varNN+8*varN-8*varS+varSS)*dyInv*inv12end function EtaAfledtYAtEta

! ************ deta/dx i U **************************************************!

pure function etaAfledtXAtU(i,j,n)double precision :: etaAfledtXAtU, varWW,varW,varE,varEEinteger, intent(in) :: i,j,n

varW = eta(i-1,j,n)varE = eta(i ,j,n)

if(i==2) then; varWW = eta(i-1,j,n)else; varWW = eta(i-2,j,n); end if

if(i==gridPointsX) then; varEE = eta(i ,j,n)else; varEE = eta(i+1,j,n); end if

etaAfledtXAtU=(varWW-27*varW+27*varE-varEE)*dxInv*inv24end function etaAfledtXAtU

Page 117: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 116

! ************ deta/dx i U **************************************************!

pure function UAfledtXAtU(i,j,n)double precision :: UAfledtXAtU,varWW,varW,varE,varEEinteger, intent(in) :: i,j,n

if(i==2)thenvarWW = -U(i ,j,n) ! spejletvarW = U(i-1,j,n)varE = U(i+1,j,n)varEE = U(i+2,j,n)

else if(i==gridPointsX)thenvarWW = U(i-2,j,n)varW = U(i-1,j,n)varE = U(i+1,j,n)varEE = -U(i ,j,n) ! spejlet

elsevarWW = U(i-2,j,n)varW = U(i-1,j,n)varE = U(i+1,j,n)varEE = U(i+2,j,n)

end if

UAfledtXAtU=(-varEE+8*varE-8*varW+varWW)*dxInv*inv12end function UAfledtXAtU

! ************ dU/dy i U ****************************************************!

pure function UAfledtYAtU(i,j,n)double precision :: UAfledtYAtU,varNN,varN,varS,varSSinteger, intent(in) :: i,j,n

if(j==1)thenvarSS = -U(i,j+1,n) ! spejletvarS = -U(i,j ,n) ! spejletvarN = U(i,j+1,n)varNN = U(i,j+2,n)

else if(j==2)thenvarSS = -U(i,j-1,n) ! spejletvarS = U(i,j-1,n)varN = U(i,j+1,n)varNN = U(i,j+2,n)

else if(j==gridPointsY)thenvarSS = U(i,j-2,n)varS = U(i,j-1,n)varN = -U(i,j ,n) ! spejlet

Page 118: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 117

varNN = -U(i,j-1,n) ! spejletelse if(j==gridPointsY-1)then

varSS = U(i,j-2,n)varS = U(i,j-1,n)varN = U(i,j+1,n)varNN = -U(i,j+1,n) ! spejlet

elsevarSS = U(i,j-2,n)varS = U(i,j-1,n)varN = U(i,j+1,n)varNN = U(i,j+2,n)

end if

UAfledtYAtU=(-varNN+8*varN-8*varS+varSS)*dyInv*inv12end function UAfledtYAtU

! ************ deta/dy i V ****************************************************!

pure function etaAfledtYAtV(i,j,n)double precision :: etaAfledtYAtV, varNN, varN, varS, varSSinteger, intent(in) :: i,j,n

varN = eta(i,j ,n)varS = eta(i,j-1,n)

if(j==2) then; varSS = eta(i,j-1,n)else; varSS = eta(i,j-2,n); end if

if(j==gridPointsY) then; varNN = eta(i,j ,n)else; varNN = eta(i,j+1,n); end if

etaAfledtYAtV=(varSS-27*varS+27*varN-varNN)*dyInv*inv24end function etaAfledtYAtV

! ************ dV/dx i V ****************************************************!

pure function VAfledtXAtV(i,j,n)double precision :: VAfledtXAtV,varEE,varE,varW,varWWinteger, intent(in) :: i,j,n

if(i==1)thenvarWW = -V(i+1,j,n) ! spejletvarW = -V(i ,j,n) ! spejletvarE = V(i+1,j,n)varEE = V(i+2,j,n)

else if(i==2)thenvarWW = -V(i-1,j,n) ! spejletvarW = V(i-1,j,n)varE = V(i+2,j,n)

Page 119: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 118

varEE = V(i+2,j,n)else if(i==gridPointsX)then

varWW = V(i-2,j,n)varW = V(i-1,j,n)varE = -V(i ,j,n) ! spejletvarEE = -V(i-1,j,n) ! spejlet

else if(i==gridPointsX-1)thenvarWW = V(i-2,j,n)varW = V(i-1,j,n)varE = V(i+1,j,n)varEE = -V(i+1,j,n) ! spejlet

elsevarWW = V(i-2,j,n)varW = V(i-1,j,n)varE = V(i+1,j,n)varEE = V(i+2,j,n)

end if

VAfledtXAtV=(-varEE+8*varE-8*varW+varWW)*dxInv*inv12end function VAfledtXAtV

! ************ dV/dy i V ****************************************************!

pure function VAfledtYAtV(i,j,n)double precision :: VAfledtYAtV,varSS,varS,varN,varNNinteger, intent(in) :: i,j,n

if(j==2)thenvarSS = -V(i,j ,n) ! spejletvarS = V(i,j-1,n)varN = V(i,j+1,n)varNN = V(i,j+2,n)

else if(j==gridPointsY)thenvarSS = V(i,j-2,n)varS = V(i,j-1,n)varN = V(i,j+1,n)varNN = -V(i,j ,n) ! spejlet

elsevarSS = V(i,j-2,n)varS = V(i,j-1,n)varN = V(i,j+1,n)varNN = V(i,j+2,n)

end if

VAfledtYAtV=(-varNN+8*varN-8*varS+varSS)*dyInv*inv12end function VAfledtYAtV

Page 120: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 119

! ***************************************************************************!! *** ****!! *** INTERPOLATIONER ****!! *** ****!! ***************************************************************************!

! ************ U ved eta ****************************************************!

pure function UAtEta(i,j,n)double precision :: UAtEta, Uee,Ue,Uw,Uwwinteger, intent(in) :: i,j,n

Uw = U(i ,j,n)Ue = U(i+1,j,n)

if(i==1) then; Uww = -U(i+1,j,n)else; Uww = U(i-1,j,n); end if

if(i==gridPointsX) then; Uee = -U(i ,j,n)else; Uee = U(i+2,j,n); end if

UAtEta = Inv16*(-Uee+9*Ue+9*Uw-Uww)end function UAtEta

! ************ U ved V ******************************************************!

pure function UAtV(i,j,n)double precision :: UAtV, Unn, Un, Us, Ussinteger, intent(in) :: i,j,n

Un = UAtEta(i,j ,n)Us = UAtEta(i,j-1,n)

if(j==2) then; Uss = -UAtEta(i,j-1,n)else; Uss = UAtEta(i,j-2,n); end if

if(j==gridPointsY) then; Unn = -UAtEta(i,j ,n);else; Unn = UAtEta(i,j+1,n); end if

UAtV = Inv16*(-Uss+9*Us+9*Un-Unn)end function UAtV

! ************ V ved eta ****************************************************!

pure function VAtEta(i,j,n)double precision :: VAtEta, Vnn, Vn, Vs,Vssinteger, intent(in) :: i,j,n

Page 121: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 120

Vn = V(i,j+1,n)Vs = V(i,j ,n)

if(j==1) then; Vss = -V(i,j+1,n)else; Vss = V(i,j-1,n); end if

if(j==gridPointsY) then; Vnn = -V(i,j ,n)else; Vnn = V(i,j+2,n); end if

VAtEta=Inv16*(-Vss+9*Vs+9*Vn-Vnn)end function VAtEta

! ************ V ved U ******************************************************!

pure function VAtU(i,j,n)double precision :: VAtU,Vee,Ve,Vw,Vwwinteger, intent(in) :: i,j,n

Ve = VAtEta(i ,j,n)Vw = VAtEta(i-1,j,n)

if(i==2) then; Vww = -VAtEta(i-1,j,n)else; Vww = VAtEta(i-2,j,n); end if

if(i==gridPointsX) then; Vee = -VAtEta(i ,j,n)else; Vee = VAtEta(i+1,j,n); end if

VAtU=Inv16*(-Vww+9*Vw+9*Ve-Vee)end function VAtU

! ***************************************************************************!! *** ****!! *** RANDBETINGELSER OG HANDTERING HERAF ****!! *** ****!! ***************************************************************************!

! ************ randbetingelse i eta *****************************************!

pure function etaBCFunc(i,j,n)double precision :: etaBCFuncinteger, intent(in) :: i,j,n

if(i>=relaxSteps)thenetaBCFunc=0return

end if

Page 122: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 121

etaBCFunc=0.5*waveHeightX*cos(omega*dt*n-k*dx*(i*1.0-.5))end function etaBCFunc

! ************ randbetingelse i U *******************************************!

pure function UBCFunc(i,j,n)integer, intent(in) :: i,j,ndouble precision :: UBCFunc

if(i>=relaxSteps)thenUBCFunc=0return

end if

UBCFunc=waveHeightX/(2*hAtU(i,j))*(omega/k) &*cos(omega*dt*n-k*dx*(i-1))

end function UBCFunc

! ************ randbetingelse i V *******************************************!

pure function VBCFunc(i,j,n)integer, intent(in) :: i,j,ndouble precision :: VBCFunc

VBCFunc=0 ! ingen hastighed pa tværs

end function VBCFunc

! ************ relaxtionsfunktion *******************************************!

pure function CrFunc(i,j)integer, intent(in) :: i,jinteger :: indexdouble precision :: CrFunc,x,x0,x1,arg

!--------- Exit betingelser ----------------------------------------------

if(typer==1 .or. typer==3)thenCrFunc=0return

end if

if(i>=relaxSteps+calcMole .and. &i<=gridPointsX-relaxSteps-calcMole)then

CrFunc=0

Page 123: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 122

returnend if

if(i>gridPointsX-relaxSteps-calcMole .AND. reflektion)thenCrFunc=0return

end if

if(i<=calcMole .OR. i>=gridPointsX-calcMole)thenCrFunc=1return

end if

!--------- Beregninger ---------------------------------------------------

x0=log(1/yrMin+sqrt(1/(yrMin*yrMin)-1))x1=(relaxSteps-1)*dxif(i<=relaxSteps+calcMole)then

index=i-calcMoleelse if(i>=gridPointsX+1-relaxSteps-calcMole)then

index=gridPointsX-i-calcMoleend ifx=index*dxarg=x0*x/x1CrFunc=2/(exp(arg)+exp(-arg))-yrMin*index/relaxSteps

end function CrFunc

! ************ opvarmningsfunktion ******************************************!

pure function warmup(n)integer, intent(in) :: ndouble precision :: warmup

if(typer==1)thenwarmup=1return

end if

if(typer==2 .or. typer==3)thenif(n>=warmupSteps+3)then

warmup=1return

end ifwarmup=real(n-3)/real(warmupSteps)

Page 124: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 123

if(warmup < 0) thenwarmup=0return

end ifend if

end function warmup

end program waveMod

D.2 source kode for: main.m

clc; close all; clear;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% VARIABLE TIL BRUG I PROGRAMMET %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

typer = 2; % type=1 staende bølge, 2 genereret bølge, 3 vind dreven% Bemærk: ved type 1 og 3 er der altid reflektion

g = 9.82;Lx = 1680; % Domænets længde i x-retningen

gridPointsX = 280;Ly = 60; % Domænets længde i y-retningengridPointsY = 10;simTime = 450; % Simuleret tid

timeSteps = 1000; % tidsskridtiteTol = 1e-7; % Residual tolerancenmaxIte = 25; % Grænse for antallet af iterationerP = 14; % P/2 er antallet af bølgelængder i domænet

waveHeight = 0.05; % Bølgehøjden [m]

relaxSteps = round(gridPointsX*2*1.1/P); % Svarer til L+10%warmupSteps = 50; % Tids-skridt til opvarming

Manning = 1;windAngle = 0; % vindens retning i grader, 0 er i positiv x-retningwindSpeed = 0;

Cw = 0.0027083333;rhoAir = 1.2;rhoWater = 100;yrMin = 0.001; % mindsteværdien for relaksionsfunktionen, hvis der ikke er polynomium pa

reflektion = 0; % 0: absorbtion, 1: reflektionulinearitet = 1; % 0: ikke medtaget, 1: medtagetbundFrik = 0; % 0: ikke medtaget, 1: medtaget

%%%%%%%%%%%%%%%%%%%%%%%%% DEFINITION AF BUNDEN %

Page 125: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 124

%%%%%%%%%%%%%%%%%%%%%%%%% Bunden bestar af summen af to polynomier, et i x-retningen og et i y-retningen% h= ax*x^2 + ay*y^2 + ax*x + ay*y + hmin% hmin er mindstedybden og skal altid defineres positivt.

hmin = 1 ;zEndX = 0 ;zEndY = 0 ;zBuleX = zEndX/2;zBuleY = zEndY/2;% Ændres helst ikke:LBuleX = 0.5; % mellem 0 og 1, 0.5 for midten. IKKE 0 eller 1!LBuleY = 0.5; % mellem 0 og 1

% kalder resten af matlabfilernerunfortran

D.3 source kode for: runfortran.m

delete(’*.dat’)

ax = -hmin*(zBuleX-zEndX*LBuleX )/((LBuleX-1)*LBuleX*Lx^2);ay = -hmin*(zBuleY-zEndY*LBuleY )/((LBuleY-1)*LBuleY*Ly^2);bx = hmin*(zBuleX-zEndX*LBuleX^2)/((LBuleX-1)*LBuleX*Lx );by = hmin*(zBuleY-zEndY*LBuleY^2)/((LBuleY-1)*LBuleY*Ly );

data=[ % config(#):Lx % 1gridPointsX % 2Ly % 3gridPointsY % 4simTime % 5timeSteps % 6iteTol % 7maxIte % 8P % 9waveHeight % 10relaxSteps % 11warmupSteps % 12reflektion % 13hmin % 14ax % 15ay % 16bx % 17by % 18

Page 126: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 125

Manning % 19windAngle % 20windSpeed % 21

Cw % 22rhoAir % 23rhoWater % 24typer % 25ulinearitet % 26bundFrik % 27yrMin % 28

];data=data’;save settings.mat data

disp(sprintf(’\n\n\tRunning FORTRAN program \n\n’))tic!Henning2045.exedisp(sprintf(’\nDone in %5.2f seconds’,toc))

disp(sprintf(’\nLoader filer’))tic

% Forskellige variablewaveProbs = load(’varFile.txt’);

dx = waveProbs(1);dy = waveProbs(2);dt = waveProbs(3);

omega = waveProbs(4);k = waveProbs(5);

disp(’ varFile klar’)load hArray.mathArr=hArrAtEta;

fid = fopen(’etaFile.dat’);etaAll = fread(fid,gridPointsX*gridPointsY*timeSteps,’double’);fclose (fid);eta = reshape(etaAll,[gridPointsX gridPointsY timeSteps]);

clear etaAlldisp(’ eta klar’)

fid = fopen(’uFile.dat’);UAll = fread(fid,(gridPointsX+1)*gridPointsY*timeSteps,’double’);fclose (fid);U = reshape(UAll,[gridPointsX+1 gridPointsY timeSteps]);

clear UAlldisp(’ U klar’)

fid = fopen(’vFile.dat’);VAll = fread(fid,gridPointsX*(gridPointsY+1)*timeSteps,’double’);fclose (fid);

Page 127: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 126

V = reshape(VAll,[gridPointsX gridPointsY+1 timeSteps]);clear VAlldisp(’ V klar’)

fid = fopen(’gradFile.dat’);gradAll = fread(fid,gridPointsX*gridPointsY*timeSteps,’double’);gradEta = reshape(gradAll,[gridPointsX gridPointsY timeSteps]);

clear gradAllfclose (fid);

disp(’ grad eta klar’)

disp(sprintf(’Done in %4.2f seconds’,toc))

switch typercase 1

visual1case 2

visual2case 3

visual3end

D.4 source kode for: calcu.m

%calcu

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% BEREGNINGER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%xVektE=((0:size(eta,1)-1)+.5)*dx; % eta og VyVektE=((0:size(eta,2)-1)+.5)*dy; % eta og UxVektU=((0:size(eta,1) ) )*dx; % UyVektV=((0:size(eta,2) ) )*dy; % V

tVekt=(0:size(eta,3)-1)*dt;

etaMax=max(max(max(eta)));snitTVekt = tVekt(round(size(eta,3)/2):end);T=reshape(eta(round(size(eta,1)/2),round(size(eta,2)/2),round(size(eta,3)/2):end),size(snitTVekt));reReflektion=ceil(2*gridPointsX*k/omega);

if(typer~=3)waveLength=2*pi/k;

[Tzero, Tstd] = findT(T,snitTVekt);disp(sprintf(’\n\t Bølgelængde: %3.4fm, H/h=%3.5f’,waveLength, waveHeight/hmin))

Page 128: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 127

disp(sprintf(’\n\n\t Forventet periode fra lineær fladvandsteori: %3.4fs.’, waveLength/sqrt(g*hmin)))disp(sprintf(’\t Periode fundet med zerocrossing: %3.4fs.’, Tzero))disp(sprintf(’\t Stokes periode T=%3.4fs’,2*pi/(sqrt(g*2*pi/waveLength*tanh(2*pi*hmin/waveLength)))))disp(sprintf(’\t Periode regnet ulineær T=%3.4fs’,waveLength/((1-(3*waveHeight)/(4*hmin))*sqrt(g*hmin))))disp(sprintf(’\n\t Standard afvigelse ved beregning af T %3.4fs’,Tstd))omegaStokes=sqrt(g*k*tanh(k*hmin));

endplot(T)

D.5 source kode for: findT.m

function [T, stdT] = findT(x,t)

kryds=find(x(1:length(x)-1).*x(2:length(x))<0);

for i=1:length(kryds)x1Vekt=[x(kryds(i)) x(kryds(i)+1)];t1Vekt=[t(kryds(i)) t(kryds(i)+1)];tIntp(i)=interp1(x1Vekt,t1Vekt,0);

end

T = 2*mean(diff(tIntp));stdT = std(diff(tIntp));

D.6 source kode for: vindpil.m

function vindpil(start,stop,zz,txt)

xl = get(gca,’xlim’);yl = get(gca,’ylim’);xd = xl(2)-xl(1); % this sets the scale for the arrow sizeyd = yl(2)-yl(1); % thus enabling the arrow to appear in correctscale = (xd + yd) / 2; % proportion to the current axis

hold onaxis(axis)

xdif = stop(1) - start(1);ydif = stop(2) - start(2);

theta = atan(ydif/xdif); % the angle has to point according to the slope

if(xdif>=0)scale = -scale;

end

Page 129: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 128

xx = [start(1), stop(1) (stop(1)+0.2*scale*cos(theta+pi/4)),NaN,stop(1),...(stop(1)+0.2*scale*cos(theta-pi/4))]’;yy = [start(2), stop(2) (stop(2)+0.2*scale*sin(theta+pi/4)),NaN,stop(2),...(stop(2)+0.2*scale*sin(theta-pi/4))]’;plot3(xx,yy,ones(size(xx))*zz,’k’,’LineWidth’,3)text(stop(1),stop(2),zz,txt)

D.7 source kode for: visual1.m

close all;calcustr = sprintf(’\n T_x=T_y=%4.2gs, H=%4.2gm, L_x=L_y=%4.2gm, h=%4.2gm, kh=%4.2g, H/L=%4.2g, Cr=%4.2g dx=dy=%4.2gm, dt=%4.2gs’,...

2*pi/omega,waveHeight,2*pi/k,hmin,k*hmin, waveHeight*k/(2*pi),sqrt(g*hmin)*dt/dx,dx,dt);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% VISUALISERING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Nu er programmet kørt og filerne læst ind.

% overflade og pilefigure(1)factorX = 3; % hvor meget pilene skal spredesfactorY = 3;

[Y X] = meshgrid(yVektE,xVektE);% tidsskridtet der plottestSkridt = round(size(eta,3)/1);

% interpolationeruIntP=(U(2:factorX:gridPointsX+1 ,...

1:factorY:end ,...tSkridt )...

+U(1:factorX:gridPointsX ,...1:factorY:end ,...tSkridt ))/2;

vIntP=(V(1:factorX:end ,...2:factorY:gridPointsY+1 ,...tSkridt )...

+V(1:factorX:end ,...1:factorY:gridPointsY ,...tSkridt))/2;

% overfladensur1=surf(X,Y,eta(:,:,tSkridt));set(sur1,’LineStyle’,’none’,’FaceAlpha’,.7);hold on

% hastighedvektorer[Y X Z]=meshgrid(1:size(uIntP,2),1:size(vIntP,1),1);

Page 130: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 129

X=(X-.5)*dx*factorX;Y=(Y-.5)*dy*factorY;qui=quiver3(X,Y,Z*1.5*min(min(min(eta))),uIntP,vIntP,Z*0,’k’);axis tighttitle(str)zlabel(’z’)xlabel(’x, m’)ylabel(’y, m’)

hold off

% x og y multiplot over ´en periodeskridtPerT=round(2*pi/(omega*dt));

figure(gcf+1)[Y X]=meshgrid(yVektE,xVektE);for n=1:6

subplot(2,3,n)sur=surf(X,Y,eta(:,:,round(skridtPerT*n/6)));set(sur,’LineStyle’,’none’);axis([X(1) X(end) Y(1) Y(end) -etaMax etaMax]);caxis([-etaMax etaMax]);title(sprintf(’Til tiden %3.1f’,round(skridtPerT*n/6)*dt))xlabel(’x, m’)ylabel(’y, m’)view(45,45)

end

% konvulutfigure(gcf+1);clf;hold on;

% tager den sidste periodestepsPerT=round(2*pi/(omega*dt));istop=size(eta,3);steps=round(stepsPerT/10);istart=istop-round(stepsPerT/2);if(reflektion==1)

steps=round(steps/3);endfor i=istart:steps:istop

plot(xVektE,eta(:,round(size(eta,2)/2),i),’-.k’);endylim([-etaMax etaMax]);plot(xVektE,eta(:,round(size(eta,2)/2),size(eta,3)-steps),’b’,’LineWidth’,2)title([sprintf(’Konvolut snit i y=%3.2f m’,round(size(eta,2)/2)*dy) str]);

xlabel(’x (m)’);ylabel(’Overflade elevation, eta (m)’);

hold offgrid on

Page 131: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 130

% x og tfigure(gcf+1)

subplot(2,1,1)[X Y]=meshgrid(tVekt,xVektE);snit=round(size(eta,2)/2);T=reshape(eta(:,snit,:),size(X));sur=surf(X,Y,T);set(sur,’LineStyle’,’none’);

title(str)xlabel(’tid’)ylabel(’afstand fra flap’)axis([X(1) X(end) Y(1) Y(end) -etaMax*2 etaMax*2]);caxis([-etaMax etaMax]);

% hastighedersubplot(2,1,2)

[X Y]=meshgrid(tVekt,xVektU);T=reshape(U(:,snit,:),size(X));sur=surf(X,Y,T);set(sur,’LineStyle’,’none’);

title(str)axis([X(1) X(end) Y(1) Y(end) -max(max(T))*2 max(max(T))*2]);zlabel(’U [m/s]’)xlabel(’tid’)ylabel(’afstand fra flap’)

% y og tfigure(gcf+1)

subplot(2,1,1)[X Y]=meshgrid(tVekt,yVektE);snit=round(size(eta,1)/2);T=reshape(eta(snit,:,:),size(X));sur=surf(X,Y,T);set(sur,’LineStyle’,’none’);

title(str)xlabel(’tid’)ylabel(’y, m’)axis([X(1) X(end) Y(1) Y(end) -etaMax*2 etaMax*2]);caxis([-etaMax etaMax]);

% hastighedersubplot(2,1,2)

[X Y]=meshgrid(tVekt,yVektV);T=reshape(V(snit,:,:),size(X));sur=surf(X,Y,T);set(sur,’LineStyle’,’none’);

Page 132: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 131

title(str)axis([X(1) X(end) Y(1) Y(end) -max(max(T))*2 max(max(T))*2]);zlabel(’V [m/s]’)xlabel(’tid’)ylabel(’y, m’)

D.8 source kode for: visual2.m

close all;calcustr = sprintf(’\n T=%4.2g, H=%4.2g, L=%4.2g, hmin=%4.2g kh=%4.2g, H/L=%4.2g, Cr=%4.2g, dx=%4.2g, dy= %4.2g, dt=%4.2g’,...

2*pi/omega,waveHeight,2*pi/k,hmin,k*hmin, waveHeight*k/(2*pi),sqrt(g*hmin)*dt/dx,dx,dy,dt);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% VISUALISERING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% visualisering af genererede bølger.

% bundprofil og overfladefigure(1)factorX=1; % hvor meget pilene skal spredesfactorY=1;

[Y X] = meshgrid(yVektE,xVektE);tSkridt = round(size(eta,3)/1);

% overfladensur1=surf(X,Y,eta(:,:,tSkridt));set(sur1,’LineStyle’,’none’,’FaceAlpha’,.5,’FaceColor’,[0 0.7 1]);hold on

% bundensur2=surf(X,Y,-hArr);set(sur2,’LineStyle’,’none’);

title([sprintf(’Overfladen og bunden til tiden t=%3.2fs.’,tSkridt*dt) str])zlabel(’z’)xlabel(’x, m’)ylabel(’y, m’)

hold off

% x og yfigure(gcf+1)[Y X]=meshgrid(yVektE,xVektE);for n=1:6

subplot(2,3,n)sur=surf(X,Y,eta(:,:,round(size(eta,3)*n/6)));set(sur,’LineStyle’,’none’);axis([X(1) X(end) Y(1) Y(end) -etaMax etaMax]);caxis([-etaMax etaMax]);

Page 133: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 132

title(sprintf(’Til tiden %3.1f’,round(size(eta,3)*n/6)*dt))xlabel(’x, m’)ylabel(’y, m’)

end

% x og y enkelfigure(gcf+1)[Y X]=meshgrid(yVektE,xVektE);

sur=surf(X,Y,eta(:,:,round(size(eta,3)*5/6)));set(sur,’LineStyle’,’none’,’FaceAlpha’,.5 );hold on[cs, hc]=contour(X,Y,hArrAtEta);%clabel(cs,hc);axis([X(1) X(end) Y(1) Y(end) -etaMax etaMax]);caxis([-etaMax etaMax]);title(sprintf(’Til tiden %3.1f’,round(size(eta,3)*5/6)*dt))xlabel(’x, m’)ylabel(’y, m’)

% x og tfigure(gcf+1)[X Y]=meshgrid(tVekt,xVektE);snit=round(size(eta,2)/2);T=reshape(eta(:,snit,:),size(X));sur=surf(X,Y,T);set(sur,’LineStyle’,’none’);

title([sprintf(’Snit i y=%3.2fm som funktion af tiden.’,snit*dy) str])xlabel(’Tid (s)’)ylabel(’Afstand fra flap, x (m)’)axis([X(1) X(end) Y(1) Y(end) -etaMax*2 etaMax*2]);caxis([-etaMax etaMax]);

% y og tfigure(gcf+1)[X Y]=meshgrid(tVekt,yVektE);snit=round(size(eta,1)/2);T=reshape(eta(snit,:,:),size(X));sur=surf(X,Y,T);set(sur,’LineStyle’,’none’);

title([sprintf(’Snit i x=%3.2fm som funktion af tiden.’,snit*dx) str])xlabel(’Tid (s)’)ylabel(’y (m)’)axis([X(1) X(end) Y(1) Y(end) -etaMax*2 etaMax*2]);caxis([-etaMax etaMax]);

% konvulutfigure(gcf+1);

subplot(2,1,1)

Page 134: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 133

hold on;

% tager den sidste periodestepsPerT=round(2*pi/(omega*dt));istop=size(eta,3);

numKonv=10;steps=stepsPerT/numKonv;istart=istop-stepsPerT;

for i=1:numKonvplot(xVektE,eta(:,round(size(eta,2)/2),istart+round(i*steps)),’-.k’);title(sprintf(’Konvolut i y=%3.2f m’,round(size(eta,2)/2)));xlabel(’x (m)’);ylabel(’Overflade elevation, eta (m)’);

endylim([-etaMax etaMax]);plot(xVektE,eta(:,round(size(eta,2)/2),size(eta,3)),’b’,’LineWidth’,2)title(str);hold off

grid on

% Bølgehøjde af xsubplot(2,1,2)Htemp = reshape(eta(:,round(size(eta,2)/2),round(size(eta,3)/2):end),size(eta,1), size(eta,3)-round(size(eta,3)/2)+1);Hafx = max(Htemp,[],2)-min(Htemp,[],2);[Hmax, xInd]=max(Hafx);plot(xVektE,Hafx,’k’, xVektE(xInd),Hmax,’*k’)xlabel(’x (m)’)ylabel(’H (m)’)

title(sprintf(’maksimal bølgehøjde H=%4.3gm i x=%4.0fm, h=%4.3gm’,Hmax,xVektE(xInd),hArrAtEta(xInd)))grid

% sammenligning med sinuskurve i x:figure(gcf+1)ySnit = round(size(eta,2)/2);fase1 = asin(2*eta(1,ySnit,end)/waveHeight);fase2 = pi-fase1;sin1 = waveHeight/2*sin(k*dx*(0:length(xVektE)-1)+fase1);sin2 = waveHeight/2*sin(k*dx*(0:length(xVektE)-1)+fase2);

maxEta = max(eta(:,ySnit,end));maxGrad = max(abs(gradEta(:,ySnit,end)));

% kurven med samme startgradient vælgesif(sign(sin1(1)-sin1(2))==sign(eta(1,ySnit,end)-eta(2,ySnit,end)))

theSin=sin1;else

theSin=sin2;end

Page 135: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 134

clear sin1, sin2;plot(xVektE, eta (:,ySnit,end),’b’); hold on;

plot(xVektE, theSin ,’r:’)plot(xVektE, gradEta(:,ySnit,end)*maxEta/maxGrad,’g:’);

title([sprintf(’Sammenligning med sinus kurver og snit i x til tiden t=%3.2f’,size(eta,3)*dt),str]);xlabel(’x’);ylabel(’Overfladeelevation’);

legend(’Beregnede overflade elevation’,...’Lineær analytisk bølge til sammenligning’,...sprintf(’Overfladehældningen, eta_x. OBS: ganges med faktor %5.2f.|max(eta_x)|=%5.2g’,maxGrad/maxEta,maxGrad))

axis([xVektE(1) xVektE(end) min([-maxEta*1.1 maxEta*1.2]) max([-maxEta*1.1 maxEta*1.2])])grid

% sammenligning med sinuskurve i t:figure(gcf+1)startTid = round(0.5*timeSteps);slutTid = round(0.9*timeSteps);xPunkt = round(size(eta,1)/2);ySnit = round(size(eta,2)/2);snitTVekt = startTid:slutTid;snitEta = reshape(eta(xPunkt,ySnit,snitTVekt),1,length(snitTVekt));

CurrentH = max(snitEta)-min(snitEta);fase1 = acos(snitEta(1)*2/CurrentH)-omega*startTid*dt;fase2 = -fase1;

sin1=CurrentH/2*cos(omega*snitTVekt*dt+fase1);sin2=CurrentH/2*cos(omega*snitTVekt*dt+fase2);

% kurven med samme startgradient vælgesif(sign(sin1(1)-sin1(2))==sign(snitEta(1)-snitEta(2)))

theSin=sin1;clear sin1

elsetheSin=sin1;clear sin2

end

plot(snitTVekt*dt,snitEta,’b.-’,snitTVekt*dt,theSin,’r:’);

title(sprintf(’Tidsserie sammeligning med sinus kurve i punktet (x,y)=(%4.1f m, %4.1f m) ’,xPunkt,ySnit));xlabel(’t’);ylabel(’Overfladeelevation’);

title(str)legend(’Tidsserie af \eta fra modellen’,’Tidsserie af lineær bølge’)

% Plot af cr funktionenfigure(gcf+1)

Page 136: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 135

load CrFunk.dat;plot(CrFunk,’*-’)

% plot af H som funktion af tiden:figureHaft=reshape(max(eta(:,round(size(eta,2)/2),:))-min(eta(:,round(size(eta,2)/2),:)), 1,size(eta,3));plot(tVekt,Haft)xlabel(’t ,sek’)ylabel(’H, m’)

D.9 source kode for: visual3.m

close all;calcustr = sprintf(’\n h_min=%4.2gm, h_max=%4.2gm, dx=%4.2gm, dy= %4.2gm, dt=%4.2gm, Cr_x,max=%4.2g, Cr_y,max=%4.2g’,...

hmin,max(max(hArrAtEta)),dx,dy,dt,sqrt(g*max(max(hArrAtEta)))*dt/dx,sqrt(g*max(max(hArrAtEta)))*dt/dy);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% VISUALISERING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Nu er programmet kørt og filerne læst ind.

% bundprofil og overfladefigure(1)factorX=1; % hvor meget pilene skal spredesfactorY=1;

[Y X] = meshgrid(yVektE,xVektE);tSkridt = round(size(eta,3)/1);

% interpolationeruIntP=(U(2:factorX:gridPointsX+1 ,...

1:factorY:end ,...tSkridt )...

+U(1:factorX:gridPointsX ,...1:factorY:end ,...tSkridt ))/2;

vIntP=(V(1:factorX:end ,...2:factorY:gridPointsY+1 ,...tSkridt )...

+V(1:factorX:end ,...1:factorY:gridPointsY ,...tSkridt))/2;

% overfladensur1=surf(X,Y,eta(:,:,tSkridt));set(sur1,’LineStyle’,’none’,’FaceAlpha’,.5,’FaceColor’,[0 0.7 1]);hold on

Page 137: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 136

% bundensur2=surf(X,Y,-hArrAtEta);set(sur2,’LineStyle’,’none’);

[Y X Z]=meshgrid(1:size(uIntP,2),1:size(vIntP,1),1);X=(X-.5)*dx*factorX;Y=(Y-.5)*dy*factorY;

% hastighedvektorerqui=quiver3(X,Y,-Z*0.5*min(min(hArrAtEta)),uIntP,vIntP,Z*0,’k’);

% vindpilenpilLen = Lx/2;startPil = [Lx/6 Ly/2];slutPil = [Lx/6+pilLen*cos(windAngle*pi/180) Ly/2+pilLen*sin(windAngle*pi/180)];pilHeig = 1.1*max(max(eta(:,:,tSkridt)));vindpil(startPil,slutPil,pilHeig,sprintf(’Vind pa %5.2f m/s’,windSpeed));axis tight%axis([0 Lx 0 Ly -min(min(hArrAtEta)) max(max(max(eta)))])title([sprintf(’Overfladen og bunden til tiden t=%3.2fs. Maks hastighed: u_max=%6.4fm/s’,tSkridt*dt,max(max([uIntP, vIntP]))) str])zlabel(’z, m’)xlabel(’x, m’)ylabel(’y, m’)

hold off

% vektor plot af hastighederfigure(gcf+1)[Y X]=meshgrid(1:size(uIntP,2),1:size(vIntP,1));X=(X-.5)*dx*factorX;Y=(Y-.5)*dy*factorY;qui=quiver(X,Y,uIntP,vIntP,’k’);title([sprintf(’Hastighedsfelt til tiden t=%3.2fs. Maks hastighed: u_max=%6.4fm/s’,tSkridt*dt,max(max([uIntP, vIntP]))) str])xlabel(’x, m’)ylabel(’y, m’)

hold off% x og yfigure(gcf+1)[Y X]=meshgrid(yVektE,xVektE);for n=1:6

subplot(2,3,n)sur=surf(X,Y,eta(:,:,round(size(eta,3)*n/6)));set(sur,’LineStyle’,’none’);axis([X(1) X(end) Y(1) Y(end) -etaMax etaMax]);caxis([-etaMax etaMax]);title(sprintf(’Til tiden %3.1f’,round(size(eta,3)*n/6)*dt))xlabel(’x, m’)ylabel(’y, m’)zlabel(’\eta, m’)

end

Page 138: jacobsimonsen.dkjacobsimonsen.dk/school/BolgeModelFortran.pdf · Abstract In this report the nonlinear shallow water equations are solved numerically in two di-mensions using a Adams-Bashforth-Moulton

BILAG D. KILDEKODE TIL PROGRAMMET HENNING2045 137

% x og tfigure(gcf+1)[X Y]=meshgrid(tVekt,xVektE);snit=round(size(eta,2)/2);T=reshape(eta(:,snit,:),size(X));sur=surf(X,Y,T);set(sur,’LineStyle’,’none’);

title(str)xlabel(’tid, s’)ylabel(’x, m’)

zlabel(’\eta, m’)

% y og tfigure(gcf+1)[X Y]=meshgrid(tVekt,yVektE);snit=round(size(eta,1)/2);T=reshape(eta(snit,:,:),size(X));sur=surf(X,Y,T);set(sur,’LineStyle’,’none’);

title(str)xlabel(’tid’)ylabel(’y, m’)

zlabel(’\eta, m’)

% u og v af tfigure(gcf+1)snitx=round(size(U,1)/2);

snity=round(size(U,2)/2);Umidt=reshape(U(snitx,snity,:),size(U,3),1,1);Vmidt=reshape(V(snitx,snity,:),size(V,3),1,1);plot(tVekt,Umidt,tVekt,Vmidt)title([sprintf(’U og V hastighederne som funktion af tiden i punktet (x,y)=(%4.2f,%4.2f)’,snitx,snity) str])

xlabel(’tid’)ylabel(’Hastigheder, U og V (m/s)’)

legend(’U’,’V’)hold off

% Plot af fluxen i x og y -retningenfigure(gcf+1)plot(tVekt,PX,tVekt,PY)title(str)xlabel(’tid - [s]’)ylabel(’flux - [m3/s]’)legend(’Flux igennem snit i x-retningen’,’Flux igennem snit i y-retningen’)