Che cos'è un solido solutore iterativo per grandi problemi lineari elastici 3D?


9

Mi sto immergendo nell'affascinante mondo dell'analisi degli elementi finiti e vorrei risolvere un grosso problema termo-meccanico (solo meccanico meccanico, nessun feedback).

Per il problema meccanico, ho già capito la risposta di Geoff , che dovrò usare il solutore iterativo a causa delle dimensioni della mia mesh. Ho anche letto nella risposta di Matt che la scelta dell'algoritmo iterativo corretto è un compito scoraggiante.

Sto chiedendo qui se esiste qualche esperienza su grandi problemi lineari 3-d elastici che mi aiuterebbero a restringere la mia ricerca per le migliori prestazioni? Nel mio caso, è una struttura con film sottili, modellati e materiali posizionati in modo irregolare (sia ad alto CTE che a basso CTE). Non ci sono grandi deformazioni in questa analisi termo-meccanica. Posso usare l'HPC della mia università [1.314 nodi, con 2 processori AMD Opteron (ciascuno con 2,2 GHz / 8 core)].

Penso che PETScpotrebbe contenere qualcosa di interessante, in particolare gli algoritmi che fanno una sorta di decomposizione del dominio (FETI, multigrid) ma sono un po 'sopraffatto dalle opzioni e non ho esperienza. Mi piace anche la frase "precondizionatori informati geometricamente" , ma non sono sicuro che questo mi aiuti. Non ho ancora trovato qualcosa focalizzato sulla meccanica del continuum lineare.

Il forte ridimensionamento (Amdahl) è molto importante nella mia applicazione perché i miei partner industriali non possono aspettare a lungo i risultati della simulazione. Sicuramente apprezzo non solo le risposte, ma anche i consigli per ulteriori letture nei commenti.


Stai risolvendo problemi statici? Sembra di si Per problemi dinamici o temporali, penso che la risposta sarebbe diversa.
Hui Zhang,

statico sì. La dinamica è troppo costosa.
Sebastian,

Risposte:


6

Supponendo che le tue strutture siano in realtà 3D (piuttosto che solo caratteristiche sottili, forse discretizzate con elementi shell) e che il modello sia più grande di qualche centinaio di migliaia di DOF, i risolutori diretti diventano poco pratici, specialmente se devi risolvere ogni problema una volta sola. Inoltre, a meno che la struttura non sia sempre "vicina" a un confine di Dirichlet, sarà necessario un metodo multilivello per essere efficiente. La comunità è divisa tra "multigrid" e "decomposizione del dominio multilivello". Per un confronto della matematica, vedere la mia risposta a: Qual è il vantaggio dei precondizionatori di decomposizione multigrid e di dominio e viceversa?

La comunità multigrid ha generalmente avuto più successo nel produrre software per scopi generici. Per elasticità, suggerisco di usare un'aggregazione levigata che richiede uno "spazio quasi nullo" approssimativo. In PETSc, questo viene fatto scegliendo PCGAMG o PCML (configurare con --download-ml) e chiamando MatSetNearNullSpace()per fornire le modalità del corpo rigido.

I metodi di decomposizione dei domini offrono l'opportunità di ingrossare più velocemente dell'aggregazione levigata, quindi probabilmente più tolleranti alla latenza, ma il "punto debole" in termini di prestazioni tende ad essere più stretto dell'aggregazione levigata. A meno che tu non voglia fare ricerche sui metodi di decomposizione del dominio, ti suggerisco di usare semplicemente l'aggregazione regolare e forse provare un metodo di decomposizione del dominio quando il software migliora.


grazie mille per questa risposta molto istruttiva! Cosa intendi esattamente vicino a un confine di Dirichlet ? Chiudi in termini di conteggio degli elementi?
Sebastian

Vicino in termini di distanza, misurato in elementi o sottodomini (per la decomposizione del dominio di un livello con solidi sottodomini risolti), lungo un percorso di materiale forte. Se le informazioni devono viaggiare attraverso molti sottodomini per determinare una soluzione locale, i metodi di un livello convergeranno lentamente. Si noti che una forte connessione non è sufficiente per l'elasticità, tutte le modalità del corpo rigido devono essere controllate.
Jed Brown,

4

Direi che la scelta canonica per questo problema sarebbe il risolutore del gradiente coniugato più un precondizionatore multigrid algebrico. Per PETSc, hypre / boomeramg o ML sarebbero le ovvie scelte del precondizionatore.

Tutti questi componenti se usati attraverso PETSc si adattano molto bene a migliaia o decine di migliaia di processori se il problema è abbastanza grande (almeno ~ 100.000 gradi di libertà per processo MPI).


Si noti che BoomerAMG (e AMG classico in generale) non utilizza informazioni di spazio nulle o garantisce in altro modo che gli spazi grossolani possano rappresentare accuratamente le modalità di rotazione. Puoi (e dovresti) provarlo, oltre a dividere i componenti e risolverli separatamente (utilizzare PCFIELDSPLITin PETSc), ma l'aggregazione levigata di solito è più robusta per l'elasticità.
Jed Brown,

1

<0.4(X,y,z)KXXKyyKzz

In quel caso puoi usare metodi AMG meno avanzati per calcolare un'approssimazione di ciascun blocco inverso e ottenere un precondizionatore abbastanza buono.


1

Walter Landry ha sviluppato un codice per la deformazione elastostatica tridimensionale utilizzando multigrid adattativo. Puoi trovare il codice su

https://bitbucket.org/wlandry/gamra

Puoi includere l'effetto della forzatura termica con eigenstrain isotropico e forze corporee equivalenti. Una volta che questi sono a posto, il risolutore funzionerebbe bene.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.