OpenFOAM

OpenFOAM
AutorHenry Weller
DesenvolvedoresCFD Direct,[1] OpenCFD Ltd[2]
Lançamento inicial10 de dezembro de 2004 (21 anos)[3]
Lançamento estável
3.0.1 / 15 de dezembro de 2015; há 10 anos[4]
Repositório
Escrito emC++
Sistema
operacional
Unix/Linux
TipoDinâmica dos Fluidos Computacional
LicençaGNU General Public License
Websitewww.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

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

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[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

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

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

Official resources

Community resources

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.