March 20, 2011

OpenFOAM no Windows

Como já comentei em um post anterior, uma reclamação muito comum das pessoas que estão começando a usar o OpenFOAM (OF) é a necessidade de que, ao mesmo tempo, também devem começar a usar uma distro Linux.

Existem algumas alternativas para aqueles usuários de OF que resistem em não querer usar Linux. Uma alternativa é emular os programas de Linux usando o Cygwin, por exemplo. Este por sua vez é um ambiente Linux-Like para Windows. A principal crítica para isso (principalmente em se tratando de CFD) é a perda de eficiência computacional, ou seja, o Cygwin, por si próprio, consome recursos computacionais para emular o ambiente Linux.

Tendo isto em vista, começaram a surgir algumas compilações de OF nativas para Windows. Como estamos falando de códigos em C++, linguagem a qual o OF é programado, nada impede de se gerar uma versão compilada para Windows. O que é feito, em geral, é gerar uma versão para Windows usando o próprio Linux e o compilador MinGW. Isto elimina o problema de ter que emular usando o Cygwin e com certeza melhora a eficiência computacional na execução dos solvers e/ou utilitários do OF. Assim, no lugar de gerar binários do tipo Linux são gerados os executáveis Windows e em vez das bibliotecas dinâmicas .so são geradas as .dll.

Uma compilação nativa e gratuita (livre) de OF para Windows pode ser encontrada neste link. A instalação pode ser resumida em alguns passos (Obs.: usei o Windows 7 para o teste):

  • Baixar o arquivo executável neste link;
  • Baixar o arquivo instalador chamado OpenFOAM-1.5.00b-wininst.exe com aproximadamente 180 Mb;
  • Depois de baixado, dois clicks e é só seguir dando next, como todo instalador Windows;
  • Após uma instalação bem sucedida você deve ter na área de trabalho um link chamado OpenFOAM Designer;
  • Logo que é iniciado, o caso cavity é aberto e pode-se gerar a malha com o blockMesh e rodar o caso com o solver icoFoam;
  • O paraFoam não funcionou para mim. Uma opção é proceder como descrito nos items que seguem ou gerar os arquivos vtks, com o comando foamToVTK, e abrir estes arquivos .vtk diretamente no ParaView;
  • Se tentar abrir o ParaView no botão existente na interface superior irá dar um erro relacionado à plugins, mas ignorando esse erro o ParaView abre, apesar dele não coseguir ler corretamente os arquivos;
  • Copie os plugins libPV3FoamReader_SM.dll e libPV3FoamReader.dll contidos em: OpenFOAM-1.5\bin\plugins\paraview para um diretório em: graphics\Paraview-3.4.0\bin\plugins\;
  • Ir até o caso simulado e criar um arquivo vazio chamado nomedocaso.OpenFOAM;
  • Pedir para abrir novamente o ParaView e também pedir para não mostrar mais a mensagem relacionada a falta de plugins;
  • Com o ParaView aberto ir até o caso simulado e abrir o arquivo vazio nomedocaso.OpenFOAM;
  • Em teoria, fazendo isso, agora você já deve estar vendo seu caso simulado.

No diretório da instalação existe um arquivo de ajuda para o uso da interface gráfica: OpenFOAM Designer 1.0 - Quick guide.pdf.

Com os poucos testes que fiz posso destacar que o principal ponto positivo é a interface gráfica bem estruturada. O editor de arquivo reconhece as palavras chaves do OF e isto facilita bastante para usuários iniciantes. A simulação do caso cavity também procedeu bem rápido, como era de se esperar para um caso com uma malha tão pequena.

Como ponto negativo posso destacar a falta de muitos solvers e utilitários padrões no OF original. Por exemplo, você não encontrará o solver twoPhaseEulerFoam ou o utilitário checkMesh apesar de a interface gráfica dar a opção de se usar estes. O que realmente existe de solvers e utilitários nesta compilacao Windows pode ser vista no diretório de instalação bin\. Pode-se dar uma olhada neste diretório para se ter uma idéia de quais .dll e .exe estão disponíveis. Segundo o criador desta compilação, nas próximas versões poderá ser incorporado outros solvers e utilitários.

Bom, como não estava satisfeito com a limitação comentada acima, resolvi ver se conseguia algo melhor. Por sorte encontrei uma compilação para a versão 1.6 a qual pode ser encontrada aqui. Esta versão não apresenta a interface gráfica como na versão anterior, contudo me pareceu ter todos os solvers, utilitários e bibliotecas disponíveis na versão oficial do OF-1.6. Esta versão pode ser usada diretamente usando o MS-DOS, de forma similar como é feito no terminal (console) de Linux. Dessa forma, deve-se setar uma variável de ambiente, ou seja, digitar no prompt MS-DOS: set WM_PROJECT_DIR=C:\cfd\OpenFOAM no caso do diretório de instalação ter sido C:\cfd\OpenFOAM.

Ainda não satisfeito pensei, porque não usar a interface da primeira versão apresentada e, ao invés de usar os executavéis e bibliotecas daquela versão, usar os executáveis e biliotecas desta nova versão que está completa.

Assim, depois de descompactar a versão 1.6 copiei as pastas bin e etc e substitui as já existentes na minha instalação anterior da versão 1.5, a qual foi feita em: C:\cfd\OpenFOAM-1.5 que é a instalação feita por default.

Abrindo o OpenFOAM Designer já de imediato os novos solvers e dlls estarão disponíveis. Ao tentar usar algum aplicativo obtive mensagem de erro e logo pude concluir que era devido a não ter setado a variável de ambiente. Para setar esta variável de ambiente, clike com o botão direito em algum solver ou outro aplicativo qualquer e peça para costumizar (Customize). Isto abrirá uma pequena janela com 3 abas. Na aba Environment->Use custom environment variables digite WM_PROJECT_DIR=C:\cfd\OpenFOAM-1.5 ou algo similar de acordo com o local em que a instalação foi feita. Fazendo-se isto o aplicativo irá funcionar quando for chamando para executar usando a opção Start custom (Bazinga!).


Obs. 1: Para cada aplicativo que se queira usar deve-se fazer o procedimento de setar a variável de ambiente da forma descrita acima.
Obs. 2: Nem todos os casos existentes nos tutoriais da versao 1.5 servirá para a versão 1.6, tem diferenças entre as versões. Isto não é um problema uma vez que se pode baixar os tutoriais da versão do OF-1.6.

Minha recomendação destas versões Windows é somente para usuários que queiram fazer simulações pequenas, desejam usar algum dos solvers já disponíveis nesta compilação (a versão não vem com os códigos fontes) e que realmente sejam resistentes em usar Linux. Assim, vejo uma aplicação muito boa desta versão para fins acadêmicos, em disciplinas como mecânica de fluidos, transferência de calor e massa, etc, onde os alunos não estão ambientados com linux e o tempo é muito curto para ambientá-los e também o objetivo da disciplina é outro. Contudo, cabe também lembrar que algumas distros Linux estão se tornando cada vez mais amigáveis ao usuário, um exemplo disto é o Ubuntu. Além disso, o Linux é mais eficiente, ou seja, o OS consome menos recursos computacionais, deixando o poder computacional para ser usado no que realmente interessa, a simulação CFD.

Fica aí a dica então. Se alguém usa ou tem mais experiência de uso desta versão é útil deixar um comentário.