Ir para o conteúdo

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.

Conceito de decomposição baseada em nós

Figura 10.1 Conceito de decomposição baseada em nós

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.

Nós e elementos mantidos por cada subdomínio na decomposição baseada em nós

Figura 10.2 Nós e elementos mantidos por cada subdomínio na decomposição baseada em nós

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.

Nós importados na decomposição baseada em nós

Figura 10.3 Nós importados na decomposição baseada em nós

Nós exportados na decomposição baseada em nós

Figura 10.4 Nós exportados na decomposição baseada em nós

Elementos compartilhados na decomposição baseada em nós

Figura 10.5 Elementos compartilhados na decomposição baseada em nós

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.

Conceito de decomposição baseada em elementos

Figura 10.6 Conceito de decomposição baseada em elementos

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.

Nós e elementos mantidos por cada subdomínio na decomposição baseada em elementos

Figura 10.7 Nós e elementos mantidos por cada subdomínio na decomposição baseada em elementos

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.

Elementos importados na decomposição baseada em elementos

Figura 10.8 Elementos importados na decomposição baseada em elementos

Elementos exportados na decomposição baseada em elementos

Figura 10.9 Elementos exportados na decomposição baseada em elementos

Nós compartilhados na decomposição baseada em elementos

Figura 10.10 Nós compartilhados na decomposição baseada em elementos

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