Hyppää sisältöön

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

Warning!

Puhti scratch disk is becoming very full (80+ % ) resulting in performance degradation. Everybody is advised to only keep actively processed data on scratch, all other data should be deleted, transferred to host institute or stored in Lumi-O. No new quota will be granted. Click here for a tool for examining your disk usage.

OpenFOAM

OpenFOAM ("Open-source Field Operation And Manipulation") on C++-työkalupakki räätälöityjen numeeristen ratkaisijoiden sekä kontinuumimekaniikan ongelmien ratkaisemiseen tarkoitettujen esi- ja jälkikäsittelytyökalujen kehittämiseen. Tunnetuin käyttökohde on laskennallinen virtausdynamiikka (CFD). OpenFOAMissa on laaja valikoima ominaisuuksia, joilla voidaan ratkaista kaikkea kemiallisia reaktioita, turbulenssia ja lämmönsiirtoa sisältävistä monimutkaisista virtauksista kiinteän aineen dynamiikkaan ja sähkömagnetiikkaan (OpenCFD Ltd:n mukaan).

OpenFOAMista on kolme eri versiota, joista CSC – Tieteen tietotekniikan keskuksen laskentaympäristöihin on tällä hetkellä asennettu eri versioita OpenFOAM Foundationilta ja OpenCFD Ltd:ltä.

Lisenssi

OpenFOAM on vapaasti saatavilla oleva avoimen lähdekoodin ohjelmisto, ja se on lisensoitu GNU General Public Licence -lisenssillä (GNU GPL tai GPL), johon liittyvät GPL-lisenssille tyypilliset käyttöehdot. OpenFOAM® on OpenCFD Ltd:n rekisteröity tavaramerkki, joka on lisensoitu OpenFOAM Foundationille.

Saatavuus

Eri OpenFOAM-versioita, joita tarjoavat OpenFOAM Foundation ja OpenCFD, on asennettu Puhti-, Mahti- ja LUMI-palvelimille.

Käyttö

Kirjauduttuasi palvelimelle anna komento

module spider openfoam

LUMIssa sinun täytyy ensin ladata moduuliympäristö

module use /appl/local/csc/modulefiles
module spider openfoam

Komento listaa palvelimella saatavilla olevat OpenFOAM-versiot. Saadaksesi lisätietoja tietystä versiosta, esimerkiksi OpenFOAM Foundationin versiosta 10, käytä komentoa

module spider openfoam/10

Käynnistääksesi tietyn version (esimerkiksi version 10), anna komento

module load openfoam/10

OpenCFD:n versiot tunnistaa versiomerkkijonosta, joka alkaa kirjaimella v. Esimerkiksi version openfoam/v2206 käynnistämiseen käytetään komentoa

module load openfoam/v2206

Erätöiden komentojonokomentosarjojen esimerkkitiedostoja on saatavilla palvelimilla. Kun olet antanut käynnistyskomennon (module load, katso yllä), esimerkkikomentosarja löytyy tiedostosta

$WM_PROJECT_INST_DIR/batch_script_examples/parjob_openfoam_<server>

jossa <server> on joko puhti, mahti tai lumi. Kopioi tiedosto työhakemistoosi ja muokkaa sitä tarpeidesi mukaan.

Käytä collated-rinnakkais-I/O-menetelmää CSC:n palvelimilla

  • käytä CSC:n laskentapalvelimilla OpenFOAMin collated I/O -menetelmää aina kun mahdollista
  • collated-menetelmän käyttö on ehdottoman välttämätöntä, kun mallin koko on suuri ja levy-I/O:ta tarvitaan paljon

CSC:n laskentaympäristöissä, Puhdissa, Mahdissa ja LUMIssa, käytettävä tiedostojärjestelmä on Lustre, joka on optimoitu pienen tiedostomäärän lukemiseen ja kirjoittamiseen. OpenFOAMin kirjoittamien tulostetiedostojen määrä voi helposti kasvaa erittäin suureksi, jopa miljooniin, jos hilan koko on suuri ja kenttämuuttujat kirjoitetaan levylle jokaisella aika-askeleella. Tällaiset I/O-operaatiot kuormittavat tiedostojärjestelmää voimakkaasti, ja koko laskentaympäristö voi ruuhkautua jo muutaman samanaikaisen OpenFOAM-käyttäjän vuoksi.

Edellä kuvattu OpenFOAMin perinteinen rinnakkais-I/O-menetelmä voidaan uusimmissa OpenFOAM-versioissa korvata collated-rinnakkais-I/O-menetelmällä, jossa tulosdata kirjoitetaan vain muutamaan tiedostoon. Rinnakkaisia tiedostojärjestelmiä käyttävillä HPC-ympäristöillä tämä on ollut merkittävä parannus OpenFOAMiin.

CSC:n palvelimilla tehdyissä testiajoissa collated I/O -menetelmällä ei ole havaittu merkittävää eroa läpimenoajassa verrattuna ei-collated-menetelmään. Joissakin testeissä collated-menetelmä on osoittautunut hieman nopeammaksi. Suosittelemme collated-menetelmän käyttöä aina, kun se on käytännöllistä.

Esimerkki

Mahdin palvelimella on 128 ydintä solmua kohden. Jos mallin alialueiden kokonaismäärä on 256, käyttäjä voi varata kaksi kokonaista solmua ratkaisijan ajoa varten. Hajotus voidaan eräajossa tehdä komennolla

decomposePar -fileHandler collated -ioRanks '(0 128 256)'

ja tällöin luodaan kaksi hakemistoa: processors256_0-127 ja processors256_128-255. Ratkaisijan ajoa varten komento on tällöin

pimpleFoam -parallel -fileHandler collated -ioRanks '(0 128 256)'

Tällä tavoin molemmilla solmuilla käynnistetään 128 prosessia, ja kummallakin solmulla yksi prosessi toimii pääprosessina. Datan kokoaminen tehdään eräajossa komennolla

reconstructPar

Tässä esimerkissä alueiden 0–127 paineen tulokset kirjoitetaan jokaista aika-askelta kohden yhteen tiedostoon. Ei-collated-menetelmässä samat tulokset olisi kirjoitettu 128 erilliseen tiedostoon. Tämä valtava tulostetiedostojen määrän väheneminen tapahtuu luonnollisesti myös kaikkien muiden kenttämuuttujien osalta.

Collated-menetelmän I/O-operaatiot perustuvat säikeistettyihin aliprosesseihin, eivätkä ne siksi aiheuta simulaatiolle ajallista lisäkuormaa verrattuna ei-collated-menetelmään.

Esimerkkikomentosarjat collated-menetelmän käyttöön Mahdissa

Esimerkkikomentosarjat erillisille hajotus-, ratkaisu- ja kokoamisajoille löytyvät kansiosta (näiden tiedostojen käyttämiseksi module load -komento on pitänyt suorittaa)

$WM_PROJECT_INST_DIR/batch_script_examples

Huomaa, että Mahdissa hajotus ja kokoaminen on tehtävä interaktiivisessa jonossa.

Tuki

Jos kohtaat ongelmia käyttäessäsi OpenFOAMia CSC:n palvelimilla, lähetä sähköpostia CSC:n asiakastukeen.

Lisätietoja

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta