Elementtien numerointijärjestelmä ja muotofunktiokirjasto¶
Kohdassa Muotofunktiot ja äärellisten elementtien approksimaatio esitellyllä muotofunktiolla \(N_\alpha^e(\boldsymbol{r})\) on kullekin elementtityypille oma erityinen muotonsa. Tässä luvussa luokitellaan FrontISTRin tarjoamat elementtiryhmät kolminumeroisten elementtityyppinumeroiden avulla ja esitetään muotofunktiokirjaston rajapinta, jolla eri elementtejä käsitellään yhtenäisesti. Kolmiulotteisten solidielementtien luonnolliset koordinaatistot ja muotofunktiot sekä toisen kertaluvun elementtien välisolmujen järjestyksen muunnos käsitellään kohdassa Kolmiulotteisten solidielementtien muotofunktiot, ja elementtityyppien valintaohjeet kohdassa Elementtikirjasto (toiminnot).
Elementtien luokittelu ja nimeämissäännöt¶
FrontISTRin elementtityypit tunnistetaan kolminumeroisilla numeroilla. Kunkin numeron merkitys on seuraava.
- Ensimmäinen numero (elementtiryhmä): 1 = viivaelementti/ristikko, 2 = tasoelementti, 3 = solidielementti, 5 = rajapintaelementti, 6 = palkkielementti, 7 = kuorielementti.
- Toinen numero (perusmuoto): erottaa elementtiryhmän sisällä geometrisen muodon (kolmio, nelikulmio, tetraedri, prisma tai heksaedri).
- Kolmas numero (interpolointikertaluku): 1 = ensimmäinen kertaluku (vain kulmasolmut), 2 = toinen kertaluku (myös välisolmut). Poikkeuksena kaksisolmuinen ristikkoelementti on numero 301.
Tarjotut elementit luetellaan elementtiryhmittäin seuraavassa taulukossa.
| Elementtiryhmä | Elementtityyppi | Solmujen määrä | Kuvaus |
|---|---|---|---|
| Viivaelementti | 111 | 2 | 2-solmuinen linkkielementti (ei käytettävissä jännitysanalyysissä) |
| 112 | 3 | 3-solmuinen linkkielementti (ei käytettävissä jännitysanalyysissä) | |
| Tasoelementti | 231 | 3 | Ensimmäisen kertaluvun kolmioelementti |
| 232 | 6 | Toisen kertaluvun kolmioelementti | |
| 241 | 4 | Ensimmäisen kertaluvun nelikulmioelementti | |
| 242 | 8 | Toisen kertaluvun nelikulmioelementti (Serendipity-perhe) | |
| Solidielementti | 301 | 2 | 2-solmuinen ristikkoelementti |
| 341 | 4 | Ensimmäisen kertaluvun tetraedrielementti | |
| 342 | 10 | Toisen kertaluvun tetraedrielementti | |
| 351 | 6 | Ensimmäisen kertaluvun prismaelementti | |
| 352 | 15 | Toisen kertaluvun prismaelementti | |
| 361 | 8 | Ensimmäisen kertaluvun heksaedrielementti | |
| 362 | 20 | Toisen kertaluvun heksaedrielementti (Serendipity-perhe) | |
| Rajapintaelementti | 541 | 4×2 | Ensimmäisen kertaluvun nelikulmiopintaelementti (ei käytettävissä jännitysanalyysissä) |
| 542 | 8×2 | Toisen kertaluvun nelikulmiopintaelementti (ei käytettävissä jännitysanalyysissä) | |
| Palkkielementti | 611 | 2 | 2-solmuinen Bernoulli–Euler-palkkielementti (6 vapausastetta solmua kohti) |
| 641 | 2×2 | 2-solmuinen Bernoulli–Euler-palkkielementti (3 vapausastetta solmua kohti, sekavapausasteille) | |
| Kuorielementti | 731 | 3 | MITC3-kolmio-kuorielementti (6 vapausastetta solmua kohti) |
| 741 | 4 | MITC4-nelikulmio-kuorielementti (6 vapausastetta solmua kohti) | |
| 743 | 9 | MITC9-nelikulmio-kuorielementti (6 vapausastetta solmua kohti) | |
| 761 | 3×2 | MITC3-kolmio-kuorielementti (3 vapausastetta solmua kohti, sekavapausasteille) | |
| 781 | 4×2 | MITC4-nelikulmio-kuorielementti (3 vapausastetta solmua kohti, sekavapausasteille) |
Lineaarisella heksaedrielementillä 361 on useita formulointeja (täysi integrointi, epäyhteensopiva muoto, B-bar ja F-bar), jotka valitaan analyysin ohjauksella. Yksityiskohdat ovat kohdassa Edistyneet elementtiformuloinnit.
Palkkielementti 641 ja kuorielementit 761/781 ovat formulointeja, joilla 6 vapausasteen rakenne-elementtejä liitetään samoissa solmuissa 3 vapausasteen solidielementteihin; yhtä rakennesolmua esitetään kahdella 3 vapausasteen solmulla. Formuloinnit ovat muutoin samat kuin vastaavissa 6 vapausasteen versioissa (611, 731 ja 741).
Muotofunktiokirjasto¶
Elementtien laskentarutiineilla (jäykkyysmatriisin ja sisäisen voiman vektorin muodostaminen) ei ole erillisiä rutiineja kullekin elementtityypille. Sen sijaan ne kutsuvat muotofunktiokirjastoa yhtenäisen rajapinnan kautta, joka ottaa argumentiksi elementtityyppinumeron fetype. Moduuli elementInfo (fistr1/src/lib/element/element.f90) tarjoaa seuraavat funktiot.
NumOfQuadPoints(fetype): palauttaa elementtityypin integraatiopisteiden määrän \(n_q\).getQuadPoint(fetype, np, pos): palauttaa integraatiopisteen \(i\) luonnolliset koordinaatit \(\boldsymbol{r}_i\).getWeight(fetype, np): palauttaa integraatiopisteen \(i\) painon \(w_i\).getShapeFunc(fetype, r, N): palauttaa muotofunktion arvot \(N_\alpha^e(\boldsymbol{r})\) luonnollisissa koordinaateissa \(\boldsymbol{r}\).getShapeDeriv(fetype, r, dN): palauttaa muotofunktioiden luonnollisten koordinaattien derivaatat \(\partial N_\alpha^e/\partial \boldsymbol{r}\).getGlobalDeriv(fetype, n_e, r, X^e, J, dN_x): palauttaa elementin solmukoordinaattien \(\boldsymbol{X}^e\) perusteella fysikaalisten koordinaattien derivaatat \(\partial N_\alpha^e/\partial \boldsymbol{x}\) ja Jacobin determinantin \(J\).getNumberOfSubface(fetype),getSubFace(fetype, k, ...): palauttavat elementin reunapintojen määrän ja kunkin pinnan muodostavien solmujen numerot. Niitä käytetään pintakuormien ja kontaktipintojen muodostamiseen.
Kukin funktio haarautuu sisäisesti elementtityyppinumeron mukaan ja kutsuu kutakin elementtityyppiä varten tarjottujen alemman tason moduulien muotofunktio- ja muotofunktioderivaatta-aliohjelmia (tet4n.f90, tet10n.f90, prism6n.f90, prism15n.f90, hex8n.f90, hex20n.f90, tri3n.f90, tri6n.f90, quad4n.f90, quad8n.f90, quad9n.f90, line2n.f90, line3n.f90). Integraatiopisteiden koordinaattien ja painojen numeeriset taulukot on koottu tiedostoon quadrature.f90. Uuden elementtityypin lisäämiseksi toteuta vastaava alemman tason moduuli ja lisää sitä koskevat haarat kuhunkin elementInfo-funktioon.
Toisen kertaluvun kolmioelementtien välisolmujen järjestyksen muunnos¶
Toisen kertaluvun kolmioelementissä 232 välisolmujen järjestys eroaa HEC-MW:n verkkosyöttömuodon (jossa kulmasolmut järjestetään elementin ympäri ja sen jälkeen välisolmut särmien 1-2, 2-3, … mukaan) ja elementtikirjaston muotofunktioiden olettaman FrontISTRin sisäisen muodon välillä. Muotojen välinen ero ratkaistaan heti verkon latauksen jälkeen funktiolla hecmw2fstr_mesh_conv (fistr1/src/common/hecmw2fstr_mesh_conv.f90 ja hecmw2fstr_connect_conv.c), joka järjestää kuusi solmua uudelleen muotoon \(\{1,2,3,6,4,5\}\) muunnostaulukon Table232 mukaisesti. Koska muunnos tehdään suoraan elementin kytkentätiedot tallentavaan taulukkoon, kaikki myöhemmät elementtikirjastokutsut käyttävät FrontISTRin sisäistä solmujärjestystä. Tulostuksessa käänteismuunnos fstr2hecmw_mesh_conv palauttaa HEC-MW-muodon ennen kirjoittamista, joten käyttäjän tarvitsee tuntea vain HEC-MW-muoto sekä syötössä että tulostuksessa.
Toisen kertaluvun kolmiulotteisille solidielementeille 342 (tetraedri) ja 352 (prisma) tehdään vastaavat automaattiset muunnokset, kun taas 362:lle (toisen kertaluvun heksaedri) muunnosta ei tehdä. Niiden käsittely on kohdassa Kolmiulotteisten solidielementtien muotofunktiot. Toisen kertaluvun taso-nelikulmioelementille 242 ja rajapintaelementille 542 ei tehdä muunnosta, koska välisolmujen järjestys on sama HEC-MW:n syöttömuodossa ja sisäisessä muodossa.
Liittyvät aiheet¶
- Muotofunktiot ja äärellisten elementtien approksimaatio — Muotofunktioiden matemaattinen määritelmä
- Numeerinen integrointi — Integraatiopisteet, painot ja elementti-integroinnin likimääräinen muoto
- Kolmiulotteisten solidielementtien muotofunktiot — Jatkuvien solidielementtien luonnolliset koordinaatit ja muotofunktiot
- Edistyneet elementtiformuloinnit — B-bar / F-bar / epäyhteensopiva muoto / kuori / palkki
- Elementtikirjasto (toiminnot) — Elementtityyppien vaihtoehdot ja valintaohjeet