May 14, 2009

LaTeX

Quem desenvolve ciência, certamente necessita escrever o que desenvolve (ok, você "necessita" não significa que esteja em dia com isso, mas deixamos isso debaixo do tapete, certo ?).

Como você escreve textos científicos ? Word ? Esqueça. O texto científico com formatação de alta qualidade deve ser feito em LaTeX.

De forma simplificado, podemos definir o LaTeX como uma linguagem de marcação criada para escrever texto formatado a partir de texto não formatado.

O que há de errado com as alternativas ?
  • Quem usa muita equação matemática, vê a diferença. O visual das equações matemáticas em LaTeX é muito superior do equivalente nos editores de texto tradicionais.
  • Em LaTeX você escreve o texto sem se preocupar com a formatação, depois ajusta o estilo. É muito mais fácil, muito mais simples de proceder durante o ato de escrever.
  • O LaTeX é texto puro. Completamente compatível com qualquer coisa.
  • Copiar/Colar nunca falha.
  • O texto longo com muitas equações e referências cruzadas nunca corrompe (é texto puro, lembra ?).
  • Não há chance de esquecer alguma referência na lista de referências.
  • Se alguém pedir para incluir um equação no meio do texto, a renumeração será automática, inteligente, funcional e não haverá chances de erros (o mesmo vale para tabelas, figuras, seções, etc).
  • Existe template em LaTeX para todos os artigos científicos em revistas e congressos internacionais (feitos lá fora, pelo menos).
  • Recentemente, os principais congressos internacionais ou nacionais realizados no Brasil também estão fornecendo templates em LaTeX.
  • Você passa mais tempo escrevendo do que reclamando da Microsoft.
Eu tenho mais argumentos, mas vou presumir que esses foram suficientes, se ainda não estiverem motivados, me avisem nos comentários.

Estou convencido, mas o que isso CFD e LaTeX têm em comum ?

Quando se escreve algo que envolve CFD, escreve-se muitas equações. MUITAS MESMO. Meu exame de qualificação do doutorado teve mais de 300 equações escritas. Sem contas as 53 figuras.

Pense bem, quanto tempo você levaria para rearrumar um texto que seja necessário incluir uma única equação entre a primeiras do documento ? Você quer estudar CFD ou contar equação ?

E nem me diga que o Word possui capacidade de ajustar automaticamente também, porque essa capacidade não funciona quando se tem 300 equações. Temos vários pontos amostrados no lab de quem tentou escrever teses e dissertações em Word e não dava certo.

CFD também envolve figuras. Ajustar as figuras no texto é sempre muito chato em um documento Word, porque a legenda sempre teima em ficar na página seguinte a da figura. Com o LaTeX isso nunca acontece.

Como começar ?

Antes de mais nada você precisa instalar o LaTeX no seu computador.

Se usa o GNU/Linux isso você instala os pacotes que iniciem por texlive- ou tetex- e o mais relevante de tudo será instalado (não inclua os pacotes de linguagens desnecessários a você). Veja um exemplo para sistemas baseados em Debian, no wiki do vimbook. A forma que eu prefiro consiste em instalar o Kile e todos os pacotes recomendados (pelo Synaptics no Ubuntu, isso é o comportamento padrão, em outras distribuições pode requer adicionar mais algum pacote. Leia sobre pacotes recomendados pelo Kile no programa de instalação da sua distribuição). Por sinal, o Kile é uma IDE para edição de textos em LaTeX que eu recomendo para todos que não possuem uma familiaridade muito grande com os comandos em LaTeX, pois ele deixa os comandos acessíveis por ícones clicáveis. Outra alternativa (ainda que eu mantenha a sugestão de instalar o Kile) é utilizar o plugin de LaTeX para o gedit (em algumas distribuições existe um pacote especial para instalar esse plugin. Plugins no gedit trabalham de forma complementar, portanto, não deixe de avaliar os demais existentes.).

Para Windows pode-se usar o MiKTeX, de fato eu não possuo qualquer experiência com relação a uso de LaTeX no Windows, mas experiência de terceiros com esse programa parece bem produtiva. Há outras interfaces ? Sim, mas como eu não conheço nenhuma, deixo para os que conhecem divulgarem nos comentários.

Tudo instalado, como começar a escrever ?

Escrever o básico em LaTeX é muito fácil. Especialmente porque não requer quase nenhum conhecimento sobre a linguagem em si. É apenas texto. Quero dizer, abra seu editor de textos puro predileto (gedit/kate/vim/Bloco de notas) e escreva.

Mas a verdade é que todos os autores desejam fazer algo além de texto puro. Usar negrito, itálico, títulos, etc.
Além de inserir figuras, equações, tabelas, etc.

Para tal segue algumas referências existentes na internet:
Insista e divulgue sua experiência

Há dois tipo de pessoas, as que desistem rápido, achando que não tem tempo para aprender, e as que insistem. O problema é que no meio acadêmico ninguém tem mesmo tempo. O tempo é curto para tudo. Tudo que eu posso dizer é: insista. Supere as dificuldades dos primeiros documentos e insista. Tão logo a curva de aprendizado inicial seja ultrapassada, tudo fica muito mais simples, muito mais produtivo.

No fim, divulgue sua experiência. Seja ela qual for. Isso contribui para avaliar o prós e contras e ajuda a formar opinião e a superar a barreira que divide os crédulos dos incrédulos. Sim, porque tem gente que não acredita quando eu digo nas referências bibliográficas não há citações faltando (entenda, todas as citações mencionadas no texto estão no final do arquivo. Qualidade do texto é outra história.) ou quando eu digo que posso adicionar uma equação no meio do texto facilmente e sem problema algum.

May 13, 2009

Desenvolvimento no OpenFOAM

Este post surgiu em resposta à dúvida do Vitor Henrique no Grupo de Discussão do CFD-Brasil. Para aqueles que queiram mais detalhes, visitem o grupo de discussão.

Para desenvolvimento de códigos próprios, ou seja, novos solvers ou utilitários, tanto faz usar a versão fornecida pelo site da OpenCFD ou as versões de desenvolvimento disponíveis. Em ambas você tem a possibilidade de criar seus códigos. Para quem está iniciando o uso tanto do Linux quanto do OpenFOAM, eu até sugiro que se comece pela versão do site. Quando se sentir mais confiante e com mais traquejo em Linux, migre para uma versão de desenvolvimento. Lógico que não preciso dizer que o conhecimento da linguagem de programação C++ é importante, né?

Porque existem as versões de desenvolvimento?

  • Bugs são possíveis em qualquer código, seja ele livre ou não. Quando se descobre um bug, ele pode ser corrigido e imediatamente incorporado à versão de desenvolvimento. Na versão do site, as correções serão incorporadas apenas na próxima versão do OpenFOAM.
  • Contribuições de terceiros podem ser anexadas ao OpenFOAM a qualquer momento. Ou seja, novos solvers, utilitários, novas funcionalidades, etc. podem ser adicionados a qualquer momento na versão de desenvolvimento.

Existem outras vantagens em usar as versões de desenvolvimento, mas para mim, as principais são as que coloquei acima. Contudo, acredito que o usuário tenha que ter um conhecimento mais profundo tanto do sistema quanto do funcionamento do OpenFOAM para usar essas versões. Imagine você, ainda aprendendo a usar e programar no OpenFOAM e tendo que compilar tudo (!) do zero, tendo que verificar alguns erros de compilação (possíveis de acontecer) quando atualiza o OpenFOAM para a versão mais nova? Eu não vejo isso como vantagem, até que você tenha conhecimento suficiente para poder lidar com isso. Aprenda a compilar seus próprios solvers, depois compile o OpenFOAM por inteiro. Um passo de cada vez.

Mas isso é uma escolha pessoal. Você pode querer começar o seu aprendizado pela compilação, sei lá... Existem vários recursos que podem ser usados para auxiliar e acomodar o OpenFOAM ao sistema. Entre essas funcionalidades, compilação de códigos em paralelo, usar o compilador do próprio sistema, otimização com o processador, bibliotecas diferentes do padrão, etc.

Existem duas versões de desenvolvimento, obtidas através dos programas git e svn.

A versão git é desenvolvida e atualizada pela OpenCFD, mantenedora oficial do OpenFOAM. Já a versão fornecida pelo svn é mantida pelo Prof. Hrvoje Jasak (Wikki). Eu uso essa última e tenho vários motivos para tal, entre eles:

  • Atualização muito rápida. Qualquer erro (e são muito poucos) são corrigidos e atualizados quase que imediatamente.
  • Por filosofia, o Prof. Jasak é muito mais aberto à incorporar contribuições de terceiros. Com isso, possui muito mais solvers e utilitários.
  • Funcionalidades exclusivas, implementadas pela comunidade do OpenFOAM.
  • O Hrvoje faz questão de manter sua versão de desenvolvimento em harmonia com a da OpenCFD. Nota: houve uma grande mudança na estrutura do OpenFOAM-1.4.1 para a 1.5. O Jasak adaptou tudo para ficar de acordo com o padrão escolhido pela OpenCFD.
  • Quando o Hrvoje veio para o Brasil para a minha banca de defesa de doutorado, levei ele e a esposa ao bar Devassa na Barra da Tijuca. Pô, o cara fez questão de pagar a minha cerveja!! Não tem como, uso a versão dele...

Brincadeiras à parte, na minha opinião, a OpenCFD é um pouco fechada em relação a receber e incorporar as contribuições da comunidade do OpenFOAM. E eu, por filosofia, não gosto disso.

Para quem quer tentar compilar a versão OpenFOAM dev do svn, deve ter instalado em seu computador os seguintes pacotes (nomes relativos à distribuição Linux OpenSuse):

subversion
binutils
mpfr
gmp
flex++

Para maiores referências, leia as mensagens no Fórum do OpenFOAM, em especial esta aqui.

Para baixar a versão dev, vá ao diretório ~/OpenFOAM e use o comando:

svn checkout http://openfoam-extend.svn.sourceforge.net/svnroot/openfoam-extend/trunk/Core/OpenFOAM-1.5-dev/ OpenFOAM-1.5-dev/

A última versão do código fonte do OpenFOAM-1.5-dev será baixado em seu computador. Para compilação, vá ao diretório OpenFOAM-1.5-dev e execute:

./Allwmake

Note que TUDO será compilado e esse processo pode ser um pouco demorado, dependendo da configuração da sua máquina e das suas configurações no OpenFOAM.

Então, fica aí a dica para os novos desenvolvedores no OpenFOAM. Boa sorte!
Um abraço!

May 12, 2009

Introdução ao GNU/Linux

No início do ano eu filosofei sobre CFD, Linux e vim, tentando mostrar a relação entre esses pontos.

Em abril desse ano, eu apresentei o curso de extensão `Introdução ao GNU/Linux'' no Programa de Engenharia Química (COPPE/UFRJ).

Com o objetivo de prover uma referência por escrito e atualizada sobre o GNU/Linux, eu comecei a escrever um documento que ganhei volume e corpo de um livro. Livro esse que eu tenho o prazer de anunciar como um projeto livre.

O livro Introdução ao GNU/Linux está disponível para download em PDF, e no código fonte. Esse livro tende a ter novas versões periodicamente, portanto, pode lhe interessar uma visita mensal ao site do projeto para obter as versões mais novas do PDF.

Ele foi escrito para um público que nunca teve contato com o sistema operacional GNU/Linux, mas não para quem nunca teve contato com computadores.

Sobre o Livro "Introdução ao GNU/Linux"

O GNU/Linux é um sistema operacional, que por definição é um programa responsável por conectar o usuário ao hardware, capaz de unificar o núcleo criado por Linus Torvalds em 1991 e diversas ferramentas criadas por terceiros.

Esse livro introduz ao leitor detalhes sobre (i) a arquitetura do GNU/Linux, partindo de um breve histórico até sua estrutura atual, (ii) os principais softwares para uso em computadores pessoais, como gerenciadores de arquivos, editores de texto, navegadores de internet, entre outros, (iii) os principais utilitários para uso de terminal, como man, ls, rm, cat, ssh, scp, entre outros e (iv) completando com um guia de sobrevivência na administração de um sistema GNU/Linux, apresentando os utilitários de configuração de rede, impressora, instalação de programas, além de outros pontos associados a utilização do GNU/Linux em computadores pessoais.

Sobre a licença do livro

O uso deste documento é regido pela licença GNU Free Documentation License, Versão 1.3 ou qualquer outra publicada posteriormente, da Free Software Foundation. Uma cópia dessa licença pode ser lida no anexo D ou no página http://www.gnu.org/copyleft/fdl.html.

Resumindo, a GNU Free Documentation License permite que você copie, modifique e/ou redistribua o documento inteiro ou parte do documento sobre os seus termos e respeitando as seções invariantes (no caso desse documento, são apenas as licenças em si).

A única exigência da GNU FDL é que os autores originais devem ser referenciados (não abre-se mão do direito autoral, algo que eu não poderia fazer nunca no Brasil) e de que a parte do conteúdo utilizado em outros trabalhos proveniente desse projeto (uma figura ou capítulo, por exemplo) também deve ser distribuído pela GNU FDL.

Mais Informações

Para informações adicionais sobre a licença do livro, como colaborar com projeto, etc. podem ser encontradas no tópico do anúncio oficial do livro.