Hyppää sisältöön

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