Wetenschap

De wiskunde van water

Geklots van water is notoir moeilijk te berekenen. Delftse wiskundigen hebben dat de afgelopen jaren toch gedaan voor de scheepssimulator van het maritiem onderzoeksinstituut Marin in Wageningen.


Een ochtendzonnetje glinstert in het water van de baai. Door de dunne nevel tekenen zich in de verte de contouren van een stad af. Dichterbij dobberen rode en groene boeien waartussen het schip zich in de richting van de haven begeeft. Op het dek staan gekleurde containers onder een vaalgele hefkraan met roestvlekken. Langzaam kantelt de horizon een beetje naar rechts. Dat komt door de lange golven die vanaf de open zee aan stuurboord binnen komen. Alles onder controle, schipper. Maar dat kan met één muisklik voorbij zijn.


Dan kan het opeens donker zijn, dicht met mist, of er trekken windstrepen over een dreigende deining die het schip uit koers duwt. Zo gaat dat in een scheepssimulator, waar zeelieden in een gebouw ver van zee leren hoe ze moeten ankeren, een onbekende haven aanlopen of een nieuw type schip beheersen.


Realisme is daarbij geen luxe, maar noodzaak. Het is geen toeval dat het uitzicht op de schermen doet denken aan een computergame.


“Voor onze klanten is de game-industrie de referentie”, zegt dr.ir. Auke Ditzel. Hij is projectleider bij de maritieme software- en simulatiegroep bij onderzoeksinstituut Marin in Wageningen. Hij heeft likkebaardend naar de monstergolven in de film ‘The Perfect Storm’ gekeken. Maar naderhand begreep hij dat de monstergolven niet geheel natuurgetrouw waren, en dat enkele minuten film maanden rekentijd hadden gevergd. Dat kan dus niet bij een simulator. Daar moet alles real-time: minimaal iedere tiende seconde een nieuw beeld.


Rekenkracht

Maar hoe realistisch is die zonovergoten baai nu eigenlijk? De golven zien er net echt uit met die prachtige schitteringen en windvlekken. Maar dat zijn ze niet. “Het zijn gewoon sinussen”, zegt dr. Anneke Sicherer-Roetman, senior sofware engineer bij Marin. Achter haar computer kan ze beter laten zien wat eraan scheelt. Ze toont een filmpje waarin een schip op volle kracht vooruit ploegt door het water. “Er gebeurt niets in dat water”, wijst Sicherer. “Je ziet geen boeggolf. En het kielzog wordt gewoon op het water getekend als witte wolkjes.”

Een ander voorbeeld: forse golven passeren betonnen kolommen in de haven. Passeren is het juiste woord: de golven trekken zich van de kolommen niets aan. Het is alsof de pier niet bestaat.

Dat zijn de beperkingen van wat men hier ‘deterministische golven’ noemt: golven in de vorm van een sinusfunctie waardoor de golfhoogte op ieder punt en elk tijdstip direct te berekenen valt, maar waarbij interactie met de omgeving ontbreekt.

Het alternatief is een ‘interactief model’ waarbij de waterhoogte op duizenden tot miljoenen punten in het rooster telkens opnieuw berekend wordt op basis van vloeistofvergelijkingen. Maar dat vergt zoveel rekenkracht dat zoiets tot voor kort onhaalbaar leek.

“Het draait allemaal om het terugbrengen van rekentijd”, weet prof.dr.ir. Kees Vuik (faculteit Elektrotechniek, Wiskunde en Informatica). De eerste stap daarvoor werd gezet door de Twentse promovendus ir. Gert Klopman. “Die is van een ingewikkeld wiskundig model naar een vereenvoudigd model gekomen met bijna dezelfde functionaliteit”, aldus Vuik. Die vereenvoudigde vergelijkingen staan bekend als het ‘variationeel Boussinesq-model’. Dat maakt echte interactie tussen schip en golven mogelijk: bewegingen van het schip veroorzaken golven en omgekeerd bewegen de golven ook het schip. Maar de prijs voor zulk realisme is een hoop rekenwerk. Daardoor bleef aanvankelijk de roostergrootte beperkt tot honderd bij tweehonderd punten met onderlinge afstand van vijf meter.


Hapklare brokken

Dat was de situatie toen ruim drie jaar geleden ir. Elwin van ‘t Wout als Delftse afstudeerder bij Marin aan de slag ging. “Elwin heeft toen de eerste stappen gemaakt om de berekeningen parallel uit te laten voeren”, legt zijn hoogleraar Kees Vuik uit. Nu is het verdelen van rekentaken over parallelle processors niet nieuw, maar het gebruik van grafische kaarten voor het rekenwerk wel.

Het achterliggende idee is dat grafische kaarten honderden tot duizend simpele processors bevatten die razendsnel kunnen rekenen, maar die verder vrij beperkt zijn. Dus moest Van ‘t Wout de rekentaak opsplitsen in hapklare brokken voor de grafische processors. Aan het eind van zijn afstudeerperiode was dat gelukt, maar het resulteerde nog niet in een snellere berekening. Het snellere rekenwerk door de grafische processors werd nog teniet gedaan door het extra rekenwerk voor het opsplitsen van de rekentaak.

Entree ir. Martijn de Jong, tegenwoordig promovendus op het gebied van intelligente stroomnetten, maar destijds de tweede EWI-afstudeerder bij Marin. De Jong wist de numerieke oplossing van het stelsel vergelijkingen drastisch te versnellen en daarnaast de data optimaal aan te bieden aan de grafische processors, zodat de rekentijd met een factor 25 werd verkort.

Anneke Sicherer (Marin) had het model van Klopman geïmplementeerd in de computertaal C++ voor een stelsel van duizend bij duizend punten met elk een waarde voor de momentane golfhoogte en de verticale snelheid van de waterkolom. Daar ging Martijn de Jong mee aan de slag.



Schaakbord

De numerieke vergelijkingen worden iteratief opgelost: de uitkomst van de vergelijkingen worden als input gebruikt voor de volgende slag waarbij na een aantal herhalingen (iteraties) het resultaat de uitkomst nadert. Daarbij is het zaak om het aantal iteraties zo klein mogelijk te houden. De Jong bereikte dat door de volgorde van de datapunten niet opeenvolgend van links naar rechts en van onder naar boven te nemen, maar om-en-om zoals bij een rood-zwart schaakbord. Eerst alle rode vlakjes, en dan terug om alle zwartje vlakjes ook mee te nemen. De Repeated Red-Black methode zit verfijnder in elkaar dan dat, maar het voorgaande geeft een idee. Belangrijker is de enorme versnelling in convergentie die de andere vlakindeling tot gevolg heeft. Had het oorspronkelijke stelsel duizend iteraties nodig om tot een oplossing te komen, met de RRB-aanpak zijn acht slagen voldoende.

Daarnaast heeft De Jong ook de implementatie van de berekening op de grafische kaart versneld. Daarvoor was het nodig om de C++ code om te zetten in de speciale programmeertaal voor grafische processors: Cuda (Compute Unified Device Architecture). De grafische kaart GeForce GTX 580 heeft zestien streaming multiprocessors, met elk 32 rekenkernen, in totaal dus 512 parallelle processors. De Jong heeft de data zodanig in een schaakbordpatroon over de processors verdeeld dat hij optimaal het beperkte maar snelle gedeelde geheugen gebruikt dat binnen een streaming multiprocessor beschikbaar is.

Een vergelijkende rekentest tussen een CPU op 2,5 GHZ kloksnelheid en de grafische kaart GTX 580 laat zien dat het snelheidswinst groter wordt naarmate het rekenwerk zwaarder is. ‘Voor de grootste testproblemen vinden we een versnelling met een factor 25’, schrijft De Jong in zijn afstudeeronderzoek. De rekentijd voor 1,5 miljoen punten bedraagt slechts 10 milliseconden. Dus, concludeert De Jong, zijn velden met vier miljoen punten real-time te berekenen (want ook met 30 milliseconden rekentijd zijn 25 beelden per seconde haalbaar).



Natuurgetrouw

Terug bij Marin. Anneke Sicherer laat een filmpje zien van een schip dat over de IJssel vaart waarbij de golven interactief berekend zijn. Van bovenaf zie je boeggolven ontstaan die breken op strekdammen loodrecht op de oever. Achter het schip welt een hekgolf op die zich mengt met de vanaf de oever teruggekaatste golven. Het resultaat is verrassend natuurgetrouw. “Mensen zien gauw wanneer de bewegingen abnormaal zijn”, zegt Sicherer.

Toch zullen ze abnormale golven bij de simulator nog even voor lief moeten nemen, want daar zijn de golven nog niet interactief. “Zo gaat het vaak”, relativeert Sicherer. “Je werkt één probleem weg, en je loopt tegen het volgende op.”

Die volgende uitdaging bij Marin is ‘het scheepsmodel’. Dat is het hart van de simulator. Het bevat alle informatie over de omgeving, inclusief de zeekaart en de omringende schepen. En het berekent de beweging van het schip als uitkomst van het motorvermogen, de roerstand en de invloed van wind en golven. Nou ja, dat laatste zo’n beetje. En daar zit ‘m de kneep.

“Het huidige model reageert op de golven door een truc”, vertelt Sicherer. “Nu willen we het model echt laten reageren op golven, en daarvoor is een betere methode nodig voor de interactie tussen schip en golven. Want dat is qua rekenwerk nu de bottleneck”, vat ze samen. Een oplossing heeft ze ook al: “Het wordt tijd voor een nieuwe afstudeerder.”

Iets anders dat Marin graag uitgezocht zou hebben is het probleem van de kleine golven. Denk aan een landingsvaartuig dat een nauwe sleuf invaart en dan afremt. Op de eerste simulaties is te zien dat er dan een verrassend hoge golf van achter in het vaartuig dreigt te lopen. Marin hanteert tot nu toe een vaste maaswijdte van vijf meter, maar wil voor dit soort toepassingen weten of het ook mogelijk is om met verschillende maaswijdtes te werken, en hoe dat in elkaar te passen. In zijn artikel laat De Jong al weten dat groottevariatie en kromming van de mazen geen probleem zouden mogen opleveren.

Of en wanneer de golven in de Marin-simulator interactief worden, hangt van de prioriteit af die Marin er aan geeft, zegt Auke Ditzel. “We zijn nu de eersten die met interactieve golven werken, maar dat blijft vast niet zo.” De markt in scheepssimulatoren schijnt nogal competitief te zijn. “Ik krijg pijn in m’n buik als ik daar aan denk”, bekent Sicherer.



Martijn de Jong, Auke van der Ploeg, Auke Ditzel, Kees Vuik: ‘Real-time computation of interactive waves using the GPU’, 15th Numerical Towing Tank Symposium (NuTTS), Cortona, Italy, 2012.


Dit artikel is overgenomen door kennislink.

Redacteur Redactie

Heb je een vraag of opmerking over dit artikel?

delta@tudelft.nl

Comments are closed.