Elementtimenetelmä

Elementtimenetelmä (FEM, engl. Finite Element Method) on numeerinen menetelmä differentiaaliyhtälöiden, erityisesti osittaisdifferentiaaliyhtälöiden, ratkaisemiseen tietokoneella. Differentiaaliyhtälöt ovat hyvin yleisiä esimerkiksi fysiikassa, mutta vähänkään monimutkaisemmissa ongelmissa differentiaaliyhtälöä ei voida ratkaista tarkasti niin kutsutussa suljetussa muodossa, eli tavallisten matemaattisten operaatioiden avulla. Niinpä joudutaan tyytymään esimerkiksi elementtimenetelmän antamaan likimääräiseen vastaukseen. Menetelmä perustuu alkuperäisen jatkuvan ongelman muuntamiseen lineaariseksi yhtälöryhmäksi diskretoimalla, jolloin ongelma voidaan ratkaista tietokoneella. Elementtimenetelmän antama ratkaisu on paloittain polynominen approksimaatio tarkasta ratkaisusta. Helpoimmassa tapauksessa vastaus rajataan ensimmäisen asteen polynomeihin, jolloin ratkaisu on paloittain lineaarinen funktio. == Sovellukset == Käytännössä elementtimenetelmää käytetään lähinnä kaksi- ja kolmiulotteisten ongelmien ratkaisuun, sillä yksiulotteisiin ongelmiin on usein helppo löytää ratkaisu analyyttisesti. Menetelmä on hyvin monikäyttöinen, sillä se soveltuu kaikenlaisten osittaisdifferentiaaliyhtälöiden numeeriseen ratkaisemiseen. Elementtimenetelmällä voidaan mallintaa muun muassa rakenteiden taipumista ja niiden kokemia jännityksiä, kappaleen sisäistä sähkönjohtavuutta sekä nesteen tai kaasun käyttäytymistä. Menetelmä luotiin alun perin erityisesti kone- ja rakennustekniikan alalle erilaisten rakenteiden statiikan ja dynamiikan käsittelyyn, mutta nykyään sitä käytetään laajasti eri aloilla, muun muassa lujuusopissa, virtausmekaniikassa, geofysiikassa, sähkötekniikassa, akustiikassa ja bioteknologiassa. == Matemaattinen muotoilu == === Yksiulotteinen esimerkki === Tutkitaan esimerkkinä seuraavaa reunaehto- ongelmaa: etsi funktio u(x) \in C^2(0, 1), joka toteuttaa seuraavat ehdot: \frac{d^2 u(x)}{dx^2}=f(x),\quad x\in[0,1] u(0)=0,\quad u(1)=0. Tässä C^2(0, 1) tarkoittaa sellaisten funktioiden joukkoa, jotka ovat kahdesti derivoituvia välillä (0,1) ja funktio f tunnetaan. ==== Heikko muoto ==== Elementtimenetelmää varten ongelma on kirjoitettava niin sanottuun heikkoon muotoon eli variaatiomuotoon. Tämä tapahtuu kertomalla yhtälö molemmin puolin jollakin reunaehdot täyttävällä funktiolla v(x) ja integroimalla saadun yhtälön molemmat puolet. \int_0^1 \frac{d^2u(x)}{dx^2}v(x) dx = \int_0^1 v(x)f(x)dx Tämän yhtälön vasen puoli voidaan osittaisintegroida, jolloin osittaisintegroinnin toinen termi katoaa sen vuoksi, että v(0)=v(1)=0. Saatu ongelma heikossa muodossa on tämän jälkeen \int_0^1 \frac{du(x)}{dx}\frac{dv(x)}{dx} dx = -\int_0^1 v(x)f(x)dx. Yllä oleva yhtälö on tarkoitus ratkaista siten, että pyritään löytämään u, joka toteuttaa yhtälön kaikilla halutuilla tarpeeksi hyvin käyttäytyvillä funktioilla v (sopiva funktioavaruus v:lle on esimerkiksi Sobolevin avaruus). Heikko muoto auttaa ongelman muotoilemisessa lineaarialgebran käsitteiksi. Lisäksi heikon muodon etuna on, että se lieventää hieman ehtoja, joita funktiolta u vaaditaan, jolloin useampi ongelma on ratkaistavissa. Nyt funktion u on oltava vain kerran derivoituva, sen on ratkaistava ongelma vain halutuilla funktioilla v ja lisäksi integraali voidaan määrittää, vaikka u ei olisikaan derivoituva yksittäisissä pisteissä. ==== Diskretointi ==== Jotta ongelman voisi ratkaista tietokoneella, vastausta pitää etsiä jostakin äärellisulotteisesta funktioavaruudesta. Elementtimenetelmän tapauksessa vastausta approksimoidaan paloittain määritellyllä polynomilla. Käytetään tässä esimerkissä paloittain lineaarisia funktioita. Lineaariset kantafunktiot \phi_k ovat nyt terävän hatun muotoisia ja ne määritellään seuraavasti: \phi_k(x)=\begin{cases} \frac{x-x_{k-1}}{x_k-x_{k-1}}, & \mbox{ kun } x\in[x_{k-1},x_k],\\\ \frac{x_{k+1}-x}{x_{k+1}-x_k}, & \mbox{ kun } x\in[x_k,x_{k+1}],\qquad\forall k=1,\ldots,n\\\ 0 & \mbox{ muulloin} \end{cases}. Otetaan esimerkkiin neljä kantafunktiota. Tällöin mikä tahansa elementtiavaruuteen V_h kuuluva funktio voidaan kirjoittaa tässä kannassa muodossa w_h(x)=\sum_{k=1}^4 \alpha_k \phi_k(x) joillain kertoimilla \alpha_k. Niinpä heikko ongelma elementtiavaruudessa on seuraava: etsi u_h \in V_h, jolle pätee \int_0^1 \frac{du_h(x)}{dx}\frac{dv_h(x)}{dx} dx = -\int_0^1 v_h(x)f(x)dx \qquad \forall v_h\in V_h. Funktio u_h voidaan kirjoittaa kantafunktioiden avulla muodossa u_h=\sum_{k=1}^4 \beta_k \phi_k. Sijoitetaan tämä yllä olevaan. Nyt ongelmana on löytää kertoimet \beta_k, joille \sum_{k=1}^4\beta_k\int_0^1 \frac{d\phi_k(x)}{dx}\frac{dv_h(x)}{dx} dx = -\int_0^1 v_h(x)f(x)dx \qquad \forall v_h\in V_h. Elementtiavaruus V_h on äärellinen ja riittää tarkistaa, että yhtälö toteutuu v_h:n ollessa avaruuden kantafunktio. Siispä ongelma voidaan kirjoittaa seuraavasti: löydä kertoimet \beta_k siten, että \sum_{k=1}^4\beta_k\int_0^1 \frac{d\phi_k(x)}{dx}\frac{d\phi_i(x)}{dx} dx = -\int_0^1 \phi_i(x) f(x)dx jokaiselle i=1,...,4. Tämän voi nyt kirjoittaa lineaarisena yhtälöryhmänä A\mathbf{x} = \mathbf{f}, jossa matriisi A ja vektorit \mathbf{x} sekä \mathbf{f} on määritelty seuraavasti: A_{ik}=\int_0^1 \frac{d\phi_k(x)}{dx} \frac{d\phi_i(x)}{dx} dx \mathbf{x}_k = \beta_k \mathbf{f}_i = -\int_0^1 \phi_i(x) f(x)dx. Kantafunktiot ja niiden derivaatat sekä funktio f(x) tunnetaan ja matriisin A sekä vektorin \mathbf{f} elementit voidaan laskea näistä numeerisesti integroimalla, joten lineaarisesta yhtälöryhmästä voidaan ratkaista vektori \mathbf{x}. Huomionarvoista on, että matriisi A on symmetrinen, positiividefiniitti ja harva, eli suurin osa sen alkioista on nollia. Saatu lineaarinen yhtälöryhmä on usein niin suuri, ettei sitä kannata ratkaista eksaktisti ja vektori \mathbf{x} ratkaistaankin usein esimerkiksi konjugaattigradienttimenetelmällä. === Moniulotteinen esimerkki === Elementtimenetelmä soveltuu hyvin esimerkiksi Poissonin yhtälön ratkaisuun sekä kahdessa että kolmessa ulottuvuudessa. Yhtälö voidaan kirjoittaa Laplacen operaattorilla muodossa: abla^2 u = f \quad \mathrm{alueessa}\; \Omega u=0 \quad \textrm{reunalla} \; \partial \Omega missä \Omega on jokin tarpeeksi mukavan muotoinen kaksi- tai kolmiulotteinen alue, esimerkiksi monikulmio. Tämän yhtälön heikko muoto on -\int_\Omega abla u \cdot abla v \, ds = \int_\Omega fv\,ds. Elementtimenetelmä toimii kaksi- ja kolmiulotteisissa tapauksissa hyvin samalla lailla kuin yksiulotteisessakin. Lineaarinen ongelma muodostetaan heikosta muodosta käytännössä analogisesti yksiulotteisen esimerkin kanssa. Kaksiulotteista ratkaisua varten on muodostettava esimerkiksi kolmioista koostuva verkko, jonka kolmioiden kärkipisteissä aina yksi kantafunktioista on arvoltaan yksi ja kaikki muut nollia. Myös esimerkiksi nelikulmioista koostuvaa verkkoa voidaan käyttää. Lineaarisessa tapauksessa näin muodostuvat kantafunktiot ovat ikään kuin pyramidin muotoisia ja elementtimenetelmän antamat ratkaisut ovat paloittain määriteltyjä lineaarisia funktioita kahdessa ulottuvuudessa. Kolmiulotteisessa tapauksessa verkko taas voi koostua esimerkiksi tetraedreistä. == Lähteet == Luokka:Differentiaalilaskenta Luokka:Numeerinen analyysi