Vai al contenuto

Decomposizione del dominio

Quando una mesh di grandi dimensioni viene analizzata in parallelo mediante più processi, è necessario suddividere la mesh di un singolo dominio in sottodomini e generare in anticipo le informazioni necessarie per assegnare a ciascun processo il proprio dominio e per la comunicazione tra domini. Questa fase di pre-elaborazione è detta decomposizione del dominio.

Nel calcolo parallelo di FrontISTR, hecmw_part1 suddivide una mesh di un singolo dominio in sottodomini e crea i dati di mesh distribuita. I dati di mesh distribuita generati vengono letti da fistr1 in modalità parallela e utilizzati dal solver parallelo insieme alle informazioni necessarie per la comunicazione tra domini.

Questa pagina descrive il tipo di decomposizione, il metodo di decomposizione, la profondità di sovrapposizione e la gestione dei punti di contatto selezionati per la decomposizione del dominio. Per la procedura di esecuzione di hecmw_part1, la sintassi specifica del file di controllo e i messaggi di errore, consultare gli argomenti correlati.

Panoramica

La decomposizione del dominio è il processo di suddivisione di una mesh di un singolo dominio in più sottodomini. FrontISTR crea dati di mesh distribuita combinando tipo di decomposizione, metodo di decomposizione, numero di domini e profondità di sovrapposizione.

Criterio di scelta Opzioni principali Ruolo
Tipo di decomposizione Decomposizione basata sui nodi, decomposizione basata sugli elementi Determina se l’appartenenza viene assegnata per nodo o per elemento.
Metodo di decomposizione RCB, METIS (pMETIS / kMETIS) Determina come vengono creati i confini dei domini.
Numero di domini Qualsiasi intero positivo (\(2^n\) per RCB) Determina il numero di sottodomini nei dati di mesh distribuita. Normalmente coincide con il numero di processi MPI.
Profondità di sovrapposizione Intero maggiore o uguale a 1 Determina l’estensione mantenuta in modo ridondante dai domini adiacenti. Viene specificata per la decomposizione basata sui nodi.
Tabelle di comunicazione Informazioni di importazione/esportazione, informazioni condivise Definisce lo scambio di dati necessario tra sottodomini adiacenti. Vengono generate automaticamente durante la decomposizione del dominio.

Poiché le tabelle di comunicazione sono incluse nei dati di mesh distribuita, nelle analisi normali l’utente non deve modificarle direttamente. fistr1 in modalità parallela legge questi dati e risolve le equazioni lineari mediante un metodo diretto parallelo, come MUMPS, oppure mediante un metodo iterativo.

Scelta della configurazione di decomposizione del dominio

Per le comuni analisi strutturali e di conduzione termica, in genere si considera anzitutto la decomposizione basata sui nodi. Essa facilita la comunicazione dei valori nodali necessaria nell’analisi agli elementi finiti parallela e consente anche di specificare la profondità di sovrapposizione. La decomposizione basata sugli elementi è invece una possibile scelta per applicazioni, come le analisi accoppiate, in cui si desidera gestire principalmente per elemento le informazioni distribuite dopo la decomposizione.

Il metodo di decomposizione va scelto in base alla geometria e al numero di domini. Per geometrie semplici, quando il numero di domini può essere \(2^n\), RCB rappresenta una scelta semplice e stabile. Per geometrie complesse o quando è necessario un numero arbitrario di domini, è indicato METIS, basato sulla partizione di grafi.

Caratteristiche del problema Scelta consigliata
Analisi parallela strutturale o di conduzione termica standard Decomposizione basata sui nodi
Applicazioni che utilizzano informazioni distribuite centrate sugli elementi, come le analisi accoppiate Decomposizione basata sugli elementi
Geometria semplice prossima a un parallelepipedo, con \(2^n\) domini RCB
Geometria complessa o numero arbitrario di domini METIS
Problemi di contatto o con vincoli MPC che utilizzano il precondizionatore SAINV Usare la decomposizione basata sui nodi con una profondità di sovrapposizione pari o superiore a 2

Il numero di domini viene normalmente fatto coincidere con il numero di processi MPI. Per la procedura di esecuzione parallela e la specifica del numero di processi, consultare Analisi parallela. Per la relazione tra il precondizionatore SAINV e la profondità di sovrapposizione, consultare anche Solver e precondizionatori.

Tipi di decomposizione

Il tipo di decomposizione determina a quale entità della mesh viene assegnata un’unica appartenenza a un sottodominio. La decomposizione basata sui nodi assegna l’appartenenza ai nodi, mentre quella basata sugli elementi la assegna agli elementi. In entrambi i casi, le informazioni necessarie ai calcoli con i sottodomini adiacenti vengono conservate come dati di sovrapposizione.

Decomposizione basata sui nodi

Nella decomposizione basata sui nodi, ogni nodo viene assegnato a un unico sottodominio di appartenenza. Nei sottodomini adiacenti gli elementi vengono mantenuti con sovrapposizione. Nell’input, questa modalità è specificata con !PARTITION, TYPE=NODE-BASED.

Concetto di decomposizione basata sui nodi

Figura 10.1 Concetto di decomposizione basata sui nodi

Ogni sottodominio conserva i propri nodi interni, gli elementi che contengono tali nodi interni e i nodi che costituiscono tali elementi.

Nodi ed elementi conservati da ciascun sottodominio nella decomposizione basata sui nodi

Figura 10.2 Nodi ed elementi conservati da ciascun sottodominio nella decomposizione basata sui nodi

Le tabelle di comunicazione per la decomposizione basata sui nodi contengono le seguenti informazioni.

  • Nodi di importazione: nodi utilizzati in un sottodominio ma appartenenti a un altro sottodominio.
  • Nodi di esportazione: nodi interni che costituiscono nodi di importazione di un altro sottodominio.
  • Elementi condivisi: elementi condivisi con altri sottodomini.

Nodi di importazione nella decomposizione basata sui nodi

Figura 10.3 Nodi di importazione nella decomposizione basata sui nodi

Nodi di esportazione nella decomposizione basata sui nodi

Figura 10.4 Nodi di esportazione nella decomposizione basata sui nodi

Elementi condivisi nella decomposizione basata sui nodi

Figura 10.5 Elementi condivisi nella decomposizione basata sui nodi

Decomposizione basata sugli elementi

Nella decomposizione basata sugli elementi, ogni elemento viene assegnato a un unico sottodominio di appartenenza. Nei sottodomini adiacenti i nodi vengono mantenuti con sovrapposizione. Nell’input, questa modalità è specificata con !PARTITION, TYPE=ELEMENT-BASED.

Concetto di decomposizione basata sugli elementi

Figura 10.6 Concetto di decomposizione basata sugli elementi

Ogni sottodominio conserva i propri elementi interni, i nodi che costituiscono tali elementi interni e gli elementi che contengono tali nodi.

Nodi ed elementi conservati da ciascun sottodominio nella decomposizione basata sugli elementi

Figura 10.7 Nodi ed elementi conservati da ciascun sottodominio nella decomposizione basata sugli elementi

Le tabelle di comunicazione per la decomposizione basata sugli elementi contengono le seguenti informazioni.

  • Elementi di importazione: elementi utilizzati in un sottodominio ma appartenenti a un altro sottodominio.
  • Elementi di esportazione: elementi interni che costituiscono elementi di importazione di un altro sottodominio.
  • Nodi condivisi: nodi condivisi con altri sottodomini.

Elementi di importazione nella decomposizione basata sugli elementi

Figura 10.8 Elementi di importazione nella decomposizione basata sugli elementi

Elementi di esportazione nella decomposizione basata sugli elementi

Figura 10.9 Elementi di esportazione nella decomposizione basata sugli elementi

Nodi condivisi nella decomposizione basata sugli elementi

Figura 10.10 Nodi condivisi nella decomposizione basata sugli elementi

Per entrambi i tipi di decomposizione, hecmw_part1 genera automaticamente le tabelle di comunicazione e le scrive nei dati di mesh distribuita. Pertanto, nelle analisi normali l’utente non deve creare direttamente le informazioni di importazione/esportazione.

Metodi di decomposizione

Il metodo di decomposizione determina come vengono creati i confini dei sottodomini. FrontISTR supporta RCB basato sulle coordinate e METIS basato sulla partizione di grafi.

Metodo di decomposizione Caratteristiche Vincoli e note principali
RCB Suddivide ricorsivamente la mesh in due parti in base ai valori delle coordinate. Consente una decomposizione rapida per geometrie semplici. Il numero di domini è limitato a \(2^n\). È necessario specificare gli assi di decomposizione.
pMETIS Utilizza la partizione di grafi tenendo conto della connettività tra i domini. Disponibile nelle build con METIS abilitato.
kMETIS Utilizza la partizione multiway di grafi, facilitando la creazione dei confini dei domini anche per geometrie complesse. Disponibile nelle build con METIS abilitato.

RCB è l’acronimo di Recursive Coordinate Bisection e suddivide ripetutamente la mesh in due lungo gli assi delle coordinate. È adatto quando il numero di domini può essere \(2^n\) ed è semplice da usare per geometrie regolari simili a un parallelepipedo.

METIS tratta la connettività della mesh come un grafo e crea i sottodomini mediante partizione del grafo. È una possibile scelta per geometrie complesse o quando non si desidera limitare il numero di domini a \(2^n\). Per utilizzare METIS, la libreria METIS deve essere abilitata in fase di compilazione. Per la gestione delle dipendenze, consultare Dipendenze obbligatorie e opzionali.

Profondità di sovrapposizione

La profondità di sovrapposizione è il numero di strati nell’area mantenuta in modo ridondante dai sottodomini adiacenti. Per la decomposizione basata sui nodi, con !PARTITION è possibile specificare mediante il parametro DEPTH un intero maggiore o uguale a 1. Se omesso, la profondità di sovrapposizione è 1.

Per le normali analisi parallele, DEPTH=1 è sufficiente. Tuttavia, quando un precondizionatore della famiglia SAI, come SAINV, viene utilizzato per un problema di contatto o un problema con vincoli MPC, aumentare la profondità di sovrapposizione a 2 o più può migliorare la qualità del precondizionamento.

Una profondità di sovrapposizione pari o superiore a 2 è necessaria anche quando la formulazione di smoothing selettivo di spigoli/nodi (FORM341=SELECTIVE_ESNS) viene utilizzata con l’elemento tetraedrico di primo ordine 341 in calcolo parallelo MPI. Lo smoothing basato sugli spigoli o sui nodi media le grandezze sugli elementi adiacenti all’elemento considerato; per assemblare la rigidezza all’interno di un sottodominio sono quindi necessarie informazioni sugli elementi distanti due livelli di adiacenza. Con il valore predefinito DEPTH=1, lo smoothing vicino ai confini del dominio è insufficiente. Per i dettagli sulla formulazione dell’elemento, consultare Libreria degli elementi.

Aumentando la profondità di sovrapposizione aumenta il numero di nodi ed elementi conservati dai sottodomini adiacenti e, di conseguenza, aumentano anche l’uso di memoria e il volume delle comunicazioni. L’impostazione va scelta bilanciando il miglioramento della convergenza con l’aumento del costo computazionale. Per la scelta del precondizionatore, consultare Solver e precondizionatori.

Gestione dei punti di contatto

Quando si suddivide una mesh contenente coppie di contatto, il parametro CONTACT di !PARTITION permette di specificare la politica di collocazione dei punti di contatto nei domini. La collocazione dei punti di contatto influisce sulla stabilità e sul volume delle comunicazioni nelle analisi parallele che includono la ricerca del contatto e i vincoli di contatto.

Valore Ruolo
DEFAULT Utilizza la politica di collocazione standard.
SIMPLE Utilizza una collocazione simile alla decomposizione ordinaria senza assegnare pesi speciali ai punti di contatto.
AGGREGATE Esegue la decomposizione in modo da tendere a raggruppare i nodi associati alle coppie di contatto.
DISTRIBUTE Esegue la decomposizione in modo che i nodi del lato master del contatto siano meno concentrati in determinati sottodomini.

Per le mesh prive di contatto, in genere non è necessario considerare il parametro CONTACT. Se in un’analisi parallela con contatto si riscontrano problemi di convergenza o di bilanciamento del carico, rivedere la politica di collocazione dei punti di contatto. Per i dettagli sulla sintassi di input, consultare !PARTITION.

Output dell’immagine di decomposizione del dominio

Specificando il parametro UCD di !PARTITION è possibile generare un file UCD per verificare il risultato della decomposizione. Il file UCD può essere utilizzato con strumenti di visualizzazione come MicroAVS per controllare i numeri dei domini e i confini della decomposizione.

Dopo aver modificato il numero di domini, il metodo di decomposizione o la profondità di sovrapposizione, è importante verificare che non vi siano sbilanciamenti tra i domini suddivisi o frammentazioni innaturali. L’output UCD è una funzione ausiliaria per verificare la validità della decomposizione prima di eseguire l’analisi parallela.

Argomenti correlati