Ratkaisija ja esikonditionointi¶
FrontISTR:n lineaarisissa ratkaisijoissa valitaan joko suora tai iteratiivinen menetelmä; iteratiivisissa menetelmissä käytetään esikonditionointia lineaaristen yhtälöiden ratkaisemiseksi. MPC-käsittelymenetelmä ja kontaktivapausasteiden eliminointi ovat lisävalintoja, jotka määräävät, miten monipisterajoitteita tai kontaktirajoitteita sisältävä lineaarinen järjestelmä käsitellään.
Toimintojen yleiskatsaus¶
Ratkaisijan ja esikonditionoinnin asetukset koostuvat seuraavista valinnoista. Valitse ensin lineaariseksi ratkaisijaksi joko iteratiivinen tai suora menetelmä. Esikonditionointia käytetään vain iteratiivisen menetelmän kanssa.
| Luokka | Päävaihtoehdot | Tehtävä |
|---|---|---|
| Iteratiiviset menetelmät | CG, BiCGSTAB, GMRES, GPBiCG, GMRESR, GMRESREN | Ratkaisevat suuria harvoja matriiseja suhteellisen tehokkaalla muistinkäytöllä. |
| Iteratiivisten menetelmien esikonditionointi | SSOR, diagonaalinen skaalaus, BILU, AMG, SAINV, RIF | Parantaa iteratiivisten menetelmien konvergenssia. Ei käytetä suorien menetelmien kanssa. |
| Suorat menetelmät | MUMPS, MKL | Ratkaisevat lineaariset yhtälöt robustisti matriisin faktoroinnilla. |
| MPC-käsittelymenetelmät | Rangaistusmenetelmä, eksplisiittinen vapausasteiden eliminointi | Sisällyttävät monipisterajoitteet lineaariseen järjestelmään. |
| Kontaktivapausasteiden eliminointi | Automaattinen, aina käytössä | Ohjaa SLAGRANGE-kontaktin lisäämien kontaktivapausasteiden käsittelyä. |
| Aputoiminnot | Ehtoluvun arviointi, matriisivedos, lokitus | Tukevat virheenkorjausta, konvergenssin arviointia ja suorituskyvyn arviointia. |
Rinnakkaissuorituksessa aluejakoon perustuva MPI-rinnakkaisuus voidaan yhdistää OpenMP-säierinnakkaisuuteen. Iteratiiviset menetelmät ovat vakiovalinta laajamittaisiin rinnakkaisanalyyseihin, kun taas suoria menetelmiä käytetään, kun tarvittavat kirjastot on linkitetty ja tarvitaan robustimpi ratkaisu.
Ratkaisijan ja esikonditionoinnin valinta¶
Päätä ensin, käytetäänkö iteratiivista vai suoraa menetelmää. Jos valitaan iteratiivinen menetelmä, valitse seuraavaksi esikonditionointimenetelmä.
| Valintatekijä | Suositeltu lähestymistapa |
|---|---|
| Ongelman koko | Suorat menetelmät ovat vakaita ja helppokäyttöisiä pienissä ja keskisuurissa ongelmissa. Iteratiiviset menetelmät käyttävät muistia tehokkaammin suurissa ongelmissa. |
| Matriisin symmetria | Harkitse CG-menetelmää symmetrisille positiividefiniiteille ongelmille. Epäsymmetrisille ongelmille harkitse menetelmiä BiCGSTAB, GMRES, GPBiCG tai vastaavia. |
| Rinnakkaisympäristö | Yhdistä MPI-rinnakkaisuudessa iteratiivinen menetelmä aluejakoon. OpenMP-rinnakkaisuuden esikonditionoinnissa harkitse moniväristä SSOR-toteutusta. |
| Esikonditionointi (iteratiivista menetelmää käytettäessä) | Kokeile ensin oletusarvoista SSOR:ää ja harkitse sitten AMG:tä. SSOR on laskennallisesti kevyt, kun konvergenssi on hyvä; AMG-esikonditionointi soveltuu monimutkaisiin, laajamittaisiin ongelmiin. AMG on saatavilla Trilinos-ML-toteutuksena ja HEC-MW:n sisäänrakennettuna SA-AMG-toteutuksena; valitse käännöskokoonpanon mukaan. |
| Kontakti ja MPC | Kontaktin tai monipisterajoitteita sisältävissä analyyseissä MPC-käsittelymenetelmän ja kontaktivapausasteiden eliminoinnin valinta vaikuttaa konvergenssiin ja robustisuuteen. |
| Ulkoiset kirjastot | MUMPS, MKL ja AMG (Trilinos-ML) ovat käytettävissä käännöksissä, joihin vastaavat kirjastot on linkitetty. AMG (SA-AMG) on käytettävissä käännöksissä, joissa LAPACK on käytössä. |
Tavanomaisissa analyyseissä oletusarvoinen konvergenssitoleranssi, iterointien enimmäismäärä ja esikonditionoinnin diagonaalikorjauskerroin ovat yleensä riittäviä. Vasta kun konvergenssi on hidasta tai ratkaisu hajaantuu, harkitse järjestyksessä uudelleen iteratiivista menetelmää, esikonditionointia, MPC-käsittelymenetelmää ja kontaktivapausasteiden eliminointia. Katso parametrien arvot ja syntaksi !SOLVER-avainsanan viiteoppaasta.
Iteratiiviset menetelmät¶
Iteratiiviset menetelmät ratkaisevat suuria harvoja järjestelmiä päivittämällä ratkaisua toistuvasti matriisi-vektoritulojen ja esikonditionoinnin avulla. FrontISTR tarjoaa seuraavat iteratiiviset menetelmät.
| Iteratiivinen menetelmä | Tyypillinen käyttökohde | Huomautukset |
|---|---|---|
CG | Symmetriset positiividefiniitit ongelmat | Vakiovaihtoehto rakenne- ja lämmönjohtumisanalyyseihin. |
BiCGSTAB | Epäsymmetriset ongelmat | Vaihtoehto, kun kontakti tai kytkentävaikutukset aiheuttavat voimakasta epäsymmetriaa. |
GMRES | Epäsymmetriset ongelmat | Käytetään määritetyn Krylov-aliavaruuden koon kanssa. |
GPBiCG | Epäsymmetriset ongelmat | Käytetään parannettuna menetelmänä BiCGSTAB-perheessä. |
GMRESR | Epäsymmetriset ongelmat, edistyneet sovellukset | Vaihtoehto, joka käyttää GMRES-menetelmää sisäkkäisessä muodossa. |
GMRESREN | Epäsymmetriset ongelmat, edistyneet sovellukset | Rekursiivinen muunnelma GMRESR-perheessä. |
CG olettaa matriisin olevan symmetrinen positiividefiniitti. Jos kitkallinen kontakti, epäsymmetrinen rajoitekäsittely, kytkentävaikutukset tai vastaavat tekijät aiheuttavat voimakasta epäsymmetriaa, harkitse ratkaisijaa BiCGSTAB, GMRES, GPBiCG tai muuta epäsymmetristä ratkaisijaa. GMRES-menetelmässä Krylov-aliavaruuden koon kasvattaminen voi parantaa konvergenssia, mutta lisää myös muistinkäyttöä.
Kun METHOD2 on määritetty, FrontISTR voi vaihtaa vaihtoehtoiseen iteratiiviseen menetelmään, jos CG hajaantuu tai epäonnistuu. Tämä toiminto on varamenettely tapauksiin, joissa CG on ensisijainen ratkaisija; vaihtoehtoinen menetelmä käyttää samoja muita asetuksia ja datarivejä kuin ensisijainen ratkaisija.
CG, BiCGSTAB, GPBiCG ja PipeCG päivittävät residuaalivektoria rekursiokaavalla. Iteraatioiden edetessä pyöristysvirheitä kertyy, ja rekursiivisesti päivitetty residuaali voi erota todellisesta residuaalista. Tämän estämiseksi residuaalivektori lasketaan määräajoin uudelleen oikeasta puolesta ja matriisi-vektoritulosta. Jakso voidaan määrittää parametrilla RECOMPUTE_RESIDUAL. Pidempi jakso vähentää matriisi-vektoritulojen määrää, mutta kasvattaa riskiä, että rekursiivisesti päivitetty residuaali poikkeaa todellisesta residuaalista ja konvergoitumaton ratkaisu tulkitaan konvergoituneeksi. Toisaalta liian lyhyt jakso ei ainoastaan lisää matriisi-vektorituloja, vaan voi myös rikkoa rekursion ylläpitämän residuaalin ja apuvektorien välisen suhteen ja siten heikentää itse konvergenssia. Oletusarvo on valittu menetelmäkohtaisesti näiden vaikutusten tasapainottamiseksi; jos sitä muutetaan, tarkista konvergenssihistoria ja lopullinen suhteellinen residuaali.
Esikonditionointi¶
Esikonditionointi muuntaa kerroinmatriisia iteratiivisen menetelmän konvergenssin parantamiseksi, ja sitä käytetään vain, kun on valittu iteratiivinen menetelmä. Suorissa menetelmissä ei käytetä esikonditionointia. Jopa samalla iteratiivisella menetelmällä esikonditionointimenetelmän valinta voi muuttaa huomattavasti konvergenssiin tarvittavien iterointien määrää ja laskenta-aikaa.
| Esikonditionointi | Ominaisuudet | Tyypillinen käyttökohde |
|---|---|---|
| SSOR | Vakioesikonditionointi; tukee monivärijärjestystä. | Ensimmäinen kokeiltava vaihtoehto; käytetään laajasti rakenneanalyyseissä. |
| Diagonaalinen skaalaus | Kevyt, diagonaalielementtejä käyttävä esikonditionointi. | Kun pieni laskentakustannus on tärkeä. |
| BILU | Lohkokohtainen epätäydellinen LU-faktorointi. | Vaihtoehto ongelmiin, joiden konvergenssi on vaikeaa SSOR:llä. |
| AMG (Trilinos-ML) | Ulkoista Trilinos-ML-kirjastoa käyttävä algebrallinen monihilamenetelmä. | Vaihtoehto laajamittaisiin ongelmiin tai ongelmiin, joissa hierarkkiset virhekomponentit hallitsevat. |
| AMG (SA-AMG) | HEC-MW:hen sisäänrakennettu tasoitetun aggregoinnin (Smoothed Aggregation) tyyppinen algebrallinen monihilamenetelmä. | Kuten edellä; vaihtoehto AMG:n käyttöön ilman ulkoisen kirjaston lisäämistä. |
| SAINV | Harva approksimoitu käänteismatriisi. | Erikoistunut esikonditionointivaihtoehto kontaktille tai hajautetun muistin ympäristöihin. |
| RIF | Robustinen epätäydellinen faktorointi. | Toinen epätäydellisen faktoroinnin vaihtoehto. |
SSOR on vakiovalinta, ja OpenMP-rinnakkaisuudessa käytetään monivärijärjestystä käyttävää versiota. Diagonaalinen skaalaus on kevyt, vaikka sen konvergenssia parantava vaikutus riippuu ongelmasta. BILU on toteutettu lohkokohtaisena epätäydellisenä LU-faktorointina ja tukee myös matriiseja, joissa vapausasteiden määrä on yleinen. BILU-perheessä on menettely, joka kasvattaa automaattisesti diagonaalikorjauskerrointa SIGMA_DIAG ja yrittää uudelleen iteratiivisen menetelmän hajaantuessa; katso arvon määrittely avainsanojen viiteoppaasta.
AMG:llä (algebrallinen monihilamenetelmä) on kaksi toteutusta: ulkoista Trilinos-ML-kirjastoa käyttävä toteutus ja HEC-MW:n sisäänrakennettu SA-AMG. Ne ovat itsenäisiä toteutuksia, joiden vaatimat käännöskokoonpanot ja käytettävissä olevat valinnat eroavat toisistaan.
Trilinos-ML:ää käyttävä AMG edellyttää, että ML on otettu käyttöön käännösvaiheessa. Tasoitusmenetelmä, monihilasykli, karkeistusmenetelmä ja muut asetukset voidaan määrittää; katso yksityiskohtaiset arvot avainsanojen viiteoppaasta.
SA-AMG on tasoitetun aggregoinnin tyyppinen algebrallinen monihilaesikonditioneri eikä edellytä Trilinos-ML:ää. Se käyttää kuitenkin sisäisesti LAPACKia, joten tarvitaan käännös, jossa LAPACK on käytössä; jos SA-AMG valitaan ilman LAPACKia tehdyssä käännöksessä, suoritus päättyy ennen analyysin käynnistymistä. Karkealla hilalla ratkaisemiseen voidaan käyttää MUMPSia käännöksissä, joissa MUMPS on käytössä; muutoin käytetään sisäänrakennettua tiheän matriisin suoraa menetelmää.
SA-AMG on tarkoitettu ensisijaisesti symmetrisille positiivisesti definiiteille järjestelmille (CG), mutta se tukee myös kitkakontaktista syntyviä epäsymmetrisiä redusoituja järjestelmiä (BiCGSTAB, GMRES ja muut). Se tukee 1 (lämmönjohtuminen), 2 (tasomalli), 3 (solidi) ja 6 (kuori) vapausastetta solmua kohti, mutta ei matriiseja, joissa vapausasteiden määrä vaihtelee solmuittain. Karkean hilan ratkaisija, monihilasykli, tasoitusmenetelmän aste ja muut valinnat voidaan määrittää, mutta vakioanalyyseissä voidaan käyttää oletusarvoja. Katso arvot ja syntaksi avainsanojen viiteoppaasta. Käännöksissä, joissa GPU (OpenACC) on käytössä, esikonditionerin sovellusvaihe suoritetaan GPU:lla.
Kun SAINV:ia käytetään kontaktia tai MPC-rajoitteita sisältävässä rinnakkaisanalyysissä, aluejaossa käytetty limityssyvyys voi vaikuttaa konvergenssiin.
Suorat menetelmät¶
Suorat menetelmät ratkaisevat lineaariset yhtälöt faktoroimalla kerroinmatriisin. Koska ne eivät riipu iterointimäärästä, ne ovat robusteja ja voivat olla vakaa valinta kontaktia tai rajoitteita sisältäviin analyyseihin. Niiden muistinkulutus kuitenkin kasvaa ongelman koon mukana.
| Suora menetelmä | Rinnakkaisympäristö | Käyttökohde |
|---|---|---|
MUMPS | MPI-rinnakkaisuus | Ratkaisee harvat matriisit suoralla menetelmällä hajautetun muistin ympäristöissä. |
MKL | Intel MKL / OpenMP | Intel MKL:ään perustuva suora ratkaisija. Sisäisesti käytetään Intel PARDISO:a. Useilla MPI-prosesseilla käytetään Cluster MKL -polkua. DIRECTmkl on MKL:n alias. |
Suoria menetelmiä voidaan käyttää sekä symmetrisille että epäsymmetrisille matriiseille. MUMPS ja MKL edellyttävät vastaavien kirjastojen linkittämistä käännösvaiheessa. Niitä ei voi käyttää ympäristöissä, joissa näitä kirjastoja ei ole, joten katso tarvittavat riippuvuudet ja CMake-valinnat kääntöoppaasta.
FrontISTR sisältää myös sisäisen suoran ratkaisijan polun, joka ei käytä ulkoista kirjastoa, mutta tavallisissa suoraa menetelmää vaativissa analyyseissä kannattaa yleensä harkita ensin MUMPS- tai MKL-ratkaisijaa.
Suoriin menetelmiin ei sovelleta esikonditionointia. Vaikka !SOLVER-määrityksessä annettaisiin esikonditionointimenetelmä, sitä ei käytetä suoran ratkaisijan polulla.
MPC-käsittelymenetelmät¶
MPC-käsittelymenetelmä määrittää, miten monipisterajoitteilla yhdistetyt vapausasteet sisällytetään lineaarisiin yhtälöihin. Vaikka syötetiedoissa olisi samat rajoiteyhtälöt, käsittelymenetelmä muuttaa kerroinmatriisin ominaisuuksia ja konvergenssikäyttäytymistä.
| MPC-käsittelymenetelmä | Luonne | Oletuskäyttö |
|---|---|---|
| Rangaistusmenetelmä | Toteuttaa rajoitteet likimäärin lisäämällä rajoiteyhtälöihin suuria jäykkyystermejä. | Oletus suorille menetelmille. |
| Eksplisiittinen vapausasteiden eliminointi | Poistaa rajoitetut vapausasteet ja ratkaisee pienennetyn lineaarisen järjestelmän. | Oletus iteratiivisille menetelmille. |
Rangaistusmenetelmä on suorien menetelmien oletus, kun taas eksplisiittinen vapausasteiden eliminointi on iteratiivisten menetelmien oletus. Aiemmin valittavissa ollut MPC-CG-menetelmä on poistettu; syötteestä, jossa määritetään MPCMETHOD=2, annetaan varoitus ja käsittelyssä käytetään näitä oletuksia.
Vapausasteiden eksplisiittisessä eliminoinnissa myös moodianalyysissä ja eksplisiittisessä dynaamisessa analyysissä käytettävät keskitetyt massat redusoidaan samalla muunnoksella kuin jäykkyysmatriisi. Koska redusoitu massamatriisi ei yleensä ole diagonaalinen, sen rivisummia käytetään keskitettyinä massoina. Kytkentä- tai interpolointirajoitteissa, joissa rajoiteyhtälön kertoimien summa on 1, riippuvan vapausasteen massa jaetaan päävapausasteille kertoimien suhteessa.
MPC-käsittelymenetelmä voidaan määrittää eksplisiittisesti !SOLVER-määrityksen MPCMETHOD-parametrilla. Katso kunkin arvon merkitys ja syntaksi avainsanojen viiteoppaasta.
Kontaktivapausasteiden eliminointi¶
Kontaktivapausasteiden eliminointi vähentää SLAGRANGE-kontaktin lisäämiä kontaktivapausasteita ennen järjestelmän välittämistä lineaariselle ratkaisijalle. Näiden kontaktivapausasteiden poistaminen voi parantaa iteratiivisen menetelmän käsittelemän lineaarisen järjestelmän ominaisuuksia.
Automaattisessa oletustilassa kontaktivapausasteiden eliminointi on käytössä iteratiivisille menetelmille ja pois käytöstä suorille menetelmille. Suorille menetelmille on käytettävissä polku, joka ratkaisee kontaktivapausasteet sisältävän laajennetun järjestelmän suoraan.
Kun CONTACT_ELIM määritetään eksplisiittisesti, kontaktivapausasteiden eliminointi voidaan suorittaa myös suoraa menetelmää käytettäessä. Katso syötepuolen kontaktityypin, kontaktiparin ja kontaktialgoritmin valinnat Kontakti ja upotus -sivulta.
Aputoiminnot¶
Ehtoluvun arviointia, matriisivedoksia ja lokitusta voidaan käyttää ratkaisijan konvergenssin ja suorituskyvyn tutkimiseen. Näitä toimintoja ei tarvita tavallisissa analyyseissä, ja ne otetaan käyttöön pääasiassa virheenkorjausta tai suorituskyvyn arviointia varten.
| Toiminto | Tarkoitus | Huomautukset |
|---|---|---|
| Ehtoluvun arviointi | Tulostaa ehtoluvun indikaattorin menetelmille CG ja GMRES. | Käytettävissä käännöksissä, joissa LAPACK on käytössä. |
| Matriisivedos | Tallentaa ratkaisijalle välitetyn matriisin ja oikean puolen. | Tukee Matrix Market-, CSR- ja BSR-muotoja. |
DUMPEXIT | Päättää analyysin matriisivedoksen jälkeen. | Käytetään, kun ulkoista verifiointia varten tarvitaan vain matriisi. |
ITERLOG | Tulostaa iteratiivisen menetelmän konvergenssihistorian. | Käytetään residuaalin kehityksen tarkasteluun. |
TIMELOG | Tulostaa ratkaisijan laskenta-ajan. | VERBOSE tulostaa yksityiskohtaisemman erittelyn. |
STEPLOG | Tulostaa vaihekohtaiset tiedot. | Käytetään analyysimenettelyn tarkasteluun. |
LOGLEVEL | Tulostaa diagnostiikkatietoja, kuten AMG-esikonditionerien hierarkian muodostuksen. | Määritetään riippumatta asetuksista ITERLOG ja TIMELOG. Suuremmat arvot lisäävät tulosteen määrää. |
Matriisivedoksen avulla analyysissä koottua kerroinmatriisia voidaan tarkastella ulkoisilla työkaluilla. Kun DUMPEXIT on käytössä, analyysi päättyy matriisin ja oikean puolen tallentamisen jälkeen. Ehtoluvun arviointi on kokeellinen toiminto, joka on käytettävissä menetelmillä CG ja GMRES, ja sitä voidaan käyttää konvergenssikäyttäytymisen diagnosointiin.
Liittyvät aiheet¶
- Lineaarinen ratkaisija (teoria) — Iteratiivisten menetelmien ja esikonditionoinnin matemaattiset periaatteet.
- Epälineaarinen iterointi ja aikaintegrointi — Kehys Newton-iteroinneille, kontakti-iteroinneille ja aikaintegroinnille, joka kutsuu lineaarista ratkaisijaa.
- Verkon osiointi — MPI-rinnakkaisanalyysi ja limityssyvyyden asetukset.
- Kontakti ja upotus — Kontaktityyppien ja kontaktialgoritmien valinta.
- !SOLVER — Ratkaisijan ja esikonditionoinnin parametrien arvot ja syntaksi.
- Pakolliset ja valinnaiset riippuvuudet — Riippuvuudet, kuten
MUMPS,MKL(Intel PARDISO), Trilinos-ML ja LAPACK.