simulação de fluidos em grids estruturados paramétricos tridimensionais em tempo real aluno:...
TRANSCRIPT
Simulação de Fluidos em Grids Estruturados Paramétricos Tridimensionais em Tempo
RealAluno: Vitor Barata R. B. Barroso ([email protected])
Orientador: Waldemar Celes ([email protected])
Proposta de Tese de Doutorado
Motivação Exemplos de fluidos
Ondas do mar Fluxo de um rio Fumaça de uma chaminé ou cigarro Vapor quente de um bule ou reator
Estudos importantes envolvendo fluidos Vento passando pelas asas e turbinas de um avião Formação e evolução de tempestades e furacões Fluxo de sangue por veias e artérias Água e óleo em reservatórios e transportados por
dutos
Introdução Simulação de fluidos
Métodos Lagrangianos: representam o fluido com partículas (ex.: SPH)
Métodos Eulerianos: subdividem o espaço em voxels
Descrição euleriana de um fluido em um grid regular Campos de valores amostrados em cada célula (i,j,k) do grid
Posição: x = [x y z]T
Velocidade: u = [u v w]T
Pressão: p Temperatura: T
Propriedades intrínsecas constantes Massa específica: Viscosidade cinemática:
Objetivo: descrever como os campos de valores variam com o tempo
x(i,j,k)
y
x
Fronteiras Curvas Grid regular
Marcação de células exteriores Tratamento diferenciado de
células de fronteira Grid em multiresolução
Captura melhor a forma Não evita artefatos
Malha simplicial Requer informação topológica Maior custo
Grid paramétrico Simples e rápido Não requer topologia Evita artefatos
Proposta Mapeamento entre um grid regular uniforme e um deformado Integração realizada no espaço paramétrico Permite simular caminhos curvos sem usar toda a sua caixa
envolvente Evita necessidade de discretização excessiva perto de bordas
curvas
Transformação de Coordenadas Regra da Cadeia para gradientes de campos escalares
Notação Matricial
Jacobiano
pzpypxp
tztytxt
szsysxs
zfyfxff
zfyfxff
zfyfxff
zpztzsz
ypytysy
xpxtxsx
pftfsff
pftfsff
pftfsff
z
y
x
ppp
ttt
sss
p
t
s
f
f
f
zyx
zyx
zyx
f
f
f
p
t
s
zzz
yyy
xxx
z
y
x
f
f
f
pts
pts
pts
f
f
f
zyxpts fJf ,,,, ptszyx fJf ,,1
,,
Transformação de Coordenadas Regra da Cadeia para velocidades
Notação Matricial
Jacobiano
pztzszz
pytysyy
pxtxsxx
pts
pts
pts
p
t
s
zzz
yyy
xxx
z
y
x
pts
pts
pts
zpypxpp
ztytxtt
zsysxss
zyx
zyx
zyx
z
y
x
ppp
ttt
sss
p
t
s
zyx
zyx
zyx
zyxT
pts uJu ,,,,
ptsT
zyx uJu ,,,,
Transformação de CoordenadasEspaço real Espaço paramétrico
J e J-1 podem ser precomputados armazenados por célula como 9 escalares (4 em 2D) podem ser interpolados fora do centro das células
Precisaremos também de termos de segunda ordem: sxx, syy, szz, txx, tyy, tzz, pxx, pyy, pzz
Modelo para Simulação Equações de Navier-Stokes (fluidos incompressíveis)
Termos: Advecção: o movimento do fluido afeta a ele próprio Pressão: o fluido tende a ocupar áreas de menor pressão Difusão: viscosidade controla a resistência ao movimento Forças externas: aceleração adicional
Stable Fluids [Stam99]
Aproximação de alto desempenho e incondicionalmente estável Termos considerados sequencialmente de forma independente Cálculo da velocidade em cada passo usa o resultado do anterior
Fupuut
u
11 2
0 u
Advecção semi-lagrangeana Stable Fluids
Tempo atual t Passo de integração h Partícula no centro x da célula com velocidade u
De onde a partícula veio? Rastreio para trás: no tempo (t-h), estava em (x-hu) Velocidade Velocidade interpolada no ponto anterior
Proposta Integrar no espaço paramétrico Velocidades ficam armazenadas no espaço do
mundo, devendo ser convertidas para o espaço paramétrico
Advecção semi-lagrangeana
Passos de integração grandes podem levar a partícula a uma posição incorreta Tracking da partícula
Reamostrar o jacobiano e recalcular a velocidade restante Integradores de alta ordem
Pode ser suficiente converter cada velocidade intermediária para o espaço paramétrico considerando o Jacobiano local
Trajetórias de uma partícula com velocidade em s:
A = esperadaB = sem trackingC = com tracking
Difusão Equação de Poisson implícita da difusão: [Stam99]
Stable Fluids Regra de atualização acessa 6 vizinhos em 3D (4 em 2D) Solução de um sistema esparso simétrico com 7 (5)
diagonais Exemplo de solver: Gradiente conjugado com
precondicionador Cholesky incompleto
Proposta Regra de atualização acessa 18 vizinhos em 3D (8 em 2D) Solução de um sistema esparso com 19 (9) diagonais Exemplo de solver: Gradiente biconjugado estabilizado com
precondicionador multigrid algébrico
zzyyxx uuuhuu
Pressão e Projeção Stable Fluids
Calcular o divergente do campo de velocidades Calcular a pressão p (a menos de uma constante)
resolvendo a equação de Poisson Projetar a velocidade num campo divergente-livre:
Proposta O divergente, inicialmente calculado no espaço paramétrico,
deve ser transformado para o espaço do mundo A equação de Poisson recai num sistema esparso com a
mesma forma da etapa de difusão, que sofre as mesmas adaptações
Na projeção, o gradiente de pressão deve ser transformado para o espaço do mundo
u
pu 2
puu
Visualização de partículas e tinta Transporte de partículas sem massa
Integração direta da posição das partículas Segue as mesmas regras da advecção semi-
lagrangeana Posições guardadas diretamente no espaço paramétrico
Conversão do espaço do mundo para o paramétrico seria difícil
Advecção de tinta
Forma semelhante à de Navier-Stokes, inclui advecção, difusão, extinção e fontes de tinta
Adaptações análogas às feitas para Navier-Stokes
Srrrut
red
2
Condições de Contorno Camada de células junto às
fronteiras e obstáculos Cada célula de borda B guarda
offset em (s,t,p) para uma célula interior R de referência
Relação entre pressões e velocidades de B e R determina diferentes comportamentos Pressão:
Velocidade:
Componentes tangente e ortogonal sempre alinhadas com espaço paramétrico!
RB pp
ortRortB
RB
ovsv
vsv
ortort
tantan tan
B = célula de bordaR = célula de referência(s,t)R = (s,t)B + (0,-1)
Efeito stan sort oort
Parede rugosa -1 -1 0
Parede lisa 1 -1 0
Entrada / saída
0 0 u
Implementação – Dados CUDADado Armazenamento Escrita Exemplos
Dados pré-computados
2D/3D Cuda Arrays - Vértices de célulasCentros de célulasJacobianos
Propriedades simuladas
2D Pitch-linear memoryou2D/3D Cuda Arrays
Acesso diretoou2D/3D CUDA Surfaces
Velocidade (x2)DivergênciaPressão (x2)Densidade de tinta (x2)
Influências externas
2D/3D Cuda Arrays Page-locked async copy Forças externasFontes de tinta
Condições de contorno
2D/3D Cuda Arrays Page-locked async copy Offsets de B para RParâmetros vtan, vort, oort
Visualização PBOs / VBOs / Texturas
CudaGraphicsResource VelocidadesDensidades de tintaPosições de partículas
Propriedades que requerem leitura e escrita simultânea precisam de 2 áreas de memória (x2) Cuda Arrays oferecem interpolação por hardware Suporte a CUDA Surfaces depende do hardware do cliente Dados com 3 componentes devem ser separados
Implementação – Kernels CUDA
Não há necessidade de uso da memória compartilhada, pois todos os acessos são naturalmente coalescentes ou apresentam localidade espacial.
Atualizações de células de borda: marcações “v” e “p” no diagrama Gargalo: resolução de sistemas lineares esparsos (tarjas no diagrama)
Iterações de Jacobi BiCGStab com pré-condicionador Multigrid Algébrico (CUSP)
Visualização feita por shaders GLSL
Resultados – Validação Grid regular
Resultado idênticoao Stable Fluids
Desempenho ± 2x mais lento em 2D ± 3x mais lento em 3D
Vantagem na representação de domínios irregulares
Resultados – Caminho curvo 2D
Resultados – Caminho curvo 2D
Resultados – Caminho curvo 3D
Resultados – Constrição 2D
Resultados – Constrição 3D
Resultados – Constrição 3D
Gráfico mostrando a velocidade média do fluido na direção x ao longo de seções transversais do grid com constrição. A área da constrição é 25% da área nas outras partes do percurso.
Resultados – Caminho suave 2D
Resultados – Caminho suave 2D
Resultados – Caminho suave 3D
Resultados – Obstáculo 3D
Resultados - Convergência Testes realizados com Intel Core i5 750 2.67GHz, 4GB RAM,
placa gráfica GeForce GTX 550 Ti. Gargalo: solução das equações de Poisson Jacobi x BiCGStab
Iterações de Jacobi não conseguem atingir erros tão baixos quanto BiCGStab (ver gráfico anterior)
BiCGStab não converge em alguns casos! Melhora com uso da última pressão como chute inicial
Condição de Parada
Iterações BiCGStab
Iterações de Jacobi
t = 23ms 1 40
t = 37ms 2 65
t = 51ms 3 90
relative error < 10%
3 >200
Resultados - Desempenho
Iteraçõesde Pressão
Stable Fluids
(64 x 64 x 32)
Nosso método
(64 x 64 x 32)
1 CG / BiCGStab 18 ms 45 ms
2 CG / BiCGStab 22 ms 53 ms
3 CG / BiCGStab 26 ms 63 ms
50 Jacobi 14 ms 48 ms
75 Jacobi 16 ms 53 ms
100 Jacobi 19 ms 59 ms
Iteraçõesde Pressão
Stable Fluids
(300x300)
Nosso método
(300x300)
10 Jacobi 13 ms 26 ms
50 Jacobi 26 ms 53 ms
100 Jacobi 36 ms 71 ms
As tabelas abaixo fazem uma comparação de desempenho entre o Stable Fluids e nosso método. Os tempos consideram a simulação completa (fluido, partículas e tinta), mas sem renderização.
Conclusão Apresentamos um método rápido para realizar a simulação euleriana
de fluidos confinados em domínios tridimensionais estruturados de formato arbitrário.
Utilizamos matrizes Jacobianas para relacionar o espaço do mundo com o espaço paramétrico de grids estruturados, onde a simulação pode ser realizada com base num simples grid uniforme.
A técnica foi implementada em CUDA e aproveita o paralelismo das placas gráficas atuais.
O desempenho do algoritmo é de 2 a 3 vezes mais lento que o do Stable Fluids original. Porém, a representação das fronteiras é melhor e evita o surgimento de artefatos na simulação.
Testamos dois solvers de sistemas lineares esparsos: iterações de Jacobi e o BiCGStab. O primeiro é mais simples de se implementar e paralelizar, enquanto o segundo apresenta convergência muito mais rápida, diminuindo o tempo total de simulações com qualidade razoável.
Apresentamos a seguir um cronograma de tarefas a ainda serem realizadas ao longo do doutorado, além da escrita da tese.
Cronogramafev/mar - Injeção de tinta em reservatórios de petróleo
Visualização de campos vetoriais em grids estruturados com falhas
abr/mai - Detecção automática de funções de transferência Visualização volumétrica de propriedades em grids estruturados
jun - Substituição do grid centrado por MAC Pedido de revisores dos artigos
jul - Extração e visualização de superfície livre com gravidade Maior apelo visual e gama de aplicações Visualização não precisa ser em tempo real
ago - Testes, melhorias, coleta de resultados, finalização da tese Experimentos com outros grids e outros solvers de sistemas esparsos
Defesa da tese: início de setembro
Referências[1] N Foster, D Metaxas, Modeling the Motion of a Hot, Turbulent Gas - Proceedings of ACM
SIGGRAPH 1997
[2] J Stam, Stable Fluids – Proceedings of ACM SIGGRAPH 1999
[3] M J Harris, Fast Fluid Dynamics Simulation on the GPU – GPU Gems, 2004
[4] P Mullen et al., Energy-Preserving Integrators for Fluid Animation – Proceedings of ACM SIGGRAPH 2009
[5] E Wu, Y Liu, X Liu, An Improved Study of Real-Time Fluid Simulation on GPU – The Journal of Visualization and Computer Animation, 2004
[6] N Foster, R Fedkiw, Practical Animation of Liquids – Proceedings of ACM SIGGRAPH 2001
[7] D Enright, S Marschner, R Fedkiw, Animation and Rendering of Complex Water Surfaces – Proceedings of ACM SIGGRAPH 2002
[8] G Irving et al., Efficient Simulation of Large Bodies of Water by Coupling Two and Three Dimensional Techniques – Proceedings of ACM SIGGRAPH 2006
[9] J-M Hong, C-H Kim, Discontinuous Fluids – Proceedings of ACM SIGGRAPH 2005
[10] F Losasso et al., Multiple Interacting Liquids – Proceedings of ACM SIGGRAPH 2006
[11] A Robinson-Mosher et al., Two-way Coupling of Fluids to Rigid and Deformable Solids and Shells – Proceedings of ACM SIGGRAPH 2008
[12] E. Guendelman et al., Coupling Water and Smoke to Thin Deformable and Rigid Shells – Proceedings of ACM SIGGRAPH 2005
[13] C Batty, F Bertails, R Bridson, A Fast Variational Framework for Accurate Solid-Fluid Coupling - Proceedings of ACM SIGGRAPH 2007