January 23, 2012

Pyfoam: uma ferramenta de manipulação de casos

Caros Leitores,

Se desejam automatizar e/ou realizar analises sofisticadas no openFOAM, o "aplicativo" denominado PyFoam pode ser uma ferramenta interessante. Pyfoam nada mais é que uma biblioteca de manipulação de arquivos desenvolvida em Python (linguagem interpretada de alto nível orientada a objeto). Entre as principais funcionalidades desta biblioteca estão: a compactação de dados de saída e avaliação de output na forma gráfica durante a evolução da simulação (bem semelhante aos softwares comercias), a manipulação dos arquivo texto de dicionário de forma durante o processo iterativo.

Como instalar esse "aplicativo"? Primeiro passo, em algumas distribuições alguns pacotes devem ser instalados, no caso do ubuntu basta instalar:

instalar os requisitos python-dev e python-numpy

baixar a versão mais recente do pyfoam no link abaixo:

http://openfoamwiki.net/index.php/Contrib_PyFoam#Downloads

descompactar o arquivo com o comando no terminal

tar -xvf PyFoam-0.5.6.tar

dentro da pasta PyFoam-0.5.6 descompactada abrir terminal executar o seguinte comando:

python setup.py install

Pronto o Pyfoam está instalado no sistema.

Para instalar em um local especificado basta executar o comando

python setup.py install --prefix=/home/nomeusuario/pastadeinstalacao

e incluir as seguintes variáveis de ambiente:

export PYTHONPATH=/home/nomeusuario/pastadeinstalacao/lib/python-2.3/site-packages:$PYTHONPATH

e

export PATH=/home/nomeusuario/pastadeinstalacao/bin:$PATH

Se o seu sistema for UBUNTU, basta instalar via terminal com o seguinte comando: sudo apt-get install pyfoam

Bem, uma vez instalado existem várias funcionalidades simples, porém interessantes. Podemos começar com a funcionalidade de verificação de caso, vá até a pasta "tut", entre em algum exemplo do tutorial execute o comando "pyFoamCaseReport.py --full-report .", deve aparecer toda a informação do caso setado, bem interessante quando não se conhece o caso. Cabe destacar que essa ferramenta não funciona para alguns solver mais recentes e complexos.

Outra funcionalidade interessante é o pyFoamPlotRunner.py. No caso no icoFoam, para ativar essa funcionalidade rode o icoFoam com o comando: pyFoamPlotRunner.py icoFoam. Assim, os gráficos de resíduo serão plotados no durante o processo iterativo. Infelizmente, essa funcionalidade aumenta o tempo de computação uma vez que consome recursos computacionais escrevendo os plots.

Se você já programa em python uma forma interessante é criar suas próprias forma de automatização utilizando as funções predefinidas na biblioteca pyfoam. No exemplo abaixo, o programa modifica a velocidade de uma condição de contorno especifica a partir do seu nome. Crie o arquivo texto com os seguintes comando:

#prototipo da chamada da função ParsedParameterFile da biblioteca pyfoam
from PyFoam.RunDictionary.ParsedParameterFile import ParsedParameterFile
# Arquivo que eu quero modificar
f=ParsedParameterFile("pitzDaily/0/U")
# percorrer todos os bondaryFields e modificar o campo com nome upper
for b in f["boundaryField"]:
if "upper" in b:
f["boundaryField"][b]["value"]="uniform (10 0 0)"
f["boundaryField"][b]["type"]="fixedValue"
#Escrever no arquivo U
f.writeFile()

Salvar o arquivo com o nome tes.py na pasta /incompressible/simpleFoam (pasta do tutorial que vou testar o programa python). Em seguida, executar o script com o comando "python tes.py" na pasta /incompressible/simpleFoam.

Bem, espero que este post seja útil de alguma forma.

7 comments:

  1. A biblioteca realmente é incrível.
    Python é como creme de avelã, com tudo fica bom!

    ReplyDelete
  2. Novas ferramentas para construção automática de malhas split-hex (hexaédricas) a partir de geometrias STL.

    como eu faço pra poder usar uma malha feita no netgen no openfoam, nao estou conseguindo descobrir.

    Obrigado

    Angelo

    ReplyDelete
  3. Olá, uso o Ubuntu 11.10 e via apt-get o pyfoam não é reconhecido como um pacote válido :S

    ReplyDelete
  4. Olá, Hanniel tudo bem??

    Provavelmente você não tem o repositório adequado para baixar o Pyfoam. Para tal você deve incluir ao seu sistema o repositório abaixo:

    URI: http://ppa.launchpad.net/cae-team/ppa/ubuntu
    Distribuição : Lucid
    Componentes: Main

    Essa adição de repositório pode ser feita no próprio synaptic, modificando as configurações do mesmo.

    Abraço,

    ReplyDelete
  5. Fábio, porque eu tenho que usar a distribuićão como sendo Lucid, sendo que a minha distribuićão é Natty?

    ReplyDelete
    Replies
    1. Porque hoje ainda não há quantidade de pacotes preparados para outros repositórios.

      Por outro lado, como os pacotes são muito independentes isso não é um problema.
      Pode ter uma visão melhor dos pacotes visitando a página CAE-Team no Launchpad.

      https://launchpad.net/~cae-team/+archive/ppa

      Filtre os pacotes disponíveis pela versão e constatará o que disse.

      Um abraço

      Delete
  6. Olá, não estou entendendo os gráficos. Como eu analiso os dados que estão sendo plotados?

    ReplyDelete