Decomposição de domínio¶
Ao analisar em paralelo uma malha de grande escala usando vários processos, é necessário dividir previamente a malha de domínio único em subdomínios e gerar as informações necessárias para a região atribuída a cada processo e para a comunicação entre domínios. Esse pré-processamento é denominado decomposição de domínio.
Na computação paralela do FrontISTR, hecmw_part1 divide uma malha de domínio único em subdomínios e cria dados de malha distribuída. Os dados de malha distribuída gerados são lidos pelo fistr1 em paralelo e usados pelo solver paralelo juntamente com as informações necessárias para a comunicação entre domínios.
Esta página descreve o tipo de decomposição, o método de particionamento, a profundidade de sobreposição e o tratamento dos pontos de contato selecionados na decomposição de domínio. Para o procedimento de execução de hecmw_part1, a sintaxe específica do arquivo de controle e as mensagens de erro, consulte os tópicos relacionados.
Visão geral da funcionalidade¶
A decomposição de domínio é o processo de dividir uma malha de domínio único em vários subdomínios. O FrontISTR cria dados de malha distribuída combinando o tipo de decomposição, o método de particionamento, o número de domínios e a profundidade de sobreposição.
| Eixo de seleção | Principais opções | Função |
|---|---|---|
| Tipo de decomposição | Baseada em nós, baseada em elementos | Determina se a atribuição de propriedade é feita por nó ou por elemento. |
| Método de particionamento | RCB, METIS (pMETIS / kMETIS) | Determina como os limites dos domínios são criados. |
| Número de domínios | Qualquer inteiro positivo (\(2^n\) no RCB) | Determina o número de subdomínios nos dados de malha distribuída. Normalmente é igualado ao número de processos MPI. |
| Profundidade de sobreposição | Inteiro igual ou superior a 1 | Determina a extensão mantida de forma redundante pelos domínios vizinhos. Especificada na decomposição baseada em nós. |
| Tabelas de comunicação | Informações de importação/exportação, informações compartilhadas | Define a troca de dados necessária entre subdomínios vizinhos. Geradas automaticamente durante a decomposição de domínio. |
Como as tabelas de comunicação estão incluídas nos dados de malha distribuída, normalmente o usuário não precisa editá-las diretamente. O fistr1 em paralelo lê esses dados de malha distribuída e resolve as equações lineares usando um método direto paralelo, como MUMPS, ou um método iterativo.
Como escolher a configuração de decomposição de domínio¶
Para análises estruturais e de condução térmica comuns, deve-se considerar primeiro a decomposição baseada em nós. Ela facilita o tratamento da comunicação dos valores nodais necessária na análise paralela por elementos finitos e também permite especificar a profundidade de sobreposição. A decomposição baseada em elementos é uma opção para aplicações, como análises acopladas, nas quais se deseja tratar as informações após a decomposição principalmente por elemento.
Escolha o método de particionamento de acordo com a geometria e o número de domínios. Para geometrias simples em que o número de domínios pode ser \(2^n\), o RCB é uma opção simples e estável. Para geometrias complexas ou quando se deseja um número arbitrário de domínios, o METIS, baseado em particionamento de grafos, é uma opção.
| Características do problema | Escolha recomendada |
|---|---|
| Análise paralela estrutural ou de condução térmica padrão | Decomposição baseada em nós |
| Aplicações que usam informações distribuídas centradas em elementos, como análises acopladas | Decomposição baseada em elementos |
| Geometria simples próxima de um paralelepípedo, com \(2^n\) domínios | RCB |
| Geometria complexa ou número arbitrário de domínios | METIS |
| Problemas de contato ou com restrições MPC usando o pré-condicionador SAINV | Usar decomposição baseada em nós com profundidade de sobreposição igual ou superior a 2 |
O número de domínios normalmente é igualado ao número de processos MPI. Para o procedimento de execução paralela e a especificação do número de processos, consulte Análise com processamento paralelo. Para a relação entre o pré-condicionador SAINV e a profundidade de sobreposição, consulte também Solvers e pré-condicionadores.
Tipos de decomposição¶
O tipo de decomposição determina a qual entidade da malha será atribuída a propriedade exclusiva de um subdomínio. Na decomposição baseada em nós, a propriedade é atribuída aos nós; na decomposição baseada em elementos, aos elementos. Em ambos os casos, as informações necessárias para o cálculo com subdomínios vizinhos são mantidas como dados de sobreposição.
Decomposição baseada em nós¶
Na decomposição baseada em nós, cada nó é atribuído a exatamente um subdomínio proprietário. Nos subdomínios vizinhos, os elementos são mantidos com sobreposição. Na entrada, isso é especificado por !PARTITION, TYPE=NODE-BASED.

Cada subdomínio mantém seus nós internos, os elementos que contêm esses nós internos e os nós que constituem esses elementos.

As tabelas de comunicação da decomposição baseada em nós contêm as seguintes informações.
- Nós importados: nós utilizados em um subdomínio que pertencem a outro subdomínio.
- Nós exportados: nós internos que são nós importados por outro subdomínio.
- Elementos compartilhados: elementos compartilhados com outros subdomínios.



Decomposição baseada em elementos¶
Na decomposição baseada em elementos, cada elemento é atribuído a exatamente um subdomínio proprietário. Nos subdomínios vizinhos, os nós são mantidos com sobreposição. Na entrada, isso é especificado por !PARTITION, TYPE=ELEMENT-BASED.

Cada subdomínio mantém seus elementos internos, os nós que constituem esses elementos internos e os elementos que contêm esses nós.

As tabelas de comunicação da decomposição baseada em elementos contêm as seguintes informações.
- Elementos importados: elementos utilizados em um subdomínio que pertencem a outro subdomínio.
- Elementos exportados: elementos internos que são elementos importados por outro subdomínio.
- Nós compartilhados: nós compartilhados com outros subdomínios.



Para qualquer um dos tipos de decomposição, hecmw_part1 gera automaticamente as tabelas de comunicação e as grava nos dados de malha distribuída. Portanto, normalmente o usuário não precisa criar diretamente as informações de importação/exportação.
Métodos de particionamento¶
O método de particionamento determina como os limites dos subdomínios são criados. O FrontISTR disponibiliza o RCB baseado em coordenadas e o METIS baseado em particionamento de grafos.
| Método de particionamento | Características | Principais restrições e observações |
|---|---|---|
| RCB | Divide recursivamente a malha em duas partes com base nos valores das coordenadas. Permite particionamento rápido para geometrias simples. | O número de domínios é limitado a \(2^n\). É necessário especificar os eixos de particionamento. |
| pMETIS | Usa particionamento de grafos considerando a conectividade entre domínios. | Disponível em builds com METIS habilitado. |
| kMETIS | Usa particionamento de grafos em múltiplas partes, facilitando a criação de limites de domínios em geometrias complexas. | Disponível em builds com METIS habilitado. |
RCB é a sigla de Recursive Coordinate Bisection e divide repetidamente a malha em duas partes ao longo dos eixos de coordenadas. É adequado quando o número de domínios pode ser \(2^n\) e é fácil de usar em geometrias simples semelhantes a paralelepípedos.
O METIS trata a conectividade da malha como um grafo e cria subdomínios por particionamento de grafos. É uma opção para geometrias complexas ou quando não se deseja limitar o número de domínios a \(2^n\). Para usar METIS, a biblioteca METIS deve estar habilitada durante o build. Para o tratamento das dependências, consulte Dependências obrigatórias e opcionais.
Profundidade de sobreposição¶
A profundidade de sobreposição é o número de camadas da região mantida de forma redundante pelos subdomínios vizinhos. Na decomposição baseada em nós, em !PARTITION, o parâmetro DEPTH permite especificar um inteiro igual ou superior a 1. A profundidade de sobreposição padrão é 1.
Em uma análise paralela comum, DEPTH=1 é suficiente. Entretanto, quando um pré-condicionador da família SAI, como SAINV, é usado em um problema de contato ou com restrições MPC, aumentar a profundidade de sobreposição para 2 ou mais pode melhorar a qualidade do pré-condicionamento.
Também é necessário usar uma profundidade de sobreposição igual ou superior a 2 quando a formulação seletiva de suavização de arestas/nós (FORM341=SELECTIVE_ESNS) é usada com o elemento tetraédrico linear 341 em paralelo com MPI. A suavização baseada em arestas ou nós calcula médias de grandezas nos elementos adjacentes ao elemento-alvo; por isso, para montar a rigidez dentro de um subdomínio são necessárias informações de elementos a duas camadas de adjacência, e com o padrão DEPTH=1 a suavização próxima aos limites dos domínios é insuficiente. Para detalhes da formulação do elemento, consulte Biblioteca de elementos.
Aumentar a profundidade de sobreposição aumenta o número de nós e elementos mantidos pelos subdomínios vizinhos e, consequentemente, o uso de memória e o volume de comunicação. Defina esse valor ponderando a melhoria da convergência contra o aumento do custo computacional. Para a seleção do pré-condicionador, consulte Solvers e pré-condicionadores.
Tratamento dos pontos de contato¶
Ao decompor uma malha que contém pares de contato, em !PARTITION, o parâmetro CONTACT permite especificar a política de alocação dos pontos de contato entre os domínios. A alocação dos pontos de contato afeta a estabilidade e o volume de comunicação de análises paralelas que envolvem busca de contato e restrições de contato.
| Valor | Função |
|---|---|
DEFAULT |
Usa a política de alocação padrão. |
SIMPLE |
Usa uma alocação próxima ao particionamento comum, sem atribuir pesos especiais aos pontos de contato. |
AGGREGATE |
Particiona de modo a tender a agrupar os nós associados aos pares de contato. |
DISTRIBUTE |
Particiona de modo que os nós do lado mestre do contato tenham menor tendência a se concentrar em subdomínios específicos. |
Em malhas sem contato, normalmente não é necessário considerar o parâmetro CONTACT. Se houver problemas de convergência ou balanceamento de carga em uma análise paralela com contato, revise a política de alocação dos pontos de contato. Para detalhes da sintaxe de entrada, consulte !PARTITION.
Independentemente disso, o parâmetro CONTACT_OWNER permite selecionar o esquema de propriedade do contato paralelo. Enquanto CONTACT especifica “como particionar”, CONTACT_OWNER especifica “qual lado fica responsável após o particionamento”.
| Valor | Função |
|---|---|
MASTER |
Esquema de propriedade do mestre (padrão). A superfície mestre é particionada pelos domínios proprietários dos elementos, e os nós escravos são replicados em cada domínio proprietário do mestre. |
SLAVE |
Esquema de propriedade do escravo. Cada nó escravo é mantido apenas em seu domínio proprietário, e toda a superfície mestre é colocada nesse domínio. |
No deslizamento finito (!CONTACT com INTERACTION=FSLID), quando um nó escravo atravessa uma fronteira de decomposição de domínio na superfície mestre, no esquema MASTER a busca de adjacência pode ser interrompida na fronteira, fazendo com que o estado de contato e o histórico de atrito sejam perdidos e que a solução dependa do número de domínios. O esquema SLAVE evita esse problema. Ele só pode ser especificado quando TYPE=NODE-BASED; o uso de memória aumenta nos domínios que possuem nós escravos.
Saída de imagem da decomposição de domínio¶
Ao especificar em !PARTITION o parâmetro UCD, é possível gerar um arquivo UCD para verificar o resultado da decomposição. O arquivo UCD pode ser usado com ferramentas de visualização, como MicroAVS, para verificar os números dos domínios e os limites da decomposição.
Depois de alterar o número de domínios, o método de particionamento ou a profundidade de sobreposição, é importante verificar se há desequilíbrio entre os domínios particionados ou fragmentação artificial. A saída UCD é uma função auxiliar para verificar a adequação da decomposição antes de executar a análise paralela.
Tópicos relacionados¶
- Análise com processamento paralelo — Procedimento de execução de
hecmw_part1, arquivos de entrada e verificação da saída dos dados de malha distribuída. - Solvers e pré-condicionadores — Solvers paralelos, pré-condicionadores e relação entre SAINV e a profundidade de sobreposição.
- Lista de mensagens de erro — Mensagens de erro representativas de
hecmw_part1efistr1. - Método dos elementos finitos em paralelo — Fundamentos teóricos da decomposição de domínio e do método dos elementos finitos em paralelo.
- !PARTITION — Sintaxe de entrada dos dados de controle do utilitário de decomposição de domínio.