February 25, 2008

Uma visão geral do pacote CFD OpenFOAM

Resolvi postar aqui a série de artigos que eu escrevi sobre o OpenFOAM e estavam sendo colocadas no CFD-Brasil.

Introdução
Sem dúvida alguma, os pacotes CFD facilitam a análise de uma ampla faixa de condições de escoamento. A importância dos pacotes CFD têm crescido muito nos últimos anos devido à confiabilidade e à rapidez dos resultados assim obtidos e à economia frente a testes experimentais. Este fato se deve aos avanços em termos de modelagem dos fenômenos físicos, das técnicas numéricas para solucionar o problema e da capacidade computacional. Como consequência, além da facilidade de uso, a atualização das técnicas presentes nos códigos CFD e o desenvolvimento de novas metodologias numéricas e modelos físicos devem sempre ser pontos cruciais em CFD. Desta forma, é interessante que o usuário possa interagir intimamente com o pacote, possibilitando a extensão do código para aprimorar a ferramenta ou mesmo implementar novas formas de solucionar um problema específico.

Devido ao fato de ser gratuito e distribuído com código aberto, o OpenFOAM surge como uma ótima opção à resolução de uma grande variedade de problemas CFD. Este artigo é o início de uma série que irá apresentar uma visão geral do OpenFOAM considerando os motivos para escolhê-lo como ferramenta CFD e detalhes de sua origem. Nos outros artigos, veremos detalhes e recursos de configuração de uma simulação no OpenFOAM.

Escolha do OpenFOAM
São várias as considerações que devem ser avaliadas ao escolher um pacote CFD como ferramenta, entre elas a facilidade de uso, a capacidade de montar a geometria e gerar malhas, a eficiência e robustez das técnicas numéricas implementadas e, por fim, a amplitude dos problemas físicos que o pacote pode resolver. Esses fatores dependem muito do grau de desenvolvimento e do investimento colocado no pacote. Sem dúvida alguma, atualmente os pacotes CFD mais desenvolvidos são os comerciais, como CFX, FLUENT e PHOENICS, justamente devido ao seu apelo comercial. Contudo, os preços dos pacotes comerciais somam uma quantia enorme ao usuário final - em média US $ 25000 para uma única licença em período de um ano - fato que limita seu uso. Existem muitos códigos CFD gratuitos disponíveis, contudo normalmente estes possuem uma área de aplicação limitada. O ideal é que exista uma ferramenta CFD que seja geral o suficiente para ser aplicada em diversas áreas, poderosa, robusta e gratuita.

Os pacotes CFD, pagos ou não, tipicamente requerem do usuário um grande esforço dedicado à compreensão e ao seu uso correto. Os códigos CFD irão fornecer uma resposta à maioria dos problemas quando estes forem apropriadamente colocados, porém é necessário paciência, prática e experiência para produzir resultados razoáveis. A interface de integração com o usuário oferecida pelos pacotes CFD é algo que sempre deve ser considerado ao escolher um software.

Além disso, os códigos para solução de problemas CFD necessitam de ferramentas de geração de malha e visualização científica (pré e pós-processamento) de modo a se tornarem úteis. A maioria dos códigos CFD livres não inclui estas duas ferramentas. Apesar disso, existem vários programas específicos para geração de malha e visualização de dados independentes, contudo o usuário deve despender de um grande esforço para interligar estes com o código CFD.

Tendo colocado as considerações acima, pode-se colocar os pontos para basear a escolha do OpenFOAM como ferramenta CFD. Os fatores da escolha estão listados abaixo com alguns comentários. Maiores detalhes sobre os tópicos serão colocados posteriormente quando aplicável.

  • Código aberto e escrito em C++; A praticidade de ter o código em mãos é indescritível. A grande maioria dos manuais dos pacotes CFD comerciais contém dados incompletos sobre a modelagem e implementação numérica. Ao analisar código, o usuário é capaz de obter todas estas informações. E mais, ele pode alterar o código existente (ou criar um novo) para atender as necessidades do problema.
  • Simplicidade no uso como uma ferramenta CFD; Apesar de não ter uma interface gráfica tão avançada quanto a dos softwares comerciais, o uso e operação do OpenFOAM é realizada de modo semelhante.
  • Ferramentas gratuitas de geração de malha e visualização de dados incorporados ao pacote;
  • Generalidade da malha (estruturada ou não-estruturada), inclusive com a possibilidade de importar malhas de outros programas (gratuitos e comerciais);
  • Possibilidade de interação direta com os desenvolvedores do pacote; Os desenvolvedores do OpenFOAM participam intensivamente de uma lista de discussão em inglês sobre o pacote, respondendo perguntas sobre o uso e implementação, dando dicas, etc.
  • Ampla faixa de aplicações na engenharia, incluindo escoamentos turbulentos, com troca de calor, multifásico, etc;
  • Multi-plataforma (Linux, Solaris, MacOS, Linux 64 bits, etc); Já existe uma versão adaptada para Windows.
  • Possibilidade de executar simulações de grande porte em um cluster de computadores; Implementações cada vez mais eficientes de paralelismo estão sendo incorporadas ao OpenFOAM.
  • Ferramentas de exportação de resultados para visualização em outros programas gráficos; Facilita a obtenção dos resultados utilizando o software que mais agrade ou se encaixe nas necessidades do usuário.
  • Desenvolvimento tende a ser realizado pelo meio acadêmico. A tecnologia mais avançada em termos de modelagem CFD, técnicas numéricas (geração de malha, métodos de discretização, solução de sistemas lineares, etc) e computação científica (visualização e paralelismo) provêm do meio acadêmico. Que bom que o OpenFOAM é implementado por eles, não?
Origem do OpenFOAM
Quando um projeto de construção de um código CFD é iniciado, é interessante estruturá-lo de forma que se torne geral o suficiente para que outras pessoas possam usá-lo no futuro como uma ferramenta confiável, eficiente e de fácil manipulação. Esta preocupação envolveu os pensamentos dos então alunos de doutorado do Imperial College, Henry Weller e Hrvoje Jasak quando, em 1993, combinaram esforços para desenvolver o código do FOAM (Field Operation And Manipulation) para operar e manipular campos tensoriais visando a sua aplicação à fluidodinâmica computacional. A tecnologia do FOAM é baseada em um conjunto eficiente e flexível de módulos escritos em C++ que são usados com o intuito de construir: (i) 'solvers' para resolver problemas específicos de engenharia que envolvam campos vetoriais, (ii) utilitários para realizar tarefas de pré e pós-processamento, que vão de uma simples manipulação de dados à visualização e construção e processamento de malhas, e (iii) bibliotecas de expansão usadas pelos 'solvers' e utilitários, tal como uma biblioteca de modelos físicos.

Ao longo dos últimos anos, o FOAM vinha sendo desenvolvido em uma linha comercial pela empresa inglesa Nabla, com a idéia de fornecer ao usuário final uma ferramenta para simulações CFD de processos fisicamente complexos e oferecendo serviços de consultoria sobre o uso do software e implementação de novos solvers com modelagem complexa. Contudo, os desenvolvedores chegaram a conclusão de que a abordagem comercial não era a ideal. Assim, em 12 de dezembro de 2004 o código do FOAM se tornou de domínio público sobre a GPL (Gnu Public License) e o programa passou a ser chamado de OpenFOAM (referente ao código ser aberto). Segundo os desenvolvedores, esta nova fase de desenvolvimento do código começa com o fim de sua abordagem comercial, reconhecendo que o OpenFOAM que o futuro do código só pode ser garantido através de colaborações e interações com o meio acadêmico.

Desde que seu código foi liberado, a comunidade científica têm tratado o OpenFOAM com muito interesse testando-o para casos benchmark, utilizando em projetos de pesquisa e propondo inúmeras colaborações para o desenvolvimento do código. Foi criado um grupo de discussão na internet sobre o OpenFOAM para discutir aspectos de uso, implementação de código e análise numérica do software aberto. Um comentário do Prof. Jasak em especial reflete a situação atual do OpenFOAM: "É incrível a popularidade que o OpenFOAM está recebendo da comunidade científica. O código está se espalhando como um poderoso vírus na internet''. É certo que se o objetivo de usar o código em um ambiente de colaborações for alcançado, o OpenFOAM terá grandes chances de crescer e se tornar uma das maiores plataformas de CFD em código aberto da próxima geração.

Conclusões
Bem, o primeiro contato já foi feito e espero ter aguçado a sua curiosidade sobre o OpenFOAM. São inúmeras vantagens em se utilizar um pacote CFD com código livre e, na minha opinião, a compreensão da implementação do modelo é a principal delas. Já presenciei ocasiões em que o uso de pacotes CFD comerciais ficava limitado pela falta de detalhes e flexibilidade sobre a implementação do código (e da modelagem também). Nestas horas, a sua formação e o seu conhecimento de CFD irão fazer a diferença somente se você puder usá-los livremente. Ou seja, com o código CFD em mãos.

4 comments:

  1. Achei muito interressante essas informações pois, até então, não fazia idéia da existência de um software livre para CFD. Como estou migrando completamente para linux, será muito bom poder conhecer melhor esse código e trabalhar com ele. Gostaria de receber mais informações de como instalar e o manual do usuário.

    ReplyDelete
  2. Olá, hã... Anônimo!

    Muito obrigado pelo seu comentário!

    Pois é, o que falta é divulgação de programas de código livre no Brasil. O próprio Governo Federal incentiva seu uso e, pelo que já vi, existem várias opções de programas científicos (gratuitos e de qualidade) disponíveis.

    Parabéns pela migração ao mundo Linux e seja bem vindo ao OpenFOAM. Para obter mais informações sobre o dito, vá ao site da OpenCFD, baixe-o e dê uma lida no manual. Qualquer coisa, a equipe do Notas está a disposição.

    Um abraço!

    ReplyDelete
  3. Vocês já escutaram falar do FiPy? É um ótimo pacote, desenvolvido em Python pelo NIST.

    http://www.ctcms.nist.gov/fipy/

    ReplyDelete
    Replies
    1. Fausto,
      eu não conhecia, mas gostei muito do que vi.
      Obrigado pela dica.

      Delete