simulação eficiente de fluidos no espaço paramétrico de malhas estruturadas tridimensionais...
TRANSCRIPT
Simulação eficiente de fluidos no espaço paramétrico de malhas estruturadas tridimensionaisAluno: Vitor Barata R. B. Barroso ([email protected])
Orientador: Waldemar Celes ([email protected])
Tese de Doutorado
Motivação Exemplos de fluidos
Correntes de rios Ondas do mar Fumaça de uma chaminé ou cigarro Vapor quente de um bule ou motor
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 Transporte de água e óleo em 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 uma grade regular Campos de valores escalares e vetoriais amostrados no centro de cada célula (i,j,k) da
grade Posição: x = [x y z]T
Velocidade: u = [u v w]T
Pressão: q Propriedades intrínsecas constantes
Massa específica: Viscosidade cinemática: Temperatura: T
Objetivo: integrar os campos de propriedades para descrever sua variação no tempo
x(i,j,k)
y
x
Fronteiras Curvas Grade regular
Marcação de células exteriores Tratamento diferenciado de células de fronteira
Grade em multirresolução Captura melhor a forma Não evita artefatos associados a degraus
Malha simplicial Requer informação topológica Maior custo computacional
Grade curvilínea paramétrica estruturada Simples e rápido Não requer topologia Evita artefatos
Proposta Idéia básica: explorar o conceito de malhas curvilíneas de CFD
Mapear a grade física curvilínea do espaço do mundo para uma grade computacional uniforme no espaço paramétrico
Realizar a integração eficientemente no espaço paramétrico
Vantagens: Evitar a necessidade de armazenar dados para toda a caixa envolvente do domínio Considerar paredes e obstáculos curvos de maneira natural, sem a necessidade de se
refinar a grade ou de se lidar com casos especiais próximo às fronteiras
Proposta
Foco: Gerar boas aproximações para aplicações interativas e de visualização científica
Estratégia: Começar com o algoritmo Stable Fluids clássico [Stam99]
Realizar adaptações para levar em conta métricas e Jacobianos, além do esquema de amostragem deslocada
Incorporar gradativamente técnicas avançadas mais recentes conforme o necessário, sempre verificando as adaptações necessárias para a sua implementação no espaço paramétrico
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 Coordenadas
J e J-1 podem ser precomputados armazenados por célula como 9 escalares (4 em 2D) podem ser interpolados fora dos pontos amostrais
Precisaremos também de termos de segunda ordem: sxx, syy, szz, txx, tyy, tzz, pxx, pyy, pzz
Domínio físico(espaço do mundo)
Domínio computacional(espaço paramétrico)
Modelo para Simulação Equações de Navier-Stokes (fluidos incompressíveis)
Termos: Advecção: as propriedades do fluido são carregadas por ele próprio Pressão: o fluido tende a ocupar áreas de menor pressão Difusão / viscosidade: atrito interno e resistência à deformação Forças externas: acelerações adicionais
auquut
u
21
0 u
Algoritmo Stable Fluids original Equações de Navier-Stokes (fluidos incompressíveis)
Stable Fluids [Stam99]
Aproximação de alto desempenho e incondicionalmente estável Separação de primeira ordem em passos fracionados
Termos considerados sequencialmente de forma independente Algoritmos eficientes e estáveis para cada etapa Cálculo da velocidade em cada passo usa o resultado do anterior
Ordem dos operadores é importante Advecção exige campo livre de divergência
)(1 nn uADFPu
auquut
u
21
0 u
Separação de Operadores Estratégia do tipo “dividir-e-conquistar”
Dividir um problema complexo em um conjunto de subproblemas mais simples
Resolução de cada subproblema por algoritmos especializados Soma das contribuições de cada solução intermediária
Tipos Separação de coordenadas Passos fracionados (separação por fenômenos físicos)
Erro Pode ser estimado, existem métodos de diferentes ordens Pode limitar a acurácia da integração mesmo com operadores exatos
Problema de valor inicial:
Resolução direta:
Método de Lie-Trotter (primera ordem):
Separação de Operadores
)(
)()(],,[)),(()(
)(],,[)),(()(
11
11
1
nB
n
nA
nB
nnB
B
nnA
nnA
A
trr
trtrttttrBt
tr
rtrttttrAt
tr
0)0(],,0[)),(())(()(
rrTttrBtrAt
tr
nnnn rtrttttrBtrAt
tr
)(],,[)),(())((
)( 1
Tt
t
Nn
N
0
1,...,1,00
Amostragem colocalizada [Stam99]
Pressões e velocidades nos centros das células Equações desacopladas, componentes oscilatórias
Amostragem deslocada [Harlow65,Bridson08]
Pressões nos centros, velocidades nas faces das células
Componentes de velocidade separadas (interpolação)
Discretização do domínio
]2[2
1
][2
1
,,2,,,,222
2
,,1,,1
kjikjikji
x
kjikjix
rrrx
r
uux
u
]2[1
][1
,,1,,,,12
,,21
2
2
,,21,,21,,
kjikjikjixkji
kjikjixkji
rrrx
r
uux
u
Representação das velocidadesVelocidades no mundo Velocidades paramétricas
Malha colocalizada
Malha deslocada
Velocidades no espaço do mundo Tratamento matemático mais simples Malha deslocada:
Desalinhamento entre velocidades e normais das faces não é prejudicial ao resultado[Azevedo12]
Maior dificuldade com condições de contorno
Velocidades no espaço paramétrico Maior complexidade matemática Malha deslocada:
Velocidades normais são mais intuitivas Condições de contorno mais simples
Advecção semi-Lagrangiana Dados:
Tempo atual t, passo de integração h Partícula numa posição amostral xA com velocidade uA
Procedimento: Partícula que seria carregada pelo fluido até o ponto amostral xA
Rastrear para trás (qualquer ordem, passo -h) até origem xB
Atribuir à amostra a velocidade interpolada em xB
Dissipação numérica Interpolação cúbica saturada e outras técnicas Efeito comparável à difusão/viscosidade
),(),(
)(
),(
txuhtxu
huxx
txuu
BA
AAB
AA
Advecção semi-Lagrangiana
Malhas curvilíneas Integração pode ser feita no espaço global ou paramétrico
Maior eficiência no espaço em que a velocidade está representada Maior precisão no espaço em que a velocidade exibe comportamento mais simples
Subdivisão em passos adaptativos Ao atravessar fronteiras entre células ou percorrer distância unitária no espaço paramétrico Considera variações nas velocidades e nos jacobianos
Atribuição final deve ser feita sempre com base no espaço do mundo Evitar influência da variação de tamanho e rotações das células
Trajetórias de uma partícula com velocidade u:
A – linear no espaço do mundo(correta para u constante no mundo)
B – linear no espaço paramétrico local(correta para u paramétrica constante)
C – linear no espaço local com passo adaptativo(aproximada para u constante no mundo)
Difusão Equação de Poisson implícita da difusão: [Stam99]
Malhas regulares (cada componente) Solução de um sistema esparso simétrico com 7 diagonais em 3D (5 em 2D) Iterações de Jacobi: Regra de atualização acessa 6 vizinhos em 3D (4 em 2D) Exemplo de solver: Gradiente Conjugado (CG) com pré-condicionador Cholesky
Incompleto (IC)
Malhas curvilíneas (cada componente) Solução de um sistema esparso não-simétrico com 19 diagonais em 3D (9 em 2D) Iterações de Jacobi: Regra de atualização acessa 18 vizinhos em 3D (8 em 2D) Exemplo de solver: Gradiente Biconjugado Estabilizado (BiCGStab) com pré-
condicionador Multigrid Algébrico (AMG)
zzyyxx uuuhuu
Forças externas
Integração explícita de primeira ordem é suficiente em qualquer caso
Acelerações arbitrárias violam fortemente condição de incompressibilidade Aplicar projeção logo após esta etapa
ahuu
Projeção Visão geral
Após etapas anteriores, velocidades violam condição de incompressibilidade Queremos projetar as velocidades em um campo livre de divergência Utilizamos a decomposição de HelmHoltz-Hodge:
Procedimento Calcular a divergência do campo de velocidades intermediárias Calcular a pressão q (a menos de uma constante) resolvendo a equação de Poisson Projetar a velocidade num campo livre de divergência:
Malhas regulares Solução de um sistema esparso com a mesma estrutura do operador de difusão Exemplo de solver: Gradiente Conjugado (CG) com pré-condicionador Cholesky
Incompleto (IC)
u
qu 2
quu
0)(,0, qrotuquu
Projeção em malhas curvilíneas Divergência
Malha regular:
Malha curvilínea:
Espaço paramétrico:
As divergências das bases do espaço paramétrico podem ser pré-calculadas
zyx zyxu
zpztzs
ypytys
xpxtxs
pztzsz
pytysy
pxtxsxu
),,(
),,(
),,(
ppp
ttt
sss
pts
zyxp
zyxt
zyxs
ptsu
Projeção em malhas curvilíneas Pressão
Solução de um sistema esparso com a mesma estrutura do operador de difusão Exemplo de solver: Gradiente Biconjugado Estabilizado (BiCGStab) com pré-
condicionador Multigrid Algébrico (AMG)
Projeção Malha regular:
Malha curvilínea:
Espaço paramétrico:
Os termos da matriz composta acima podem ser pré-calculados
),,(),,(),,( ][ zyxzyxzyx quu
),,(1
),,(),,( ][ ptszyxzyx qJuu
),,(1
),,(),,( ][ ptsT
ptspts qJJuu
Transporte de partículas e densidades de 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 custosa
Advecção de densidades de tinta[Stam99]
Estrutura análoga à equação de Navier-Stokes Operadores: advecção, difusão, extinção e fontes externas Resolução análoga ao procedimento aplicado para Navier-Stokes
Srrrut
red
2
Condições de Contorno em malha regular Camada extra de células junto às fronteiras e
obstáculos Cada célula de borda B está associada a um 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
EfeitoMalha
colocalizada
Malha deslocada Pressã
o
uBtan uBort uBtan uBort qB
Passagem livre uRtan uRort uRtan uRort 0
Parede lisa uRtan -uRort uRtan 0 qR
Parede rugosa -uRtan -uRort -uRtan 0 qR
Entrada de fluido 0 uin 0 uin qR
Saída de fluido 0 uout 0 uout qR
Condições de Contorno em malha curvilínea Aplicadas no espaço paramétrico
normalizado Componentes tangente e ortogonal sempre
alinhadas com os eixos locais Módulos independentes do tamanho local das
células
Utilização de fatores de escala e offset: Pressão:
Velocidade:
Malha deslocada e velocidades globais: paredes lisas não suportadas devido à
dificuldade em garantir que apenas acomponente normal seja igual a zero
RB qsq q
ortRortB
RB
ovsv
vsv
ortort
tantan tan
EfeitoMalha colocalizada Malha deslocada Pressão
stan sort oort stan sort oort sq
Passagem livre
1 1 0 1 1 0 0
Parede lisa 1 -1 0 1 0 0 1
Parede rugosa
-1 -1 0 0 0 0 1
Entrada de fluido
0 0 uin 0 0 uin 1
Saída de fluido
0 0 uout 0 0 uout 1
Implementação – Dados CUDA
Propriedades que requerem leitura e escrita simultânea precisam de 2 áreas de memória (x2) Cuda Arrays oferecem interpolação eficiente por hardware Suporte a CUDA Surfaces depende do hardware do cliente Dados com 3 componentes devem ser separados para manter o acesso coalescente
Dado 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
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. A ser testado: tornar os kernels limitados por computação em vez de por banda [Nguyen10]
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 (implementados na biblioteca CUSP)
Visualização feita com o auxílio de shaders GLSL
Resultados – Validação Inicial Resultados idênticos ao Stable Fluids em grades regulares 2D/3D
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 é 1/4 da área nas outras partes do percurso.
Resultados – Caminho suave 2D
Resultados – Caminho suave 3D
Resultados – Obstáculo 3D
Resultados Informações gerais:
Intel Core i5 750 2.67GHz, 4GB RAM, placa gráfica GeForce GTX 550 Ti. Gargalo: resolução das equações de Poisson
Convergência: Jacobi x BiCGStab Iterações de Jacobi não conseguem atingir erros tão baixos quanto BiCGStab BiCGStab não converge em alguns casos!
Melhora com uso da última pressão como chute inicial Melhora significativamente com utilização de um ponto de pressão fixa
Condição de Parada
Iterações BiCGStab
Iterações de Jacobi
t = 23ms 1 40
t = 37ms 2 65
t = 51ms 3 90
erro relativo < 10% 3 >200
Resultados - DesempenhoTempos para a simulação completa (fluido, partículas e tinta), mas sem renderização
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
2 a 3 mais lento, mas melhor representação de domínios curvos
Conclusão Método eficiente para a simulação euleriana de fluidos confinados em domínios tridimensionais curvilíneos
estruturados Matrizes Jacobianas relacionam o espaço do mundo com o paramétrico de malhas estruturadas Simulação realizada com base numa simples grade uniforme
Desempenho Técnica implementada em CUDA, explora bem o paralelismo das placas gráficas atuais. 2 a 3 vezes mais lento que o Stable Fluids original com implementação similar.
Fronteiras curvilíneas Dispensa informações topológicas Não exige tratamento de casos especiais Não requer maior refinamento próximo às fronteiras Evita o surgimento de artefatos na simulação
Resolvedores de sistemas lineares esparsos Iterações de Jacobi: mais simples de se implementar e paralelizar, estabilidade garantida BiCGStab: convergência muito rápida, diminuindo o tempo de simulação e melhorando a qualidade do resultado, mas
estabilidade não garantida
Trabalhos futuros Abordagem integral para pressões Técnicas de preservação da vorticidade Tratamento de gravidade e superfície livre
Perguntas?
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
[14] Nguyen A. et al., 3.5-D Blocking Optimization for Stencil Computations on Modern CPUs and GPUs –Proceedings of International Conference for High Performance Computing, Networking, Storage and Analysis, 2010
[15] AZEVEDO, V. C., Efficient smoke simulation on curvilinear grids. – Master’s thesis, UFRGS, 2012.
Anexos
Difusão em malhas regulares Equação de Poisson implícita da difusão: [Stam99]
Malhas regulares:
zzyyxx uuuhuu
zzkjikji
yykjikji
xxkjikji
kjizzyyxxkji
kuu
kuu
kuu
ukkku
1,,1,,
,1,,1,
,,1,,1
,,,, )](2[
2
2
2
1
1
1
1
zzz
yyy
xxx
k
k
k
h
Difusão em malhas curvilíneas
pskjikjikjikji
tpkjikjikjikji
stkjikjikjikji
pkjikjippkjikji
tkjikjittkjikji
skjikjisskjikji
kjippttsskji
kuuuu
kuuuu
kuuuu
kuukuu
kuukuu
kuukuu
ukkku
1,,11,,11,,11,1,
1,1,1,1,1,1,1,1,
,1,1,1,1,1,1,1,1
1,,1,,1,,1,,
,1,,1,,1,,1,
,,1,,1,,1,,1
,,,, )](2[
2/)(
2/)(
2/)(
zzyyxxps
zzyyxxtp
zzyyxxst
spspspk
ptptptk
tststsk
2/)(
2/)(
2/)(
zzyyxxp
zzyyxxt
zzyyxxs
pppk
tttk
sssk
222
222
222
zyxpp
zyxtt
zyxss
pppk
tttk
sssk