Noticias

Tutorial: preparación de una simulación multicuerpo con transferencia de calor en OpenFOAM. Parte 2: simulación

CFD

Continuamos con la serie de tutoriales en los que estamos profundizando en nuestras capacidades CFD en OpenFOAM. Hoy completamos el tutorial de simulación multicuerpo con transferencia de calor.

Recordemos que en anterior tutorial aprendimos a generar una malla en el software SALOME-MECA de forma cómoda y sencilla. En este caso partiremos de la malla creada y veremos cuáles son los archivos que nos permitirán llevar a cabo la simulación en OpenFOAM.

 

División en distintos cuerpos de la malla generada.

Antes de comenzar a configurar los archivos de la simulación es importante obtener una malla dividida en tantas regiones como cuerpos existan en la simulación. Si echamos un vistazo a nuestro tutorial de la estructura básica de carpetas de OpenFOAM observaremos que siempre debemos partir de las carpetas “0”, “constant” y “system”. En un caso multicuerpo como este, cada una de estas carpetas contendrá a su vez tantas carpetas como regiones tenga el estudio. Por ejemplo, en nuestro caso, estas carpetas serán “fluid” y “solid”. Cada una de ellas contendrá los archivos pertinentes a esa región.

Para generar las distintas partes de la malla necesarias haremos uso del comando “splitMeshRegions”. Este comando dividirá la malla usando todas aquellas superficies internas que hayamos creado. Adicionalmente, podemos utilizar la opción “cellZones”, que permitirá dividir la malla en tantos “cellzones” como dispongamos (en lugar de dividirla según las superficies internas que contenga el caso). Como nosotros partimos de una malla con cada región creada, haremos uso de dicho comando (“splitMeshRegions –cellZones”, sin el uso de comillas). Se debe ejecutar en la carpeta raíz del caso, y teniendo la malla en su correspondiente ubicación (dentro de “constant” y en su carpeta “polyMesh”). Una vez hecho esto, habremos generado una carpeta “1” en la raíz, en la que tendremos nuestras dos mallas separadas (“fluid” y “solid”), que copiaremos a la carpeta “constant”, dentro de una carpeta con el nombre de su región, junto con el archivo “cellToRegion”.

Para terminar de preparar las mallas, debemos hacer unas pequeñas modificaciones en los archivos “boundary” de cada una de ellas. Aparte de verificar que nuestras entrada y salida en la región fluida están especificadas como “patch” y la pared exterior como “wall” (esto se realiza automáticamente al exportarla desde SALOME), debemos modificar la superficie de contacto entre ambas regiones. Recordemos que en el software de mallado únicamente la nombramos una vez (“solid_heat_wall”), por lo que ahora, en el archivo correspondiente a la malla del fluido, debemos cambiarle el nombre a “fluid_heat_wall” (en el sólido mantendrá su nombre original). Además, por defecto el exportador le asigna automáticamente el tipo “wall”, y en nuestro caso esta superficie será una pared acoplada entre cuerpos, por lo que deberemos renombrarlo a “mappedWall”. A continuación, deberemos añadir unas líneas en las que especificaremos el tipo de contacto, su superficie análoga y la región donde se encuentra dicha superficie, tal y como se muestra en la imagen.

 

 

Tras ello ya dispondremos de dos mallas continuas entre sí con sus correspondientes interfases definidas adecuadamente.

 

Configuración de archivos de la carpeta “constant”.

La carpeta “constant” es una de las que debe contener nuestro directorio principal. Dicha carpeta debe presentar a su vez las carpetas “solid” y “fluid” (que ya debiéramos haber generado para copiar las mallas) y el archivo “regionProperties”. Este archivo se debe incluir en las simulaciones con varias regiones, y en el solo debemos especificar el nombre de nuestras regiones y si son sólido o fluido.

 

 

En ambas regiones debemos añadir los archivos “fvOptions” y «thermophysicalProperties«. El primero sirve para especificar opciones adicionales dentro de esa región, y el segundo presenta las propiedades termodinámicas necesarias para realizar la simulación. En la región fluida, además, deben estar presentes los archivos comunes a cualquier simulación turbulenta con gravedad (“turbulenceProperties” y “g”).

En el archivo «fvOptions«, usaremos un limitador de temperatura con valores comprendidos entre 274 y 1500 para ayudar a la convergencia de la simulación (esto es opcional). Adicionalmente a esta condición, que impondremos en las dos regiones, en la región sólida también crearemos una condición de fuente de energía de duración muy alta con un valor de 100W. Con ello especificamos que el sólido generará esta cantidad de calor de manera constante a lo largo de toda la simulación.

 

 

El archivo «thermophysicalProperties«, como ya hemos comentado, debe contener las propiedades físicas, siendo en este caso la región fluida aire y la región sólida aluminio.

 

 

 

Configuración de archivos de la carpeta “0”.

En esta carpeta volvemos a disponer de las carpetas «fluid» y «solid”. 

Dentro de la primera, deben existir los archivos que contienen las condiciones típicas de una simulación fluidodinámica básica y las de temperatura, siendo estos «alphat«, «epsilon«, «k«, «nut«, «p«, «p_rgh«, «T» y «U«, además del archivo “cellToRegion”, presente en aquellos estudios en los que existan varias regiones.

En ellos simplemente especificaremos un valor de inicialización de cada variable en cada superficie y un valor de presión y temperatura en el campo interno.

Los aspectos más destacables de esta simulación son la especificación de la temperatura en la superficie «inlet» de 300 K y una velocidad en la misma cara de 0.1 m/s, así como un valor de 300 K y 100000 Pa en los campos internos de temperatura y presión, respectivamente.

En el estudio que nos ocupa, debemos especificar qué tipo de condición de contacto se usará en la interfase “sólido-fluido” (“fluid_heat_wall”). En este caso se ha usado el tipo «compressible::turbulentTemperatureCoupledBaffleMixed«.

Por su parte, la región «solid» solo contendrá los archivos «p» y «T», que se especificarán análogamente a los de la región fluida. Para información más detallada de que condiciones de contorno utilizar, se puede consultar la siguiente guía. 

 

 

 

Configuración de archivos de la carpeta “system”.

La carpeta “system” es la última que debemos incorporar a nuestro directorio principal. Dentro de esta deben encontrarse nuevamente las carpetas “fluid” y “solid” y los archivos “controlDict”, “fvSchemes” y “fvSolution”. Adicionalmente, como vamos a realizar el caso de forma descompuesta para aumentar la velocidad de resolución, debemos incorporar también el archivo “decomposeParDict”, en el que especificaremos el número de procesadores que utilizaremos en paralelo. En el archivo “controlDict” debemos especificar el solver que estamos utilizando, “chtMultiRegionFoam” así como el número de iteraciones a realizar y en los otros dos archivos se deben especificar los métodos numéricos a utilizar en la simulación.

Para las simulaciones multirregión, y a excepción del archivo “controlDict”, el contenido de estos archivos situados fuera de los directorios de cada región no será utilizado durante la simulación (pueden estar vacíos), pero el software comprueba que existen antes de iniciar la simulación, por lo que son necesarios. Dentro de la carpeta de cada región si debemos tenerlos adecuadamente configurados ya que estos determinaran cómo resolver el caso.

 

Simulación y visualización de los resultados.

Con todos los archivos configurados, simplemente falta hacer uso del solver «chtMultiRegionFoam«, especificando el número de procesadores a utilizar y la orden «decomposeParallRegions«. 

Tras ello esperamos a que termine la simulación y generamos el clásico archivo vacío «foam.foam» con el método que nos resulte más cómodo.

Si vamos a visualizar los resultados con Paraview es necesario reconstruir la información previamente descompuesta introduciendo la siguiente sentencia en el terminal «reconstructPar -allRegions -latestTime”.

Share This
Abrir chat
1
Hola. Nuestro equipo está disponible para ti en cualquier momento. ¿En qué podemos ayudarte?