Tópico 23 · Decomposição de domínio
1/2
Decomposição de domínio: dividir o espaço, não as partículas
Em simulações com centenas de milhares ou milhões de partículas, entender como o computador divide o problema é tão importante quanto a física de Hertz-Mindlin. Com um milhão de partículas, o computador divide a lista de partículas ou o espaço físico? O foco aqui é o motor DEM (LIGGGHTS), sem fluidos.
1. Processamento serial (monolítico)
No serial não há divisão de partículas nem do espaço. Um único núcleo abriga o domínio inteiro, as paredes CAD e 100% das partículas. A cada passo, atualiza a lista de vizinhos, resolve as interações partícula-partícula (podem consumir até 80% do tempo), as interações partícula-parede e integra as equações de movimento. Não há sincronização de rede, mas o tempo cresce rapidamente com o número de colisões.
2. Processamento paralelo: decomposição espacial (spatial-decomposition)
Uma abordagem ingênua seria dividir o número de partículas pelo número de núcleos — o LIGGGHTS/LAMMPS não faz isso por padrão. A divisão ocorre pela região espacial.
- Fatiamento da caixao volume do domínio é dividido em uma grade 3D de subdomínios retangulares (ex.: 2 cortes em X, 2 em Y e 2 em Z para 8 núcleos).
- Adoção espacialcada núcleo (processo MPI) recebe um bloco e passa a ser responsável por qualquer partícula dentro de suas coordenadas naquele momento.
- Trânsito granularquando um grão cruza a fronteira do Núcleo 1 para o Núcleo 2, o Núcleo 1 empacota as propriedades, transmite via MPI, apaga a partícula da sua memória, e o Núcleo 2 a adota.
👻
Conceito — partículas fantasmas (ghost particles): se uma esfera na fronteira entre o Núcleo 1 e o Núcleo 2 colide com uma partícula do vizinho, o LIGGGHTS cria regiões de halo (zonas de sobreposição). As partículas próximas à fronteira são copiadas temporariamente para a memória do vizinho como ghost particles, existindo apenas para leitura no cálculo da força. O tamanho da zona de halo deve ser um pouco maior que o maior diâmetro de partícula.