OpenFOAM
Captura de tela
OpenFOAM sendo executado em um terminal
Autor Henry Weller
Desenvolvedor CFD Direct, OpenCFD Ltd
Lançamento 10 de dezembro de 2004 (14 anos)
Versão estável 3.0.1 (15 de dezembro de 2015; há 4 anos)
Linguagem 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, suportada por contribuidores voluntários. O nome OpenFOAM é uma marca registrada da OpenCFD Ltd e licenciado para a OpenFOAM Foundation Ltd.

História

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. Em 8 de agosto de 2011 a OpenCFD foi adquirida pela Silicon Graphics International (SGI). 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. 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.

Características de destaque

Sintaxe

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

é 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

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.

Estrutura do OpenFOAM

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
  • Solução de equações diferenciais ordinárias
  • Paralelização automática de operações de alto-nível
  • Malha dinâmica
  • Modelos físicos gerais
    • Modelos reológicos
    • Modelos termodinâmicos e base de dados
    • Modelos de turbulência
    • Reações químicas e modelos cinéticos
    • Métodos de rastreamento lagrangiano de partículas
    • 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.


Translation Latin Alphabet.svg
Este artigo ou seção está a ser traduzido de « OpenFOAM» na Wikipédia em inglês. Ajude e colabore com a tradução.

Official resources

Community resources



Este artigo usa material do artigo Wikipedia OpenFOAM, que é lançado sob o Creative Commons Attribution-Share-Alike License 3.0.