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,The OpenFOAM Foundation homepage suportada por contribuidores voluntários. O nome OpenFOAM é uma marca registrada da OpenCFD LtdOpenCFD homepage 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.OpenFOAM Release History 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çãoCreating solvers in OpenFOAM
é 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.OpenFOAM's run-time selection mechanism explained
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 linearesLinear system solvers in OpenFOAM Solução de equações diferenciais ordináriasOrdinary differential equation solvers in OpenFOAM Paralelização automática de operações de alto-nível Malha dinâmicaDynamic mesh in OpenFOAM Modelos físicos gerais Modelos reológicosRheological models in OpenFOAM Modelos termodinâmicos e base de dadosThermophysical models in OpenFOAM Modelos de turbulênciaTurbulence models in OpenFOAM Reações químicas e modelos cinéticosChemical reactions and kinetics models in OpenFOAM Métodos de rastreamento lagrangiano de partículasLagrangian particle tracking in OpenFOAM 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.
Ligações externas Official resources Official OpenFOAM website Download OpenFOAM OpenFOAM official documentation OpenFOAM bug-reporting system Official OpenFOAM+ website Download OpenFOAM+ OpenFOAM+ official documentation OpenFOAM+ bug-reporting system Community resources OpenFOAM Forum at CFD Online OpenFOAM wiki A Blog about OpenFOAM in Chinese
Categoria:Software de 2004 Categoria:C++ Categoria:Software programado em C++ Categoria:Computação científica Categoria:Mecânica dos meios contínuos Categoria:Dinâmica de fluidos Categoria:Software livre Categoria:Softwares somente para Linux