- GCG - Group for Computer Graphics, Image and Vision
Transcrição
- GCG - Group for Computer Graphics, Image and Vision
Tássio Knop de Castro Simulação de fluidos utilizando a abordagem lagrangiana Orientador: Marcelo Bernardes Vieira Universidade Federal de Juiz de Fora Instituto de Ciências Exatas Departamento de Ciência da Computação Juiz de Fora 2009 Monografia submetida ao corpo docente do Instituto de Ciências Exatas da Universidade Federal de Juiz de Fora como parte integrante dos requisitos necessários para obtenção do grau de bacharel em Ciência da Computação Prof. Marcelo Bernardes Vieira, D. Sc. Orientador Prof. Carlos Cristiano Hasenclever Borges, D. Sc. Prof. Raul Fonseca Neto, D. Sc. Agradecimentos Agradeço primeiramente à minha mãe, Lúcia Helena, por me apoiar incondicionalmente. À Laı́s, por aturar um namorado nerd. Aos amigos que fiz na faculdade e que trouxeram a esses anos muitos bons momentos, em especial Eder, Thales, Scoralick e Peçanha. Aos amigos do Grupo de Computação Gráfica, Imagem e Visão da UFJF, que trabalharam duro para construir um ambiente de excelência em termos de pesquisas e publicações, com uma ótima convivência. Aos professores da UFJF, que tanto contribuı́ram para minha formação, especialmente ao professor Marcelo Bernardes Vieira, por todos esses anos de orientações e trabalhos, e por ser um exemplo de profissional dedicado. Notações A seguir, são listadas as principais notações utilizadas neste trabalho: • x : escalar; • T : tensor; • v : vetor; • f : função; • f(x) = ˙ y: a função f pode ser aproximada por y. • <f >: operador de aproximação de uma função f conforme a convenção SPH; • C: conjunto; • Pi : partı́cula de ı́ndice i ; • ∇f: gradiente de uma função escalar f ; • ∇ · f: divergente de uma função f ; • δx: grandeza x de um elemento de fluido infinitesimal (Seção 2.3.2). O δ é utilizado quando se quer destacar que tal grandeza é relacionada a um elemento cujo volume tende a zero; • Dq : Dt derivada material (Seção A.1); • ∂x : ∂y derivada parcial de x em relação a y; • W (x ,h): núcleo W (Seção 3.4) cujo comprimento suave (Seção 4.2.1) é h aplicado à posição x . Algumas das variáveis mais utilizadas no texto são: • ρ: densidade (Seção 2.1.1); • µ: viscosidade (Seção 2.1.2); • p: pressão (Seção 2.1.3); • xi , vi : posição e velocidade da partı́cula i, respectivamente; • m, a: massa e aceleração, respectivamente; • ∆t: passo de tempo da simulação. Sumário Lista de Figuras Resumo 1 Introdução p. 11 1.1 Definição do problema . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 11 1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 12 1.3 Organização dos capı́tulos . . . . . . . . . . . . . . . . . . . . . . . . . p. 12 2 Dinâmica de Fluidos 2.1 2.2 2.3 2.4 p. 13 Propriedades relevantes . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 14 2.1.1 Densidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 14 2.1.2 Viscosidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 14 2.1.3 Pressão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 15 Leis de conservação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 15 2.2.1 Conservação da massa . . . . . . . . . . . . . . . . . . . . . . . p. 16 2.2.2 Conservação do momento . . . . . . . . . . . . . . . . . . . . . p. 16 2.2.3 Conservação da energia . . . . . . . . . . . . . . . . . . . . . . . p. 16 Modelos de escoamento . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 16 2.3.1 Volume de controle finito . . . . . . . . . . . . . . . . . . . . . . p. 16 2.3.2 Elemento de fluido infinitesimal . . . . . . . . . . . . . . . . . . p. 17 Abordagens de Euler e Lagrange . . . . . . . . . . . . . . . . . . . . . . p. 18 2.4.1 p. 18 Abordagem euleriana . . . . . . . . . . . . . . . . . . . . . . . . 2.4.2 2.5 2.6 Abordagem lagrangiana . . . . . . . . . . . . . . . . . . . . . . p. 19 As equações de Navier-Stokes . . . . . . . . . . . . . . . . . . . . . . . p. 20 2.5.1 Equação da continuidade . . . . . . . . . . . . . . . . . . . . . . p. 20 2.5.2 Equação do momento . . . . . . . . . . . . . . . . . . . . . . . . p. 21 Incompressibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 21 3 Smoothed Particle Hydrodynamics 3.1 p. 23 Representação integral . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 24 3.1.1 Representação integral de uma função . . . . . . . . . . . . . . p. 24 3.1.2 Representação integral da derivada de uma função . . . . . . . . p. 25 3.2 Representação por partı́culas . . . . . . . . . . . . . . . . . . . . . . . . p. 26 3.3 Aproximação SPH das equações de Navier-Stokes . . . . . . . . . . . . p. 27 3.3.1 Aproximação da equação da continuidade . . . . . . . . . . . . . p. 27 3.3.2 Aproximação da equação do momento . . . . . . . . . . . . . . p. 28 Núcleos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 29 3.4 4 Modelo Computacional p. 32 4.1 Visão Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 32 4.2 Inicialização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 33 4.2.1 Comprimento suave . . . . . . . . . . . . . . . . . . . . . . . . . p. 33 4.2.2 Velocidade do som . . . . . . . . . . . . . . . . . . . . . . . . . p. 34 Busca de partı́culas vizinhas . . . . . . . . . . . . . . . . . . . . . . . . p. 34 4.3.1 Busca em força bruta . . . . . . . . . . . . . . . . . . . . . . . . p. 35 4.3.2 Busca em grade . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 36 Integração temporal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 37 4.4.1 Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 38 4.4.2 Leap-Frog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 38 4.3 4.4 4.5 4.6 Condições de contorno . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 39 4.5.1 Partı́culas fantasma . . . . . . . . . . . . . . . . . . . . . . . . . p. 39 4.5.2 Reflexão geométrica . . . . . . . . . . . . . . . . . . . . . . . . . p. 40 Discussão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 41 5 Resultados 5.1 5.2 5.3 p. 43 A aplicação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 43 5.1.1 gcgBasicSPH . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 43 5.1.2 gcgParticleSPH . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 44 5.1.3 gcgOptimizedGridSPH . . . . . . . . . . . . . . . . . . . . . . . p. 44 Experimentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 45 5.2.1 Experimento 1: descarga de água . . . . . . . . . . . . . . . . . p. 45 5.2.1.1 Tempo real . . . . . . . . . . . . . . . . . . . . . . . . p. 46 5.2.1.2 Alto nı́vel de detalhe . . . . . . . . . . . . . . . . . . . p. 46 5.2.2 Experimento 2: forças de controle . . . . . . . . . . . . . . . . . p. 47 5.2.3 Experimento 3: incompressibilidade . . . . . . . . . . . . . . . . p. 48 5.2.4 Experimento 4: condições de contorno . . . . . . . . . . . . . . p. 49 Desempenho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 50 6 Conclusão p. 52 Apêndice A -- Alguns conceitos p. 54 A.1 Derivada material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 54 A.2 Divergente da velocidade . . . . . . . . . . . . . . . . . . . . . . . . . . p. 55 Referências p. 57 Lista de Figuras 1 Em um fluido em repouso, dados dois pontos x, y tais que a profundidade Px <Py , a pressão px < py . Ou seja, quanto maior a profundidade, maior é a pressão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 15 2 Volume de Controle Finito. . . . . . . . . . . . . . . . . . . . . . . . . . p. 17 3 Elemento de fluido infinitesimal. . . . . . . . . . . . . . . . . . . . . . . p. 18 4 a) Cenário de simulação do fluido. b) Abordagem euleriana: modelo em grade fixa. O cálculo das propriedades do fluido se dá nos pontos em destaque. 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 18 a) Cenário de simulação do fluido. b) Abordagem lagrangiana: modelo em partı́culas. O cálculo das propriedades do fluido se dá nos pontos em destaque. 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . No SPH, o domı́nio é discretizado através de partı́culas e as diversas propriedades são interpoladas. . . . . . . . . . . . . . . . . . . . . . . . 7 p. 19 p. 24 O suporte compacto possui raio kh e são consideradas para a interpolação somente as partı́culas dentro desse raio. . . . . . . . . . . . . . . . . . . p. 26 8 Comportamento do núcleo W para R ∈ [−2, 2] . . . . . . . . . . . . . . p. 31 9 Busca em grade. Cada célula possui lados kh. Só é necessário buscar vizinhos nas células adjacentes à célula de Pi . . . . . . . . . . . . . . . 10 p. 36 As partı́culas fantasma podem ser distribuı́das uniformemente ao longo da fronteira. Suas propriedades devem ser calculadas de forma a impedir que as partı́culas reais ultrapassem a fronteira. . . . . . . . . . . . . . . 11 p. 39 As partı́culas fantasma podem ser uma reflexão das partı́culas reais em relação à fronteira. Essa técnica pode ser difı́cil de manter para geometrias mais complexas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 40 12 A partı́cula do fluido, ao colidir com a fronteira, tem sua velocidade refletida em relação à normal da superfı́cie. . . . . . . . . . . . . . . . . p. 41 13 Aplicação: 1000 partı́culas. . . . . . . . . . . . . . . . . . . . . . . . . . p. 46 14 Aplicação: 40000 partı́culas. . . . . . . . . . . . . . . . . . . . . . . . . p. 47 15 Aplicação: forças de controle mantendo as partı́culas sobre uma parábola. p. 48 16 Inı́cio da simulação: caixa envolvente em rotação constante, sentido horário. p. 48 17 Fim da simulação: 45 segundos depois (tempo no domı́nio da simulação), é evidente a compressão do fluido . . . . . . . . . . . . . . . . . . . . . p. 49 18 Condição de contorno geométrica para geometria esférica . . . . . . . . p. 49 19 Recipiente em rotação constante (sentido horário) . . . . . . . . . . . . p. 50 20 Gráfico: Número de partı́culas × Tempo . . . . . . . . . . . . . . . . . p. 50 21 Derivada material: descreve como uma grandeza varia no tempo e no espaço. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 55 Resumo Este trabalho trata da simulação computacional de Dinâmica de Fluidos. Apresenta os fundamentos fı́sicos e matemáticos necessários para a compreensão do problema, além de modelos utilizados para aproximar discretamente as equações de Navier-Stokes. São apresentadas as vantagens e desvantagens de métodos sem malha de aproximação de equações diferenciais parciais, focando-se na abordagem lagrangiana. Nesse contexto, é apresentado o método Smoothed Particle Hydrodynamics, um método sem malha que aproxima as equações de movimento dos fluidos através de um conjunto de equações diferenciais ordinárias. Um modelo computacional é explicitado, de forma a trabalhar com essas equações em relação ao tempo e possibilitar tanto uma simulação em tempo real quanto uma aplicação com alto nı́vel de detalhe. São discutidos experimentos e testes de desempenho realizados com a aplicação desenvolvida, juntamente com os resultados e dificuldades encontrados. 11 1 Introdução Desde o século XVII são realizados experimentos com Dinâmica de Fluidos, com o intuito de modelar e prever de forma precisa o escoamento de um fluido. Na categoria de fluidos encontram-se os lı́quidos, gases, plasmas e até sólidos plásticos. Essa área de pequisa evoluiu basicamente em duas vertentes principais: desenvolvimentos teóricos e experimentos em laboratório. A pesquisa experimental demandava grandes áreas e complexos aparatos para lidar com o fluido de estudo e realizar o sensoriamento das propriedades desejadas. Por isso, tornou-se muito limitada e não era possı́vel realizar todos os experimentos desejáveis (VILLAGGIO; PIERO, 2007). Com o advento de computadores, em 1940, muitos experimentos puderam finalmente ser validados, por simulações feitas através de métodos numéricos. Desde então houve uma evolução significativa na pesquisa experimental, e diversos modelos computacionais foram criados para abordar o problema sob diferentes pontos de vista. Hoje, a Dinâmica de Fluidos possui aplicações diversas. É aplicada desde áreas como aerodinâmica e modelagem de fluidos multifásicos (HU; ADAMS, 2006) até sı́ntese de imagens (PAIVA et al., 2009b) e aplicações em entretenimento. 1.1 Definição do problema O problema tratado nesta monografia é o da representação, simulação e visualização 3D do escoamento de fluidos utilizando o método Hidrodinâmica de Partı́cula Suavizada (Smoothed Particle Hydrodynamics). Neste texto, faremos referência a esse método a partir da sigla SPH. 12 1.2 Objetivos O objetivo primário desta monografia é apresentar e estudar os fundamentos matemáticos e fı́sicos necessários para entender a Dinâmica de Fluidos, juntamente com a implementação do método numérico SPH para realizar a simulação computacional. Os objetivos secundários decorrentes do objetivo primário são: • adaptar o método para lidar com condições de contorno arbitrárias; • explicitar e implementar formas robustas de detecção de vizinhos; • desenvolver uma aplicação capaz de simular o movimento de um fluido em tempo real; • a aplicação desenvolvida deve ser capaz de gerar simulações com maior nı́vel de detalhe caso não haja restrição de tempo. 1.3 Organização dos capı́tulos No Capı́tulo 2 são apresentados fundamentos de Dinâmica de Fluidos e como esses fundamentos acarretaram nas formulações e equações hoje utilizadas. O método numérico SPH é introduzido no Capı́tulo 3. Sua forma de aproximar equações diferenciais parciais, as caracterı́sticas principais do método e como ele é usado para representar o movimento de fluidos são explicitados. Existem diferentes maneiras de modelar computacionalmente o método SPH para a simulação de fluidos. No Capı́tulo 4 são apresentadas distintas maneiras de resolver computacionalmente problemas como as condições de contorno e a busca de vizinhos, com suas vantagens e desvantagens. Os principais parâmetros também são discutidos. No Capı́tulo 5 são expostos alguns detalhes da aplicação desenvolvida, como suas classes e a estruturação do laço principal. Também são exibidos e analisados os testes realizados e resultados obtidos. A conclusão deste trabalho, bem como as principais dificuldades encontradas e um estabelecimento de possı́veis trabalhos futuros se dá no Capı́tulo 6. 13 2 Dinâmica de Fluidos Fluidos são substâncias que não apresentam resistência a deformações causadas por forças externas. Isso significa que toda força aplicada em uma região de fluido causa um cisalhamento, não importa o quão pequena seja essa força. Embora existam diferenças entre lı́quidos e gases, ambos são considerados fluidos e, portanto, podem ser descritos através das mesmas equações de movimento. Na maioria dos casos, adota-se a Hipótese do Contı́nuo para tratar esse tipo de substância. Dessa forma, pode-se considerar que fluidos são substâncias contı́nuas (FERZIGER; PERIC, 1999), ou seja: qualquer região de fluido, mesmo uma muito pequena, está repleta da mesma substância. Considerando as escalas tradicionais de estudos em Dinâmica de Fluidos é viável aceitar a Hipótese do Contı́nuo: como um fluido é composto por moléculas, uma interpretação para essa hipótese é que mesmo um pequeno volume de fluido contém uma grande quantidade de móléculas. De acordo com a Hipótese de Avogadro, 1cm3 de ar contém 2.687 × 1019 moléculas, em condições normais de temperatura e pressão (PETRILA; TRIF, 2004). Um escoamento tem como causa a atuação de forças externas, que podem surgir de diversas maneiras: diferenças de pressão, gravidade, tensão superficial, rotações, cisalhamentos, entre outros. Tais forças geralmente são classificadas entre forças de superfı́cie (por exemplo, um navio flutuando sobre o oceano) e forças de corpo (por exemplo, gravidade ou uma força centrı́peta, causada por uma rotação). Apesar de serem regidos pelas mesmas leis, os diferentes tipos de fluido podem se comportar macroscopicamente de maneiras diferentes, e essas caracterı́sticas são descritas através de algumas propriedades. As propriedades mais relevantes em condições normais são a densidade e a viscosidade, mas em condições variadas de temperatura e pressão existem outros parâmetros a serem considerados. 14 2.1 2.1.1 Propriedades relevantes Densidade A densidade ρ de um fluido é definida como a relação entre a massa m e o volume V : ρ= m V (2.1) As diferenças de densidade ocasionam interessantes fenômenos. Por exemplo, uma canoa boiando em um lago só consegue flutuar porque o seu volume submerso possui menos massa do que o volume deslocado de água. Esse fenômeno também está intimamente relacionado à pressão, e gera a chamada força de empuxo. Outro fenômeno interessante ocorre quando duas substâncias imiscı́veis de densidades distintas são colocadas no mesmo recipiente. A substância de maior densidade tende a se deslocar para o fundo da superfı́cie, formando um sistema de fluidos multifásicos. Nas regiões geladas do planeta, ocorre um sistema imprescindı́vel para preservar a vida nessas regiões. O gelo é menos denso que a água, logo bóia sobre ela. À medida que um lago ou oceano congela, a camada de gelo entre o ar e a água serve como isolamento térmico, fazendo com que a água abaixo dessa camada não congele. Dessa forma, a vida aquática é preservada, pois somente a superfı́cie se congela. 2.1.2 Viscosidade Em um escoamento de fluido, existem diferentes camadas se movendo a diferentes velocidades, e a viscosidade surge do atrito entre camadas adjacentes. Pela Lei de Newton da viscosidade, tem-se: ∂u , (2.2) ∂y onde u é a velocidade relativa entre as camadas, e y representa a distância perpendicular τ =µ entre elas. Essa equação define que o tensor de cisalhamento, τ , é proporcional ao gradiente da velocidade na direção perpendicular às camadas adjacentes do fluido. O coeficiente de viscosidade µ é especı́fico para o material estudado. A equação acima nos diz que a tensão em um fluido é diretamente proporcional à taxa de deformação nele aplicada. Os fluidos que se adequam a essa definição são chamados Fluidos Newtonianos. Nessa categoria encontram-se a água, o ar, óleos etc. Fluidos 15 que não possuem uma relação linear da tensão com a deformação são chamados NãoNewtonianos, e não podem ser definidos por um coeficiente de viscosidade constante. Ketchup, tinta e xampu são exemplos de Fluidos Não-Newtonianos. 2.1.3 Pressão A pressão p representa uma força f sendo exercida sobre uma superfı́cie de área a: p= f a (2.3) Em um fluido em repouso, quanto maior a profundidade, maior é a pressão. A pressão em uma profundidade y pode ser entendida como a força exercida pelas camadas de fluido de profundidade x sobre a camada de y, tal que y é mais profundo que x. Figura 1: Em um fluido em repouso, dados dois pontos x, y tais que a profundidade Px <Py , a pressão px < py . Ou seja, quanto maior a profundidade, maior é a pressão. Diferenças de pressão geram forças que se movem na direção do gradiente da pressão. As moléculas do fluido tendem a se movimentar para regiões de menor pressão. 2.2 Leis de conservação Existem diversas maneiras de se modelar o escoamento de um fluido para obter as equações do movimento. Primeiramente, faz-se necessário determinar as leis fı́sicas básicas às quais o modelo deverá se restringir. A Dinâmica de Fluidos é fundamentada em três leis fı́sicas básicas, às quais se assume que todo fluido deve obedecer. 16 2.2.1 Conservação da massa Esta lei expressa basicamente que a massa em um sistema fechado se mantém constante, independentemente dos processos ocorridos dentro deste. É também conhecida como Lei de Lomonosov-Lavoisier. 2.2.2 Conservação do momento Esta lei, mais conhecida como a Segunda Lei de Newton, expressa que uma força f aplicada em um corpo é igual à variação de seu momento linear p, ou seja: f = 2.2.3 dp d dv = (mv ) = m = ma dt dt dt (2.4) Conservação da energia Esta lei corresponde à Primeira Lei da Termodinâmica. Ela diz que, em um corpo, a taxa de variação da energia é igual ao acréscimo de calor neste somado ao trabalho realizado sobre esse corpo. 2.3 Modelos de escoamento A partir das leis descritas na seção anterior, é possı́vel derivar um conjunto de equações diferenciais parciais que descrevem o movimento do fluido, as conhecidas equações de Navier-Stokes. Existem várias formas de derivar tais equações, e cada uma é estritamente relacionada com o modelo de fluxo utilizado. Existem dois modelos de escoamento, que podem ser relacionados a duas diferentes abordagens, o que nos dá quatro modelos possı́veis. Os modelos e as abordagens são descritos a seguir. 2.3.1 Volume de controle finito Consideremos a Figura 2, onde o escoamento do fluido é representado pelas setas em azul. É possı́vel discretizar o escoamento em um conjunto de células, que, portanto, formam regiões fechadas envolvendo porções determinadas do fluido. Cada célula é denominada um volume de controle finito V. A superfı́cie que o envolve é a superfı́cie de controle finito. 17 Figura 2: Volume de Controle Finito. Dessa forma, o volume de controle finito consiste numa célula razoavelmente grande (com dimensões não desprezı́veis) e os princı́pios fı́sicos adotados são aplicados ao fluido contido nesse volume e no fluxo que atravessa a superfı́cie de controle. Utilizando esse modelo, é possı́vel obter diretamente a forma integral das equações de movimento. É possı́vel estabelecer esse modelo de duas diferentes maneiras: 1. Considerar que o volume está fixo no espaço (abordagem euleriana) 2. Considerar que o volume se move conforme o escoamento (abordagem lagrangiana) Essas abordagens são explicitadas na Seção 2.4. 2.3.2 Elemento de fluido infinitesimal Consideremos um escoamento análogo ao anterior mas, desta vez, as células possuem um volume infinitesimal. Esse volume dV pode ser considerado diferencial, com o mesmo significado do cálculo diferencial, mas ainda assim contendo grande quantidade de móleculas, podendo dessa forma ser considerado um meio contı́nuo. 18 Figura 3: Elemento de fluido infinitesimal. Esse é o modelo adotado nesse trabalho. As leis fı́sicas adotadas são aplicadas diretamente no elemento infinitesimal, resultando diretamente nas equações de movimento em sua forma de equações diferenciais parciais. Mais uma vez, é possı́vel utilizar tanto a abordagem euleriana quanto a lagrangiana. 2.4 2.4.1 Abordagens de Euler e Lagrange Abordagem euleriana Nesta abordagem, o modelo consiste em fixar pontos no domı́nio do problema e avaliar como ocorre a variação das grandezas do fluido (como densidade, velocidade, temperatura e pressão) à medida que este escoa através dos pontos. Figura 4: a) Cenário de simulação do fluido. b) Abordagem euleriana: modelo em grade fixa. O cálculo das propriedades do fluido se dá nos pontos em destaque. 19 A restrição de serem usados pontos fixos facilita o cálculo das derivadas parciais. Contudo, a variação das grandezas fı́sicas nos pontos não necessariamente significa que houve alguma alteração no fluido. Como este se move através dos pontos, um possı́vel cenário seria, por exemplo, uma região Ω mais quente do fluido escoando através de um conjunto de pontos X, e em seguida outra região ψ, mais fria, escoando pelo mesmo conjunto de pontos. Não se pode afirmar, através da análise das informações colhidas, que o fluido sofreu uma queda de temperatura. Afinal, pode ser que existam pelo menos duas regiões de diferentes temperaturas no experimento em questão. Uma possı́vel analogia dessa abordagem com um experimento é a coleta de informações climáticas de uma região. No caso da abordagem euleriana, à medida que correntes de ar escoam através de uma determinada região, terı́amos um conjunto de torres (portanto, pontos fixos) coletando as diversas grandezas fı́sicas do fluido em questão. As equações de movimento obtidas com essa abordagem são consideradas em sua forma conservativa. 2.4.2 Abordagem lagrangiana A abordagem lagrangiana modela o fluido como um sistema de partı́culas. Cada partı́cula tem suas próprias grandezas fı́sicas, que variam no tempo e no espaço. Nesse caso, são avaliadas as variações fı́sicas em pontos móveis, que acompanham o escoamento da substância. Figura 5: a) Cenário de simulação do fluido. b) Abordagem lagrangiana: modelo em partı́culas. O cálculo das propriedades do fluido se dá nos pontos em destaque. Esse modelo representa bem as caracterı́sticas de um fluido, não importando sua variação espacial. Entretanto, requer cuidados em sua formulação, pois deve-se considerar a variação de grandezas fı́sicas na posição e no tempo (derivada material - Apêndice A.1). Utilizando o exemplo das avaliações climáticas terı́amos, na abordagem lagrangiana, um conjunto de balões meteorológicos coletando informações das correntes de ar, viajando 20 conforme seu escoamento. As equações de movimento obtidas com essa abordagem são consideradas em sua forma não-conservativa. 2.5 As equações de Navier-Stokes As equações de Navier-Stokes são utilizadas para descrever o movimento dos fluidos e são expressas matematicamente através de um conjunto de equações diferenciais parciais. São derivadas a partir das Leis de Conservação explicitadas na Seção 2.2. 2.5.1 Equação da continuidade A equação da continuidade é obtida a partir da lei de conservação da massa. Recorrendo à definição de densidade na Equação 2.1 temos que, em um elemento de fluido de volume δV , a massa é: δm = ρδV , (2.5) onde ρ é a densidade do fluido. Devido à lei de conservação da massa, temos que esta não varia. Podemos recorrer ao conceito de derivada material, que é explicado no Apêndice A.1. Dessa forma, temos: D(δm) D(ρδV ) Dρ D(δV ) = = δV +ρ = 0, Dt Dt Dt Dt dividindo os termos por δV e rearranjando temos a seguinte equação: 1 D(δV ) Dρ = −ρ Dt δV Dt (2.6) (2.7) Utilizando o significado do divergente da velocidade (ver Apêndice A.2) e substituindo a Equação 2.7 do lado direito obtemos a equação da continuidade: Dρ = −ρ∇·v , Dt onde v é a velocidade do fluido. (2.8) 21 2.5.2 Equação do momento Esta equação é uma consequência da Segunda Lei de Newton (Eq. 2.4). Sendo assim, é possı́vel reescrevê-la utilizando a derivada material: f =m Dv Dt (2.9) Um pequeno reajuste dos termos nos leva ao seguinte: Dv f = Dt m (2.10) Para obter a equação do momento, basta explicitar as forças atuantes no elemento infinitesimal de fluido. Basicamente, as forças que atuam no elemento são decorrentes das tensões viscosas, da pressão e de forças externas. Para uma dedução mais detalhada, sugerimos ao leitor (PAIVA et al., 2009a). A equação do momento na forma lagrangiana tem a seguinte forma: 1 1 Dv = − ∇p + ∇ · T , (2.11) Dt ρ ρ onde T é um tensor simétrico 3x3, chamado de tensor de tensões, que representa as tensões viscosas que atuam no elemento. Ele contém 3 tensões normais e 6 tensões de cisalhamento. 2.6 Incompressibilidade Uma das diferenças mais importantes entre gases e lı́quidos está em sua compressibilidade β. Essa propriedade captura a variação do volume V do fluido quando submetido a uma pressão p: β=− 1 ∂V V ∂p (2.12) Em geral, gases são muito mais compressı́veis que lı́quidos. Em aplicações como em previsão do tempo, onde a pressão atmosférica exerce forte influência, ou em aplicações que envolvem altas velocidades, como em estudos de balı́stica, a compressibilidade do fluido em questão deve ser levada em conta. Um fluido incompressı́vel, portanto, pode ser entendido como um fluido cujo volume não sofre alteração devido à alteração da pressão. Como a massa também não varia, devido 22 ao princı́pio de conservação da massa, temos que a densidade se mantém constante: Dρ =0 Dt (2.13) Aliando isso ao fato de que a densidade é um valor escalar positivo, podemos simplificar a equação da continuidade (Eq. 2.8) e assim concluı́mos que o fato de um fluido ser incompressı́vel implica que ∇ · v = 0, (2.14) ou seja, que seu campo de velocidades possui divergência nula. Esta é a chamada condição de incompressibilidade. Um fluido incompressı́vel atende a essa restrição. Nenhum fluido real é totalmente incompressı́vel. Entretanto, muitas vezes é conveniente fazer uma simplificação para, por exemplo, simulação de lı́quidos. Tal simplificação costuma ser utilizada também para estudar fluidos viscosos sujeitos a baixas velocidades, como pode ser visto em (BATCHELOR, 2000). A equação do momento (Eq. 2.11) trata do escoamento de fluidos de forma geral. Se assumirmos que o escoamento é incompressı́vel, é possı́vel simplificar o tensor T , e o termo ∇·T pode ser substituı́do por µ∇2 v . Sendo assim, obtemos a equação do momento para fluidos incompressı́veis: Dv 1 µ = − ∇p + ∇2 v + f , Dt ρ ρ (2.15) onde f é o vetor que representa o total de forças externas atuantes na partı́cula. Nele podemos incluir a gravidade, forças de colisão do fluido com obstáculos e outras forças que a aplicação demandar. Alguns trabalhos incluem uma força de tensão superficial sobre a superfı́cie do fluido (KELAGER, 2006), o que produz interessantes resultados. 23 3 Smoothed Particle Hydrodynamics O método Hidrodinâmica de Partı́cula Suavizada, conhecido como SPH, foi desenvolvido na década de 70 por Lucy (LUCY, 1977) e Gingold e Monaghan (GINGOLD; MONAGHAN, 1977). Sua aplicação inicial era a simulação de fenômenos astrofı́sicos. Contudo, este pôde ser facilmente generalizado para se adaptar a outros problemas e logo foi percebido que, em muitas situações onde os métodos eulerianos não se adequam facilmente, a utilização de um método como esse é mais conveniente e de mais fácil implementação. Isso decorre do fato de que o SPH não utiliza malhas e, portanto, é uma solução interessante para problemas que lidam com deformações. Como exemplo de situações mais adequadas para esse tipo de método temos: simulação de ondas do mar, quebra de represas, explosões (LIU et al., 2003), objetos deformáveis, e fluidos em superfı́cie livre de maneira geral. Muitos problemas hoje estudados, principalmente em Fı́sica e Engenharias, são modelados matematicamente através equações diferenciais parciais (EDP’s). Isso dificulta a simulação computacional, pois a solução de tais equações muitas vezes não é trivial. O SPH atua aproximando EDP’s através de um conjunto de equações diferenciais ordinárias (EDO’s), e a partir daı́ é possı́vel solucionar as EDO’s através de métodos numéricos conhecidos. No SPH, o ambiente de simulação é discretizado completamente através de partı́culas, o que se adequa perfeitamente à abordagem lagrangiana, descrita na Seção 2.4.2, e à discretização do domı́nio através de elementos de fluido infinitesimais, descritos na Seção 2.3.2. Existem outros métodos sem malha, mas a vantagem do SPH em relação a tais métodos é justamente o fato de que, no SPH, os pontos de interpolação são partı́culas, que carregam consigo propriedades fı́sicas; nos demais métodos não existem partı́culas com função de pontos de aproximação e que ao mesmo tempo carreguem propriedades materiais (LIU; LIU, 2003). O fato de o sistema ser representado por esse conjunto de partı́culas faz com que a massa seja naturalmente conservada, o que é uma vantagem 24 em relação aos métodos eulerianos, pois estes muitas vezes apresentam problemas de dissipação da massa devido a erros numéricos. O método foi adaptado para a simulação de escoamento de fluidos por Muller (MüLLER; CHARYPAR; GROSS, 2003). Figura 6: No SPH, o domı́nio é discretizado através de partı́culas e as diversas propriedades são interpoladas. 3.1 Representação integral O SPH é um método de interpolação. Através de uma convolução, quantidades fı́sicas conhecidas somente nas partı́culas podem ser determinadas em qualquer ponto do domı́nio. Essa convolução se dá entre uma função arbitrária f, responsável por carregar a informação da propriedade que se deseja avaliar, e uma função suave W conhecida como núcleo. 3.1.1 Representação integral de uma função Tomando um domı́nio Ω ⊂ Rn e definindo a função f : Ω → Rm e o núcleo W : Rn → R, temos que a convolução de f por W é: Z f(x)= ˙ f(x’)W(x - x’, h)dx’ (3.1) Ω Essa integral simplesmente realiza uma aproximação do valor de f(x), utilizando para isso os valores de f dos elementos x’ ∈ Ω ponderados através da função W. O parâmetro 25 h é o comprimento suave do núcleo, muito importante para a robustez e estabilidade do método, que é melhor discutido na Seção 4.2.1. Conforme a convenção SPH (LIU; LIU, 2003), o operador de aproximação do núcleo é escrito entre os sı́mbolos < e >, e portanto é reescrito da seguinte forma: Z f(x’)W(x - x’, h)dx’ < f(x) >= (3.2) Ω O núcleo W e suas propriedades são expostos na Seção 3.4. 3.1.2 Representação integral da derivada de uma função Muitas vezes é necessário aproximar não uma função, mas sim sua derivada. Para uma função vetorial, é necessário adaptar a Equação 3.2 para calcular o divergente de f(x), ou seja: substituindo f(x) por ∇ · f(x), obtém-se: Z ∇ · f(x’)W(x - x’, h)dx’ < ∇ · f(x) >= (3.3) Ω Através de algumas manipulações (PAIVA et al., 2009a) e considerando que o núcleo possui suporte compacto pode-se simplificar a Equação 3.3 para a seguinte forma: Z < ∇ · f(x) >= − f(x’) · ∇W(x - x’, h)dx’ (3.4) Ω Caso a função f(x) considerada seja uma função escalar, é possı́vel realizar um procedimento análogo para obter o gradiente de f(x) Z < ∇f(x) >= − f(x’)∇W(x - x’, h)dx’ (3.5) Ω Um problema ocorre justamente quando uma partı́cula está próxima à fronteira do domı́nio: o suporte compacto do núcleo não está inteiramente no domı́nio, e a simplificação para a Equação 3.4 não poderia ser feita. Contudo, tal aproximação é mantida e soluções numéricas são apresentadas no Capı́tulo 4. 26 3.2 Representação por partı́culas Como foi dito, o método SPH discretiza inteiramente o domı́nio através de um número finito de partı́culas, que carregam consigo todas as propriedades fı́sicas avaliadas e ocupam um espaço finito. Através destas, como passamos para um domı́nio discreto, podemos substituir as integrais da seção anterior por somatórios sobre o domı́nio das partı́culas. O fato de o núcleo possuir suporte compacto pode facilitar o desenvolvimento computacional. O volume infinitesimal d x’ de cada partı́cula utilizado na seção anterior deve ser substituı́do pelo volume ∆V finito de cada partı́cula. Traduzindo a representação integral da Equação 3.2 para um somatório discreto, temos: f(xi ) = X f(xj )W(xi − xj , h)∆Vj , (3.6) j∈Vi onde xi é a posição e Vi é a vizinhança da partı́cula i, definida pelo suporte compacto kh. As partı́culas j ∈ Vi utilizadas no somatório são tais que |xj − xi | < kh. O parâmetro h é o comprimento suave do núcleo, e o parâmetro k é uma constante que é multiplicada por h para garantir que um número adequado de partı́culas estará na vizinhança Vi . A quantidade adequada de vizinhos é discutida na Seção 4.2.1. Aproximando a ilustração do inı́cio do capı́tulo, a figura a seguir mostra as partı́culas e o suporte compacto do núcleo, o que nos indica como é feita a abordagem discreta: Figura 7: O suporte compacto possui raio kh e são consideradas para a interpolação somente as partı́culas dentro desse raio. 27 Utilizando a definição de densidade (Eq. 2.1), podemos substituir ∆Vj por mj . ρj Essa substituição é conveniente pois massa e densidade são variáveis com as quais lidamos diretamente, e além disso a massa se mantém constante. Logo, a aproximação discreta por partı́culas é a seguinte: < f(xi ) >= X mj j∈Vi ρj f(xj )Wij , (3.7) onde Wij = W(xi − xj , h). Partindo do mesmo raciocı́nio, é possı́vel discretizar o divergente de uma função vetorial a partir da Equação 3.4: < ∇ · f(xi ) >= X mj j∈Vi ρj f(xj ) · ∇Wij , (3.8) onde o gradiente ∇Wij é tomado em relação à posição da partı́cula i. Isso permite que o sinal negativo das equações 3.4 e 3.5 seja removido. Dessa forma, definimos esse gradiente como: ∇Wij = xij ∂Wij , rij ∂rij (3.9) com xij = xi − xj e rij = |xij | Finalmente, tomamos a Equação 3.5 e obtemos a representação discreta do gradiente de uma função escalar: < ∇f(xi ) >= X mj j∈Vi ρj f(xj )∇Wij (3.10) Munidos desses operadores, podemos obter aproximações SPH para EDP’s. Vale ressaltar que existem diversas formas de realizar tais aproximações. Agora é possı́vel aproximar as equações que governam o movimento dos fluidos. 3.3 3.3.1 Aproximação SPH das equações de Navier-Stokes Aproximação da equação da continuidade A aproximação mais simples e direta de ser feita é o cálculo da densidade. Analisando a densidade a partir da Equação 3.7 é imediato que, sabendo o valor da densidade ρ da 28 partı́cula Pi e de seus vizinhos Pj , é possı́vel atualizar ρi da seguinte forma: ρi = X ρi Wij j∈Vi X mj = mj Wij ρj j∈V (3.11) i Nem sempre essa formulação é utilizada, pois existem outras mais estáveis. Existem alguns critérios para avaliar que tipo de aproximação é mais estável, um deles é a simetria. Em geral, uma aproximação que analisa de forma simétrica uma partı́cula Pi e sua vizinha Pj possui melhor comportamento, como é o caso apresentado a seguir. Uma opção que geralmente é melhor que a anterior é a de se aplicar a aproximação do divergente à equação da continuidade (Eq. 2.8), o que nos dá, após algumas pequenas manipulações algébricas: X Dρi mj = −ρi (vj − vi ) · ∇Wij Dt ρj j∈V (3.12) i A partir da Equação 3.12, basta integrarmos Dρi Dt em relação ao tempo para obtermos uma aproximação da densidade. Sua simetria pode ser notada pelo termo vj − vi , ou seja, essa aproximação avalia a velocidade de Pi e de todas Pj em sua vizinhança. 3.3.2 Aproximação da equação do momento Aproximar a equação do momento para fluidos incompressı́veis (Eq. 2.15) envolve a utilização dos operadores já descritos para o gradiente e a aproximação do laplaciano, que pode ser visto como o divergente do gradiente de uma função. Como é comum entre os operadores SPH, o laplaciano também pode ser obtido de diversas formas. Portanto, a partir da Equação 2.15 1 µ Dv = − ∇p + ∇2 v + f Dt ρ ρ (2.15) Aproximando cada um dos termos da equação acima através dos operadores SPH definidos, resultamos na equação do momento SPH para fluidos incompressı́veis: ai = X Dvi pi pj 2µ X mj xij · ∇Wij =− mj ( 2 + 2 )∇Wij + vij +f, 2 Dt ρ ρ ρ ρ r i j i j ij j∈V j∈V i (3.13) i onde vij = vi − vj . É importante destacar que, em simulações tradicionais de dinâmica de fluidos com o 29 método SPH, a pressão é calculada através de uma equação de estado. Ela é computada em função da densidade local das partı́culas no suporte compacto. Existem algumas formas propostas na literatura, e a proposta por Batchelor (BATCHELOR, 2000) é a seguinte: c2 ρ 0 ρ i 7 [( ) − 1], (3.14) 7 ρ0 onde c é a velocidade do som, um importante parâmetro que é descrito na Seção 4.2.2. pi = Geralmente, em outros métodos de simulação de fluidos, a pressão é obtida através da solução de uma equação de Poisson (STAM, 1999). A utilização de equações de estado para o cálculo da pressão dificulta a manutenção da incompressibilidade do fluido. Embora seja uma maneira rápida de aproximar a pressão localmente, perde-se em precisão devido a uma falta de controle global da densidade. Dessa forma, diz-se que o fluido incompressı́vel é aproximado por um fluido quase-incompressı́vel. Uma maneira de garantir a compressibilidade solucionando-se uma equação de Poisson no SPH pode ser vista em (PAIVA et al., 2009a). 3.4 Núcleos O núcleo W é escolhido de forma a possuir diversas propriedades desejáveis. Destacaremos aqui as mais importantes para a obtenção dessas aproximações: 1. W deve ser normalizado: Z W(x - x’, h)dx’ = 1 (3.15) Ω É desejável que ele não acrescente nem retire energia do sistema. 2. W deve ter suporte compacto: W(x - x’, h) = 0 quando |x − x0 | > kh (3.16) Essa condição define que o núcleo W deve possuir uma área finita de ponderação, onde k é uma constante que escala o raio de influência do núcleo, permitindo que mais ou menos partı́culas sejam incluı́das nessa área. No trabalho original de Gingold e Monaghan (GINGOLD; MONAGHAN, 1977) é ressaltado que o núcleo escolhido deve respeitar a condição de normalização (Eq. 3.15) e que deve- 30 se esperar que, à medida que o número de partı́culas aumenta e, consequentemente, o comprimento suave h diminui, a função aproximada se aproxime da original. Ou seja: Z lim h→0 f(x’)W(x - x’, h)dx’ = f(x) (3.17) Ω Essa é a chamada aproximação da identidade. O núcleo adotado deve contribuir para que a aproximação acima seja verdadeira. Existem várias outras propriedades discutidas na literatura (PAIVA et al., 2009a), mas nem sempre elas são fundamentais. Existem trabalhos que propositalmente não respeitam todas as propriedades (LIU; CHEN, 1995). O núcleo utilizado no presente trabalho é o proposto por Liu e Liu (LIU; LIU; LAM, 2003): ( W h (R) = αd 2 3 − 98 R2 + 19 3 R 24 − 5 R4 32 ,0 ≤ R < 2 ,R ≥ 2 0 (3.18) onde |x| h e αd depende da dimensão d do problema, sendo definido por: R= αd = 1 h ,d = 1 15 7πh2 315 208πh3 ,d = 2 ,d = 3 A função W para d = 3 se comporta conforme ilustra a Figura 8 a seguir: (3.19) (3.20) 31 Figura 8: Comportamento do núcleo W para R ∈ [−2, 2] 32 4 Modelo Computacional Tendo obtido a aproximação por partı́culas no capı́tulo 3, podemos implementá-la computacionalmente. As aproximações discretas devem ser organizadas de uma maneira sequencial e coerente. O funcionamento geral do programa é ilustrado na Seção 4.1. O método SPH possui muitas variáveis importantes e sua devida inicialização é um aspecto delicado para o bom funcionamento e estabilidade da simulação. A Seção 4.2 trata desse assunto. Como a cada passo de tempo cada partı́cula precisa interagir com seus vizinhos, um grande gargalo da simulação consiste justamente nas estruturas de dados e algoritmos responsáveis pela busca de partı́culas vizinhas, conforme é abordado na Seção 4.3. As EDO’s obtidas pelas aproximações SPH estão todas em função do tempo. Existem vários métodos de integração numérica que podemos utilizar, e que são explicitados na Seção 4.4. Um dos aspectos cruciais para a estabilidade da simulação é justamente como lidar com as áreas limites do ambiente de simulação, onde o suporte compacto das partı́culas não está inteiramente contido no domı́nio. Algumas maneiras de contornar esse problema são tratadas na Seção 4.5. 4.1 Visão Geral O modelo computacional pode ser esquematizado como a seguir: 33 O algoritmo desenvolvido é sequencial, e pode ocorrer indefinidamente e a taxas interativas com um número razoável de partı́culas. Como pode ser notado, o cálculo da pressão ocorre antes do cálculo das equações de Navier-Stokes, pois estas necessitam do valor da pressão para realizar suas computações. Isso não trouxe à simulação problemas de convergência; o cálculo da pressão, de maneira geral, se comportou muito bem, exceto quando submetido a condições como as descritas na Seção 5.2.3. 4.2 Inicialização O primeiro passo da simulação consiste em configurar adequadamente os parâmetros de entrada. A discussão sobre como obter alguns parâmetros e valores especı́ficos está fora do escopo deste trabalho, e um estudo detalhado sobre parâmetros e testes pode ser encontrada em (LIU; LIU, 2003). Muitos atributos das partı́culas são inicializados com valores iniciais, como a massa, densidade, posição e aceleração. 4.2.1 Comprimento suave O parâmetro h, conhecido como o comprimento suave, está diretamente relacionado ao núcleo. Juntamente com a constante k, define o raio kh do suporte compacto utilizado. Quanto maior esse raio, maior o número de partı́culas dentro do suporte. Para que a simulação seja efetuada eficientemente, é necessário que haja um número suficiente de partı́culas dentro desse suporte; logo, h não pode ser muito pequeno. Contudo, se h for muito grande, propriedades locais serão suavizadas pelo núcleo, 34 sendo transferidas para partı́culas mais distantes. Liu e Liu (LIU; LIU, 2003) sugerem que o número de partı́culas dentro do suporte compacto deve ser aproximadamente 5, 21 e 57 para uma, duas ou três dimensões, respectivamente. Para isso, adota-se como h = 1.3∆x, onde ∆x é a distância inicial entre as partı́culas em uma distribuição uniforme, e k = 2. No presente trabalho, o raio kh utilizado é constante e igual para todas as partı́culas. Pode ser visto em (LIU; LIU, 2003) que existem estratégias que fazem com que o comprimento suave h seja atualizado dinamicamente, de forma que todas as partı́culas sempre possuam uma quantidade adequada de vizinhos. Também é possı́vel trabalhar de forma que diferentes partı́culas possuam diferentes valores para kh, estratégia particularmente útil para a simulação de fluidos multifásicos. 4.2.2 Velocidade do som A velocidade do som c é uma constante que indica a velocidade com a qual uma ligeira perturbação se propaga no meio em questão. Devemos configurá-la em função da maior velocidade do fluido. Mais precisamente, a velocidade do som é configurada como c = 10v , onde v é a a maior velocidade esperada do escoamento (MONAGHAN, 1994). Considerando a conservação da energia mecânica no sistema, temos que a energia potencial se transforma em cinética à medida que a simulação progride. Supondo a única força externa como a gravidade g temos: mv 2 , (4.1) 2 onde H é a altura da coluna de água. Dessa forma temos que a velocidade esperada é mg H = v= p 2g H, (4.2) e assim a velocidade do som é p c = 10 2g H, (4.3) para um escoamento sob a atuação da força da gravidade. 4.3 Busca de partı́culas vizinhas Em simulações SPH, todas as aproximações realizadas dependem da interação de cada partı́cula com seus vizinhos. Contudo, devido ao fato de estas serem independentes e não 35 estarem fixas no espaço, nem sempre uma partı́cula Pi terá os mesmos vizinhos. Fluidos em movimento estão sujeitos a grandes deformações, e é por isso que frequentemente a estrutura de partı́culas vizinhas deve ser atualizada. A forma de atacar esse problema depende de alguns fatores, como: • Passo de tempo e viscosidade Se o passo de tempo ∆t for pequeno ou a viscosidade µ da simulação for elevada, não ocorrerão muitas mudanças na lista de vizinhos, o que torna possı́vel que o algoritmo de busca de vizinhos não seja executado em todas as iterações; • Esparsidade Se o fluido estiver contido em um espaço com grandes áreas vazias, a estratégia ideal não é a mesma que a utilizada em um ambiente repleto de partı́culas. Pode ser mais interessante usar uma tabela hash e uma estrutura de dados adaptativa ou uma grade fixa sobreposta ao domı́nio da simulação. 4.3.1 Busca em força bruta A forma de busca mais trivial de se realizar é a busca em força bruta. Nesse tipo de busca, simplesmente avaliamos, para cada duas partı́culas P1 , P2 distintas, se a distância entre P1 e P2 é inferior a kh. Em caso positivo, estas são vizinhas. Esse método é bastante intuitivo, mas como pode-se perceber, é bastante custoso. À medida que o número n de partı́culas cresce, o tempo de computação apresenta um crescimento O(n2 ). Logo, é evidente que essa estratégia é completamente inviável para um grande número de partı́culas, principalmente se desejarmos resultados em tempo real. Algoritmo: Busca em força bruta para cada partı́cula Pi faça esvaziaListaDeVizinhos(Pi ); para cada partı́cula Pj 6= Pi faça se distância(Pi , Pj ) < kh então adicionaVizinho(Pi , Pj ); fim fim fim Algoritmo 1: Busca em força bruta 36 4.3.2 Busca em grade Para domı́nios densos e compactos, com poucas áreas vazias, existe um método capaz de calcular a lista de vizinhos de uma partı́cula Pi em tempo constante, ou seja, com uma complexidade O(1). Esse método não depende do número de partı́culas. Seu funcionamento é baseado no fato de que os vizinhos de Pi situam-se a uma distância menor ou igual a kh. Dessa forma, é criada uma grade regular sobreposta ao domı́nio. Cada célula dessa grade é um quadrado de lado kh. Com a grade configurada de tal forma, percebemos que não é necessário procurar os vizinhos de p ∈ Cp em todas as células, somente na própria célula Cp e nas 26 células adjacentes (no caso de três dimensões). A seguir, são apresentados a ilustração da disposição da grade e o pseudocódigo do algoritmo de busca em grade: Figura 9: Busca em grade. Cada célula possui lados kh. Só é necessário buscar vizinhos nas células adjacentes à célula de Pi 37 Algoritmo: Busca em grade para cada célula Ci faça para cada partı́cula Pi ∈ Ci faça esvaziaListaDeVizinhos(Pi ); para cada partı́cula Pj ∈ Ci , Pj 6= Pi faça se distância(Pi , Pj ) < kh então adicionaVizinho(Pi , Pj ); fim fim para cada célula Ca adjacente a Ci faça para cada partı́cula Pa ∈ Ca faça se distância(Pi , Pa ) < kh então adicionaVizinho(Pi , Pa ); fim fim fim fim fim Algoritmo 2: Busca em grade 4.4 Integração temporal Para resolver as EDO’s obtidas pela aproximação SPH, é necessário utilizar um método numérico capaz de integrá-las em relação ao tempo. Para uma simulação estável, existem limites superiores os quais ∆t não deve extrapolar. O passo de tempo ∆t utilizado pode ser constante ou variar conforme alguma condição adaptativa, respeitando a condição de estabilidade de Courant-Friedrichs-Lewy (CFL). Essa condição requer que o domı́nio fı́sico esteja contido no domı́nio da simulação, ou seja, a velocidade da propagação numérica do método deve exceder a maior velocidade esperada do escoamento (LIU; LIU, 2003). No presente trabalho, ∆t foi mantido constante durante toda simulação. Atendendo à condição CFL, ∆t deve ser inicializado de modo que: kh kh > c ⇒ ∆t < . ∆t c (4.4) 38 4.4.1 Euler O método de Euler é um método explı́cito de integração numérica de EDO’s. Dado um valor inicial e o passo de tempo que queremos tomar, ele é capaz de aproximar a primeira derivada de uma variável, através do que chamamos de diferença para frente: Para uma variável x, temos: dx x(t + ∆t) − x(t)) = dt ∆t (4.5) No método SPH, a aceleração é calculada diretamente através da equação do momento para fluidos incompressı́veis (Eq. 3.13), e a partir dela podemos calcular a velocidade e, consequentemente, a posição: a= dv v (t + ∆t) − v (t)) = ⇒ v (t + ∆t) = v (t) + ∆t · a dt ∆t (4.6) Para o cálculo da nova posição x (t + ∆t), basta tomarmos a velocidade que v (t + ∆t) acabamos de calcular: v= dx x (t + ∆t) − x (t)) = ⇒ x (t + ∆t) = x (t) + ∆t · v (t + ∆t) dt ∆t (4.7) O método de Euler é considerado um método de primeira ordem, o que significa que ele pode se tornar instável onde houver grandes descontinuidades, e que, portanto, é recomendável a utilização de um ∆t pequeno para suprir essa instabilidade. 4.4.2 Leap-Frog O integrador Leap-Frog é classificado como de segunda ordem, portanto possui uma precisão maior que o método de Euler. Ele realiza a aproximação da derivada através da denominada diferença central. Para uma variável x, temos: x(t + dx = dt ∆t ) 2 − x(t − ∆t ∆t )) 2 (4.8) O método atua, dessa forma, em intervalos de tempo intermediários, e a velocidade e a posição são calculadas para instantes intercalados: v (t + ∆t ∆t ) = v (t − ) + ∆t · a 2 2 (4.9) 39 x (t + ∆t) = x (t) + ∆t · v (t + 4.5 ∆t ) 2 (4.10) Condições de contorno Em simulações de dinâmica de fluidos, geralmente a substância em estudo está contida em um recipiente, como a água de um aquário ou o gás dentro de um balão, ou o escoamento se dá de forma a interagir com estruturas externas ao fluido, como as asas de um avião ou uma bóia sobre uma piscina. Dessa forma, é preciso definir como modelar numérica e computacionalmente tais interações. 4.5.1 Partı́culas fantasma Esta proposta visa gerar partı́culas além da fronteira, conhecidas como partı́culas fantasma, que são responsáveis por gerar uma força de repulsão capaz de manter todas as partı́culas da simulação dentro do domı́nio estabelecido. As partı́culas fantasma podem ser distribuı́das uniformemente ao longo da fronteira (Fig. 10) ou serem dispostas de forma a espelhar as partı́culas do domı́nio em relação à fronteira (Fig. 11). Uma partı́cula Pi , quando se aproxima de uma partı́cula fantasma Pg , sofre a aplicação de uma força similar ao potencial de Lennard-Jones, conforme pode ser visto em (MONAGHAN, 1994). Figura 10: As partı́culas fantasma podem ser distribuı́das uniformemente ao longo da fronteira. Suas propriedades devem ser calculadas de forma a impedir que as partı́culas reais ultrapassem a fronteira. 40 Figura 11: As partı́culas fantasma podem ser uma reflexão das partı́culas reais em relação à fronteira. Essa técnica pode ser difı́cil de manter para geometrias mais complexas. 4.5.2 Reflexão geométrica A reflexão geométrica, proposta por (PAIVA, 2007), é similar a algumas técnicas abordadas em simulação de corpos rı́gidos. Ela pode ser facilmente aplicada a condições de contorno complexas, com o custo de se necessitar de um adequado teste de colisão. 41 Figura 12: A partı́cula do fluido, ao colidir com a fronteira, tem sua velocidade refletida em relação à normal da superfı́cie. A reflexão se dá da seguinte forma: um algoritmo de detecção de colisão (um amplo material sobre esse assunto pode ser encontrado em (ERICSON, 2005)) deve detectar se uma partı́cula Pi ultrapassou a fronteira, obtendo a normal n a essa superfı́cie e o ponto cp onde ocorreu a colisão. A partı́cula Pi é posicionada de volta nesse ponto, e sua velocidade vi é refletida em relação à normal. Portanto, a velocidade vi e a posição xi são atualizadas da seguinte forma: 4.6 vi = vi − 2(vi · n)n (4.11) xi = cp (4.12) Discussão Nesse capı́tulo foram exibidos diversos métodos e atributos relevantes na elaboração da aplicação, e o acoplamento entre eles requer atenção. Para a configuração do comprimento suave do núcleo, visando corresponder ao número adequado de vizinhos explicitado na Seção 4.2.1, devem ser tomados alguns cuidados. Se h é configurado como 1.3∆x e k = 2, muitas partı́culas terão uma quantidade de vizinhos bastante inferior ao ideal, em especial aquelas próximas à fronteira. Uma possı́vel solução seria ajustar k ou h para que mais partı́culas pertençam à vizinhança de uma dada partı́cula Pi . Isso ajudaria a resolver a questão da escassez de vizinhos na fronteira, mas outro problema persistiria: o suporte compacto do núcleo na posição de Pi não estaria inteiramente contido no domı́nio, logo 42 as interações não se dariam de forma simétrica. Uma abordagem muito interessante para resolver as deficiências do suporte compacto do núcleo na fronteira é a utilização de partı́culas fantasma como condição de contorno. Em especial a disposição simétrica das partı́culas em relação à fronteira é uma forma de evitar grandes descontinuidades e ao mesmo tempo manter um número razoável e bem distribuı́do de vizinhos no suporte compacto do núcleo perto da fronteira. Nos experimentos realizados, contudo, notou-se que é difı́cil estabelecer uma configuração com a garantia de que as partı́culas reais respeitem os limites da fronteira, que mantenha o sistema estável, e que não acrescente a ele energia. O caso das partı́culas fantasma fixas na fronteira pode ser utilizado concomitantemente com a disposição simétrica, mas a quantidade de partı́culas fixas que devem ser criadas, assim como suas propriedades fı́sicas, é um assunto delicado e não se sabe ao certo na literatura qual a melhor solução. De maneira geral, a condição de contorno através de partı́culas fantasma, apesar de interessante, se mostra mais custosa e de difı́cil manipulação para geometrias complexas, se comparada com a reflexão geométrica. Essa é uma forma rápida e eficiente de manter as partı́culas dentro do domı́nio, o que é ideal para aplicações interativas, mas com a desvantagem de inserir descontinuidades, podendo aumentar a energia do sistema, além de não tratar as deficiências do suporte compacto do núcleo na fronteira. A velocidade do som é um dos fatores mais importantes na velocidade da simulação. Como o passo de tempo da integração temporal está sujeito a obedecer a restrição ∆t < kh , c quando menor o valor de c, mais rápida a simulação será. Ou seja, quanto menor for a maior velocidade esperada, mais rapidamente o sistema converge para um estado de repouso. 43 5 Resultados A aplicação foi desenvolvida em C++ e as partı́culas são representadas como esferas através da biblioteca OpenGL. Os testes aqui descritos foram realizados em uma máquina Intel Core 2 Quad Q9550 2.83GHz com 4GB de memória RAM, utilizando o sistema operacional Windows Vista Business 64 bits. 5.1 A aplicação A aplicação desenvolvida consiste basicamente em três classes: 5.1.1 gcgBasicSPH A classe gcgBasicSPH é responsável pela manutenção do experimento como um todo. Ela gerencia as partı́culas, a busca de vizinhos e contém todos os parâmetros globais do sistema. Essa classe possui a implementação dos integradores de Euler (Seção 4.4.1) e Leap-Frog (Seção 4.4.2). O algoritmo de busca utilizado é o de busca em grade (Seção 4.3.2), e as condições de contorno aplicadas são as geométricas (Seção 4.5.2). O principal método dessa classe é o método iterate(), que realiza um passo de tempo da simulação e é organizado da seguinte forma: 44 Algoritmo: iterate(): O laço principal detectaVizinhos(); //ajusta a grade e calcula todos os vizinhos; para cada partı́cula Pi faça calculaPressão(Pi ); fim para cada partı́cula Pi faça calculaDerivadaDensidade(Pi ); calculaAceleração(Pi ); fim para cada partı́cula Pi faça integracaoNumerica(Pi ); aplicaCondicoesContorno(Pi ); //aplica condições e corrige a posição; fim Algoritmo 3: iterate(): O laço principal 5.1.2 gcgParticleSPH A classe gcgParticleSPH corresponde a uma partı́cula do sistema. Portanto, carrega consigo todos os atributos individuais: • Posição • Massa • Densidade • Derivada da densidade • Velocidade • Aceleração • Pressão 5.1.3 gcgOptimizedGridSPH A classe gcgOptimizedGridSPH implementa a busca em grade (Seção 4.3.2). Como lista de vizinhos, é utilizada uma matriz pré-alocada, o que faz com que o consumo de memória seja maior do que o tradicional, mas a velocidade do programa é aumentada 45 pois não é necessário trabalhar com alocação dinâmica. Um parâmetro interessante que ela possui é o nloops, que define por quantas iterações a busca de vizinhos pode aguardar antes que seja necessário um novo cálculo da lista. Na prática, observamos que para um valor de nloops > 3 já se pode observar um comprometimento nos resultados. É importante ressaltar que, além do poder de processamento, a memória da máquina faz grande diferença nesse momento: um consumo excessivo de memória em um computador com pouca disponibilidade implica em um intenso uso de memória virtual. Como o acesso à memória secundária é mais lento, a velocidade do programa pode ficar comprometida. 5.2 Experimentos Para os experimentos a seguir, foram utilizados o algoritmo de busca em grade (Alg. 2), o integrador de Euler (Seção 4.4.1) e as condições de contorno geométricas, conforme a Seção 4.5.2. A coloração termal indica a densidade: quanto mais próximo de vermelho for a cor de uma partı́cula, maior sua densidade. Quanto mais próximo de azul, menor. 5.2.1 Experimento 1: descarga de água Um experimento tı́pico em dinâmica dos fluidos é o da descarga de água. Um fluido é confinado na metade de uma caixa retangular, que contém uma parede vertical separando esse fluido da parte vazia. Subitamente, uma porção inferior dessa parede é retirada e o escoamento decorrente é analisado sob a força da gravidade. Foram realizados dois testes: um em tempo real e um com grande quantidade de partı́culas. No teste a seguir descrito, foi retirado 1 3 da parede vertical. O volume envolvente possui 25 cm de comprimento, 19 cm de altura e 5 cm de profundidade. Acima de cada quadro do programa, está relatado o tempo gasto pelo computador até o momento em questão (em vermelho) e o tempo passado no universo da simulação (em preto). Vale destacar que, no teste aqui descrito, as partı́culas foram posicionadas no ambiente com aceleração e velocidade nulas, e a partir do momento em que a gravidade começou a agir, as figuras e o tempo começaram a ser gravados. Sendo assim, as partı́culas colidem com o limite inferior da caixa e, à medida que as partı́culas que estão em uma altura maior colidem com aquelas que se situam em uma altura menor, verifica-se uma variação da densidade que se propaga do solo até o topo da coluna de água. Isso justifica o segundo quadro das Figuras 13 e 14, que mostra altos valores para a densidade em regiões próximas 46 ao topo da coluna de água. 5.2.1.1 Tempo real Este experimento foi realizado com o intuito de permitir visualização em tempo real, e foram utilizadas 1000 partı́culas. O raio de alcance do núcleo foi configurado como k · h= 2 · 1, 420447. O passo de tempo utilizado foi ∆t = 0, 007361. A figura a seguir mostra a aplicação em execução: Figura 13: Aplicação: 1000 partı́culas. Essa simulação gerou em média 48,07 quadros por segundo. 5.2.1.2 Alto nı́vel de detalhe Este experimento foi realizado com o intuito de permitir maior nı́vel de detalhe, e foram utilizadas 40000 partı́culas. O raio de alcance do núcleo foi configurado como k · h= 2 · 0, 415341. O passo de tempo utilizado foi ∆t = 0, 002152. A figura a seguir mostra a aplicação em execução: 47 Figura 14: Aplicação: 40000 partı́culas. Essa simulação gerou em média 1,06 quadros por segundo. 5.2.2 Experimento 2: forças de controle Foi realizado um experimento com o objetivo de controlar o movimento das partı́culas, de forma que elas possam seguir uma trajetória pré-determinada da forma mais coerente possı́vel. Esse tipo de aplicação pode ser útil para visualização de curvas, em especial pode contribuir significativamente para a visualização de campos tensoriais. Também é um objetivo importante na indústria de animação, que busca sempre um balanço entre o realismo fı́sico e o controle do movimento dos elementos da cena. Neste teste não foi utilizada a coloração termal. Dada uma curva, calcula-se a tangente de seus pontos e a distância das partı́culas do fluido a essa curva. A gravidade foi removida, e em vez dela foram adicionadas duas forças: 1. f1 , que é perpendicular em relação à curva, agindo para aproximar a partı́cula ao eixo central da trajetória; 2. f2 , que é tangencial à curva, agindo para manter o fluxo de partı́culas em movimento. 48 Figura 15: Aplicação: forças de controle mantendo as partı́culas sobre uma parábola. As forças f1 e f2 são escaladas por constantes k1 e k2 , controladas interativamente pelo usuário. Essa estratégia ainda requer ajustes, pois como as forças são definidas interativamente, nem sempre elas são capazes manter as partı́culas à trajetória pré-definida. Contudo, a idéia de utilizar forças externas para controlar o movimento das partı́culas é uma idéia a ser explorada, que já produziu bons resultados para a abordagem euleriana (FATTAL; LISCHINSKI, 2004). 5.2.3 Experimento 3: incompressibilidade Foi realizado um experimento com o objetivo de testar a compressibilidade do fluido. Para que seja analisada a influência das condições de contorno sobre as compressibilidade do fluido, foi realizado um experimento de descarga de água, mas desta vez com a caixa envolvente em constante rotação. Isso faz com que as partı́culas entrem constantemente em choque com as paredes do sólido envolvente, acrescentando continuamente descontinuidades no sistema. Foram utilizadas 4000 partı́culas, e as dimensões da caixa 25 cm x 1 cm x 5 cm. O raio de alcance do núcleo foi configurado como k · h= 2 · 1, 420447. O passo de tempo utilizado foi ∆t = 0, 007361. Figura 16: Inı́cio da simulação: caixa envolvente em rotação constante, sentido horário. 49 Figura 17: Fim da simulação: 45 segundos depois (tempo no domı́nio da simulação), é evidente a compressão do fluido Após muitos choques com as paredes, percebe-se que o volume do fluido diminui. No Experimento 1, quando o fluido entrou em repouso seu volume se manteve invariável. Logo, percebe-se que as descontinuidades introduzidas pelas condições de contorno geométricas aliadas ao uso de uma equação de estado para a pressão atrapalham a incompressibilidade do fluido. 5.2.4 Experimento 4: condições de contorno As condições de contorno geométricas podem ser aplicadas facilmente a qualquer tipo de superfı́cie. O fluido foi simulado dentro de uma esfera. Foram utilizadas 4000 partı́culas. raio de alcance do núcleo foi configurado como k · h= 2 · 0, 445252 e o passo de tempo utilizado foi ∆t = 0, 003801. Figura 18: Condição de contorno geométrica para geometria esférica Aplicando as mesmas condições para uma esfera em rotação constante, análoga ao experimento 3, temos: 50 Figura 19: Recipiente em rotação constante (sentido horário) 5.3 Desempenho Para avaliar o tempo que o método demora para realizar todos os cálculos necessários, foram realizadas medições utilizando as mesmas condições iniciais do experimento 1, descrito na seção anterior. Foram utilizadas 8 quantidades diferentes de partı́culas, de 500 a 4000 partı́culas, e o tempo gasto por cada uma dessas configurações para calcular 10000 iterações foi armazenado. Foram realizadas 5 execuções de cada configuração, e o gráfico a seguir representa as médis obtidas: Figura 20: Gráfico: Número de partı́culas × Tempo 51 O gráfico acima corresponde à complexidade do método descrito pelo Algoritmo 3. Como pode ser visto, o método SPH possui uma complexidade linear em relação ao número de partı́culas utilizadas na simulação. A busca de vizinhos em grade possui complexidade O(1), e a maioria das funções do método realiza cálculos percorrendo a lista de vizinhos obtida. Como procura-se manter um valor constante para a quantidade de vizinhos por partı́cula (Seção 4.2.1), temos que, à medida que o número de partı́culas aumenta, o número de vizinhos de cada partı́cula, que é um valor limitado, exerce pouca influência sobre a complexidade. O desempenho do método representa uma de suas grandes vantagens: a possibilidade de realizar simulações em tempo real, devido à sua baixa complexidade. 52 6 Conclusão Nesse trabalho foram apresentados fundamentos de Dinâmica dos Fluidos, ilustrando desde os princı́pios fı́sicos básicos de conservação e como esses princı́pios acarretaram na elaboração das equações de Navier-Stokes. Foi apresentado o método Smoothed Particle Hydrodynamics, um método numérico que aproxima equações diferenciais parciais a partir de um conjunto de equações diferenciais ordinárias. Esse método foi aplicado para aproximar as equações de Navier-Stokes, e, portanto, foi apresentada uma forma aproximada de descrever o escoamento de um fluido. As aproximações obtidas foram então discretizadas e adaptadas a um modelo computacional. Foram discutidas algumas das principais estratégias computacionais da literatura e uma aplicação foi desenvolvida a partir do modelo computacional. Observou-se que o método SPH simula com bons resultados fluidos em superfı́cie livre. Contudo, a incompressibilidade não é naturalmente garantida, pois o cálculo da pressão não permite tamanho controle. As condições de contorno são um ponto delicado que introduz descontinuidades no sistema. Para que este se mantenha estável perante tais condições, o passo de tempo ∆t deve assumir valores pequenos. Um dos aspectos mais sutis no desenvolvimento desse trabalho foi o ajuste de parâmetros: existem muitos parâmetros envolvidos na simulação, e muitas vezes o sistema todo pode se tornar instável devido a um parâmetro inadequado. A velocidade do som (Seção 4.2.2) e o comprimento suave (Seção 4.2.1) foram os parâmetros que mais necessitaram de cuidado. O primeiro exerce forte influência sobre o passo de tempo utilizado, então a utilização de colunas de água muito altas acabava por aumentar demasiadamente a velocidade do som e, como consequência, o passo de tempo se tornava proibitivamente pequeno. O segundo define quantas partı́culas são analisadas a cada passo de tempo e, consequentemente, influencia diretamente o tempo consumido pela simulação. Como trabalhos futuros, um caminho natural é a paralelização do SPH utilizando GPGPU’s. Além disso, é interessante investigar formas de garantir a incompressibilidade, 53 como o método da projeção (PAIVA et al., 2009a). Forças interessantes que podem ser incluı́das no sistema atual são forças de tensão superficial, que mantêm a superfı́cie do fluido com um aspecto mais contı́nuo, e forças de flutuação, utilizadas para simulação de gases (KELAGER, 2006). 54 APÊNDICE A -- Alguns conceitos A.1 Derivada material Seja x a posição do elemento de fluido, t um instante de tempo, e q uma quantidade fı́sica qualquer (pressão, temperatura etc). A função q(x,t) retorna o valor de q em um elemento de fluido na posição x no instante t. A Derivada Material é uma forma de descrever a variação de q ao longo do tempo e ao longo do espaço em um elemento de fluido. ∂q Dq = + v.∇q Dt ∂t (A.1) Essa derivada é muito utilizada em formulações lagrangianas, por se adequar perfeitamente às partı́culas, que variam no tempo e no espaço. O primeiro termo, ∂q , ∂t é responsável por avaliar o quão rápido a função q está variando em um ponto fixo do espaço. Já o segundo termo, v.∇q, avalia o comportamento dessa função q em relação à posição, por considerar a variação de posição do elemento q no espaço. dx dt = v e o gradiente da função 55 Figura 21: Derivada material: descreve como uma grandeza varia no tempo e no espaço. A.2 Divergente da velocidade O divergente da velocidade ∇·v pode ser formulado a partir de um volume de controle finito V (Seção 2.3.1). Ele está relacionado à variação de V. É possı́vel mostrar que DV = Dt Z ∇ · v dV (A.2) V É possı́vel diminuirmos o volume V a tal ponto que o volume de controle se torne um elemento de fluido infinitesimal (Seção 2.3.2). Dessa forma, dado seu novo volume δV : DδV = Dt Z ∇ · v dV (A.3) δV No limite δV → 0, temos que: DδV = (∇ · v )δV, Dt (A.4) 56 ou seja, rearranjando os termos: ∇·v = 1 DδV , δV Dt (A.5) Isso nos mostra que o divergente da velocidade representa a variação do volume do elemento de fluido no tempo e no espaço por unidade de volume. 57 Referências BATCHELOR, G. K. An Introduction to Fluid Dynamics. [S.l.: s.n.], 2000. ERICSON, C. Real-Time Collision Detection (The Morgan Kaufmann Series in Interactive 3-D Technology). [S.l.]: Morgan Kaufmann, 2005. Hardcover. ISBN 1558607323. FATTAL, R.; LISCHINSKI, D. Target-driven smoke animation. In: SIGGRAPH ’04: ACM SIGGRAPH 2004 Papers. New York, NY, USA: ACM, 2004. p. 441–448. FERZIGER, J. H.; PERIC, M. Computational Methods for Fluid Dynamics. 2nd. ed. [S.l.]: Springer, 1999. GINGOLD, R. A.; MONAGHAN, J. J. Smoothed particle hydrodynamics - theory and application to non-spherical stars. Mon. Not. Roy. Astron. Soc., v. 181, p. 375–389, November 1977. HU, X. Y.; ADAMS, N. A. A multi-phase sph method for macroscopic and mesoscopic flows. J. Comput. Phys., Academic Press Professional, Inc., San Diego, CA, USA, v. 213, n. 2, p. 844–861, 2006. KELAGER, M. Lagrangian fluid dynamics using smoothed particle hydrodynamics. 2006. LIU, G. R.; LIU, M. B. Smoothed particle hydrodynamics: a meshfree particle method. [S.l.]: World Scientific Publishing, 2003. ISBN 9812384561. LIU, M. B.; LIU, G. R.; LAM, K. Y. Constructing smoothing functions in smoothed particle hydrodynamics with applications. J. Comput. Appl. Math., Elsevier Science Publishers B. V., Amsterdam, The Netherlands, The Netherlands, v. 155, n. 2, p. 263–284, 2003. LIU, M. B. et al. Computer simulation of the high explosive explosion using smoothed particle hydrodynamics methodology. Computers & Fluids, v. 32, n. 2, p. 305–322, 2003. LIU, W.; CHEN, Y. Reproducing kernel particle methods. International Journal for Numerical Methods in Fluids, v. 20, p. 1081–1106, 1995. LUCY, L. B. A numerical approach to the testing of the fission hypothesis. Astron. J., v. 82, p. 1013–1024, December 1977. MONAGHAN, J. J. Simulating free surface flows with sph. J. Comput. Phys., Academic Press Professional, Inc., San Diego, CA, USA, v. 110, n. 2, p. 399–406, 1994. 58 MüLLER, M.; CHARYPAR, D.; GROSS, M. Particle-based fluid simulation for interactive applications. In: SCA ’03: Proceedings of the 2003 ACM SIGGRAPH/Eurographics symposium on Computer animation. Aire-la-Ville, Switzerland, Switzerland: Eurographics Association, 2003. p. 154–159. PAIVA, A. Uma abordagem lagrangeana para simulação de escoamentos de fluidos viscoplásticos e multifásicos. Tese (Doutorado) — PUC-Rio, 2007. PAIVA, A. et al. Meshless Fluid Simulation: introduction to SPH methods. Rio de Janeiro: IMPA, 2009. PAIVA, A. et al. Fluid-based hatching for tone mapping in line illustrations. Vis. Comput., Springer-Verlag New York, Inc., Secaucus, NJ, USA, v. 25, n. 5-7, p. 519–527, 2009. PETRILA, T.; TRIF, D. Basics of Fluid Mechanics and Introduction to Computational Fluid Dynamics. [S.l.]: Springer, 2004. STAM, J. Stable fluids. In: ROCKWOOD, A. (Ed.). Siggraph 1999, Computer Graphics Proceedings. Los Angeles: Addison Wesley Longman, 1999. p. 121–128. VILLAGGIO; PIERO. Darrigol, olivier-worlds of flow. a history of hydrodynamics from the bernoullis to prandtl: Oxford university press, oxford, 2005 xiv, 356 p. 35.00;. Meccanica, Springer, v. 42, n. 1, p. 107–108, February 2007.