December 19, 2011

Lançado o OpenFOAM 2.1

Hoje, 19 de Dezembro de 2011, foi lançado o OpenFOAM 2.1

Dessa vez, a quantidade de atualizações foi significativa e, do meu ponto de vista particular, impactante.

Implementação do AMI, modificações na modelagem multifásica, inclusão de um novo modelo de turbulência e de combustão,  novas implementações para as condições de contorno, inclusões de outros métodos numéricos, entre outras.

Estou quase migrando para a 2.1... quase.

October 3, 2011

Anúncio: NUMAP-FOAM no Brasil

Numerical Modelling of Coupled Problems in Applied Physics
with OpenFOAM® (NUMAP-FOAM-Br)


Escola de Verão 2012 na Universidade Federal do Rio de Janeiro
Escola de Química e Programa de Engenharia da COPPE
Rio de Janeiro, RJ; 1 a 15 de Fevereiro de 2012



Em uma parceria, a Escola de Química e o Programa de Engenharia Química da COPPE anunciam a primeira edição da Escola de Verão Brasileira em Problemas Numéricos Aplicados usando OpenFOAM® (NUMAP-FOAM-Br) para alunos de Pós-Graduação e jovens pesquisadores a acontecer no Rio de Janeiro, Brasil. Este evento é baseado na Summer School (NUMAP-FOAM) que ocorre anualmente em Zagreb, Croácia, e organizado pelo Prof. Hrvoje Jasak, desenvolvedor do OpenFOAM®. Em sua versão latina, o NUMAP-FOAM-Br está sendo organizado pelos integrantes do Laboratório de Termofluidodinâmica da COPPE/UFRJ e supervisionado pelos Profs. Luiz Fernando Silva (EQ/UFRJ) e Paulo Lage (PEQ/COPPE/UFRJ).


Descrição do evento
A Escola de Verão tem o intuito de fornecer orientação e treinamento no uso e programação em OpenFOAM® para um pequeno grupo de estudantes e pesquisadores envolvidos em trabalhos de pesquisa. A ideia da Escola de Verão é expandir os conhecimentos em modelagem de problemas avançados, métodos numéricos e programação, usando o OpenFOAM® como ferramenta de trabalho. A aplicação do OpenFOAM® aos projetos de pesquisa terá orientação direta e trabalho prático no código.
Aulas e palestras em tópicos selecionados, como métodos numéricos, programação e modelagem, serão apresentadas de acordo com a necessidade dos alunos. Note que, para garantir a qualidade do trabalho e da supervisão, o número de vagas será limitado.

Local e data

A Escola de Verão ocorrerá em 11 dias de trabalho sob supervisão dos Profs. Luiz Fernando Silva e Paulo Lage e com auxílio de especialistas locais em OpenFOAM®, incluindo os alunos de doutorado Jovani Favero e Livia Jatobá, entre outros. Tutoriais, palestras e trabalhos em grupo vão acontecer de 1 a 15 de Fevereiro de 2012 na sala de aula do Laboratório de Termofluidodinâmica do Programa de Engenharia da COPPE, Universidade Federal do Rio de Janeiro, Campus Ilha do Fundão.


Como participar: NUMAP-FOAM-Br 2012
Para participar, pedimos que escrevam em uma página a descrição do projeto que querem trabalhar durante o NUMAP-FOAM-Br, com os problemas atuais e os objetivos a serem atingidos na Escola de Verão. A participação é aberta a qualquer aluno de pós-graduação e graduação inscritos em universidades assim como pesquisadores pós-doc. Este evento não está restrito a universidades brasileiras, mas encoraja que alunos de universidades fora do Brasil também participem. Neste caso, a comunicação será em inglês.

Note que este NÃO é um curso introdutório de OpenFOAM®. Conhecimento prévio do projeto e do software são pré-requisitos para participação no evento.


O prazo para submissão dos projetos é 15 de Novembro de 2011. Os candidatos selecionados serão informados até o dia 20 de Novembro de 2011.

Acomodação e custos
Participantes da Escola de Verão devem se planejar para cobrir suas despesas de viagem e acomodação. O ideal é que os participantes tragam laptops para desenvolvimento de seus projetos. Será cobrada uma taxa de registro (após seleção do projeto) no valor de R$ 150,00 por participante. Este evento não é financiado por nenhuma empresa ou agência pública de fomento.

Contato
Para maiores detalhes e submissão da proposta de projetos, entre em contato pelo e-mail numapbr@notasemcfd.com. Você também pode tirar dúvidas pelos comentários deste blog.

September 7, 2011

Tutorial para instalação do OpenFOAM-1.6-ext no Ubuntu 11.04

Caros leitores,

Eu mais o Luiz Fernando estamos atualmente em Zagreb/Croácia participando da escola de verão (NUMAP Summer School 2011).

Nem precisa comentar que é uma experiência única. Tem experts em diversas áreas dentro da grande área de CFD e claro, estamos em contato direto com pessoas que conhecem a fundo o gigantesco "core" do OpenFOAM.

Mas sem mais demoras, a verdadeira razão por estar escrevendo este pequeno post é divulgar um tutorial sobre a instalação do OpenFOAM-1.6-ext no Ububtu 11.04 que O colega aqui do curso Nebojsa Gavrilov fez .

Reparem que em todos os comandos aparece OpenFOAM® ao invés de OpenFOAM. Tenham cuidado com o Ctrl C + Ctrl V, pois vocês devem usar somente OpenFOAM, sem o ®, senão terão problemas. Defendendo o Nebojsa agora, este não foi um erro dele, o próprio editor do site do OpenFOAM extended põem automaticamente o ®. Quem já escreveu lá sabe do que estou falando.

Bom, espero que o tutorial seja muito proveitoso a todos vocês. Algumas dicas eu já havia dado em um antigo post, mas considero o link acima mais completo e mais detalhado para iniciantes em linux.


August 28, 2011

Base de dados da Elsevier

Recentemente fiz um curso de treinamento da Elsevier (oferecido gratuitamente na UFRJ através da biblioteca do CT).
Aprendi várias coisas legais.  Não me cabe aqui discorrer sobre tudo que aprendi e não sabia, mas posso dizer três coisas:

  1. O material de apoio, que nos foi entregue impresso no dia, e as apresentações estão disponíveis para download gratuitamente na internet. Vale apena dar uma olhada. O material é bem completo e permite ter um amplo entendimento sobre a plataforma da Elsevier. Depois de 6 anos fazendo pesquisas eu percebi que ainda não uso tudo que eu poderia usar.
  2. Não consigo criar RSS de uma pesquisa no Chromium. Não consigo criar um RSS de uma pesquisa se não desabilitar o "bloqueador de pop-up". Essas são duas observações distintas. Eu já conhecia esse recurso a algum tempo, mas como não conseguia criar eu achava que o problema não era meu. Mas, ao ver que a palestrante não falou nada, eu percebi que podia estar ligado ao sistema operacional (uso o GNU/Linux) ou ao navegador. De onde conclui o que observei na minha máquina com o GNU/Linux. Por ter funcionado, não testei no Windows. Se não sabe o que é RSS, precisa ler esse tópico aqui e, se for de sua vontade, aproveite para assinar o nosso blog também ! :D
  3. Eu aprendi a pronunciar "Elsevier" com a seguinte intonação: el--vier. Mas a aprendi no curso que a pronuncia correta é: el--vier. Encontrei essa informação histórica que explica isso. Resta saber se eu vou me acostumar com a nova forma de pronunciar a palavra.

August 24, 2011

Os segredos por trás de uma mancha de café

Olá leitores,
hoje vi um vídeo que me fez lembrar como é complexa a análise dos efeitos da tensão superficial no estudo da mecânica dos fluidos! Ainda mais incluindo a presença de partículas de diferentes geometrias!

O vídeo mostra a movimentação de partículas em uma gota evaporando. Partículas esféricas possuem comportamento diferente de partículas em formato de bastão. Para complicar ainda mais a análise, foi realizado também um experimento onde a tensão superficial do líquido foi alterada pela adição de um tensoativo!


Achei o vídeo lendo um site sobre fluidodinâmica muito interessante:  o Fuck Yeah Fluid Dynamics. O nome é sugestivo. Acho que os autores devem gostar bastante de mecânica dos fluidos! A propósito, não consegui encontrar muita informação sobre os autores, mas existem vários outros videos interessantes no site. Fica a dica.

Até a próxima.

August 23, 2011

Uma Nova Era no "Notas em CFD"

Caros leitores, hoje, inauguramos uma nova era no Notas em CFD.

Primeiro, como os leitores que frequentam o site já devem ter percebido, foi feito uma remodelagem completa na última semana. Agora temos um design moderno, compatível com os novos templates do blogger.

Também foram criados páginas estáticas (observe a barra abaixo do título do blog) com informações sobre o blog, sobre os autores e informação de contato (por hora, há apenas uma forma de contato, mas no futuro ... quem saber ?). Para os novos leitores, a página sobre o blog poderá levá-lo a atmosfera de quando o blog foi criado, para quem nos lê desde sempre, trará (espero) um boas lembranças...

Outras pequenas modificações, como botões para facilitar a vida de quem quer compartilhar um tópico em redes sociais também foram feitas. Veja os botões em cada tópico.

[update] Um comentário me fez lembrar de colocar a página de comentários embutida na página do tópico. Mais um item para a lista de modificações [/update]

Mas talvez a modificação mais importante seja o domínio próprio. Sim, agora estamos com domínio próprio. Pode usar: http://notasemcfd.com ou http://www.notasemcfd.com.

Continuamos a utilizar a plataforma do blogger, então, os velhos nomes continuam funcionando. Nenhum link do site quebrou por causa dessa modificação.

Sejam bem vindos a essa Nova Era, que eu espero que seja de muito tópicos e interação.

Obrigado a todos (leitores e autores) por te feito desses mais de 4 anos de blog um sucesso.

August 17, 2011

SGI compra a OpenFOAM Ltda

Havia passado despercebido por mim que no último dia 15 de agosto a SGI comprou a OpenFOAM Ltda, criou uma fundação (The OpenFOAM Fundation) para gerenciar o código fonte deu uma reviravolta na minha cabeça. Bom, exageros a parte, a reviravolta fica restrita a parte profissional da cabeça que lida com o OpenFOAM.

Francamente, ainda é muito cedo para dizer tudo que eu gostaria de saber, mas posso adiantar algumas coisas:
  1. A SGI é uma das maiores empresas do mundo computacional, veja só a lista de produtos. Isso quer dizer que as forças envolvidas ganharam um upgrade e, o OpenFOAM, ganha status de competidor comercial. 
  2. O código fonte foi mantido na GPL, mas parece que eles vão endurecer as regras em relação a licença. Quero dizer: eles vão cobrar que licença seja respeitada pelos outros e, eu pelo menos, espero que eles apliquem essa exigência adicional neles mesmos também. Tenho esperanças, a SGI não é nenhuma empresa pequena que precise desse único produto para viver.
  3. Alguma coisa vai acontecer. Não se iluda. Até o final do ano que vêm, alguma coisa acontece de significativo nessa história.
  4. Tenha esperanças de que aquela guerra infantil sobre o uso da marca registrada tenha um fim e que a política de desenvolvimento seja de longo prazo, permitindo não haver grandes modificações no código fonte a cada versão lançada.
"Alea jacta est" (César, 49 A.C.)

August 16, 2011

simpleFoam: Estudando o fvSchemes

Seguindo a mesma linha de raciocínio do tópico no qual apresentei o controlDict do simpleFoam chegou o momento de apresentar o fvSchemes (não deixe de ler esse texto se não entendeu porque estou fazendo isso agora).

fvSchemes contém informações sobre os esquemas numéricos que são utilizados nas diferentes partes de discretização do modelo. O arquivo em questão está replicado abaixo.


FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

ddtSchemes
{
    default steadyState;
}

gradSchemes
{
    default         Gauss linear;
    grad(p)         Gauss linear;
    grad(U)         Gauss linear;
}

divSchemes
{
    default         none;
    div(phi,U)      Gauss upwind;
    div(phi,k)      Gauss upwind;
    div(phi,epsilon) Gauss upwind;
    div(phi,R)      Gauss upwind;
    div(R)          Gauss linear;
    div(phi,nuTilda) Gauss upwind;
    div((nuEff*dev(grad(U).T()))) Gauss linear;
}

laplacianSchemes
{
    default         none;
    laplacian(nuEff,U) Gauss linear corrected;
    laplacian((1|A(U)),p) Gauss linear corrected;
    laplacian(DkEff,k) Gauss linear corrected;
    laplacian(DepsilonEff,epsilon) Gauss linear corrected;
    laplacian(DREff,R) Gauss linear corrected;
    laplacian(DnuTildaEff,nuTilda) Gauss linear corrected;
}

interpolationSchemes
{
    default         linear;
    interpolate(U)  linear;
}

snGradSchemes
{
    default         corrected;
}

fluxRequired
{
    default         no;
    p;
}

// ************************************************************************* // 

Da mesma forma que no caso do controlDict, esse arquivo também começa com o dicionário FoamFile e possui 7 outros dicionários (que na verdade o manual chama de sub-dicionário, porque é um dicionário dentro de outro dicionário, mas eu continuarei a defini-lo como dicionário nesse texto).

Todos os dicionários são obrigatórios, ainda que seja para dizer que não há termos dessa ou daquela característica no modelo/aplicativo que se está utilizando:
  • ddtSchemes -  Discretiza o termo da derivada temporal do modelo, se existir. No caso, se o problema for estacionário (como o simpleFoam), usa-se steadyState como opção. Se o problema for transiente, as opções, segundo o manual, são: Euler, método de Euler de primeira ordem explícito, backward, método de Euler de segunda ordem implícito, CrankNicholson, método de Crank-Nicholson.
  • snGradSchemes - esse dicionário contém informações de como discretizar os gradientes normais da superfície, avaliado na face da célula.

    As opções básicas são:
    corrected, correção explícita de não ortogonalidade da malha, uncorrected, sem correção não-ortogonal e limited, "correção" não-ortogonal baseada no valor de um parâmetro (phi).

    O uso da opção
    limited consiste informar 'limited phi' na opção desejada e phi é um valor que varia de 0 a 1 tal que, de acordo com a tabela 4.7 do manual, :

  • gradSchemes - esquemas para discretização do gradiente. A rigor, há três métodos disponíveis, Gauss, leastSquare e fourth. São métodos tradicionais, onde os primeiros são de segunda ordem e o terceiro é de quarta ordem. O método de Gauss requer que o usuário defina o tipo de interpolação, dos quais linear e upwind são opções típicas.

    No caso do simpleFoam, esse dicionário é responsável por discretizar o gradiente de pressão, grad(p), e o gradiente de velocidade grad(U).
  • divSchemes - esquema para discretização do termo divergente. Segundo o manual, há apenas uma única opção disponível, Gauss (existem a opção não documentada explicit, mas não vou falar sobre isso). Porém, há vários esquemas de interpolação e isso faz as coisas serem bem mais complicadas nesse dicionário.

    Nem todos os tipos de metodologia de interpolação são indicadas para o divergente, é preciso saber escolher.

  • laplacianSchemes - esquema para discretizar o laplaciano. Segundo o manual, há apenas uma única opção disponível, Gauss, e não imagina a minha surpresa ao constatar que isso é verdade. A sintaxe é:

    Gauss EsquemaDeInterpolacao snGradScheme


    Tudo que eu posso fazer nesse ponto do estudo é contemplar as escolhas feitas nos tutoriais, ou melhor, a escolha feita. Todos usam Gauss linear. Pelo que pude entender, isso é mesmo o usual.

    Também parece ser usual usar corrected ou limited e ajustar o valor do parâmetro phi conforme a necessidade entre 0, 0.333, 0.5 e 1. A maior parte dos tutoriais utilizaria 1. Digo utilizaria e não utiliza, por que, na verdade, os tutoriais utilizam a opção corrected.

  • fluxRequired - esse dicionário lista as variáveis que são acopladas com o calculo do fluxo, em outras palavras, são variáveis que dependem do fluxo para serem determinadas. Na dinâmica dos fluidos, a principal variável nessa lista é a pressão (quando há acoplamento pressão-velocidade). Há casos, em análise de sólidos, onde pode ser necessário calcular o fluxo de calor.

    Nesse termo, ou o usuário está utilizando um aplicativo existente e o tutorial vai esclarecer quais são as variáveis que devem ser listadas aqui, ou o usuário é um programador que está criando o novo aplicativo e, portanto, saberá perfeitamente o que deve ser resolvido antes do fluxo ser calculado (afinal, a modelagem e a programação do código fará isso ser claro a ele!).

  • interpolationScheme - esse dicionário define o método de interpolação de uma certa variável na face. Embora exista uma grande quantidade de opções, isso não chega a ser um problema pois trata-se de uma simples interpolação da variável. No caso do simpleFoam, esse termos é responsável por calcular o valor da velocidade das faces do volume.
Importância do método numérico

Na descrição de todos os dicionários eu poderia ter escrito: "é necessário compreender bem o problema e o método numérico para fazer as escolhas adequadas". De fato, é fundamental conhecer o método numérico para escolher adequadamente as opções em cada termo.

O método numérico é o coração do código. É o que realmente é feito desde o começo. A modelagem é apenas um produto que deve ser visto com detalhes, claro, mas que é obtido com a "máquina". Dessa forma, é ilusão pensar que um usuário será capaz de dominar o OpenFOAM se não conhecer o mínimo dos métodos numéricos. Para dizer a verdade, é possível que ele tenha que conhecer os métodos numéricos de forma muito mais ampla do que se poderia imaginar. O fvScheme é a interface que seleciona o método de discretização e interpolação e, portanto, de funcionamento da máquina e depende do usuário fazer com que a metodologia seja suficiente para obter uma forma final adequada. Portanto, concluí-se que o usuário deve aprender como o método numérico funciona.

Entendendo um pouco mais sobre os dicionários de discretização

Permito-me copiar o termo de divergente descrito acima para esse ponto do texto.
divSchemes
{
    default         none;
    div(phi,U)      Gauss upwind;
    div(phi,k)      Gauss upwind;
    div(phi,epsilon) Gauss upwind;
    div(phi,R)      Gauss upwind;
    div(R)          Gauss linear;
    div(phi,nuTilda) Gauss upwind;
    div((nuEff*dev(grad(U).T()))) Gauss linear;
}
Esse termo possui uma chave definida como default e tanto aqui como na maioria dos dicionários desse e de todos os tutoriais, a opção para essa chave é 'none'. Nesse caso em especial, isso significa que todos os divergentes que vão ser resolvidos devem ser declarados manualmente no arquivo fvSchemes. Isso não é um grande problema quando se quer apenas resolver alguma coisa com mesma modelagem de um tutorial, mas se experimentar modificar o modelo de turbulência verá que há outras declarações que devem ser feitas. Nota: ao tentar resolver o caso, o OpenFOAM com definições incompletas o o programa vai emitir uma mensagem de erro, bem direta. É simples, mas chato e nem sempre rápido.

Usar uma opção diferente de none como default não evita que alguns termos tenham que ser declarados. Isso acontece porque o programador possui meios de forçar o usuário a declarar manualmente um certo termo. O programador faz isso porque acredita que o usuário deve olhar para aquele termo com mais atenção e carinho.

A grande questão da interpolação dos termos de divergente, gradiente e laplaciano

Descobri ao estudar o OpenFOAM que apenas depois de eu ter lido o manual do programador vou ser capaz de explicar melhor cada termo que aparece nesse arquivo.

Esse arquivo é, sem dúvida alguma, o mais complicado de todos os arquivos de configuração do OpenFOAM.

Mas eu insisto em colocar um recomendação básica simples nesse texto, além da evidente "aprenda métodos numéricos e estudo melhor o código do OpenFOAM". E a recomendação para o usuário considerar com carinho as opções usadas nos tutoriais e na ausência dessas usar linear ou upwind com um bom refino de malha. Não raro, o ideal é usar o método muito mais robusto, mas para fazer isso o usuário precisa aprender métodos numéricos. Se ele não quiser fazer isso, vai ter que se contentar com o que está escrito aqui.

Repito novamente para quem não está prestando atenção no texto: Para usar o OpenFOAM, com todo o poder que ele possui, é fundamental conhecer o método numérico.

Sim, estou sendo chato nisso, porque não é algo trivial e os usuários do FLUENT e do CFX não possuem esse pré-requisito para usar o que os programas possuem de bom. Por exemplo, esse programas possuem apenas 4 métodos de interpolação dos termos de divergente, gradiente e laplaciano. Eles normalmente escolhem o básico (tal qual foi minha recomendação aqui) e usualmente aplica os mesmo método a todos os termos mencionados. O OpenFOAM possui quase 70 métodos de interpolação que podem (e não que devem) ser usados nos termos de divergente, gradiente e laplaciano. E cada termo pode ter uma definição diferente. Faça uma escolha errada e adeus solução.

Informações adicionais e o manual do OpenFOAM

Infelizmente, o manual do OpenFOAM não é completo. O manual é muito, mas muito incompleto. Ok, todos os manuais são superficiais, mas informações como "algumas vezes o usuário será obrigado a declarar um dado termo no fvScheme que o programador exige que assim seja feito" ou mesmo a simples lista dos métodos disponíveis devia ser um pouco mais completa. Ter referências seria perfeito, mas não espere isso do manual do OpenFOAM.

Portanto, a melhor, senão a única, forma de aprender sobre os métodos do OpenFOAM é colocar a mão na massa e estudar o código. Sim, o código. A vantagem do OpenFOAM é o fato de ser código livre e lhe dar direito de ver exatamente aquilo que está implementado. Usar isso é o que torna possível ir além.

O manual do programador também ajudará muito na análise do problema, mas assim como o manual do usuário não vai dizer tudo que nós gostaríamos de saber.

Agradecimentos

Por fim, lembre-se, você certamente precisa de ajuda. Esse tópico, por exemplo, somente tem a quantidade de informações que ele possui porque eu tirei dúvidas com a Livia, o Jovani e o Luiz. Eles possuem mais experiências que eu, tanto no uso prático do programa, pois eu estou começando no OpenFOAM, quanto nos conceitos teóricos, pois o Luiz já lecionou uma disciplina apenas para falar sobre isso e eu, até hoje, não conheço os métodos além da superfície e não tenho grandes experiências com os diferentes métodos numéricos e de discretização disponíveis. Na verdade, isso é uma conclusão rápida derivada do fato de que os aplicativos são mal documentados. Não há caminho fácil se quiser realmente mergulhar no entendimento do OpenFOAM, mesmo como simples usuário.


Para não esquecer
Quero lembrar que ainda estou utilizando o OpenFOAM-1.6-dev. Apesar de haver algumas diferenças, nada do que apresentei aqui difere muito das versões posteriores. Isso não será sempre verdade no futuro, portanto, fique atento ao fato de que estou utilizando o OpenFOAM-1.6-dev. 

July 14, 2011

OpenFOAM: o controlDict e o writeInterval

Olá leitores,
no mês de maio o J.F.Mitre falou um pouco sobre arquivo controlDict no estudo de um caso tutorial do simpleFoam. O objetivo deste post é esclarecer um pouco mais sobre um dos parâmetros deste arquivo, o writeInterval.


O valor que deve ser especificado no writeInterval depende de uma opção definida no parâmetro writeControl. Um resumo das opções do writeControl e o respectivo valor que deve ser adotado no writeInterval estão listados em uma tabela logo abaixo.


Agora fique atento, não basta você modificar a opção do writeControl e passar a adotar aquela que for da sua preferencia. Cada solver foi desenvolvido de uma forma e aceita apenas algumas opções.  Uma boa dica é trocar a opção do writeControl para uma palavra qualquer, como por exemplo "teste", e tentar executar o caso. O OpenFOAM irá mostrar uma mensagem de erro com as opções disponíveis para o seu caso. Escolha uma e siga em frente!


writeControl


writeInterval


timeStep


é o valor do período no qual os resultados da simulação serão salvos. Ou seja, para writeInterval igual a 20 e deltaT igual a 0.1, os resultados serão salvos a cada 2 segundos do tempo de simulação.  Neste caso, as pastas com resultados serão nomeadas da seguinte forma: 0.2, 0.4, 0.6, ...., endTime.


runTime


é exatamente o valor de armazenamento do resultados. Ou seja, se
writeInterval é igual 0.1, os resultados serão salvos a cada 0.1 segundos do tempo de simulação. Neste caso, as pastas com resultados serão nomeadas da seguinte forma: 0.1, 0.2, 0.3, ...., endTime.


adjustableRunTime


é semelhante a opção runTime, a diferença é que esta opção modifica o valor do deltaT. É usado em alguns solvers com ajuste de intervalo de tempo automático, como alguns solvers de escoamento compressível.


cpuTime


semelhante ao runTime porém, neste caso, o valor de armazenamento dos resultados é o do tempo da CPU e não mais o tempo de simulação.


clockTime


semelhante a opção cpuTime, porém este é o valor é do somatório do tempo de CPU e do tempo necessário para leitura e gravação de dados, ou seja, o tempo da vida real.



Até o próximo post!

July 4, 2011

OpenFOAM® versão 2.0.0: mudanças na biblioteca thermophysicalModels

No início do mês passado a OpenCFD lançou a versão 2.0 do OpenFOAM. A própria OpenCFD disponibilizou uma lista contendo as principais mudanças na nova versão. A proposta deste post é ressaltar aquela que eu considero a principal mudança na biblioteca thermophysicalModels: a nova sintaxe do arquivo thermophysicalProperties.

A biblioteca thermophysicalModels é responsável pela definição dos modelos para o cálculo de propriedades termofísicas. Propriedades como a massa específica, a viscosidade e o calor específico, por exemplo, dependem da  temperatura e da pressão e, por este motivo, o usuário precisa especificar os modelos para o cálculo destas propriedades durante a simulação do seu caso.

Essa é função do arquivo thermophysicalProperties na pasta constant dos casos e a biblioteca thermophysicalModels estabelece as regras de entrada de dados neste arquivo. A principal mudança na versão 2.0 esta justamente na forma de entrada de dados no aquivo thermophysicalProperties. Portanto, se você usa algum solver contendo este arquivo, fique atento, pois o seu caso criado em uma versão 1.X não irá funcionar na versão 2.0! Será necessário atualizar a forma de entrada de dados do arquivo thermophysicalProperties!


A boa notícia é que essa mudança transformou a leitura de dados muito mais palatável para um ser humano! Antes o arquivo thermophysicalProperties se resumia a um conjunto de números e nomes de modelos que, a principio, não fazia o menor sentido para um primeiro leitor! Agora fica mais fácil identificar os parâmetros relacionados a cada modelo e o impacto para um usuário novato é menor! Mas como o mundo não é perfeito, o usuário ainda precisa consultar o User's Guide para saber o que cada nome de modelo especificado no thermoType significa na prática.


Somente para ilustrar a diferença na forma de entrada de dados, um trecho do arquivo thermophysicalProperties  do solver  XiFoam tinha a seguinte estrutura:

reactants       reactants 24.8095 29.4649 200 5000 1000 3.28069 0.00195035 -6.53483e-07 1.00239e-10 -5.64653e-15 -1609.55 4.41496 3.47696 0.000367499 1.84866e-06 -9.8993e-10 -3.10214e-14 -1570.81 3.76075 1.67212e-06 170.672;

Agora, na versão 2.0, esta mesma informação é entrada da seguinte forma:

reactants
{
    specie
    {
        nMoles          24.8095;
        molWeight       29.4649;
    }
    thermodynamics
    {
        Tlow            200;
        Thigh           5000;
        Tcommon         1000;
        highCpCoeffs    ( 3.28069 0.00195035 -6.53483e-07 1.00239e-10 -5.64653e-15 -1609.55 4.41496 );
        lowCpCoeffs     ( 3.47696 0.000367499 1.84866e-06 -9.8993e-10 -3.10214e-14 -1570.81 3.76075 );
    }
    transport
    {
        As              1.67212e-06;
        Ts              170.672;
    }
}

Muito melhor, não!? Agora resta a expectativa que a sintaxe mais palatável seja estendida também para a definição dos modelos no thermoType! Tomara que não demore muito!

Até a próxima.

June 20, 2011

OpenFOAM 2.0

No último dia 16 de junho foi lançada a versão 2.0 do OpenFOAM.

Todos os escritores do Notas em CFD atualmente utilizam a versão extended. Portanto estamos todos muito longe da versão 2.0, já que a 1.7-extended não saiu e, para dizer a verdade, agora, nem sei se vai sair (ou se vamos direto para o 2.0). Por outro lado, a Livia, devido a modificações feitas nessa nova versão, passará a utilizar a versão 2.0. Sendo assim, ela fará as honras da casa em um futuro próximo.

Eu continuarei na versão extended. Mantendo a 2.0 no computador a título de curiosidade científica.


O código fonte e binários dessa versão já estão disponíveis para download. Recomendo a quem quiser compilar o programa do código fonte usar o repositório git, uma vez que as pequenas correções, quando acrescentadas, são acrescentadas nesse repositório até que seja feita um pacote 2.0.1 (o terceiro número representa uma versão de correções e atualmente estaríamos na versão 2.0.0 !). Você encontra algumas informações legais sobre como instalar o OpenFOAM 2.0.x, a partir do repositório git oficial da OpenCFD, no blog do Alberto Passalacqua.

Boa sorte e não deixem de dar notícias e opiniões sobre a nova versão, aqui mesmo, nos comentários.

May 19, 2011

simpleFoam: Estudando o controlDict

Há um grande interesse em simulações de escoamentos monofásicos, incompressíveis, sem transferência de calor ou massa, estacionária e turbulenta. E para essas simulações, há o simpleFoam. Vou escrever alguns textos sobre esse aplicativo que eu estou estudando, e vou começar do começo e ir até o código. Esclareço que não explicarei como instalar o OpenFOAM ou mesmo como é a estrutura básica de arquivos. Se interessar ou se for necessário, pode observar os slides nesse outro tópico do blog, especialmente o que está marcado como "dia 1".

Para mim não há melhor começo do que o tutorial e para isso eu seleciono o pitzDaily.

Para começar o estudo, eu sugiro copiar o tutorial em questão para seu diretório de rodada (se já não o tiver feito, claro).
cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pitzDaily  $FOAM_RUN
cd $FOAM_RUN/pitzDaily 
Não quero entrar em detalhes sobre a geração de malha. Isso porque o tutorial utiliza o blockMesh e eu não o considero uma alternativa produtiva quando comparada as soluções de trabalho que existem, portanto, pulo essa etapa pedindo que digite no diretório do caso:
blockMesh
Como isso é um tutorial, o próximo passo para ter a simulação pronta é digitar no terminal o comando:
simpleFoam
o que significa rodar o aplicativo para o caso estabelecido. Feito isso, o caso está pronto para ser visualizado no ParaView (paraFoam) ou em qualquer outro visualizador de sua preferência compatível. Mas isso apenas muito adiante.

Nessa série de estudos me interessa descrever toda a configuração do caso para compreender aquilo que pode (ou deve) ser modificado caso a caso.

Alerto que eu vou omitir o cabeçalho do arquivo apresentado.

O primeiro arquivo que vou analisar o é controlDict (e por isso o título do tópico). Todas as informações relevantes podem ser encontradas na documentação oficial.
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

application     simpleFoam;
startFrom       startTime;
startTime       0;
stopAt          endTime;
endTime         1000;
deltaT          1;
writeControl    timeStep;
writeInterval   50;
purgeWrite      0;
writeFormat     ascii;
writePrecision  6;
writeCompression uncompressed;
timeFormat      general;
timePrecision   6;
runTimeModifiable yes;

// ************************************************************************* //

A primeira parte do arquivo compõe um dicionário chamado FoamFile, que configura algumas informações características para os arquivos de entrada e saída. A tabela 4.1 da documentação do usuário explica alguns argumentos desse item. Reproduzo-o abaixo.


Bom, o controlDict é nome do arquivo (objeto) que é um arquivo de dicionário (class), a versão foi definida por alguém (e não me pergunte quem ou porque é 2.0), o formato desse arquivo é ascii (porque não é binário ! Afinal, você o está lendo). A localização (location) é uma configuração opcional e eu realmente não conheço motivo para querer utilizar essa opção.

Seguindo ao "dicionário" FoamFile existe uma série de palavras-chaves com seus respectivos argumentos. Adianto que no exemplo estudado aqui nem tudo que é possível utilizar foi utilizado. O formato dessas informações segue o estilo:
<keyword>  <dataentry1> … <dataentryn>;
ou
<keyword>  <dataentry>;

Quero descrever apenas aquilo que está no controDict aqui apresentado, para outras opções aguarde outros tópicos ou busque o manual do OpenFOAM.
  • application : contém o nome do aplicativo que resolve o problema. No nosso caso, simpleFoam. O OpenFOAM tenta manter a coerência dos nomes de aplicativos, objetos e referências sempre que possível, mesmo quando seria obrigatório, o OpenFOAM faz ser obrigatório para facilitar o entendimento.
  • startFrom : controla o instante de tempo que inicia a simulação. Há três opções possíveis, firstTime, que inicializa o caso a partir do diretório que representa o menor tempo, startTime, onde usuário define qual é o valor do ponto inicial, se zero, como no exemplo, produz o mesmo efeito que firstTime, e, por fim, o latestTime, que inicia a simulação a partir do último diretório de tempo criado e é muito útil para reiniciar rodadas.
  • startTime : quando startFrom é igual a startTime, o valor desse tempo deve ser especificado nessa variável. O tempo aqui e em todos os demais locais estão em segundos.
  • stopAt : controla o instante de tempo que encerra a simulação. Pode-se utilizar, endTime, writeNow, noWriteNow e nextWrite. A oção endTime define o ponto de conclusão como provavelmente o usuário escreveu na folha de papel. As demais opções são para interrupção antes de endTime. Sendo writeNow  e noWriteNow imposição de interrupção imediata, porém no primeiro caso escrevendo o resultado final e no segundo sem escrever o resultado final. Normalmente, o intervalo de escrita dos resultados é bem maior do que o passo de tempo. Sendo assim, a opção nextWrite é quando o usuário quer esperar mais alguns passos de tempo antes de interromper a rodada, mas precisamente, esperar até a próxima escrita programada de dados para interromper.
  • endTime : variável que define o ponto de interrupção da rodada quando stopAt está especificado. É usual que isso seja necessário. 
  • deltaT : intervalo de tempo da simulação.
  • writeControl : forma de controlar a escrita de dados. Vou me reter a explicar o que eu considero útil. A opção timeStep e a opção clockTime. A opção timeStep indica que será utilizado writeInterval  intervalos de tempo para escrever os arquivos. É usual que essa opção seja utilizada em um caso transiente. A opção clockTime, pela natureza do funcionamento do OpenFOAM, me parece bem útil em simulações estacionárias com malha realmente grande, quando escrever o resultado uma ou duas vez por dia (intervalo de tempo marcado no relógio e sem vínculo com a simulação) é uma boa idéia por conta de backups.
  • writeInterval : este valor é o período em que os resultados da simulação serão salvos. No caso estudado deseja-se salvar a simulação a cada 50 passos de tempo. Uma dica para definir esse valor é primeiro escolher o intervalo de tempo que se deseja salvar os resultados da simulação, como a cada 1 segundo por exemplo, e o seu passo de tempo (deltaT),  por exemplo igual a 0.5 segundos, então o valor que deve ser especificado no writeInterval é o resultado da divisão do tempo desejado para arquivo dos dados (1s) pelo deltaT (0.5s) e, portanto, igual a 2. Observe apenas que esse número deve ser um número inteiro, pois o resultado será salvo a cada writeInterval números de passo de tempo.  
  • purgeWrite : serve para especificar quando o usuário quer que apenas os últimos purgeWrite valores de resultados escritos sejam guardados. Tem sua utilidade em casos transientes, mas sua verdadeira utilidade está nos casos estacionários (como o nosso). Utilizar purgeWrite igual a 1 fará com que apenas o último instante de tempo seja salvo, ou seja, exatamente o que interessa na simulação estacionária. Note que no nosso exemplo foi utilizado zero. Assim foi feito porque assim estava no meu tutorial, mas isso apenas significa espaço consumido no HD. O que é insignificante no caso do tutorial, mas faça isso com uma malha de 14 milhões de nós e vai entender o que quero dizer.
  • writeFormat : indica o formato do arquivo. Existem duas opções, ascii e binary. Normalmente eu uso ascii, mas...
  • writePrecision : indica o número de algarismos significativos dos resultados quando usar-se ascii na opção de writeFormat. O valor seis pode lhe parecer pequeno, mas se o número for muito grande há aumento do tamanho consumido pelos resultados. Não significa que um valor de 0.000000001 não seja representado. Pelo contrário, os zeros a esquerda são desconsiderados na hora de escrever esse número. O problema maior é quando o número é muito grande (maior que 999999). Nesse caso acontece um arredondamento sinistro (eu não tenho outra palavra!). Compare o valor do campo de velocidade do resultado simulado com a configuração padrão e modificando o valor dessa variável para 2 para ver o que eu estou falando. Use o instante de tempo de 100 segundos para melhor ver o arredondamento grosseiro na escrita.
  • writeCompression : informa se os dados escritos serão comprimidos (compressed) ou não possuíram qualquer compressão (uncompressed). Os dados comprimidos ocupam muito menos espaço, mas há o trabalho extra de comprimi-los. Nunca avaliei os custos envolvidos. Normalmente uso o padrão, que o uncompressed.
  • timeFormat : há opções, mas francamente, deixe em general. Essa opção configura o nome dos diretórios onde escreve-se os resultados.
  • timePrecision : novamente, falando francamente, deixe em 6 se usar o general no timeFormat. Essa valor configura o número de dígitos que será utilizado escrever os diretórios. Um problema é quando o tempo é muito pequeno, nesse caso, 6 seria um  número ruim, porém, se seguiu meu conselho em timeFormat não precisará se preocupar com isso.
  • runTimeModifiable : configura se é (yes) ou não é (no) possível realizar modificações durante a rodada. Em termos práticos, a opção no (que não permite modificar as condições) somente faz sentido para simulações conhecidas. A vantagem é que o OpenFOAM não perde tempo verificando se o arquivo controlDict foi modificado a cada passo de tempo.
Existem algumas coisas a mais que podem ser feitas, como adicionar funções e bibliotecas, mas cada caso é algo muito particular e eu não conseguiria explicar tudo em um texto genérico. Um exemplo MUITO útil é a adição de pontos de monitoramento que já foi explicado nesse blog.

Acrescento, por fim, uma informação que eu não testei e que não está sendo utilizada nesse arquivo de exemplo mais é listada no manual, o graphFormat. Essa opção permite configurar o formato do arquivo facilitando a interpretação do mesmo em diferentes programas de produção de gráficos, como o gnuplot e o grace.

Como esse é o primeiro texto de uma série, cabe esclarecer que ela vai ser escrita porque eu estou fazendo do Notas em CFD o meu caderno de anotações e eu preciso aprender o que estou escrevendo. Sim, meus caros, eu estou estudando e compartilhando minhas anotações com outras pessoas. Estou utilizando o OpenFOAM-1.6-ext.

[update 29/05/2011]
Agradecimento especial a Livia pelas sugestões acrescentadas e modificadas na data dessa atualização no item writeInterval.
[/update 29/05/2011]

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.

February 10, 2011

Relato de um concurso para professor - Parte 1

Olá pessoal,

Tem muito, muito, muito tempo que eu não escrevo nada aqui no Notas em CFD. Bem, isso tem um motivo. Como o Mitre comentou aqui, eu assumi o cargo de professor na Escola de Química da UFRJ em agosto de 2009. Estive bastante ocupado desde então, seja com o preparo de aulas para diferentes disciplinas (Segurança de Processos, Transferência de Calor, Fenômenos de Transporte, Mecânica dos Fluidos II, Métodos Numéricos Aplicados e Laboratório de Engenharia Química), processos administrativos ou orientação de alunos de graduação e pós. Desta forma, o Notas acabou ficando um pouco de lado nesse período conturbado, mas o Mitre e os novos autores do Notas mandaram bem nesse meu período de ausência e postou vários assuntos.

De qualquer forma, acredito que existem alguns leitores que estão fazendo pós-graduação e almejam um cargo de docente em alguma universidade. Portanto, achei interessante comentar aqui no blog como ocorreu o meu concurso, as dificuldades, o acaso da sorte, a banca, etc.

Fiz o concurso para professor adjunto na área de Fenômenos de Transporte e Operações Unitárias (2 vagas), sendo que o candidato seria avaliado com uma prova escrita, uma defesa de memorial, uma prova didática e a avaliação de currículo. Para as provas, a ementa era quase que engenharia química toda. De fato, a ementa do concurso estava assustadora e, de cara, afastou vários candidatos ao cargo. Veja abaixo a íntegra da dita:
  1. Escoamento incompressível. Análises Lagrangeana e Euleriana. Fluidos ideais. Equações de Euler e Bernoulli. Fluidos reais. Equação de Navier-Stokes. Balanço macroscópico de energia. Escoamento em tubulações e acidentes. Perda de carga. Bombeamento de fluidos. Curva característica e cavitação.

  2. Teoria da camada limite. Escoamento sobre placas planas. Equação de Prandtl. Soluções de Blasius e Von Karman.

  3. Turbulência. Média temporal das equações da continuidade e do movimento para fluidos incompressíveis. Tensões de Reynolds. Perfis de velocidades próximo a paredes. Modelos para o fluxo turbulento de momento linear.

  4. Fluidodinâmica em sistemas particulados. Força de arraste e coeficiente de arraste. Velocidade terminal. Lei de Stokes. Grupos adimensionais. Efeitos de parede, população e da forma da partícula. Correlações e problemas típicos.

  5. Separação sólido-sólido, sólido-gás e sólido-líquido em sistemas particulados diluídos. Elutriação, câmaras de poeira, ciclones, centrífugas e hidrociclones.

  6. Escoamento monofásico em meios porosos. Conservação de massa e momento linear via teoria de misturas. Força resistiva. Modelos de Darcy e Forchheimer. Ensaios de permeametria. Perda de carga em meios porosos.

  7. Separação sólido-líquido em sistemas particulados concentrados. Filtração em superfície. Filtros prensa e de tambor rotativo. Auxiliares de filtração. Sedimentação. Teste de proveta. Cálculo da área da seção transversal e da altura.

  8. Fluidização. Gases versus líquidos. Queda de pressão versus velocidade superficial. Histerese. Velocidade, porosidade e altura mínimas de fluidização. Conservação de momento linear das fases via teoria de misturas. Correlações para a fluidização homogênea.

  9. Condução térmica uni e multidimensionais em regime estacionário e em regime transiente. Balanços de energia em coordenadas cartesiana, cilíndrica e esférica. Aletas.

  10. Convecção em Escoamentos Internos e Externos. Camada limite térmica. Problema de Graetz. Convecção natural e convecção forçada. Ebulição e Condensação.

  11. Trocadores de calor. Métodos de Projeto. Aplicações.

  12. Radiação. Propriedades radiantes. Corpos negro e cinza. Lei de Kirchhoff. Fator de forma. Troca de calor radiante entre superfícies negras e não negras.

  13. Fundamentos da Transferência de Massa. Mecanismos. Relações de Fluxo- Lei de Fick e relação de Maxwell-Stefan. Regime Estacionário. Regime Transiente. Coeficiente de Difusão.

  14. Transferência de Massa em Sistemas binários e multicompostos. Modelos teóricos para a transferência de massa na interface fluido-fluido. Coeficientes de transferência de massa.

  15. Transferência de movimento e massa simultâneo.

  16. Transferência simultânea de calor e de massa.

  17. Processos de Cristalização e Secagem.

  18. Processos de Separação e Operações de Separação em Estágios. Conceito de Estágio de Equilíbrio. Separação em 1(um) estágio de equilíbrio.

  19. Destilação Binária e Multicomposta. Projeto e Condições de Operação.

  20. Colunas de Recheio para Absorção, Esgotamento e Destilação.

Concordam comigo? Isso é quase o currículo de engenharia química toda! Contudo, a área do concurso (Fenômenos de Transporte e Operações Unitárias) é isso tudo mesmo. Mas fico me perguntando se essa ementa gigantesca é válida para um concurso de docente. Usualmente, apenas três ou quatro tópicos são sorteados para serem usados efetivamente no concurso. Portanto, achei a ementa bastante exagerada. Conheço pessoas que não fizeram o concurso justamente pelo tamanho da ementa.

Mas... As regras estavam postas na mesa e tive que aceitá-las. Eu e mais 5 pessoas nos inscrevemos no concurso em dezembro de 2008. Comecei a estudar para valer no início de fevereiro, sendo que o concurso estava marcado para início de abril. Estudei muito, tópico por tópico, preparando resumos como se fossem aulas (ou esboço de aulas). Sempre deduzindo as equações, etapa por etapa e avaliando todas as hipóteses e simplificações. Note que é isso que se espera ser cobrado em um concurso para professor.

Faltando uma semana para a data do concurso, eu ainda não tinha começado a estudar os tópicos de destilação binária, multicomposta e colunas de recheio. Tive que correr no estudo destes assuntos e consegui acabar tudo uns dois dias antes do concurso. Mas confesso que não estava muito seguro nestes últimos pontos. Paciência!! A vida não é justa e perfeito, só Deus mesmo.

O concurso
A banca de avaliação foi toda composta de professores titulares, sendo 2 da própria Escola de Química e 3 de diferentes universidades do Brasil. Mas todos pesos-pesados na área e a presença deles impunha respeito aos candidatos.

Para falar a verdade, o número de candidatos se reduziu no dia do concurso. Dos 6 candidatos que se inscreveram, apenas 3 compareceram (sendo eu um deles). Mesmo assim, conforme já comentei, a ementa era gigantesca e isso continuou sendo o maior dos meus problemas. Afinal de contas, uma prova escrita mal realizada significa o fim do concurso.

A banca dividiu o concurso da seguinte maneira:
  • Primeiro dia: Sorteio de 4 tópicos da ementa, sendo 3 para prova escrita e 1 para a prova didática. Realização da prova escrita. Por fim, a leitura da prova em público.
  • Segundo dia: Divulgação da nota da prova escrita. Defesa do memorial e divulgação do assunto da prova didática (24 horas antes da realização da mesma). Nesse meio tempo, a banca faria a avaliação dos currículos.
  • Terceiro dia: Realização da prova didática (uma aula de ~50 minutos) e, no fim do dia, divulgação do resultado.
Primeiro Dia
No início do concurso, a banca pegou uma folha em branco e começaram a escrever números de 1 a 20 (o número de tópico do concurso). Cortaram a folha com os vários números e colocaram tudo dentro de um saco para realizar o sorteio das questões das provas. Achei isso legal pois foi bem transparente uma vez que a banca fez tudo na frente dos candidatos.

A banca pediu que cada um dos candidatos sorteasse um papelzinho. Eu estava tenso pois sabia que, apesar de ter estudado, não dominava todos os assuntos da ementa. Aí eu ficava repetindo "Destilação, não! Destilação, não! Destilação, não" a cada papelzinho sorteado. Acho que essa foi a sorte do ano para mim. Não saiu nenhum tópico de destilação mas os itens 1 (Bernoulli e Navier-Stokes), 4 (Lei de Stokes) e 8 (Fluidização) da ementa. No final, um professor sorteou mais um papelzinho com o tema para a aula didática e logo lacrou-o em um envelope sem ver o número. Só saberíamos do tema depois da defesa do memorial.

Tivemos uma hora para preparar um resumo (uma folha de almaço) que poderia ser consultado durante a prova. Logo depois, 4 horas de prova! E, em seguida, a leitura da prova em público.

Neste ponto eu deixo uma observação. Para exemplificar o procedimento de um balanço de massa sobre um volume de controle genérico, eu fiz um desenho sem muitos detalhes escritos. A leitura da prova se aplica apenas à reprodução exata das palavras que foram escritas e não a desenhos. Como eu me baseei no desenho para partir a dedução do balanço, como eu poderia ler para a banca e ao público um desenho que só tem indicações de vetores, volume e área? Para quem conhece o assunto até dá para entender o propósito da figura, mas isso deve ficar registrado na prova de forma clara. O ideal seria ter feito uma legenda explicando exatamente a intenção do escopo daquela figura na dedução e dando "nome aos bois", como os vetores velocidade e normal, volume e área do volume de controle.

Em contrapartida, eu também fiz um desenho na questão de fluidização sobre as regiões do gráfico de queda de pressão em função da velocidade de fluidização. Neste caso, eu dividi a figura em regiões (I, II, III, etc.) e expliquei cada uma em separado no corpo da questão. Desta forma, não tive problema nenhum com a leitura da questão pois o próprio texto referenciava a figura. Ficou mais fácil assim. Este pode parecer um pequeno detalhe, mas que faz a diferença quando estamos sendo avaliados.

Vocês já devem ter percebido que eu fui aprovado na prova escrita e, portanto, continuei com as outras etapas do concurso. Eu quero continuar a história, mas este post já está longo demais. Portanto, vou dividi-lo em duas partes e na segunda parte eu escrevo sobre a defesa do memorial e sobre a prova didática.

Um abraço!

February 1, 2011

A Turbulência através de imagens

O fenômeno da turbulência certamente gera algumas das mais belas imagens que a física pode fornecer  ao homem. Não permite compreender todas as perspectivas do problema, claro, mas isso não torna a tarefa menos agradável aos olhos.

Gosto de iniciar a uma apresentação visual mostrando as observações de Leonardo Da Vinci.
Trata-se da primeira visualização registrada do fenômeno da turbulência. Esse desenho abaixo retrata o enchimento de uma piscina por um jato de água produzido por uma seção quadrada.

Como disse antes, a turbulência é caótica, mas é possível perceber que ela possui estruturas coerentes. Veja :

e também em:
A turbulência inicia-se pela desestabilização do escoamento laminar. Note que a esquerda o escoamento está bem organizado enquanto a direita é completamente caótico.


Algumas imagens que são apresentadas nesse texto foram obtidas no site da efluids.com e disponibilizadas aqui apenas com fins educativos (de acordo com a autorização do próprio site). O mesmo site também disponibiliza uma série de vídeos envolvendo turbulência, além de outras observações fenomenológicas. Para quem tiver o interesse e tiver paciência de ver cada filme, certamente observará algumas imagens fascinantes.