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.
A biblioteca realmente é incrível.
ReplyDeletePython é como creme de avelã, com tudo fica bom!
Novas ferramentas para construção automática de malhas split-hex (hexaédricas) a partir de geometrias STL.
ReplyDeletecomo eu faço pra poder usar uma malha feita no netgen no openfoam, nao estou conseguindo descobrir.
Obrigado
Angelo
Olá, uso o Ubuntu 11.10 e via apt-get o pyfoam não é reconhecido como um pacote válido :S
ReplyDeleteOlá, Hanniel tudo bem??
ReplyDeleteProvavelmente 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,
Fábio, porque eu tenho que usar a distribuićão como sendo Lucid, sendo que a minha distribuićão é Natty?
ReplyDeletePorque hoje ainda não há quantidade de pacotes preparados para outros repositórios.
DeletePor 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
Olá, não estou entendendo os gráficos. Como eu analiso os dados que estão sendo plotados?
ReplyDelete