Organizando a área de usuário do OpenFOAM
O diretório do usuário é aquele definido como (login do
usuário)-(versão do OpenFOAM). Este diretório
é bem importante mas, pelo que já conversei com outros usuários, muitas vezes
não é utilizado ou é subutilizado pelos FOAMers, que deixam de lado algumas
facilidades que o OpenFOAM oferece. Em todos os meus desenvolvimentos ou
simulações, eu uso estritamente o diretório do usuário organizar todos os meus
arquivos em uma única estrutura. Note que cada um pode organizar como achar
melhor. O que eu vou colocar neste post é a minha ideia de organização dos arquivos e, sem dúvida, vocês podem
comentar, discutir e discordar na área de comentários do Notas em CFD. Na
verdade, será bom discutir isso pois novas ideias de organização sempre são
úteis e produtivas. Mas chega de lero-lero e vamos ao que interessa!
No processo de instalação do OpenFOAM, uma das etapas é criar o
diretório (login)-(versão), criar o diretório run e copiar o diretório de tutoriais do OpenFOAM para dentro deste
último para testar se tudo está funcionando bem. Isso faz todo o sentido. Com
este procedimento, você criou uma cópia dos tutoriais e manteve a versão
intacta dentro da estrutura do OpenFOAM. Assim, se você estiver testando um
tutorial, fizer alguma besteira e não souber mais como voltar ao estado
original do caso, não tem problema pois você pode copiar os arquivos novamente.
E isso é ótimo!
Pensando nisso, pode-se perceber que os arquivos originais de
instalação do OpenFOAM devem sempre ser mantidos por segurança e garantia de funcionalidade
do pacote CFD. Mas e se eu quiser desenvolver novas aplicações e funções, como
solvers, bibliotecas, casos de simulação, etc? Não tem problema, mas recomendo
que o faça na sua área de usuário e deixe a estrutura do OpenFOAM intacta. Ok,
e como eu organizar os arquivos no diretório de usuário? Eu segui a mesma
estrutura básica do OpenFOAM, como colocado na sequência.
(login)-(versão)
o
applications
§
bin
·
(versão
do sistema)
§
solvers
§
utilities
§
test
o
lib
§
(versão
do sistema)
o
src
o run
O diretório applications contém todos os arquivos que são referentes aos códigos fonte do
desenvolvimento de novos solvers,
utilitários ou testes iniciais de códigos ou mesmo aprendizado de coisas novas
(ou antigas, mas que eu não sabia como funcionava :) ). Por fim, eu configuro
para que todos os executáveis dos meus aplicativos sejam criados
automaticamente no diretório bin/(versão
do sistema) do usuário. Este último depende do
sistema e características da compilação utilizada (linuxGccOpt, linux64GccDebug, etc) e deve ser criado automaticamente pelo OpenFOAM. Se você
quiser mais detalhes sobre essa configuração, é só pedir nos comentários que eu
escrevo um post sobre isso.
Sendo assim, o diretório src não contém nenhum código de
aplicativos, mas de bibliotecas existentes do OpenFOAM que eu quero alterar ou
criação de novas. Por exemplo, digamos que eu quero modificar uma condição de contorno que já
existe no OpenFOAM. Eu copio para este diretório apenas os arquivos do OpenFOAM
necessários para a compilação e desenvolvimento da condição de contorno
(contidos dentro de src/finiteVolume do OpenFOAM), sem alterar o código original e sua estrutura de
diretórios. Nesta cópia, eu faço todo os desenvolvimento.
Como já desenvolvi ou testei bastante coisa no OpenFOAM, eu tenho
uma estrutura do meu diretório src muito semelhante ao src do OpenFOAM. Note que, de modo
semelhante aos aplicativos, eu configuro que todas as bibliotecas sejam
construídas dentro de lib/(versão
do sistema) no diretório do usuário.
O diretório run deve ser o mais comum a todos os usuários de OpenFOAM pois ele é
criado seguindo os procedimentos de instalação do pacote CFD. E esse é o mais
simples de explicar, pois é onde eu coloco todos os meus casos de simulação.
Como exemplo, segue uma
figura com estrutura similar aos que eu uso no dia a dia. As marcações em verde
são os principais diretórios e exemplos de solvers, bibliotecas, etc. A
arquitetura da minha máquina atual é darwinIntel, 64 bits, compilado com otimização e precisão dupla.
Com essa configuração de pastas e arquivos, eu consigo realizar todo
o meu desenvolvimento SEM ALTERAR a estrutura ou os arquivos originais do
OpenFOAM. A vantagem disso é desenvolver os códigos sem inserir novos bugs ou
erros no OpenFOAM em si. Isso pode ocorrer sem mesmo perceber... Quando eu
comecei a usar o OpenFOAM, eu não tinha muito cuidado com isso e já
"quebrei" a instalação algumas vezes sem saber. Acho que a principal
mensagem deste post é: "organize-se logo no início para se acostumar a
desenvolver seus códigos com segurança".
Espero que tenha ajudado! E você? Usa uma estrutura de arquivos
similar? É diferente? Coloque seus comentários no blog!
Um abraço e até a próxima!
Eu tenho uma pergunta: se eu desenvolver uma nova biblioteca do "turbulenceModels", por exemplo, corrigindo os erros do modelo SST da versão 1.6-ext, quando eu for usar a biblioteca por algum solver do sistema (sem recompilá-lo), exemplo, simpleFoam, ele vai usar a versão do sistema ou ele vai privilegiar a versão do usuário ? Em outras palavras, em caso de bibliotecas de mesmo nome ele prefere a minha ou a do sistema ?
ReplyDeleteGrato,
Mitre, ele vai usar o do sistema, ao menos que voce sobreescreva as libs do "turbulenceModels" (algo que nao e recomendavel). Se quiser usar a sua nova lib voce precisa recompilar, ou melhor linkar com o "applications" que ira utiliza-lo.
ReplyDeleteP.S.: Voce precisa dizer isso no make file, caso contrario nao adianta recompilar.
Abraco,
Obrigado, Fábio.
ReplyDelete