Computational Partial Differential Equations: Numerical Methods and Diffpack Programming (Hans Petter Langtangen; Springer, 2003; 2. painos, 881 sivua)
Matemaattisten mallien numeerinen ratkaiseminen on keskeinen osa laskennallista tiedettä. Tietokonesimulaatioiden avulla on mahdollista tutkia monimutkaisia reaalimaailman ilmiöitä.
Osittaisdifferentiaaliyhtälöt (ODY) ovat yleinen tapa esittää reaalimaailman ilmiö matematiikan keinoin. ODY-malleja voi ratkoa muun muassa differenssi- ja elementtimenetelmien avulla. Elementtimenetelmä mahdollistaa monimutkaisten reaalimaailman geometrioiden huomioimisen malleissa.
Diffpack on Norjassa kehitetty ohjelmisto ODY-mallien numeeriseen ratkaisemiseen. Lähtökohdaltaan Diffpack on saman kaltainen kuin suomalainen Elmer-ohjelmisto, mutta ohjelmointikielenä on C++ Elmerissä käytetyn Fortran 90:n sijaan.
Diffpack ei ole sovellusohjelmisto, vaan työkalupakki simulaatio-ohjelmistoa kehittävälle ohjelmoijalle. Diffpackin tehokas käyttö edellyttää varsin suurta perehtyneisyyttä C++-kieleen.
Langtangenin teos lähtee liikkeelle C++-ohjelmoinnin ja matemaattisen mallintamisen perusteista, ja etenee ripeästi Diffpackin syvyyksiin. Teoksessa on runsaasti esimerkkejä erityyppisten mallien ratkaisuohjelmistojen kehittämisestä Diffpackin avulla. Myös monifysikaalisten mallien ratkaisua esitellään.
Alkeiden lisäksi teoksessa mennään syvälliselle tasolle, esimerkiksi adaptiiviseen verkon tihentämiseen. Kirjan käyttöarvoa lisää, että esimerkit ovat saatavissa lähdekoodeineen www:stä.
Monifysikaaliseen mallintamiseen kehitetyt Elmer- ja Diffpack-ohjelmistot muistuttavat toisiaan huolimatta C++:n ja Fortran 90:n eroista ohjelmointikielinä. Syynä on varmaankin se, että elementtimenetelmän toteuttaminen elegantisti ja laajennettavasti edellyttää tietyn matemaattisen koneiston käyttöä.
Diffpackin juuret ovat akateemisessa maailmassa. Siten ohjelmisto soveltuu akateemisten malliongelmien ratkaisuun ja uusien algoritmien kehittelyyn. Työskentelen Elmeriä kehittävässä ryhmässä. Tästä näkökulmasta jouduin pohtimaan kysymystä, onko Elmerin ja Diffpackin kesken käynnissä Suomi-Norja maaottelu yleiskäyttöisen mallinnusohjelmiston kehittämisessä. Mutta onneksi näin ei sentään ole. Ohjelmistot ovat samoista lähtökohdista huolimatta melko erilaisia. Diffpack edellyttää vahvaa C++-ohjelmointitaitoa, kun taas Elmerin kanssa selviää perinteisellä insinöörin Fortranilla.
Itseäni vaivaa epäluulo C++:n raskasta koneistoa kohtaan, eikä tämä teos epäluuloa lievennä. Toki vastapainoksi C++ tarjoaa olio-ohjelmoinnin hienouksia, mutta onko tämä lopulta riittävän hyvä vastine syntaksin raskassoutuisuudelle?
Koska Diffpack on vain ohjelmistorunko, tarvitaan käytännön ongelmien ratkaisemiseen myös muita työkaluja. Teoksessa esitellään muun muassa Pythonin, Gnuplotin ja Imagemagickin käyttöä Diffpackin kanssa. Monifysikaaliset mallinnusohjelmistot edellyttävät käyttäjiltään laajaa mallintamisen ja numeeristen menetelmien osaamista. Moniosaajista on pulaa, joten hyville käsikirjoille on tarvetta.
Tieteen suurten haasteiden ratkaiseminen riipppuu kyvystä hallita monifysikaalista mallintamista. Tällaisia haastavia tutkimusalueita ovat muun muassa mikrofluidistiikka, laskennallinen lääketiede ja ympäristömallinnus. On hyvä asia, että tutkijalla on valinnan varaa, kun on tarpeen löytää työkalu simulaatiomallin ratkaisemiseen. Mallinnusohjelmistoille löytyy roppakaupalla vaikeita ongelmia ratkottaviksi.