Diferenças finitas em domínios com limites irregulares

11

Alguém pode me ajudar a encontrar os livros sobre soluções numéricas (diferença finita e métodos Crank-Nicolson) das equações de Poisson e difusão, incluindo exemplos de geometria irregular, como um domínio que consiste na área entre um retângulo e um círculo (especialmente livros ou links em exemplos de código MATLAB neste caso)?

liona
fonte
4
Para qual finalidade? Introdução para os alunos desde o início? E o que é uma geometria irregular no seu caso? Domínios com cantos reentrantes?
shuhalo 12/01
@ Martin: Eu sou biginner neste campo. I precisa para isso resolvendo a equação de Poisson usando métodos itterative em domínios de forma irregular, especialmente com thoes bundaries curvas (eg.2-D domínio circular)
liona
2
@last Edite o título e o corpo da pergunta para deixar claro o que você está perguntando. Especifique os tipos de equações que lhe interessam. Você está interessado em discretizações, solucionadores algébricos ou ambos? Você se importa com diferenças finitas x elementos finitos ( scicomp.stackexchange.com/questions/290/… )? Sua pergunta atual é extremamente ampla e difícil de encontrar na pesquisa.
Jed Brown
@JedBrown: Eu quero resolver a equação de Poisson usando diferenças finitas em determinado domínio e condição de contorno.
liona
por último, edite o corpo da sua pergunta para incluir as informações nos dois comentários até o momento. Além disso, como JedBrown disse, edite também o título da sua pergunta para que seja mais fácil para as pessoas procurarem por ela e mais fácil para as pessoas julgarem se a pergunta pode ser interessante ou aplicável a elas.
Geoff Oxberry

Respostas:

3

A chave para fazer um esquema de diferenças finitas funcionar em uma geometria irregular é ter uma matriz de 'forma' com valores que denotam pontos fora, dentro e nos limites do domínio. Digamos que tivemos uma forma como esta:

000000000000011111111110001222222100000122221000000012210000000001100000000000000000

O domínio verdadeiro (onde estão todas as entradas diferentes de zero da matriz) forma um triângulo apontado para baixo. Os 1s representam pontos no limite, enquanto os 2´s representam pontos interiores (geralmente desconhecidos). Podemos atribuir números de nós da seguinte maneira:

000000000000011111111110001123456100000178910100000001111210000000001100000000000000000

Aqui, -1 representa os locais de limite. Em seguida, você pode executar um esquema de diferenças finitas em todas as entradas da matriz, mas use uma instrução if para executar seu esquema apenas nos nós internos (de 1 a 12). Essa abordagem não é a maneira mais eficiente de fazer isso, mas fará o trabalho ... se você puder pagar a memória, pode ser bom armazenar as entradas (i, j) de todos os nós internos e executar um loop for apenas nesses nós.

Para criar a geometria diretamente, você pode fazer uma de duas coisas:
1. Crie uma imagem em preto e branco manualmente e importe-a para o seu programa (mais fácil de implementar, mas impossível refinar sua resolução espacial dx ou dy).
2. Escreva um código que crie representações discretas das formas básicas que você deseja para qualquer resolução espacial que você escolher (mais difícil de implementar, mas mais robusta para esquemas gerais de diferenças finitas de qualquer resolução espacial dx ou dy).

Se você quiser saber mais sobre como fazer isso, você pode querer considerar assistindo esses vídeos:
NPTEL Computer Graphics Course, Video 2 (Raster Graphics)
NPTEL Computer Graphics Course, Video 3 (Raster Graphics, continuou)
Vê-los, e deixe-me saber se isso aborda sua pergunta.

Paulo
fonte
Existe uma maneira que eu possa melhorar o formato dos valores da matriz que eu postei ... ele não parece muito do jeito que eu gostaria que ele procure
Paul
Sim, você pode usar o MathJax e colocá-los em um ambiente de matriz.
David Ketcheson
Você está certo ... parece muito melhor com o MathJax. Obrigado pela sugestão :)
Paul
@ Paul: Obrigado pela sua solução simples! No entanto, como posso calcular pontos de contorno para obter pontos internos para a região delimitada entre retangular e triângulo ou (região delimitada entre retangular e círculo)?
liona
Você tem uma imagem da forma do domínio que deseja modelar? É sempre mais fácil vê-lo, do que descrevê-lo apenas com palavras :)
Paul
2

Eu sugeriria os seguintes artigos:

O método das diferenças finitas em redes irregulares arbitrárias e sua aplicação na mecânica aplicada - Liszka Orkisz

http://www.sciencedirect.com/science/article/pii/0045794980901492

Técnicas de diferenças finitas para grades variáveis ​​- Jensen

http://www.mendeley.com/research/finite-difference-techniques-variable-grids-7/

Resolução de equações parabólicas e hiperbólicas pelo método das diferenças finitas generalizadas - Benito Urena Gavete

http://www.sciencedirect.com/science/article/pii/S037704270600687X

Basicamente, eles descrevem como gerar diferenciais finitos para malhas não estruturadas / irregulares. Não conheço nenhum livro que trate esse tópico específico em profundidade, mas o livro de Randall LeVeque pode ter algo a respeito. Aqui está o link para a página do autor, que contém alguns arquivos m do Matlab para diferenças finitas.

http://faculty.washington.edu/rjl/booksnotes.html

Bernardo MR
fonte
1

Penso que fazer a malha se ajustar ao limite e, portanto, afastar-se da malha quadrada padrão do fdm é provavelmente uma solução, mas, no entanto, tem sérias implicações no uso de algoritmos de alta ordem - difícil, se não impossível. Adotei uma abordagem diferente, a saber, manter a grade retangular sobre a geometria curva do limite, criar algoritmos de alta ordem, interpolar a partir do limite para definir os valores "fora" da geometria, e é tudo o que existe. alcançamos precisões em geometrias de teste de esfera concêntrica de ~ 1e-12 com este método usando um algoritmo de ordem 8. se você pesquisar no Google "Edwards, limite curvo de fdm", encontrará referências ao meu trabalho.

david
fonte
0

Seria possível usar refinamento de malha adaptável? Uma rápida pesquisa no Google exibirá muitos links. A AMR é usada, por exemplo, na dinâmica de fluidos para modelar o fluxo após formas complicadas; bem como muitas outras aplicações. Aqui está um exemplo de solução de sistemas de leis de conservação hiperbólica que surgem na formação de estrelas. As geometrias são muito complexas. A primeira parte do artigo é um bom tutorial. http://www.mpa-garching.mpg.de/lectures/ADSEM/SS05_Homann.pdf

JohnS
fonte
0

Essa pergunta abre uma lata de vermes, como é evidenciado pela variedade de respostas dadas. Muitos deles apontam pontos úteis, mas uma resposta realmente útil levaria em consideração considerações que não foram levantadas. Além de especificar especificamente a natureza exata da geometria, seria valioso saber a) Que tipo de precisão você precisa? b) Deseja ficar com malhas quadradas regulares? c) Quanto você está disposto a investir no aprendizado de novas tecnologias?

As malhas quadradas regulares dificultam a definição precisa do limite, para que muitas pessoas mudem para malhas conformes. As malhas em conformidade com a conectividade retangular têm dificuldade em se ajustar a formas muito irregulares; muitas pessoas adotam malhas não estruturadas (triângulos / tetraheda ou mais gerais).

Para qualquer dado que não possua estrutura cartesiana regular, é difícil avaliar derivadas, muitas pessoas reformulam seus problemas de forma integral, o que leva a métodos de elementos finitos / volumes finitos (que podem atingir alta ordem). Existem métodos sem malha. Existem métodos de elemento de limite. Existem métodos de fronteira imersos. Existem métodos de células cortadas. Muitas vezes, existe um método que é popular em alguns aplicativos, mas não em outros, por razões principalmente históricas.

Desejo-lhe boa sorte na navegação neste labirinto, mas você deve perceber que não há uma solução única para a sua pergunta.

Philip Roe
fonte