{"id":1672,"date":"2013-03-18T20:53:50","date_gmt":"2013-03-18T20:53:50","guid":{"rendered":"http:\/\/www.joswassink.nl\/inzicht\/?p=1672"},"modified":"2013-03-18T20:59:50","modified_gmt":"2013-03-18T20:59:50","slug":"de-wiskunde-van-water","status":"publish","type":"post","link":"https:\/\/www.joswassink.nl\/inzicht\/?p=1672","title":{"rendered":"De wiskunde van water"},"content":{"rendered":"<p><b>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.<\/b><\/p>\n<p>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 vaal gele 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 \u00e9\u00e9n muisklik voorbij zijn.<\/p>\n<p><iframe loading=\"lazy\" title=\"Wiskunde Van Water\" class=\"scribd_iframe_embed\" src=\"https:\/\/www.scribd.com\/embeds\/131103155\/content\" data-aspect-ratio=\"0.7274193548387097\" scrolling=\"no\" id=\"131103155\" width=\"500\" height=\"750\" frameborder=\"0\"><\/iframe><script type=\"text\/javascript\">          (function() { var scribd = document.createElement(\"script\"); scribd.type = \"text\/javascript\"; scribd.async = true; scribd.src = \"https:\/\/www.scribd.com\/javascripts\/embed_code\/inject.js\"; var s = document.getElementsByTagName(\"script\")[0]; s.parentNode.insertBefore(scribd, s); })()        <\/script><\/p>\n<p>Lees op <a href=\"http:\/\/www.delta.tudelft.nl\/artikel\/de-wiskunde-van-water\/26439\" target=\"_blank\">Delta-site<\/a><\/p>\n<p><!--more--><\/p>\n<p>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.<\/p>\n<p>Realisme is daarbij geen luxe maar noodzaak. Het is geen toeval dat het uitzicht op de schermen doet denken aan een computergame. \u201cVoor onze klanten is de game-industrie de referentie\u201d, zegt\u00a0 dr.ir. Auke Ditzel. Hij is projectleider bij de maritieme sofware- en simulatiegroep bij Marin. Hij heeft likkebaardend naar de monstergolven in de film <i>The Perfect Storm<\/i> 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 <i>real-time<\/i>: minimaal iedere tiende seconde een nieuw beeld.<\/p>\n<p>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. \u201cHet zijn gewoon sinussen\u201d, 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. \u201cEr gebeurt niets in dat water\u201d, wijst Sicherer. \u201cJe ziet geen boeggolf. En het kielzog wordt gewoon op het water getekend als witte wolkjes.\u201d Nog 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.<\/p>\n<p>Dat zijn de beperkingen van wat men hier \u2018deterministische golven\u2019 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.<\/p>\n<p>Het alternatief is een \u2018interactief model\u2019 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.<\/p>\n<p>\u201cHet draait allemaal om het terugbrengen van rekentijd\u201d, weet prof.dr.ir. Kees Vuik (EWI). De eerste stap daarvoor werd gezet door de Twentse ingenieur en promovendus Gert Klopman. \u201cDie is van een ingewikkeld wiskundig model naar een vereenvoudigd model gekomen met bijna dezelfde functionaliteit\u201d, aldus Vuik. Die vereenvoudigde vergelijkingen staan bekend als het \u2018variationeel Boussinesq model\u2019. 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.<\/p>\n<p>Dat was de situatie toen ruim drie jaar geleden ir. Elwin van \u2018t Wout als Delftse afstudeerder bij Marin aan de slag ging. \u201cElwin heeft toen de eerste stappen gemaakt om de berekeningen parallel uit te laten voeren\u201d, 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 hele simpele processors bevatten die razendsnel kunnen rekenen, maar die verder vrij beperkt zijn. Dus moest Van \u2018t 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.<\/p>\n<p>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.<\/p>\n<p>Anneke Sicherer (Marin) had het model van Klopman ge\u00efmplementeerd 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.<\/p>\n<p>De numerieke vergelijkingen worden iteratief opgelost: de uitkomst van de vergelijkingen worden als input\u00a0 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 <i>Repeated Red-Black<\/i> 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.<\/p>\n<p>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.<\/p>\n<p>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. \u201cVoor de grootste testproblemen vinden we een versnelling met een factor 25\u201d, schrijft De Jong (*). De rekentijd voor 1,5 miljoen punten bedraagt slechts 10 milliseconden. Dus, concludeert De Jong, zijn velden met vier miljoen punten <i>real-time<\/i> te berekenen (want ook met 30 milliseconden rekentijd zijn 25 beelden per seconde haalbaar).<\/p>\n<p>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. \u201cMensen zien gauw wanneer de bewegingen abnormaal zijn\u201d, zegt Sicherer.<\/p>\n<p>Toch zullen ze abnormale golven bij de simulator nog even voor lief moeten nemen, want daar zijn de golven nog niet interactief. \u201cZo gaat het vaak\u201d, relativeert Sicherer. \u201cJe werkt \u00e9\u00e9n probleem weg, en je loopt tegen het volgende op.\u201d<\/p>\n<p>Die volgende uitdaging bij Marin is \u2018het scheepsmodel\u2019. 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\u2019n beetje. En daar zit \u2018m de kneep.<\/p>\n<p>\u201cHet huidige model reageert op de golven door een truc\u201d, vertelt Sicherer. \u201cNu 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 <i>bottleneck<\/i>\u201d, vat ze samen. Een oplossing heeft ze ook al: \u201cHet wordt tijd voor een nieuwe afstudeerder.\u201d<\/p>\n<p>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.<\/p>\n<p>Of en wanneer de golven in de Marin-simulator interactief worden, hangt van de prioriteit af die Marin er aan geeft, zegt Auke Ditzel. \u201cWe zijn nu de eerste die met interactieve golven werken, maar dat blijft vast niet zo.\u201d De markt in scheepssimulatoren schijnt nogal competitief te zijn. \u201cIk krijg pijn in m\u2019n buik als ik daar aan denk\u201d, bekent Sicherer.<\/p>\n<p>(*) Martijn de Jong, Auke van der Ploeg, Auke Ditzel, Kees Vuik: <i>Real-time computation of interactive waves using the GPU<\/i>, 15th Numerical Towing Tank Symposium (NuTTS), Cortona, Italy, 2012.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,24],"tags":[139,344,341,343,342],"class_list":["post-1672","post","type-post","status-publish","format-standard","hentry","category-artikelen","category-delta","tag-ewi","tag-kees-vuik","tag-marin","tag-simulator","tag-water"],"_links":{"self":[{"href":"https:\/\/www.joswassink.nl\/inzicht\/index.php?rest_route=\/wp\/v2\/posts\/1672","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.joswassink.nl\/inzicht\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.joswassink.nl\/inzicht\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.joswassink.nl\/inzicht\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.joswassink.nl\/inzicht\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1672"}],"version-history":[{"count":6,"href":"https:\/\/www.joswassink.nl\/inzicht\/index.php?rest_route=\/wp\/v2\/posts\/1672\/revisions"}],"predecessor-version":[{"id":1678,"href":"https:\/\/www.joswassink.nl\/inzicht\/index.php?rest_route=\/wp\/v2\/posts\/1672\/revisions\/1678"}],"wp:attachment":[{"href":"https:\/\/www.joswassink.nl\/inzicht\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1672"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.joswassink.nl\/inzicht\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1672"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.joswassink.nl\/inzicht\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1672"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}