March 4, 2012

O que aprendi com o NUMAP-FOAM-Br 2012

Para quem acompanha esse blog e usa OpenFOAM, deve saber que na primeira quinzena de fevereiro tivemos na COPPE o primeiro NUMAP-FOAM-Br.

Pois bem, aqui estou para dizer o que aprendi com esse evento:

  • Aprendi Git. Eu apresentei um curso de uma tarde sobre Git e para isso eu estudei Git, pois eu não conhecia Git. Pode perguntar: porque foi dar um curso sobre algo que não sabia ? Bom, ninguém sabia. Alguém tinha que dar o curso... sobrou pra mim (e agradeço por isso). Em outra ocasião (que espero que seja breve) eu vou escrever sobre o Git aqui.
  • Aprendi a escrever uma condição cíclica no OpenFOAM (tal que a entrada seja definida pela saída). Isso foi uma odisseia pouco trivial que eu não tenho como detalhar aqui em uma linha. E não, não é tão simples quanto parece. Quem usa OpenFOAM deve ter pensado agora: mas não existe aquela condição de contorno chamada ... !!! Não é tão simples. Creia. Escrevo sobre isso no futuro.
  • Aprendi a utilizar o swak4Foam, mas precisamente o funkySetFields. Recomendo a olhada do caso exemplo "elliptical Bubble" pegue nessa página. Também planejo escrever sobre isso.
  • Alias, isso mostra mais uma coisa, tive tempo de dar uma olhada no wiki (já conhecia a tempos, mas não tinha tempo de visitá-lo).
  • Descobri como fazer para compilar o OpenFOAM-1.6-ext no meu ArchLinux, tudo graças ao Git (o principal problema é que a versão o GCC é muito nova para o OF-1.6-ext). Para quem já conhece git digite no diretório raiz do openfoam o comando ( git branch -r ) e observe a ramificação (feature/gcc4.6port). Você precisa ativar a ramificação localmente com o comndo ( git checkout feature/gcc4.6port ). Isso é necessário porque nesse ponto apenas a versão "remota" existe na sua estrutura local. Depois, sugiro criar sua própria ramificação ( git checkout -b minhaversao ) e então fazer um merge com esse port ( git merge feature/gcc4.6port) somente então faça modificações nas configurações. Também vai precisar fazer algumas modificações para remover o metis e o parmetis e finalmente compilar (tudo isso por causa do compilador 4.6 ), de onde vem o próximo item. [update] No Ubuntu 11.10, que usa uma das versões do gcc 4.6, é necessário fazer a ginástica com o git, mas não foi preciso remover o metis ou o parmetis. Na versão 32-bits houve um problema com o libccmio e esse problema foi resolvido na máquina teste de forma tosca, instalando um .deb gerado em outra máquina com uma versão mais antiga do Ubuntu. Se eu tiver mais detalhes, eu informo.[update]
  • Consegui a motivação que faltava para aprender C++ com efetividade. Estou em curso, lendo o livro "Thinking in C++, vol. 1) que estava em promoção, mas que pode ser baixado gratuitamente no site do autor, Bruce Eckel. Essa motivação veio porque eu quis entender os motivos do erro que encontrei no item anterior (incluindo como remover o metis e o parmetis da minha frente !) e porque ...
  • fiz um port do viscoelasticFluidFoam para a versão 2.1.x do OpenFOAM. Com a ajuda do Jovani, acrescento. O detalhe cruel é que o solver não compilava na versão 2.1.x porque na versão 1.6 (onde ele funciona) existe um bug que não interfere na qualidade do solver, mas da qual o solver tirava vantagem. A rigor, seja A e B matrizes simétrica e diferentes, A escalar B não gera obrigatoriamente uma matriz C simétrica. O OpenFOAM 1.6 assume isso (e isso é um erro). Mas a soma de A escalar B com B escalar A gera uma matriz simétrica. Por isso que, apesar do código do OpenFOAM 1.6 estar errado, isso não interfere viscoelasticFluidFoam. Porém impede que a compilação ocorra corretamente na versão 2.1 (onde eles corrigiram o bug). Bom, um bocado de C++ corrigiria o problema de forma muito elegante, mas eu usei um pouquinho só de C++ (dada as minhas limitações). Onde se completa a motivação para aprender C++ que descrevi no item anterior. Ah ! Eu tenho uma versão do solver com o port para o 2.1 (100 % funcional), mas não vou liberar sem a autorização do Jovani. A falta de elegância reflete em um pouco mais de contas feitas do que o necessário e eu não me dei ao trabalho de corrigir os exemplos. Isso tem que ser feito porque há algumas ferramentas matemáticas que são usadas nos exemplos que só existem no OpenFOAM-1.6-ext.
  • Finalmente tive tempo para ler todo o manual do programador do OpenFOAM.
  • Rodei várias coisas simples e aprendi o básico sobre VOF e malha adaptativa. Ganhei uma experiência que não tinha.
  • Assisti uma aula surpreendente sobre modelagem de fenômenos de transporte (ministrada pelo Luiz).
  • Descobri vários tópicos interessantes para escrever aqui no Notas em CFD ... :D
  • Conheci vários usuários do OpenFOAM. Tive uma noção real de que não somos tão poucos assim.  Também ficou claro para mim como precisamos nos unir mais para conseguirmos diminuir as nossas dificuldades individuais no desenvolvimento e uso do OpenFOAM. 
Bom, isso foi o que eu aprendi... não tive aqui a intenção de falar tudo que aprendi em 15 dias, mas dar uma listagem geral. Até para servir de feedback. Nesse evento, eu não tinha um projeto, era apenas um usuário do laboratório que criou o evento, sem um foco real no OpenFOAM, envolvido com tudo isso por estar no "lugar certo na hora certa" (eu não poderia dizer diferente) e que se envolveu mais ainda por causa do git. Enfim, se eu tivesse tentado entrar como membro externo, dificilmente eu seria escolhido, mas mesmo assim, mesmo com toda essa ausência de foco da minha parte, os resultados pessoais que obtive foram muito legais e a lista acima apenas prova isso.

Por isso tudo, tenho apenas que agradecer a todos que fizeram esse evento acontecer.
Obrigado a todos !!!