Método das Diferenças Finitas: propagação de calor numa placa.

Posted on

Desenvolvi esse trabalho para a disciplina Fenômenos de Transporte, a idéia inicial era gerar uma imagem da propagação de calor em regime permanente, simplesmente salvei a foto de cada iteração e depois gerei o vídeo. Achei que ficou bacaninha ;)

Comparação da Solução Analítica x Solução Computacional em uma dada linha na placa:



Tempo de processamento x Quantidade de Nós (sem geração de vídeo):

Iterações: 16957

Tempo de cpu para geração das imagens: 2599.020000

O código foi desenvolvido para Matlab. O vídeo foi feito com o ffmpeg e acelerado com o mencoder. Para a geração do vídeo escrevi um script bem simples. Todo o código, tanto para Matlab quanto para geração do vídeo podem ser encontrados aqui.

As equações as quais o código foi baseado estão descritas nas nas notas de aula do Prof. Rafael Gabler.

UPDATE:

Devido as dúvidas de alguns leitores em executar este programa de simulação, fiz o vídeo abaixo para tentar dar uma força aqueles que estejam com dúvidas. Boa sorte!



16 thoughts on “Método das Diferenças Finitas: propagação de calor numa placa.

  1. Vc usou o pdetool ou escreveu seu próprio código?
    Radiacao e conveccao estao sendo considerados ou é somente conducao de calor?
    Nao consegui baixar o código… acho que o link nao está funcionando… tem como me enviar?

    Faco tantas perguntas, pois nao tenho tanto conhecimento com Matlab, mas preciso fazer isso por conta do meu projeto de pesquisa.

    obrigado

    1. Oi Christian!

      Escrevi meu próprio código. Não conheço o pdetool.

      Somente condução de calor.

      O link está funcionando agora =) Pode pegar pelo próprio blog. O código não é nada fantástico, pois é um simples projeto de uma disciplina da graduação, mas talvez possa te ajudar de alguma forma.

      Adicionei também as notas de aula de onde retirei as equações, irá te ajudar a entender o código.

      Boa sorte!

  2. Boa noite, Leonardo, parabenizo pelo seu trabalho, gosto muito desta área, parabéns. Leonardo, baixei o as arquivos que simulam a difusão do calor numa placa retangular “trab_comp.m” (este é o fonte) e tentei rodar, porém não consigo rodar a imagem. No loop temos, por exemplo, K = 1, 1e-100, demora muito, e mesmo diminuindo as iterações, n consigo gerar a imagem mostrada em seu site. Leonardo, gostaria muito que vc me ajudasse, pois estou estudando esta área, obrigado pela atenção. Vc pode, se puder, enviar o código fonte e as subrotina que geraram esta figura do site. Boa noite

  3. Bom dia, Samuel!

    Gostaria de começar te explicando que não conheço muito de diferenças finitas e esse programa foi feito apenas para uma matéria da graduação, ok?

    Tendo isso dito, vou tentar te judar no que eu puder.

    Esse trabalho pode ser dividido em duas partes: A do matlab, são os arquivos .m, (geram uma foto a cada iteração) e a do shell script, arquivo .sh, (que gera o vídeo a partir das figuras).

    Deixemos a parte do vídeo de lado, pois se você não conseguir gerar as imagens, não vai conseguir fazer o vídeo.

    O arquivo principal, de fato, é o trab_comp.m. Peço desculpas pela falta de qualidade do código, mas era só um “quick hack”, para resolver o trabalho.

    O laço principal citado, de fato, é praticamente infinito e foi feito pra ser infinito, deveria ter feito algo como while 1 != 0, ficaria mais claro.

    Quem, na verdade, encerra o laço é a seguinte condição:

    if (abs(pAval – dominio_novo((H/deltay)*posMed,(L/deltax)*.5))…
    < erro) && (k > minIt)

    Ou seja, quando o determinado ponto, variar sua temperatura, menos que a variável erro E deverá haver uma quantidade de iterações maior que a mínima.

    Se você quer acelerar o processo, o que você deve fazer é alterar é diminuir a precisão, ou seja, aumentar o erro admitido e/ou o passo, que correspondem as seguintes variáveis:

    erro = 1e-5; % critério de parada
    passo = 1e-5; % variação do tempo [s]

    Ressalto, que para habilitar a geração das imagens, você deve modificar a variável:
    geraVideo = 0; % Opção Selecionada Para Gerar Imagens para Video

    Para o valor 1, como você pode ver pelo condicional:
    if geraVideo == 1

    Com as informações acima acredito que você consiga progredir alguma coisa no entedimento do problema.

    Relembro também, como respondi no comentário anterior, caso você queira entender a base de cálculo, dar uma lida nas notas de aula disponilizadas acima.

    Qualquer outra dúvida, sinta-se a vontade para perguntar, se eu souber responderei com certeza.

    Um abraço e boa sorte!

  4. Samuel,

    Esqueci de complementar. Todos as rotinas/subrotinas estão nesses arquivos disponibilizado, com excessão dos programas utilizados para geração do vídeo, os quais são de domínio público e devem ser baixados de seus respectivos sites.

    Um abraço e boa sorte!

  5. Oi Leonardo, me desculpe por estar sendo incoveniente de novo, eobrigado pela simpatia no esclarecimento. Quando tento baixar os arquivos novamente não consigo. Já baixei-os ontem e o problema sedeu na tentativa de reproduzir as imagens acima. Nas notas de aulas constam dois exemplos numéricos com dimensões (1m x 1m) e outro com (3m e 1m), e no site acima tem outra malha de dimensões (100 x 100). As figuras estão excelentes, porém eu n consegui reproduzir nenhuma delas. Os parâmetros principais para a modelagem são: as dimensões em x e y (e suas respc discretizações), difusividade termina, passo no tempo,etc…, mas eu n consegui gerar estas imagens. Eu ficaria muito feliz se você, Leonardo, pudesse enviar para meu email o código fonte e as rotinas em matlab, já com os parâmetros adequados p/ assim eu rodar e reproduzir as imagens. Pois o código fonte e as rtinas q eu baixei do site ontem n me permitem gerar tais resultados. Peço encarecidamente esta ajuda, e agradeço desde já, pois estou muito interessado nesta área de pesquisa. Muito obrigado, Leonardo, sei que posso contar com você. Abraços

  6. Oi Leonardo, me desculpe por estar sendo incoveniente de novo, eobrigado pela simpatia no esclarecimento. Quando tento baixar os arquivos novamente não consigo. Já baixei-os ontem e o problema sedeu na tentativa de reproduzir as imagens acima. Nas notas de aulas constam dois exemplos numéricos com dimensões (1m x 1m) e outro com (3m e 1m), e no site acima tem outra malha de dimensões (100 x 100). As figuras estão excelentes, porém eu n consegui reproduzir nenhuma delas. Os parâmetros principais para a modelagem são: as dimensões em x e y (e suas respc discretizações), difusividade termina, passo no tempo,etc…, mas eu n consegui gerar estas imagens. Eu ficaria muito feliz se você, Leonardo, pudesse enviar para meu email o código fonte e as rotinas em matlab, já com os parâmetros adequados p/ assim eu rodar e reproduzir as imagens. Pois o código fonte e as rtinas q eu baixei do site ontem n me permitem gerar tais resultados. Peço encarecidamente esta ajuda, e agradeço desde já, pois estou muito interessado nesta área de pesquisa. Muito obrigado, Leonardo, sei que posso contar com você. Abraços

  7. Olá, Boa noite. Preciso de ajuda para implementar um código para resolução da equação do calor, Unidimensional, com geração de calor e em Regime transiente. Nunca trabalhei com o Método das diferenças finitas. Será que teria algum material ou código para eu tomar como base para desenvolver minha solução?

    Desde já, muito obrigado!

  8. Olá, Arthur!

    Desculpe pela demora em respondê-lo, mas voltei de viagem esta semana e as coisas ainda estão meio confusas por aqui.

    Sinto decepcioná-lo, mas não domino o assunto de elementos finitos e muito menos propagação de calor. Entretanto, acredito que as notas de aulas da disciplina que cursei na época da graduação em conjunto com o código disponibilizado para exemplo podem te ajudar na sua empreitada.

    O problema que eu resolvi no meu trabalho acima, foi a propagação de calor numa placa (duas dimensões) em regime transiente pelo método das diferenças finitas, então, o seu problema, seria reduzir o meu programa à sua necessidade unidimensional.

    Um abraço e boa sorte!

  9. Boa noite, ficaram muito bons seu programa e video parabéns! Eu estou estudando diferenças finitas agora e tem uma coisa que eu não entendi no seu código, a linha

    posMed = .2; % Posicao da medição

    Tem qual significado no programa e teoria?

    Muito Obrigado.

  10. Olá, Marcos,

    Tudo certo? Desculpe a demora. As coisas estão corridas por aqui.

    Seguinte, essa variável tem a ver com a posição da medição da temperatura na placa, entre as sucessivas iterações para verificar se a transmissão já entrou em regime permanente.

    Não olhei com a devida atenção, mas acredito que a posição deva estar algo como 50 % do eixo x e 20 % do eixo y, tendo a origem como referência.

    Um abraço e boa sorte!

  11. Tenho um problema tbm de transferencia de calor…porem eu tenho uma placa, sendo que dois lados estão isolados, de um lado passa um fluido qualquer…e do outro uma temperatura quaquer.

  12. POSSO TEM ENVIAR O TRABALHO PRA VER SE TEM COMO VC ME AJUDAR??? TEM COMO ME PASSAR SEU EMAIL?

Leave a Reply

Your email address will not be published. Required fields are marked *

*