January 22, 2008

Introdução ao método dos volumes finitos

Este post continua o assunto sobre o método dos volumes finitos discutido anteriormente.

A aproximação discreta de uma equação de conservação pelo método dos volumes finitos tem por objetivo dividir o domínio de cálculo em um certo número de subdomínios, nos quais a lei física de conservação seja feita válida, dentro de um certo grau de aproximação. Esta aproximação pode ser obtida de duas formas. A primeira forma é a utilização do balanço da propriedade conservada para cada um dos subdomínios. O segundo modo é a integração da equação de conservação, na forma conservativa, no volume do subdomínio. Evidentemente, ambos os métodos levam ao mesmo resultado, pois a equação de conservação se originou através de um balanço da propriedade em um volume finito, como mostrado na equação da continuidade, para a conservação de massa.

Considere, por exemplo, a equação da continuidade em duas dimensões espaciais, usando a geometria cartesiana. A figura abaixo (clique nela para aumentar) mostra um subdomínio do domínio bidimensional da equação e onde está representada a nomenclatura de determinados pontos dentro ou na superfície deste subdomínio ou volume finito, bem como os fluxos mássicos que atravessam cada face no intervalo de tempo ∆t.
Assim a variação da massa dentro deste volume, no intervalo ∆t, é dada pelo balanço
que dividindo pelo produto ∆t ∆x∆y leva aque é a equação discretizada para o volume finito em questão.

A equação acima também pode ser obtida através da integração da equação da continuidade (colocada na forma da primeira equação do post anterior), sem o termo em ρw, utilizando o operador integral abaixo
Assim, a aproximação discreta é obtida pelos dois procedimentos. Usualmente, é mais fácil obter a equação aproximada através da integração da equação de conservação na forma divergente, já que muitas grandezas têm balanços bem complexos.

Note que a equação discretizada ainda é uma expressão exata para a conservação de massa no volume em questão, pois a forma de cálculo dos fluxos médios através das faces e das densidades médias no volume ainda não foi especificada. A aproximação destas grandezas utilizando seus valores em pontos discretos da malha e em um dado instante de tempo é que introduz o erro da aproximação numérica.

A figura abaixo mostra a estrutura básica de uma malha unidimensional de volumes finitos. Usualmente, os valores das variáveis dependentes são armazenados nos centros dos volumes (P, W, E) ou nos centros de determinadas faces (w, e). Os valores necessários destas variáveis em outras posições são obtidos por processos convenientes de interpolação. Em um mesmo problema, algumas das variáveis dependentes podem ser armazenadas nos centros dos volumes, enquanto que outras ficam armazenadas em pontos sobre as faces. Assim, o método de volumes finitos pode utilizar várias malhas para um mesmo problema (malhas entrelaçadas).
Do que foi exposto acima, ficam bem claras as diferenças entre o método das diferenças finitas e o método dos volumes finitos. O primeiro se baseia na aplicação da equação diferencial em pontos discretos de uma malha e na utilização de aproximações das derivadas utilizando séries de Taylor. O segundo aplica a equação diferencial de conservação a subdomínios de uma determinada malha através da sua integração em cada volume. De fato, os termos de transporte convectivo são os responsáveis pelas maiores dificuldades numéricas na solução de equações diferenciais parciais onde funções de interpolação devem ser aplicadas.

Nesta seqüência de posts foram apresentados alguns conceitos de conservação de propriedade e discretização por volumes finitos. Analisando o exemplo da discretização unidimensional, como você estenderia a última figura para o caso bidimensional?

January 19, 2008

Balanço Populacional: Da Dinâmica da Presa-Predador ao CFD

Quando eu estava na escola existia quatro disciplinas de matemática no último ano, eram conhecidas como matemática I, II, III e IV, o mesmo acontecia com as outras disciplinas, desmembradas no quanto era possível. Tradicionalmente cabia a cada uma dessas disciplinas tratar de assuntos relevantes ao vestibular. Ocorre que em matemática I e II, e em Física I nós aprendíamos os conceitos de reta. Mas a primeira tratava de y=a*x+b, a segunda de y=m*x+p e a física, de x=x0+v*t. Até aí tudo bem. O que mais me impressionava era a quantidade de pessoas que realmente acreditava que uma coisa era diferente da outra. Como se fossem conceitos completamente diferentes e não concordantes.

Essa primeira historinha é para introduzir uma dos conceitos mais complexos e atuais da fluidodinâmica computacional, o balanço populacional. O "complexo" fica por conta da dedução matemática, extremamente rigorosa e abrangente o qual eu irei omitir aqui. Já o entendimento do que é o balanço populacional pode ser melhor alcançado através de um dos seus casos particulares que é o modelo simplificado da presa-predador*. E a nossa história começa assim:

Era uma vez em uma gigante ilha distante, vivia uma pacífica, grande e muito bem alimentada população de coelhos. A fartura de comida era ampla e não havia concorrentes para as deliciosas cenouras. Até que um dia, uma bem determinada população de raposas chega a essa ilha. Eles observam que a única comida disponível eram os coelhos. Como bons predadores, elas caçam os coelhos, que morrem servindo de alimento para as raposas. Por causa disso, a quantidade de coelhos na ilha diminui, pois morrem mais coelhos do que nascem. Por outro lado, as raposas se reproduzem, crescem e só vão morrer devido a velhice. Assim, nasce mais raposas do que morre. O número de raposas aumenta. Esse aumento ocorre com a diminuição da população de coelhos, que é a comida. Assim a raposas vão começar a passar fome e ocorre a inversão dos fatores: passa a morrer mais raposas (de fome e velhice) do que nascem ao mesmo tempo que o número de coelhos aumenta porque o número de predadores diminui. Esse quadro se alterna até que ocorra o equilíbrio (se ele existir).

O que eu acabei de fazer acima é descrever com palavras a dinâmica de uma população, ou melhor de duas: eu poderia dizer apenas que existe uma população que nasce, cresce e morre. A origem da cada uma das etapas e como elas são descritas seguem padrões específicos de cada espécie, ou seja, o número de filhos que uma espécie tem de um única vez e ao longo das vezes durante a vida é diferente entre cada espécie. O tempo que leva para crescer e atingir uma idade reprodutiva também, assim como são diferentes as possibilidades de causas de morte. Esse equacionamento geral é o que chamamos de balanço populacional, com todas as informações fornecidas, ele se torna o modelo de balanço populacional aplicado a um caso específico, mas ainda é balanço populacional. Assim, em um determinado momento do tempo eu tenho o número total de uma espécie no espaço físico que ela ocupa por grupos de idade e estatisticamente definidos por qualquer variável importante, como por exemplo, sexo e estado nutricional (que também são relevantes no nosso caso acima).

Para ficar bem claro, já em uma linguagem mais formal, o balanço populacional modela o número de uma população ao longo do tempo, do espaço físico (também chamado de variáveis externas) e do espaço de variáveis importantes para o meu problema (também conhecidas como variáveis internas). A essa grandeza nós denominamos, simplesmente de densidade numérica de uma população e assim, o balanço populacional estuda a conservação** da densidade numérica de uma população.

Ok, a essa altura você deve estar pensando: "eu entendi !" - espero !!! - "mas o que isso tem a ver com CFD ?".

Eu posso te afirmar seria muito mais difícil dizer onde o balanço populacional não é aplicável. Ele está em todo lugar, mas assim como aquela questão da reta que citei no começo, está escrito com diferentes formas nos diferentes ramos. No caso do CFD, mais precisamente no entendimento de fenômenos físicos, ele está presente em escoamento polidisperso multifásico, e esses são muito mais comuns do que aparenta, exemplos: quase todos os escoamentos da indústria do petróleo (e boa parte dos equipamentos), reatores multifásicos (80 % das reações ocorrem nesse esquema), processos de sedimentação/nucleação, em formação de sprays (que vai do inseticida da sua casa a motores de combustão), em coluna de bolhas, etc. Aqui nasce um verdadeiro novo mundo e entender esse novo mundo é a nova fronteira da modelagem de escoamentos multifásicos.

Talvez tenha ficado uma pergunta relevante: depois de encher tanto a bola do balanço populacional, me explica como foi que saímos da idade da pedra sem ele ?.

É que para dizer a verdade nós utilizamos o balanço populacional na idade da pedra, mas não sabíamos disso (pelo menos não até o início desse século).

Mas a pergunta foca o caso "CFD" versus "equipamento funcionando a muito tempo sem nada disso". Bom, só porque uma abordagem técnica é importante para o bom entendimento de alguma coisa (sob algum ponto de vista), não quer dizer seja a única forma de abordar a questão***, nem significa que seja necessário conhecer essa abordagem para resolver um problema específico . A indústria mundial cresceu de forma empírica, apenas "ontem" nós começamos a usar modelos modernos (com menos de 20% de erro) na construção/otimização de novas indústrias. A cada dia nós buscamos melhorar ainda mais nossas abordagens técnicas permitindo modelar processos e equipamentos com a menor margem de erro possível e assim otimizar não apenas o rendimento, mas os recursos naturais envolvidos. Qual é a vantagem ? Basta pensar que economizamos água e energia e geramos menos gases/fluídos poluentes quanto mais otimizado for o processo e que essas não são as únicas vantagens. Preciso justificar mais ? Nos últimos 20 anos a modelagem computacional "sem o CFD" fez milagres com as atuais plantas instaladas e ela ainda tem muito a contribuir, mas vai chegar uma momento que será necessário resolver o processo ainda mais perto e esse tipo de ganho virá de ferramentas com o CFD, e quando esse dia chegar (se bem que as vezes eu penso que ele já chegou) o CFD terá de estar preparado para atender certas necessidades, a maior parte delas trata de duas questões: limitação computacional versus modelagem física de "certos problemas". O balanço populacional tem uma peso computacional pequeno frente as alternativas para esses "certos problemas", daí sua importância e o motivo pelo qual se gasta milhões pesquisando essa área.

O balanço populacional é uma técnica muito geral, tão geral que possuí muitas limitações a cerca dos seus modelos de fechamento. Exemplo, no nosso caso acima (da presa-predador) eu não definir a velocidade com que cada espécie cresce, nem descrevi a quantidade de comida que as raposas consomem por dia, além de não ter dito quanto filhos cada espécie tem, etc. Sem essas informações é impossível resolver a matemática do problema. Esses modelos adicionais são os modelos de fechamento e são neles que estão as nossas maiores limitações, seja nesse exemplo, na modelagem do comportamento de ações na bolsa de valores ou na modelagem de escoamentos multifásicos.

Essa questão ainda vai voltar aqui. Agora que vocês sabem o que é balanço populacional de forma bem genérica e puramente filosófica, ficará muito mais fácil na hora de discutir detalhes emocionantes sobre essa abordagem, claro que com exemplos e estudos de caso (e eu prometo que será sem equações). Fico devendo esses exemplos práticos aplicados a CFD.

Curiosidade: O balanço populacional possuí termos técnicos que são derivados desse entendimento. Literalmente se fala em nascimento, morte e crescimento. Mesmo quando não estamos falando de coisas que nascem ou morrem literalmente a metáfora é mantida.

* É simplificado por n (número muito grande) razões, e é ainda mais simplificado do que o modelo simplificado porque eu não considero restrições para a presa a não ser o predador, e também não cogito a hipótese de que o número de predadores pode liquidar com as presas de uma vez só. Estamos falando de situações controladas, ok ?
** "Conservação" no sentido de conservação de grandeza física, não significa que a densidade numérica é constante.
*** Entro em detalhes sobre isso em outra ocasião.

January 18, 2008

Começando a entender o método dos volumes finitos

O método de volumes finitos é por vezes confundido com o método das diferenças finitas pelo fato de que, em vários casos, as equações discretizadas obtidas por ambos os métodos são iguais. Entretanto, os dois métodos têm bases de formulação bastante diferentes. Enquanto o método de diferenças finitas tem uma dedução puramente matemática, a partir das aproximações de derivadas usando séries de Taylor, a formulação do método de volumes finitos tem base física.

A maioria dos modelos matemáticos utilizados em problemas de Engenharia são baseados nos princípios de conservação, que representam uma dada lei física de preservação da integridade de uma dada grandeza, ao longo de um processo. Quando um princípio de conservação é expresso de forma matemática para uma região infinitesimal de um dado meio, obtém-se uma equação diferencial, que é a chamada equação de conservação da grandeza envolvida. Por exemplo, quando se expressa matematicamente a conservação de massa no escoamento de um fluido, a equação da continuidade é obtida, que, em geometria cartesiana, é representada pela seguinte equação diferencial parcialonde ρ é a densidade do fluido, t é o tempo, (x, y , z) são as três coordenadas cartesianas e (u, v , w) são as três componentes do vetor velocidade correspondentes às direções x, y e z, respectivamente. Outro exemplo pode ser dado pela equação de conservação da energia térmica para um meio fluido, originando uma das formas da equação da energia. Sob determinadas aproximações e em coordenadas cartesianas, esta equação de conservação pode ser escrita na forma abaixo
onde cP é o calor específico a pressão constante, k é a condutividade térmica, T é a temperatura e Q é a taxa de geração de calor no meio por unidade de volume. A equação acima é válida para um fluido puro ou para uma mistura não-reacional, com cP constante e efeitos de compressão e dissipação viscosa desprezíveis. Maiores detalhes sobre estas e outras equações de conservação comuns aos problemas de Engenharia podem ser encontradas nos textos clássicos de Fenômenos de Transporte.

Em geral, as equações de conservação apresentam termos que representam o acúmulo, o transporte convectivo, o transporte difusivo e a geração de uma dada grandeza. Veja, por exemplo, a equação da energia. O primeiro termo do membro esquerdo é o termo de acúmulo, enquanto que os outros termos deste lado da equação são termos de transporte por convecção. No membro direito da equação da energia, os três primeiros termos correspondem ao transporte difusivo, sendo o último o termo de geração. Por esta similaridade, as equações de conservação podem ser escritas na seguinte forma geral

onde φ é a grandeza conservada, Γ é a difusividade desta grandeza e S é o termo de geração. Note que esta equação generalizada é válida também para outros sistemas de coordenadas além do cartesiano, bastando para isto interpretar as variáveis (x, y , z) como sendo as coordenadas do outro sistema, e considerando S como sendo a soma do termo de geração com todos os outros termos existentes na equação de conservação original que não se enquadram nem na forma de termos de transporte e nem na de termo de acúmulo. Por isso, o termo S é, por vezes, chamado de "lixeira" da equação de conservação, na forma dada acima.

Esta forma para a equação de conservação é chamada de forma conservativa ou forma divergente, na qual os termos relativos aos fluxos convectivos, ρuφ, ρvφ e ρwφ, aparecem dentro das derivadas em relação às coordenadas espaciais, x, y , z. Qualquer outra forma é dita não-conservativa. A forma conservativa é a forma da equação obtida diretamente da forma integral da lei de conservação. Por exemplo, considere a equação da continuidade, cuja forma integral, válida para um volume finito fixo no espaço, é dada por

onde v é o vetor velocidade, de componentes (u, v , w), V é o volume finito no qual a conservação de massa está sendo aplicada, A é a superfície deste volume, n é o vetor unitário normal externo à superfície A e o ponto entre o vetor velocidade e o vetor normal à superfície indica o produto escalar. De fato, esta equação diz, simplesmente, que a variação da massa contida no volume é causada pela taxa líquida de massa que é transferida através da superfície do corpo.

Utilizando o teorema integral de Gauss (ou da divergência), que pode ser encontrado nas referências clássicas de Fenômenos de Transporte, a equação acima pode ser escrita na forma

onde · (ρv) é o divergente do fluxo mássico que, em geometria cartesiana, é expresso por


A equação acima é válida para qualquer volume V , de forma que o integrando deve ser nulo, o que origina a equação diferencial parcial na forma conservativa, dada pela primeira equação.

Na minha opinião, um bom conhecimento da equação de conservação é a primeira etapa para entender o método dos volumes finitos. No próximo post, vou abordar os princípios da discretização da equação de conservação pelo método dos volumes finitos.

Um abraço e até a próxima.

Referências:
[1] Apostila e notas de Aula do curso de mestrado de Fluidodinâmica Computacional (PEQ/COPPE/UFRJ).

January 16, 2008

CFD nem sempre é Fluidodinâmica Computacional

Como todos que lêem e acompanham o blog, CFD é a sigla para Computational Fluid Dynamics, ou seja, Fluidodinâmica Computacional no bom e velho português nosso de cada dia. Contudo, esta sigla também tem vários outros significados e nenhum deles refere-se a mecânica dos fluidos ou computadores. Vamos ver alguns deles.

Contract For Difference é o significado mais usado depois da nossa conhecida Fluidodinâmica Computacional. Neste caso, CFD refere-se ao contrato firmado entre o vendedor e o cliente onde o primeiro deverá pagar ao comprador a diferença entre o valor firmado no momento do contrato e o valor atual. Se o valor a ser pago for negativo, quem paga a diferença é o cliente. De fato, é uma sigla muito utilizada na área de vendas em vários países europeus e outros. "Esta" CFD não é permitida nos Estados Unidos devido à restrições de leis financeiras. Imagine se a "nossa" CFD também não fosse permitida por lá...

O Combined Fund Drive é um centro de arrecadamento de doações, caridades e possui inclusive um programa de voluntariados. É a CFD fazendo um mundo melhor!! No site é possível procurar instituições que precisam de doações (várias opções para facilitar a vida do doador) e se inscrever para os programas de voluntariado. O que achei estranho é o fato dos voluntários serem requisitados para conseguir mais doações. Eita!!

A Campbell Fisher Design e a Clear Focus Designs são empresas voltadas ao design gráfico de fotos, filmes, cartazes, logotipos e sites de internet. Visual bem legal! Será que eles também fazem trabalhos de Color Fluid Dynamics? Sei lá...

Na França, a Compagnie de Chemins de Fer Départementaux representa a companhia de trens e também usa a sigla CFD. O site possui informações bem interessantes sobre a história das linhas férreas e dos trens. E fotos bem legais também.

Agora, a sigla mais legal na minha opinião. Em Chicago, CFD refere-se ao departamento de bombeiros da cidade (Chicago Fire Department) e não acho que eles devam fazer simulações de combustão. Mas sem dúvida alguma, eles devem ser experts em como eliminar o processo de combustão!

Aposto que devem existir outros significados para CFD. Você conhece outros?

January 11, 2008

A origem da indústria do CFD

Uma rapidinha: eu encontrei um interessante link sobre a origem da indústria do CFD. Não confundir com origem da técnica, aqui estamos falando das empresas/softwares.

Tudo começa nesse link: Origins of the Commercial CFD Industry. Nele você encontrará links para a história de cada software, listado abaixo:
Há uma certa dança de cadeiras do quadro atual, exemplo o Fluent e o CFX hoje são do mesmo grupo. Mas origem é origem, não é quadro atual. A lista acima é razoavelmente completa. Eu senti falta apenas do link para origem do OpenFOAM.

January 10, 2008

Instalação do OpenFOAM para quem descobriu o Linux ontem à noite

O OpenFOAM funciona muito bem no Linux e pode ser compilado para ser usado em outros sistemas operacionais. Contudo existe uma certa dificuldade na compilação do OpenFOAM para Windows pois este último não é case-sensitive. E, acreditem, uma das dificuldades é descompactar o código fonte do OpenFOAM sem estragar sua estrutura de diretórios e arquivos. Já existe uma versão Windows do OpenFOAM rodando em Cygwin, mas não é tão boa (além de ainda estar com os recursos incompletos) como o original em Linux. Mas não é sobre isso que eu gostaria de falar.

O uso do OpenFOAM como ferramenta sofre com a falta de conhecimento ou mesmo preconceito dos usuários em usar o Linux como sistema operacional. Eu mesmo já passei por isso em 2000. Naquela época era necessário reconfigurar o sistema para apenas trocar de monitor! Fiquei 4 anos sem querer olhar para um computador em que o dito estivesse instalado. Mas posso dizer também que nesses 8 anos, o Linux evoluiu muito (mas muito mesmo!) em termos de amadurecimento, usabilidade e disponibilidade de programas (inclusive de engenharia!).

Por isso, este post é para aqueles que gostariam de usar o OpenFOAM, mas não tem familiaridade com o Linux. Todo o tutorial de instalação descrito aqui será realizado por linha de comando, digitados em uma tela de terminal - a famosa "tela preta". Os usuários de KDE normalmente usam o konsole e os de GNOME usam o gnome-terminal como programa de terminal. Fica à sua escolha. Quando o terminal é aberto, o diretório padrão é HOME do usuário. Isso quer dizer que se o nome do usuário é mariazinha, você estará no diretório /home/mariazinha ao abrir o terminal. E é a partir daí que começamos a instalar o OpenFOAM. Bem, vamos lá!


A primeira coisa a fazer é criar os diretórios onde você deve baixar os arquivos do site do OpenFOAM (http://www.opencfd.co.uk/openfoam/linux.html). O site que eu coloquei aí é para baixar o OpenFOAM-versao (versão que vc quer instalar - recomendado que seja a última!). A versao dos programas abaixo vai depender daquela que você baixar do site.

Vamos criar os diretórios com o comando mkdir. Mas antes, um detalhe que é vital na instalação. O Linux diferencia as letras maísculas das minúsculas e a instalação deve ser feita no diretório OpenFOAM (conservando as diferenças entre maísculas e minúsculas - case sensitive)!! Preste atenção a isso! Digite o comando abaixo (o sinal % significa apenas que você deve digitar o comando no terminal, ok?):


Código:
% mkdir OpenFOAM

Pronto, criamos o diretório chamado OpenFOAM. Vamos conferir? Digite ls no terminal... O diretório OpenFOAM vai aparecer. Se você criou o diretório Openfoam, ihhh... pode parar por aí e começar tudo de novo.... Beleza, então criamos o diretório OpenFOAM. Vamos agora entrar dentro desse diretório e criar mais outro nele. Digite no terminal:

Código:
% cd OpenFOAM
% mkdir linux

Pronto, criamos o diretório linux dentro do OpenFOAM. Ok, agora você pode baixar os arquivos no site. Faça o download dos arquivos da seguinte forma:
  • Arquivo OpenFOAM-versao.General.gtgz --> dentro do diretório OpenFOAM
  • Arquivo OpenFOAM-versao.linuxGcc4Opt.gtgz --> dentro do diretório OpenFOAM
  • Arquivo gcc-versao.linux.tgz --> dentro do diretório OpenFOAM/linux
  • Arquivo paraview-versao.linux.tgz --> dentro do diretório OpenFOAM/linux
  • Arquivo j2sdkversao.linux.tgz --> dentro do diretório OpenFOAM/linux
Legal, tendo terminado o download e colocado cada arquivo no local correto, podemos passar para a próxima etapa. Estes arquivos contém todos os arquivos fontes, binários, exemplos, etc. compactados do OpenFOAM e dos programas que ele usa (gcc, paraview e java). Vamos então descompactar os arquivos. No diretório OpenFOAM, digite:

Código:
% tar xzvf OpenFOAM-versao.General.gtgz (e veja a descompactação na tela)
% tar xzvf OpenFOAM-versao.linuxGcc4Opt.gtgz (e veja a descompactação na tela)

Acabamos de descompactar o corpo do OpenFOAM. Vamos descompactar agora os aplicativos. Digite:

Código:
% cd linux
% tar xzvf gcc-versao.linux.tgz (e veja a descompactação na tela)
% tar xzvf paraview-versao.linux.tgz (e veja a descompactação na tela)
% tar xzvf j2sdkversao.linux.tgz (e veja a descompactação na tela)


Pronto, acabamos de instalar o OpenFOAM no computador!! O único problema, é que o Linux ainda não sabe disso!! E a gente tem que informar ao sistema operacional aonde o OpenFOAM está instalado. Para isso vamos editar o arquivo .bashrc (isso mesmo, tem um ponto na frente do arquivo - significa que ele é oculto) que se encontra no diretório raiz do usuário (/home/mariazinha, por exemplo). Vamos pra esse diretório digitando:

Código:
% cd ~

Agora vamos editar o arquivo .bashrc usando o editor de texto kedit (poderia ser outro como gedit, kate, kwrite, vim), com o comando:

Código:
% kedit .bashrc

A tela do editor de textos vai aparecer. Coloque no final do arquivo as duas linhas seguintes

# Configuração do OpenFOAM
. $HOME/OpenFOAM/OpenFOAM-versao/.OpenFOAM-versao/bashrc
e salve o arquivo. Pronto, digite o seguinte comando:

Código:
% . $HOME/.bashrc

Vão aparecer três linhas referentes ao reconhecimento do OpenFOAM pelo sistema. Pronto, toda vez que você abrir o terminal, essas linhas vão aparecer e os comandos do OpenFOAM vão estar disponíveis.

Para finalizar com chave de ouro, vamos testar um caso de simulação. Copie os casos exemplo (tutoriais) do OpenFOAM para um outro diretório. É bom fazer isso, pois assim podemos alterar os parâmetros da simulação à vontade, sabendo que o original está em outro diretório. Então crie o diretório com o seguinte comando:

Código:
% mkdir -p $HOME/OpenFOAM/${LOGNAME}-versao/run

Agora vamos copiar os tutoriais da distribuição do OpenFOAM para o diretório run, criado com o comando acima. Digite:

Código:
% cp -r $WM_PROJECT_DIR/tutorials $HOME/OpenFOAM/${LOGNAME}-versao/run

Pronto, vamos testar o caso 2D do escoamento laminar em uma cavidade com parede deslizante. Vamos para o diretório:


Código:

% cd $HOME/OpenFOAM/${LOGNAME}-versao/run/tutorials/icoFoam

Crie a malha:

Código:
% blockMesh . cavity

Rode a simulação:

Código:
% icoFoam . cavity

E vamos ver os resultados:

Código:
% paraFoam . cavity

Todos os detalhes de como usar o OpenFOAM (criar malha, rodar a simulação e visualizar os resultados) podem ser encontrados no Guia de Usuário (OpenFOAM/OpenFOAM-versao/doc).

Não posso deixar de mencionar a importância do aprendizado do sistema operacional Linux nesse meio tempo, né? Sem saber o sistema, o uso do OpenFOAM também pode ficar limitado e muitos dos recursos que ele oferece podem ser sub-utilizados. Existe muito material na internet sobre o mundo do pinguim. Dê uma procurada por aí....

Espero ter ajudado ao pessoal que ainda não conhece o Linux (mas, tendo uma ferramenta CFD gratuita e com código aberto, você não vai fazer uma força pra aprender??).

Obs.: Este post foi adaptado de uma mensagem minha postada no fórum do CFD-Brasil.

January 2, 2008

Finalmente, o OpenFOAM

Me dei conta que em nenhum post desse blog comentei sobre o OpenFOAM. Incrível, pois usei esse pacote CFD durante toda a minha tese de doutorado, já escrevi artigos sobre o dito e sem dúvida recomendo aos curiosos, estudantes e profissionais da área. O OpenFOAM (Field Operation And Manipulation) é um pacote CFD gratuito de código livre estruturado para operar e manipular campos tensoriais aplicado à fluidodinâmica computacional. A tecnologia do OpenFOAM é baseada em um conjunto eficiente e flexível de módulos escritos em C++ que são usados com o intuito de construir:
  • Solvers para resolver problemas específicos de engenharia que envolvam campos vetoriais;
  • 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;
  • Bibliotecas de expansão usadas pelos solvers e utilitários, tal como uma biblioteca de modelos físicos.
Contudo, a aceitação do OpenFOAM pela comunidade CFD no Brasil ainda é muito baixa, talvez pela enorme popularidade dos softwares comerciais e pela falta de conhecimento por parte dos usuários de outras opções viáveis. Mas com isso, o usuário perde algo importantíssimo ao usar pacotes CFD comerciais: a liberdade. Como assim?

A capacidade de verificar a modelagem, modificar e implementar novos aplicativos fornece ao usuário possibilidades infinitas, sendo possível resolver dos problemas simples aos mais complexos. Os softwares comerciais são "caixas pretas" onde o detalhamento interno do solver fica exposto em um manual, mas não o algoritmo ou a programação. O usuário não tem acesso aos detalhes dos modelos, dos métodos numéricos e fica restrito ao o que é oferecido pelo programa, com poucas chances de alteração (usualmente, bem limitadas).

A liberdade do acesso ao código fornece ao usuário a oportunidade de analisar e estudar o algoritmo e modelos, alterar o código (modelos, métodos numéricos, forma de malha, o que você quiser!) para ajustá-lo ao seu problema em específico. Contudo, o usuário de OpenFOAM que quiser alterar algum código deve possuir conhecimentos de C++ e ler os manuais.

Para usar este pacote CFD, faça o download gratuito do OpenFOAM (multi-plataforma), estude CFD, faça os tutoriais descritos no manual, estude mais CFD, veja as dúvidas postadas por outros usuários na lista de discussão do OpenFOAM, estude mais um pouco de CFD e troque algumas idéias aqui no blog. Essas seriam as mesmas recomendações que eu faria a alguém que fosse começar a usar um pacote CFD comercial, menos a parte de pagar pela licença do programa.

Para quem quiser mais detalhes, leia a série de artigos publicados sobre o OpenFOAM no CFD-Brasil.