# OpenFOAM

Este software nació en el Imperial College de Londres, una institución con una fuerte tradición en investigación en el campo de la mecánica de fluidos, el cual ha sido centro investigador de técnicas relacionadas con el CFD (Dinámica de Fluidos Computacional) desde el año 1960. OpenFOAM (Open Field Operation and Manipulation) es un software CFD gratuito y de código abierto, lanzado y desarrollado principalmente por OpenFoam Ltd desde 2004, siendo distribuido más tarde por la Fundación OpenFoam. Cuenta con una amplia base de usuarios en la mayoría de las áreas de ingeniería y ciencias, tanto de organizaciones comerciales como académicas. OpenFoam está organizado en un conjunto de módulos C++ que posibilitan la resolución de problemas, desde complejos flujos de fluidos que involucran reacciones químicas, turbulencias y transferencia de calor, hasta acústica, mecánica sólida y electromagnética.
OpenFoam se actualiza profesionalmente cada seis meses para incluir desarrollos patrocinados por los clientes y contribuciones de la comunidad. Es probado de forma independiente por especialistas en aplicaciones del tipo OpenCFD del Grupo ESI (Engineering System International), los socios de desarrollo y clientes seleccionados, y respaldado por la infraestructura, los valores y el compromiso del grupo ESI a nivel mundial.
La garantía de calidad se basa en pruebas rigurosas diseñadas para evaluar el comportamiento de regresión, el uso de memoria, el rendimiento del código y la escalabilidad, antes de publicar las nuevas versiones.
El equipo de desarrolladores, especialistas en aplicaciones, formadores y evaluadores están ubicados globalmente en el este de Asia, India, Europa y América del Norte.

## Historia

OpenFOAM fue creado por Henry Weller en 1989 bajo el nombre "FOAM" y fue lanzado como programa de libre distribución bajo el nombre de "OpenFOAM" por Henry Weller, Chris Greenshields y Mattijs Janssens en diciembre de 2004, a través de OpenCFD, la compañía que fundaron. Desde entonces, OpenFOAM ha seguido siendo administrado y desarrollado con nuevas versiones que se lanzan al público cada año.
En 2011, SGI Corp adquirió OpenCFD con un plan para ofrecer "una solución de CFD totalmente integrada, donde todo el hardware y el software trabajan juntos". Para garantizar el futuro de OpenFOAM como software exclusivamente de código abierto, los cofundadores del proyecto formaron la Fundación OpenFOAM, una organización estadounidense sin ánimo de lucro, antes de la venta de OpenCFD a SGI. El software OpenFOAM se transfirió a la Fundación, que es responsable de la tutela de OpenFOAM y su distribución al público bajo la GPL (GNU General Public License). La Fundación obtuvo la licencia de a marca comercial OpenFOAM®, que está registrada en OpenCFD Ltd, para poder distribuir así su software con ese nombre.
Tras la salida de su director ejecutivo, SGI vendió OpenCFD al Grupo ESI en 2012. En 2014, Henry Weller y Chris Greenshields abandonaron dicho grupo para continuar con la gestión y el desarrollo de OpenFOAM. El 10 de diciembre de 2014, el décimo aniversario del lanzamiento inicial de OpenFOAM, desarrollaron y publicaron OpenFOAM v2.3.1. Esta versión también formó la base del primer lanzamiento público de la línea de desarrollo de OpenFOAM (OpenFOAM-dev) a través del repositorio de código fuente de OpenFOAM. La Fundación se trasladó a Reino Unido en 2014, con cambios en su estructura de gobierno para atraer fondos para actividades de mantenimiento de grandes organizaciones que deseaban participar en la evolución del software. Estos cambios también fomentaron una mayor colaboración de las personas que deseaban contribuir a mejorar y desarrollar OpenFOAM para el beneficio de la propia comunidad.

## Antecedentes y Herramientas similares

A medida que los métodos numéricos y el CFD se han ido desarrollando fueron surgiendo los primeros programas informáticos comerciales tales como STAR-CD (CD-adapco), FLOW 3D (Flow Science, Inc.) o el mundialmente conocido ANSYS FLUENT (ANSYS, Inc.) siendo este el más utilizado a día de hoy. La concentración de códigos ha dado lugar a un progresivo incremento de los precios de las licencias, que pueden oscilar en el rango de los 10.000 – 50.000 dólares por usuario y año dependiendo de los “extras añadidos”, precio que es generalmente prohibitivo si el comprador no es una universidad o una gran empresa.
Con la llegada de internet, como en otras muchas disciplinas, han surgido algunos softwares libres de CFD cuyo nivel de calidad y sofistificación los están convirtiendo en una competencia real al software comercial siendo OpenFOAM el más conocido y empleado a día de hoy. Si llama la atención el fuerte crecimiento del CFD en los últimos años, lo hace aún más el crecimiento de este software siendo cada vez más los usuarios y escuelas que lo utilizan.

## Estructura del Software

OpenFOAM está constituido por una gran biblioteca base, que ofrece las capacidades básicas del código:
* Tensor y operaciones de campo.
* Discretización de ecuaciones diferenciales parciales usando una sintaxis legible por humanos.
* Solución de sistemas lineales.
* Solución de ecuaciones diferenciales ordinarias.
* Paralelización automática de operaciones de alto nivel.
* Malla dinámica.
* Modelos físicos generales.
* Modelos de medios porosos.
* Modelos reológicos.
* Modelos de flujos compresibles / térmicos
* Modelos de reacción química y cinética.
* Métodos de seguimiento de partículas lagrangianas.
* Modelos de transferencia de calor radiactivo.
* Modelos de turbulencia.
** Simulación por medio de las Ecuaciones de Navier-Stokes.
** Simulación de grandes remolinos (LES) y simulación de remolinos separados (DES, DDES, etc.).
Las capacidades proporcionadas por la biblioteca se usan luego para desarrollar aplicaciones. Las aplicaciones se escriben usando la sintaxis de alto nivel introducida por OpenFOAM, que tiene como objetivo reproducir la notación matemática convencional. Existen dos categorías de aplicaciones:
* Solvers: realizan el cálculo real para resolver un problema específico de mecánica continua.
* Utilidades: se utilizan para preparar la malla, configurar la caja de simulación, procesar los resultados y realizar operaciones distintas a la solución del problema bajo examen.
Cada aplicación proporciona capacidades específicas: por ejemplo, la aplicación llamada BlockMesh se usa para generar mallas de un archivo de entrada proporcionado por el usuario, mientras que otra aplicación llamada IcoFoam resuelve las Ecuaciones de Navier-Stokes para un Flujo laminar incompresible.
Finalmente, un conjunto de paquetes de terceros se utilizan para proporcionar funcionalidad paralela (Open MPI) y post-procesamiento gráfico (ParaView).

## Funciones OpenFOAM

OpenFOAM tiene una amplia gama de características para simular cualquier cosa, desde flujos turbulentos en aerodinámica de automoción, hasta incendios y supresión de incendios en edificios, que implican combustión, reacciones químicas, transferencia de calor, aerosoles de líquidos y películas. Incluye herramientas para mallar dentro y alrededor de geometrías complejas (por ejemplo, un vehículo), y para el procesamiento y visualización de datos, y más. Casi todos los cálculos se pueden ejecutar en paralelo como estándar para aprovechar al máximo los procesadores multinúcleo actuales y las computadoras multiprocesador. Las siguientes listas contienen algunas, pero no todas, de las características disponibles en OpenFOAM.

### Dinámica de fluidos / Modelado físico

* Modelado de Turbulencia.
** Simulación Promedio de Reynolds (Reynolds-Averaged Simulation, RAS).
** Simulación de Remolinos de gran tamaño (LES) y de remolinos separados ((DES, DDES, etc).
* Modelado Termofísico.
* Transporte / Reología.
* Flujos multifásicos.
* Flujos rotatorios con marcos de referencia múltiples (MRF).
* Flujos rotatorios con interfaz de malla arbitraria (AMI).
* Mallas dinámicas.
* Flujos compresibles / térmicos.
* Transferencia de calor del conjugado.
* Medios porosos.
* Lagrangiano de una partícula.
* Reacciones cinéticas y químicas.

### Análisis de datos

* Posprocesado. en ParaView.
* Posprocesado de la interfaz de línea de comando (CLI).
* Gráficos y monitarización de datos.

### Geometría y mallado

* Generación de malla para geometrías complejas con snappyHexMesh.
* Generación de malla para geometrías simples con blockMesh.
* Herramientas de conversión de malla.
* Herramientas de manipulación de malla.

### Solución numérica

* Método numérico.
* Solución de sistemas lineales.
* SOlución de sistemas ODE.

### Computación y programación

* Sintaxis de ecuaciones.
* Bibliotecas de funcionalidad.
* Computación paralela.

## Licencias

OpenFOAM está licenciado bajo la Licencia Pública General de GNU (GPL). La GPL brinda a los usuarios la libertad de ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software. Intenta preservar estas libertades impidiendo la inclusión de software de código abierto dentro de productos de software de fuente cerrada no libres, mediante las dos reglas siguientes.
* El software que incluye el código fuente con licencia GPL hereda la licencia GPL.
* Si se distribuyen los binarios compilados de software bajo licencia GPL, el distribuidor también debe poner a disposición el código fuente.
La licencia desalienta la venta del software, ya sea en forma original o modificada , ya que cualquiera que compre el producto podría exigir el código fuente y redistribuirlo de forma gratuita. Si una empresa o usuario modifica el software, por ejemplo, como base de una herramienta interna, la licencia no requiere que redistribuyan esas modificaciones.

## Ventajas e inconvenientes
### Ventajas

* Reducción sustancial en tiempo y costes en los nuevos diseños.
* Sintaxis amistosa para ecuaciones diferenciales parciales.
* Código fuente completamente documentado.
* Amplia gama de aplicaciones y modelos listos para usar.
* Sin costos de licencia.
* Software muy flexible con capacidad de ser ejecutado en paralelo.
* Posibilidad de analizar sistemas y condiciones muy difíciles de simular experimentalmente.

### Inconvenientes

* La comunidad de desarrollo sufre de fragmentación, dando lugar a numerosos proyectos bifurcados.
* Ausencia de una interfaz gráfica de usuario integrada (están disponibles las opciones independientes de código abierto y de propiedad).
* La guía del programador no proporciona suficientes detalles, lo que hace que la curva de aprendizaje sea muy pronunciada si necesita escribir nuevas aplicaciones o agregar funcionalidades.
* Se precisa de un gran conocimiento de las ecuaciones que modelan ciertos fenómenos físicos, necesitando personal con grandes conocimientos en la materia.
* Simplificación del fenómeno a estudiar para que el hardware y el software puedan abordarlo. El resultado será tanto más preciso cuanto más adecuadas hayan sido las hipótesis y simplificaciones realizadas.
* La existencia de insuficientes e incompletos modelos para simular el efecto de la turbulencia, fenómenos multifásicos o la combustión, entre otros.

## Otros Programas de CFD

* XFlow
* Autodesk CFD
* ANSYS CFX
* ANSYS Fluent
* Flow-3D
* CD-ADAPCO
* SU2