Grupo2 - Ondas1: mudanças entre as edições
(→Código) |
|||
(21 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 54: | Linha 54: | ||
<math> w_{j}^{n+1} = w_j^n + \frac{\Delta t}{2\Delta x}(v_{j+1}^{n} - v_{j-1}^{n}) </math>. | <math> w_{j}^{n+1} = w_j^n + \frac{\Delta t}{2\Delta x}(v_{j+1}^{n} - v_{j-1}^{n}) </math>. | ||
Entretanto, ao se realizar uma análise de estabilidade de Von Neumann, conclui-se que esse método é instável<ref name=recipes>Press, William H.; Teukolsky, Saul A.; Vetterling, William T.; Flannery, Brian P. (2007). | Entretanto, ao se realizar uma análise de estabilidade de Von Neumann, conclui-se que esse método é instável<ref name=recipes>Press, William H.; Teukolsky, Saul A.; Vetterling, William T.; Flannery, Brian P. (2007). "Numerical Recipes: The Art of Scientific Computing" (3rd ed.). New York: Cambridge University Press. ISBN 978-0-521-88068-8.</ref> . Para torná-lo estável, é necessário trocarmos os termos <math> v_j^n </math> e <math> w_j^n </math> por suas médias espaciais, chegando, assim, na expressão do esquema de Lax-Friedrichs: | ||
Linha 152: | Linha 152: | ||
<math> u_{j}^{n+1} = 2u_{j}^{n} - u_{j}^{n-1} + \frac{(\Delta t)^2}{2(\Delta x)^2}\Bigg[ \frac{1}{2}u_{j+2}^{n-1} - \frac{1}{2}u_{j-2}^{n-1} + u_{j+1}^{n} - u_{j+1}^{n-1} - 2u_{j}^{n} + u_{j}^{n-1} + u_{j-1}^{n} - u_{j-1}^{n-1}\Bigg] </math>, | <math> u_{j}^{n+1} = 2u_{j}^{n} - u_{j}^{n-1} + \frac{(\Delta t)^2}{2(\Delta x)^2}\Bigg[ \frac{1}{2}u_{j+2}^{n-1} - \frac{1}{2}u_{j-2}^{n-1} + u_{j+1}^{n} - u_{j+1}^{n-1} - 2u_{j}^{n} + u_{j}^{n-1} + u_{j-1}^{n} - u_{j-1}^{n-1}\Bigg] </math>, | ||
== Implementação | == Implementação== | ||
Ao implementarmos o método, surgem dois problemas: o problema não é auto-inicializável, pois para calcularmos o valor de <math>u_j^{1}</math>, necessitamos de <math>u_j^{-1}</math> (além de <math>u_j^{0}</math>). Entretanto, isto é rapidamente solucionado quando discretizamos a condição inicial de que <math> \frac{\partial u}{\partial t}(x, 0) = 0 </math>: | Ao implementarmos o método, surgem dois problemas: o problema não é auto-inicializável, pois para calcularmos o valor de <math>u_j^{1}</math>, necessitamos de <math>u_j^{-1}</math> (além de <math>u_j^{0}</math>). Entretanto, isto é rapidamente solucionado quando discretizamos a condição inicial de que <math> \frac{\partial u}{\partial t}(x, 0) = 0 </math>: | ||
Linha 214: | Linha 214: | ||
== Simulação de Propagação de Onda 2D no Mar Dependente de Topografia == | == Simulação de Propagação de Onda 2D no Mar Dependente de Topografia == | ||
O modelo mais simples para a propagação de onda dependente da topografia parte da equação da onda <ref>"The Wave Equation in 1D and 2D | O modelo mais simples para a propagação de onda dependente da topografia parte da equação da onda <ref>Lie, Knut-Andreas. "The Wave Equation in 1D and 2D". Dept. of Informatics, University of Oslo; disponível em: [http://www.uio.no/studier/emner/matnat/ifi/INF2340/v05/foiler/sim04.pdf]; último acesso em 23/10/2017.</ref> <ref>Hjorth-Jensen, Morten. Computational Physics, University of Oslo, 2009.</ref>, incluindo uma velocidade dependente da posição, da forma <math>gH(x,y,t)</math>. | ||
<math> \frac{\partial^2 u}{\partial t^2} = \Big( \frac{\partial}{\partial x} gH(x,y,t) \frac{\partial u}{\partial x}\Big) + \Big( \frac{\partial}{\partial y} gH(x,y,t) \frac{\partial u}{\partial y}\Big) - \frac{\partial^2 H}{\partial t^2} </math> , | <math> \frac{\partial^2 u}{\partial t^2} = \Big( \frac{\partial}{\partial x} gH(x,y,t) \frac{\partial u}{\partial x}\Big) + \Big( \frac{\partial}{\partial y} gH(x,y,t) \frac{\partial u}{\partial y}\Big) - \frac{\partial^2 H}{\partial t^2} </math> , | ||
Linha 221: | Linha 221: | ||
Sendo <math>H(x,y,t)</math> uma representação da profundidade em águas calmas, <math>g</math> a aceleração da gravidade e <math>u(x, y, t)</math> a elevação da água em relação ao nível de águas calmas. Em uma situação real, pode-se obtê-la por mapeamento eletrônico do terreno por sistema de sonar. A dependência em <math>t</math> de <math>H(x,y,t)</math> permite um modelo no qual o terreno se modifica com o tempo. Isto é, pode-se observar o efeito que o deslocamento de placas tectônicas, deslizamentos, e até explosões provocam no comportamento das ondas na costa de um país e o reconhecimento de áreas críticas. Entretanto, utilizaremos aqui <math>H = H(x, y)</math>, sem dependência no tempo, e mudaremos as condições iniciais para a modelagem do problema, além de usarmos <math>g=1</math>, para simplificarmos as expressões. | Sendo <math>H(x,y,t)</math> uma representação da profundidade em águas calmas, <math>g</math> a aceleração da gravidade e <math>u(x, y, t)</math> a elevação da água em relação ao nível de águas calmas. Em uma situação real, pode-se obtê-la por mapeamento eletrônico do terreno por sistema de sonar. A dependência em <math>t</math> de <math>H(x,y,t)</math> permite um modelo no qual o terreno se modifica com o tempo. Isto é, pode-se observar o efeito que o deslocamento de placas tectônicas, deslizamentos, e até explosões provocam no comportamento das ondas na costa de um país e o reconhecimento de áreas críticas. Entretanto, utilizaremos aqui <math>H = H(x, y)</math>, sem dependência no tempo, e mudaremos as condições iniciais para a modelagem do problema, além de usarmos <math>g=1</math>, para simplificarmos as expressões. | ||
[[Arquivo:Grupo2_ondas1_imagem1.png |frame|500px|center| Exemplo de mapeamento de terreno sub - calota polar feito por AUV (''autonomous underwater vehicle'')<ref>"Digital terrain mapping of the underside of sea ice from a small AUV | [[Arquivo:Grupo2_ondas1_imagem1.png |frame|500px|center| Exemplo de mapeamento de terreno sub - calota polar feito por AUV (''autonomous underwater vehicle'')<ref>Wadhams, M. J. Doble. "Digital terrain mapping of the underside of sea ice from a small AUV"; disponível em: DOI: 10.1029/2007GL031921 ; último acesso em 23/10/2017.</ref> ]] | ||
Como primeira abordagem visando uma análise em 2D, a integração da equação em 1D (mesmo sendo uma situação muito idealizada) já traz resultados interessantes. Pode ser mostrado que a velocidade da onda pode ser dada por <math>v=\sqrt{gH}</math>, para o caso em que <math>\lambda<<H</math>, o que é razoável para um tsunami, que tem um comprimento de onda da ordem de até centenas de quilômetros, com uma profundidade da ordem de quilômetros<ref name=lang>Silveira, F. L.; Varriale, M. C. | Como primeira abordagem visando uma análise em 2D, a integração da equação em 1D (mesmo sendo uma situação muito idealizada) já traz resultados interessantes. Pode ser mostrado que a velocidade da onda pode ser dada por <math>v=\sqrt{gH}</math>, para o caso em que <math>\lambda<<H</math>, o que é razoável para um tsunami, que tem um comprimento de onda da ordem de até centenas de quilômetros, com uma profundidade da ordem de quilômetros<ref name=lang>Silveira, F. L.; Varriale, M. C. "Propagação das ondas marítimas e dos tsunami". Caderno Brasileiro de Ensino de Física, V. 22, N. 2: P. 190-215, 2005.</ref>. Como o período da onde não se altera <ref name=lang></ref>, quanto menor a profundidade, menor a velocidade, e menor o seu comprimento de onda. Além disso, devido à conservação de energia, e supondo que a extensão da frente de onda não seja alterada, é obtida a chamada Lei de Green<ref name=lang></ref>: | ||
<math>\frac{A_2}{A_1} = \Bigg(\frac{H_1}{H_2}\Bigg)^{\frac{1}{4}}</math> | <math>\frac{A_2}{A_1} = \Bigg(\frac{H_1}{H_2}\Bigg)^{\frac{1}{4}}</math> | ||
Linha 245: | Linha 244: | ||
Podemos então, analisar como a mesma condição inicial se porta quando <math>H(x,y) = 1-e^{\frac{x^2 + y^2}{2}}</math>, simulando uma elevação de terra: | Podemos então, analisar como a mesma condição inicial se porta quando <math>H(x,y) = 1-e^{\frac{-(x^2 + y^2)}{2}}</math>, simulando uma elevação de terra: | ||
Linha 254: | Linha 253: | ||
Perfil da onda em sua diagonal: | Perfil da onda em sua diagonal: | ||
[[Arquivo:Output_12344.png|frame|500px|center|Perfil da onda em sua diagonal no tempo de simulação igual a 300]] | [[Arquivo:Output_12344.png|frame|500px|center|Perfil da onda em sua diagonal no tempo de simulação igual a 300]] | ||
==Códigos== | |||
===Equação da onda em uma dimensão=== | |||
[[Lax-Friedrichs]] | |||
[[Lax-Wendroff de dois passos]] | |||
[[Leapfrog]] | |||
[[Erro: Lax-Friedrichs]] | |||
[[Erro: Lax-Wendroff de dois passos]] | |||
[[Erro: Leapfrog]] | |||
===Equação da onda em duas dimensões=== | |||
[[Onda 2D: Leapfrog]] | |||
==Bibliografia== | ==Bibliografia== | ||
<references/> | <references/> |
Edição atual tal como às 14h52min de 24 de janeiro de 2018
Integrantes do grupo: Rodrigo Zamin Ferreira (262692), Leonardo Xavier Rodrigues (262696), Maurício Gomes de Queiroz (264889) e Rodrigo Lopes de Sousa Silva (262705)
Introdução
A modelagem numérica vem se tornando cada vez mais uma ferramenta indispensável para um engenheiro. Tal modelagem pode trazer informações importantes para entender como melhor abordar o desenvolvimento de um projeto, neste caso, um que envolva ondas. Nós, como futuros engenheiros físicos, pensamos em trazer um problema mais "concreto", de engenharia costeira e portuária, que pode ou não surgir em nossas vidas profissionais mas cujo método de solução certamente estará presente. Aqui será apresentado um modelo baseado em uma condição inicial e um perfil topográfico do local estudado que descreve a evolução temporal de uma onda.
Inicialmente, para testarmos os diferentes métodos, utilizaremos a equação da onda em uma dimensão, que é uma equação diferencial parcial de segunda ordem, para modelarmos uma corda:
em que é o deslocamento vertical da corda, é a velocidade de propagação da onda e , com o comprimento da corda.
Podemos reescrever a equação da seguinte forma:
.
Uma vez que os métodos citados abaixo são para equações de primeira ordem, é necessário separarmos a equação em um sistema de equações, fazendo a substituição e , de forma que:
Aqui usaremos , sem perda de generalidade. As condições de contorno utilizadas aqui são (pontas fixas), e as condições iniciais são e
Algoritmos
Apresentaremos aqui três abordagens diferentes para a solução da equação diferencial parcial apresentada, e após, seus respectivos erros associados. A respeito das discretizações, corresponde à posição, e representa o tempo.
Método de Lax-Friedrichs
Esse método de ordem [1] consiste em inicialmente discretizar as equações no esquema FTCS (Forward Time Centered Space), ou seja, discretizando a derivada temporal utilizando os tempos e e a derivada espacial através das posições e :
,
.
Resultando em
,
.
Entretanto, ao se realizar uma análise de estabilidade de Von Neumann, conclui-se que esse método é instável[1] . Para torná-lo estável, é necessário trocarmos os termos e por suas médias espaciais, chegando, assim, na expressão do esquema de Lax-Friedrichs:
,
.
Para obtermos o valor de , que é o nosso objetivo, discretizamos a equação
,
Embora as médias espaciais sejam necessárias para a estabilidade do método, elas introduzem um problema: surge um efeito chamado de dissipação numérica, ou seja, a amplitude da solução diminui com o tempo. Isso pode ser observado através da análise de Von Neumann ou de uma investigação da equação do esquema Lax-Friedrichs [1] . Por este método, observa-se que ao inserirmos as médias, mudamos a equação original do problema, pois agora há também um termo do tipo difusivo (uma derivada segunda), com constante de difusão [1].
Agora vamos unir todas as equações, utilizando, além da equação para obtida acima, as discretizações de e
,
.
Assim, obtemos
.
Método de Leapfrog
Neste método , de ordem [1], utilizamos os pontos intermediários na discretização das equações.
Para temos
,
Para temos
,
Para temos
,
Utilizando o fato de que
,
,
chegamos na equação para
,
o que é equivalente a discretizarmos a equação da onda diretamente, utilizando que, para uma função ,
,
sendo a discretização em .
Método de Lax-Wendroff de Dois Passos
Para este método, de ordem , o primeiro passo consiste em calcular o valor de e utilizando o método de Lax-Friedrichs, para posterior cálculo de e :
,
,
,
,
Agora, no tempo :
,
,
Agrupando as equações,
,
,
E finalmente temos a equação unificada em u, utilizando a expressão para e as discretizações de e , como obtidas na seção sobre o Método de Lax-Friedrichs:
,
Implementação
Ao implementarmos o método, surgem dois problemas: o problema não é auto-inicializável, pois para calcularmos o valor de , necessitamos de (além de ). Entretanto, isto é rapidamente solucionado quando discretizamos a condição inicial de que :
,
ou seja, para o cálculo de , utilizamos que . Através do método de Leapfrog, dessa forma conseguimos isolar :
,
.
Porém, isso não ocorre com os outros dois métodos, pois surgem termos em diferentes posições para o tempo (de , , até ), sendo necessário resolvermos o sistema como um todo simultaneamente, ou seja, teríamos que inverter uma matriz. Por isso, foi utilizado o método de Leapfrog para o cálculo de em todos os métodos, devido a sua simplicidade.
Além disso, são necessários valores de e de , com correspondendo a , para calcularmos e , para qualquer tempo, utilizando os métodos de Lax-Wendroff de dois passos e Lax-Friedrichs. A solução a este problema foi utilizarmos
.
Pensando na condição inicial , e estendendo para além da corda (pensando no seno de ), observamos que ela respeita as equações acima.
Solução e Análise de erros
Primeiramente, apresentamos abaixo as soluções geradas pelos programas, em comparação com a solução analítica.
Aqui já podemos observar o que foi comentado na seção sobre o método de Lax-Friedrichs: devido à dissipação numérica inerente ao método, há uma diminuição da amplitude da onda ao longo do tempo, embora ela mantenha sua forma. Isso interferirá na análise do erro deste método, o que será apresentado na sequência.
A partir do cálulo da solução analítica da equação da onda, podemos calcular quanto o valor obtido pelos métodos difere da solução real, o que leva a uma visualização do erro corrente em cada método de integração.
Nesse caso, a solução é [2].A análise de erros se torna mais evidente durante a escolha do parâmetro , onde . Valores grandes trazem pouca acurácia, e valores pequenos necessitam de muito poder de computação (tempo e dinheiro).
O erro foi obtido efetuando uma média espacial, ou seja, o programa foi evoluindo até um tempo final , e, em , foi feita uma média sobre o valor absoluto da diferença entre a solução analítica e a numérica. Aqui variamos o valor de , fixando , de forma que .
Podemos observar que os erros crescem à medida que o parâmetro k se torna maior, como seria de se esperar.
Além disso, sabendo a ordem do erro dos métodos, podemos determinar a inclinação da reta que melhor se ajusta aos pontos. Se um método tem erro de ordem ,
em que é o erro local, ou seja, o erro de um passo do método, e é uma constante. Assim, o erro global , ou seja, o erro após N passos, é dado por
Como , . Logo, se o erro local é de ordem , o erro global (que é o que calculamos aqui) é de ordem . Além disso, como utilizamos escala logarítmica para representar os resultados, a função do erro global se torna
Ou seja, a inclinação do gráfico do erro global é .
Observamos que se determinarmos a reta que melhor se ajusta às curvas dos métodos de Leapfrog e Lax-Wendroff, ela tem inclinação aproximada de 1, já que os métodos são de ordem . Com relação ao gráfico do erro do método de Lax-Friedrichs, é mais complicado de fazer sua análise, uma vez que há o efeito de dissipação numérica, que se intensifica para valores menores de . Podemos observar nos dados que o ponto de máximo na parte esquerda do gráfico corresponde a um erro de aproximadamente , que é a média da solução analítica no tempo (conforme solução analítica, a amplitude no tempo é , e a média de vale ). Isso significa que, devido à dissipação, a solução numérica é praticamente 0 frente à solução analítica na parte esquerda do gráfico.
Simulação de Propagação de Onda 2D no Mar Dependente de Topografia
O modelo mais simples para a propagação de onda dependente da topografia parte da equação da onda [3] [4], incluindo uma velocidade dependente da posição, da forma .
,
Sendo uma representação da profundidade em águas calmas, a aceleração da gravidade e a elevação da água em relação ao nível de águas calmas. Em uma situação real, pode-se obtê-la por mapeamento eletrônico do terreno por sistema de sonar. A dependência em de permite um modelo no qual o terreno se modifica com o tempo. Isto é, pode-se observar o efeito que o deslocamento de placas tectônicas, deslizamentos, e até explosões provocam no comportamento das ondas na costa de um país e o reconhecimento de áreas críticas. Entretanto, utilizaremos aqui , sem dependência no tempo, e mudaremos as condições iniciais para a modelagem do problema, além de usarmos , para simplificarmos as expressões.
Como primeira abordagem visando uma análise em 2D, a integração da equação em 1D (mesmo sendo uma situação muito idealizada) já traz resultados interessantes. Pode ser mostrado que a velocidade da onda pode ser dada por , para o caso em que , o que é razoável para um tsunami, que tem um comprimento de onda da ordem de até centenas de quilômetros, com uma profundidade da ordem de quilômetros[6]. Como o período da onde não se altera [6], quanto menor a profundidade, menor a velocidade, e menor o seu comprimento de onda. Além disso, devido à conservação de energia, e supondo que a extensão da frente de onda não seja alterada, é obtida a chamada Lei de Green[6]:
em que é a amplitude da onda, e os índices representando dois meios. Logo, quanto menos profundo, maior a amplitude da onda. Esta informação por si só ajuda na construção de proteção contra quebra de ondas, pois é obtido o tamanho que as mesmas atingem. Nos gráficos abaixo podemos observar esses efeitos.
E no caso em que simulamos uma fina camada de líquido, podemos ver a diminuição de velocidade da onda e o aumento de sua amplitude, especialmente no trecho mais à esquerda:
É importante notar o quão poderosa é a integração de equações parciais na vida de um engenheiro.
Estendendo o algoritmo de Leapfrog à situação 2D, obtemos, para uma condição inicial de uma gaussiana com média 0 e desvio padrão 1, tanto em quanto em , e :
Podemos então, analisar como a mesma condição inicial se porta quando , simulando uma elevação de terra:
Perfil da onda em sua diagonal:
Códigos
Equação da onda em uma dimensão
Erro: Lax-Wendroff de dois passos
Equação da onda em duas dimensões
Bibliografia
- ↑ 1,0 1,1 1,2 1,3 1,4 Press, William H.; Teukolsky, Saul A.; Vetterling, William T.; Flannery, Brian P. (2007). "Numerical Recipes: The Art of Scientific Computing" (3rd ed.). New York: Cambridge University Press. ISBN 978-0-521-88068-8.
- ↑ Weisstein, Eric W. "Wave Equation--1-Dimensional." From MathWorld--A Wolfram Web Resource; disponível em: [1]; último acesso em 26/11/2017
- ↑ Lie, Knut-Andreas. "The Wave Equation in 1D and 2D". Dept. of Informatics, University of Oslo; disponível em: [2]; último acesso em 23/10/2017.
- ↑ Hjorth-Jensen, Morten. Computational Physics, University of Oslo, 2009.
- ↑ Wadhams, M. J. Doble. "Digital terrain mapping of the underside of sea ice from a small AUV"; disponível em: DOI: 10.1029/2007GL031921 ; último acesso em 23/10/2017.
- ↑ 6,0 6,1 6,2 Silveira, F. L.; Varriale, M. C. "Propagação das ondas marítimas e dos tsunami". Caderno Brasileiro de Ensino de Física, V. 22, N. 2: P. 190-215, 2005.