Hyppää sisältöön

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

AI-assisted translation May contain errors Official docs Status