Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1
Instalación
Una vez descargada la versión blueCFD desde aquí, hacer doble clic en el ejecutable y dar
permiso de ejecución.
Clicar Next:
Clicar Next:
2
Para evitar posibles problemas futuros, se recomienda instalarlo en la raíz de una partición, en
nuestro caso “C:/blueCFD-Core-2017”:
Clicar Next:
Clicar Next:
3
Clicar Next:
Clicar Next:
4
Durante la instalación, se pide instalar una aplicación adicional (Microsoft MPI), clicar Next:
5
Clicar Next:
Instalación finalizada.
6
Aspectos generales
Todo lo que vamos a realizar en OpenFOAM está recogido en la User Guide de la versión 5.x
(https://cfd.direct/openfoam/user-guide-v5/). Aquí haremos una visita rápida, directa y
resumida de los aspectos generales y fundamentales.
Los solvers (programas de resolución) presentes en esta versión de OpenFOAM están detallados
en la User Guide en https://cfd.direct/openfoam/user-guide/v5-standard-solvers/#x13-
960003.5. Se recomienda revisarlos ahora para identificar los problemas que se pueden abordar
teniendo en cuenta las ecuaciones ya estudiadas en clase sobre flujos y flujos simplificados. Se
pueden ver solvers potenciales, compresibles e incompresibles, y distintas variaciones con
algoritmos diferentes.
7
Sobre blueCFD-Core
Con blueCFD-Core, además de las utilidades y entornos de OpenFOAM, vienen algunas
utilidades necesarias en Windows. En el Escritorio deberían aparecer 3 accesos directos a las
más importantes:
que permiten ejecutar una serie de aplicaciones instaladas por blueCFD. Por un lado “Gnuplot
GUI”, que es una aplicación para dibujar gráficas. Por otro “Notepad2”, que es un editor de texto
enriquecido y que por motivos de compatibilidad es necesario utilizar para editar los ficheros
de texto que maneja OpenFOAM. Por último, “Paraview 5.4.1” que es un posprocesador muy
general, y del cual deriva otro particular para OpenFOAM denominado “paraFoam”, que ya
veremos. En el Escritorio hay otro acceso directo idéntico para “Paraview 5.4.1”.
Clicando en el acceso directo “blueCFD-Core folder”, se nos abre otro explorador de archivos en
la ruta donde hemos instalado todo blueCFD-Core.
8
Clicando en el acceso directo “blueCFD-Core terminal”, se nos abre una línea de comandos o
terminal tipo Unix/Linux/MacOS a través de la cual haremos todas las operaciones en
OpenFOAM. Nótese que un acceso directo idéntico a éste está situado en el Escritorio.
9
Clicando en el acceso directo “Extended Start Menu” se nos abre en un explorador de archivos
una serie de carpetas y accesos directos, en donde se recoge aspectos generales de blueCFD.
De entre todos, cabe destacar la carpeta “Documentation”, en donde se sitúan accesos directos
a *.pdf de documentación para OpenFOAM y ParaView.
10
Si al principio de la terminal aparecen algunos mensajes diferentes a los que aparecen en la
imagen anterior, y donde avisa de que algunas operaciones no se pudieron realizar por temas
de permisos, se recomienda cerrar la terminal, y volver a abrirla, pero esta vez clicando con el
botón derecho sobre el acceso directo y ejecutándola como administrador. Una vez abierta,
deberían aparecer mensajes iniciales similares a la imagen anterior. Volver a cerrarla, y luego
abrirla de manera normal clicando dos veces sobre el icono.
La terminal que hemos abierto permite ejecutar comandos para el manejo de ficheros y carpetas
(copiar, mover, eliminar), pero también permite la ejecución de programas. Además, en ella hay
definidas una serie de variables, denominadas variables de entorno, en donde se guardan datos
referentes al equipo en donde se ha instalado el programa blueCFD/OpenFOAM. Lo primero que
vamos a hacer es que nos muestre la lista de estas variables de entorno, para ello escribimos en
la terminal el comando “printenv”:
Y presionamos Enter:
11
La línea de comandos devuelve un texto en donde en cada línea hay un texto con el formato
“nombre_variable = valor” (nótese que por el ancho de la terminal hay líneas que continúan en
una línea nueva). Si hacemos scroll hacía atrás en la línea de comandos hasta el inicio del texto,
podemos identificar claramente tres variables: FOAM_TUTORIALS (en donde se almacena
respectivamente la ruta hacia la carpeta de tutoriales), USERDOMAIN (el nombre del equipo) y
OS (el nombre del sistema operativo):
12
Si queremos saber qué valor tiene una variable en concreto, debemos ejecutar el comando
“echo $NOMBRE_VARIABLE”, donde el signo del dólar $ se pone antes del nombre de la variable
para indicar que queremos acceder a su contenido. Por ejemplo, vamos a ver qué contiene la
variable FOAM_TUTORIALS escribiendo “echo $FOAM_TUTORIALS” y presionando Enter:
Vemos que contiene la ruta hacia la carpeta de tutoriales. Nótese que la ruta está en formato
tipo Unix, donde la separación entre carpetas se indica con la barra inclinada hacia la derecha
“/” en vez de la barra inclinada hacia la izquierda “\” usada en Windows. Esto es importante a la
hora de escribir una ruta en la línea de comandos, ya que al ser una terminal Unix, requiere este
formato.
Ahora vamos a interesarnos por una variable de entorno denominada FOAM_RUN que almacena
la ruta por defecto para la ejecución de casos. Vamos a ejecutar “echo $FOAM_RUN” para ver
su valor:
Por defecto, esta carpeta no está creada, y por lo tanto deberemos asegurarnos de crearla. Para
ello, ejecutamos “mkdir -p $FOAM_RUN”:
Este comando lo que hace es crear una carpeta (mkdir == make a directory) en la ruta
especificada. En la línea previa a la que empieza por $, hay una línea con una serie de datos en
colores verde (nombre de usuario@nombre_de_equipo), magenta (sistema) y oro (directorio
actual, que por ahora está en “~”, que significa en la carpeta del usuario). Toda operación que
se haga en la terminal se hace teniendo presente el directorio actual, vamos por tanto a cambiar
de directorio e irnos al directorio indicado por FOAM_RUN. Para ello, ejecutamos “cd
$FOAM_RUN”:
13
Fijémonos ahora que, en la nueva línea de comandos, en dorado aparece el directorio actual,
que ahora es la ruta especificada por la variable de entorno FOAM_RUN. El comando cd
(cd==change directory) nos permite cambiar de directorio sin más que escribir “cd” y a
continuación la ruta al directorio que queremos cambiar.
En nuestro caso está en C:/BLUECF~1 (aparece una ruta abreviada), en realidad es “C:/blueCFD-
Core-2017”. Yéndonos a ella con el explorador vemos lo siguiente:
A través de la línea de comandos podemos también ver su contenido, para ello primero
cambiamos de directorio con el comando cd, y luego visualizamos lo que contiene con el
comando “ls” (ls==list files):
14
Vemos que en violeta aparecen los nombres de carpetas, y en verde los nombres de archivos.
Si ahora ejecutamos el comando “pwd” (pwd==present working directory) podremos ver la ruta
de este directorio en la línea de comandos:
Otro truco es que si no nos sabemos el nombre del comando o ruta completa, podemos escribir
las primeras iniciales, y luego presionar el tabulador (tecla Tab), eso hará que la línea de
comandos rellene con comandos que empiezan por lo introducido, y si hubiesen varios los iría
mostrando.
15
Tutorial inicial
Debido a la dificultad propia de generar desde cero casos nuevos en OpenFOAM, es importante
saber utilizar los tutoriales ya desarrollados y validados presentes en la instalación. Dichos
tutoriales se encuentran dentro de la carpeta de instalación en:
16
Los tutoriales se encuentran perfectamente organizados según el tipo de problema que
resuelve, y el solver utilizado, según el mismo orden que encontramos en la User Guide
https://cfd.direct/openfoam/user-guide/v5-standard-solvers/#x13-960003.5.
Ahora, lo que vamos a hacer es cambiar el directorio de trabajo al directorio FOAM_RUN (que
ya vimos antes y es donde se pueden ejecutar los trabajos) haciendo “cd $FOAM_FUN”, luego
vamos a copiar el tutorial incompressible/icoFoam/cavity (que luego detallaremos) y lo pegamos
en el directorio de trabajo utilizando el comando cp (cp==copy), y por último miramos si lo
hemos copiado correctamente con el comando “ls”. A continuación, se pone la captura con la
secuencia de comandos.
El comando nuevo que aquí introducimos es el comando de copiar “cp”. Lo que aparece tras cp
es “-r” que es una opción que indica que queremos hacer una copia recursiva (es decir copiar la
carpeta y subcarpetas). A continuación la ruta de la carpeta o archivo que queremos copiar (el
origen). Por último, ponemos la ruta del destino, en nuestro caso ponemos un punto “.” para
indicar que lo queremos pegar en el directorio actual.
Una vez generada la copia del tutorial en la carpeta de trabajo, podremos estudiarla, modificarla
y ejecutarla a nuestro gusto sin perder la versión original (que siempre estará en la carpeta
tutorials). El tutorial que acabamos de copiar corresponde a un problema denominado “Lid-
driven cavity Flow” (https://cfd.direct/openfoam/user-guide/v5-cavity/#x5-40002.1). Se trata
de un problema bidimensional de un fluido encerrado en un recipiente cuadrado y donde en su
parte superior se aplica una velocidad horizontal (como si en la parte superior existiese una cinta
de transporte que va a esa velocidad moviendo al fluido). Se considera un flujo isotermo (sin
transporte de calor) e incompresible (líquido).
Nuestro directorio actual es “run”, pero para trabajar sobre un caso deberemos cambiar de
directorio hasta encontrar el caso de estudio, que es “cavity”. Para ello hacemos lo siguiente:
17
Donde se ve que dentro de cavity hay en realidad otros 3 casos: cavity (el que vamos a trabajar
ahora), cavityClipped (una variación incluida también en el tutorial de la User Guide), y
cavityGrade (otra variación). Una vez dentro de “run/cavity/cavity”, vemos que hay otras tres
carpetas: “0”, “constant”, “system”.
Las carpetas que empiezan con números corresponden con las soluciones en cada paso de
tiempo, donde la carpeta 0 es la solución inicial (una vez resolvamos el caso aparecen más). Si
exploramos qué contiene esa carpeta “0”:
18
Vemos que contiene dos ficheros “p” y “U”, que contienen la presión y velocidades iniciales.
Si ahora vamos hacia atrás “cd ..”, y entramos en la carpeta “constant”, vemos que dentro hay
un único archivo “transportProperties”. En este archivo están las propiedades físicas del
problema. Aunque ahora mismo no hay nada, aquí también se pondrán los archivos de malla,
dentro de una subcarpeta denominada “polyMesh”.
Si ahora volvemos hacia atrás y entramos en la carpeta “system”, vemos que hay 4 archivos:
“blockMeshDict” (este archivo nos permitirá generar la malla con una utilidad llamada
blockMesh), “controlDict” (se definen parámetros de control de ejecución como paso de tiempo,
etc), “fvSchemes” (se definen los esquemas de discretización), “fvSolution” (se definen los
solvers de las ecuaciones, tolerancias y algoritmos de control). Los tres últimos son siempre
obligatorios, el primero “blockMeshDict” está presente porque vamos a generar la malla con un
mallador como es “blockMesh”.
19
Así que la estructura actual de carpetas y archivos es la siguiente:
- 0/
o P
o U
- constant/
o transportProperties
- system/
o blockMeshDict
o controlDict
o fvSchemes
o fvSolution
Antes de comenzar a visualizar y editar estos archivos es necesario irnos con el explorador de
archivos de Windows a la carpeta en donde están situados, para poder editarlos haciendo uso
del editor Notepad2 que mencionamos anteriormente:
Generación de la malla
En este punto, nos podemos ir directamente al User Guide apartado 2.1.1.1 Mesh generation
del tutorial. La cavidad se define por un paralelepípedo con 8 vértices.
20
contornos y el tipo de contorno que son. Este fichero tiene el formato requerido por la
aplicación blockMesh. Para más detalles sobre el formato de este fichero se recomienda ir a la
User Guide (https://cfd.direct/openfoam/user-guide/v5-blockMesh#x25-1790005.3).
Para generar la malla hay que situarse en el origen del caso y ejecutar blockMesh:
Tras lo cual se realiza la malla, y en la propia línea de comandos nos imprimen las características
de la malla generada:
Una vez hecho esto, nos aparecen nuevos ficheros en el caso (señalados en rojo)
- 0/
o P
o U
21
- constant/
o transportProperties
o polyMesh
boundary
faces
neighbour
owner
points
- system/
o blockMeshDict
o controlDict
o fvSchemes
o fvSolution
En donde se está almacenando todos los datos de la malla. La malla se puede chequear haciendo
uso del comando checkMesh:
La malla generada la podemos visualizar haciendo uso de ParaView. Para ello podemos lanzar
desde terminal “paraFoam”:
22
Tras lo cual aparece la pantalla de inicio de ParaView:
Si clicamos en Close, y luego en Apply, estaremos en disposición de visualizar la malla. Para ello
deberemos acudir a “Display (UnstructuredGridRepresentation)” y en “Representation”
seleccionar “Surface With Edges” o bien “Wireframe”:
23
Condiciones iniciales y de contorno
En los archivos 0/p y 0/U están almacenadas las condiciones iniciales y de contorno. Más detalles
sobre la especificación de este tipo de archivo se puede ir al apartado “2.1.1.2 Boundary and
initial conditions” del tutorial, y a los apartados referenciados en éste para más detalles.
Propiedades físicas
Las propiedades físicas que hay que definir están en estrecha relación con el solver a utilizar, en
este caso es el solver icoFoam (después veremos dónde se define). La única propiedad que se
debe especificar es la viscosidad cinemática, y se hace en un fichero denominado
“transportProperties”, que ya vimos que existía.
Para este caso, se quiere estudiar lo que ocurre para número de Reynolds 10, con lo cual
teniendo en cuenta que Re=d*|U|/nu (donde d es una dimensión característica, |U| es una
velocidad, y nu es la viscosidad cinemática). Chequear que para este caso el valor de la viscosidad
cinemática 0.01 es válida.
Control
El control relativo al manejo de los pasos temporales y a la lectura y escritura de la solución se
define en el archivo “controlDict”.
En este archivo se especifica el solver o “application”, que es este caso es icoFoam, así como el
tiempo de comienzo, fin, y los pasos de tiempo. En este punto se sugiere chequear que el
“deltaT”, es decir el paso de tiempo, es tal que el número de Courant-Friedrich-Lewy (CFD) es
inferior a 1.
Más detalles en “2.1.1.4 Control”, y a los apartados referenciados en éste para más detalles.
Ejecutar el caso
Para ejecutar el caso, nos basta con hacer:
24
Donde puede observarse, entre otras cosas, el chequeo del número de Courant máximo que el
programa calcula en toda la malla, así como los residuos (recuérdese que es un problema no
lineal que requiere de un proceso iterativo en cada paso de tiempo).
Aunque este caso es relativamente sencillo, puede ser que el proceso se pare, o incluso diverja,
para lo cual será necesario realizar las modificaciones oportunas en la definición de los
parámetros de solución.
Si ahora visualizamos el explorador de archivos, veremos que nos aparecen varias carpetas en
distintos pasos de tiempo en los cuales se ha impreso el resultado (recuérdese que esto se
cambia en ControlDict), se sugiere chequear y cambiar esto.
25
Posprocesado y visualización
Para visualizar los resultados podemos ejecutar ParaView (paraFoam) directamente:
26
Para cambiar el mapa de color, clicar en Edit dentro de “Display
(UnstructuredGridRepresentation)”:
27
Si giramos la imagen clicando con el botón izquierdo, podremos ver que aunque hemos
modelado algo en 2D, como la malla es 3D, se visualiza como tal:
28
Para hacer un corte 2D, y quedarnos efectivamente con la solución bidimensional, deberemos
seleccionar cavity.foam en el pipeline browser:
29
En las propiedades del Filtro, deberemos definir el plano de corte a través de un punto y una
normal del plano:
Para dibujar los vectores de velocidad, deberemos primeramente extraer los valores por celda
(ya que por defecto vienen asociados tanto a nodos como a celdas), de tal manera que luego los
vectores se dibujen en el centro de cada celda. Para ello seleccionamos Slice1, y luego el filtro
Alphabetical>Cell Centers:
Y clicamos Apply.
30
Luego, seleccionando CellCenters1 en el pipeline browser, hay que aplicar el filtro
Common>Glyphs, y clicar aplicar. Nótese que en “Properties” y “Display” se puede customizar
cómo queremos que se vean las flechas.
Para visualizar las líneas de corriente, hay que seleccionar Slice1, y luego aplicar el filtro “Stream
Tracer”. Se debe definir correctamente la línea sobre la cual definir las partículas fluidas que
trazar:
Como parte final, se sugiere cambiar el número de pasos de impresión de resultados, así como
el tamaño de la malla, para poder visualizar en el dominio del tiempo tanto el campo de
presiones como el campo de velocidades, para ver cómo se forma el vórtice.
31