OpenFOAM

Origem: Wikipédia, a enciclopédia livre.
OpenFOAM
Captura de tela
OpenFOAM
OpenFOAM sendo executado em um terminal
Autor Henry Weller
Desenvolvedor CFD Direct,[1] OpenCFD Ltd[2]
Lançamento 10 de dezembro de 2004 (19 anos)[3]
Versão estável 3.0.1 (15 de dezembro de 2015; há 8 anos[4])
Escrito em C++
Sistema operacional Unix/Linux
Gênero(s) Dinâmica dos Fluidos Computacional
Licença GNU General Public License
Página oficial www.openfoam.org, www.openfoam.com

OpenFOAM ("Open source Field Operation And Manipulation") é um programa em linguagem C++ para o desenvolvimento de ferramentas de análise numérica com pré- e pós-processamento para solução de problemas da mecânica do contínuo, incluindo Dinâmica dos Fluidos Computacional (CFD). O código é lançado com o status livre e fonte aberta sob a GNU General Public License. É gerenciado, mantido e distribuído pela The OpenFOAM Foundation,[5] suportada por contribuidores voluntários. O nome OpenFOAM é uma marca registrada da OpenCFD Ltd[6] e licenciado para a OpenFOAM Foundation Ltd.

História[editar | editar código-fonte]

O OpenFOAM (originalmente FOAM) foi criado por Henry Weller no final da década de 1980 no Imperial College London, com o propósito de desenvolver uma plataforma de simulação geral mais capacitada e flexível que o padrão da época, a linguagem Fortran. Isto levou à escolha do C++ como linguagem de programação, devido à sua modularidade e características de orientação a objetos. Em 2004 Henry Weller, Chris Greenshields e Mattijs Janssens fundaram a OpenCFD Ltd, com o propósito de desenvolver e lançar o OpenFOAM.[7] Em 8 de agosto de 2011 a OpenCFD foi adquirida pela Silicon Graphics International (SGI).[8] Ao mesmo tempo o copyright do OpenFOAM foi transferido para a OpenFOAM Foundation, organização então fundada, sem fins lucrativos, que gerencia o OpenFOAM e o distribui ao público em geral. Em 12 de setembro de 2012 o Grupo ESI Group anunciou a aquisição da OpenCFD Ltd do SGI.[9] Em 2014 Weller e Greenshields deixaram o ESI Group e continuaram o desenvolvimento e gerência do OpenFOAM, em nome da OpenFOAM Foundation, do CFD Direct.[10]

Características de destaque[editar | editar código-fonte]

Sintaxe[editar | editar código-fonte]

Uma característica de destaque do OpenFOAM é sua sintaxe para operações com tensores e equações diferenciais parciais, que identifica em sua codificação de forma clara as equações a serem resolvidas. Por exemplo, a equação[11]

é codificada como

solve
(
     fvm::ddt(rho,U)
   + fvm::div(phi,U)
   - fvm::laplacian(mu,U)
  ==
   - fvc::grad(p)
);

Esta sintaxe, obtida mediante o uso de Programação Orientada a Objetos (POO) e sobrecarga de operadores, permite aos usuários criar solvers padronizados com relativa facilidade. Contudo, a padronização de códigos torna-se mais desafiadora com o aumento da penetração no código da biblioteca OpenFOAM, devido à deficiência de documentação, e grande uso de metaprogramação C++.

Extensibilidade[editar | editar código-fonte]

Os usuários podem criar objetos personalizados, tais como condições de contorno ou modelos de turbulência, que irão funcionar com solvers existentes sem a necessidade de modificar ou recompilar o código fonte existente. O OpenFOAM faz isto através da combinação de construtores virtuais com o uso de classes de base simplificadas como interfaces. Como resultado, isto confere ao OpenFOAM boas qualidades de extensibilidade. O OpenFOAM refere-se a esta capacidade como seleção em tempo de execução.[12]

Estrutura do OpenFOAM[editar | editar código-fonte]

O OpenFOAM é constituído de uma grande biblioteca base, que dispõe de estruturas essenciais dos códigos:

  • Operações tensoriais e de campo
  • Discretização de equações diferenciais parciais usando uma sintaxe legível
  • Solução de sistemas lineares[13]
  • Solução de equações diferenciais ordinárias[14]
  • Paralelização automática de operações de alto-nível
  • Malha dinâmica[15]
  • Modelos físicos gerais
    • Modelos reológicos[16]
    • Modelos termodinâmicos e base de dados[17]
    • Modelos de turbulência[18]
    • Reações químicas e modelos cinéticos[19]
    • Métodos de rastreamento lagrangiano de partículas[20]
    • Modelos de transmissão de calor por radiação
    • Metodologias de estrutura multi-referenciada e simples-referenciada.

Os recursos fornecidos pela biblioteca são então usados para desenvolver aplicativos. Os aplicativos são escritos usando a sintaxe de alto nível introduzido pelo OpenFOAM, que visa reproduzir a notação matemática convencional. Existem duas categorias de aplicativos:

  • Solvers: efetuam os cálculos para resolver um problema específico da mecânica do contínuo
  • Utilitários: são usados para preparar a malha, selecionar o caso de simulação, processar os resultados e para realizar outras operações além de resolver o problema em análise.

Referências

Ligações externas[editar | editar código-fonte]

Official resources[editar | editar código-fonte]

Community resources[editar | editar código-fonte]