Implementación de modelos Lattice Boltzmann para flujo multifásico con transferencia de calor en unidades de procesamiento gráfico
En este trabajo se implementó un código numérico para resolver problemas de mecánica de fluidos con transferencia de calor en flujos multifásicos con cambio de fase utilizando Unidades de Procesamiento Gráfico (GPU). Se utilizó la arquitectura de las GPU por su diseño, el cual permite realizar la...
Guardado en:
| Autor principal: | |
|---|---|
| Formato: | Tesis NonPeerReviewed |
| Lenguaje: | Español |
| Publicado: |
2020
|
| Materias: | |
| Acceso en línea: | http://ricabib.cab.cnea.gov.ar/914/1/Coronel.pdf |
| Aporte de: |
| Sumario: | En este trabajo se implementó un código numérico para resolver problemas de
mecánica de fluidos con transferencia de calor en flujos multifásicos con cambio de
fase utilizando Unidades de Procesamiento Gráfico (GPU). Se utilizó la arquitectura
de las GPU por su diseño, el cual permite realizar la ejecución de instrucciones con
elevado nivel de paralelismo, y así reducir los costos computacionales de los algoritmos
involucrados.
El modelo de lattice Boltzmann (LBM) pseudopotencial es el utilizado para abordar
los problemas de interés, el cual resuelve de manera indirecta ecuaciones diferenciales
no lineales por medio de ecuaciones lineales más sencilla, y además tiene la ventaja de
resultar altamente paralelizable. En particular, para el presente trabajo se utilizó un
LBM con dos ecuaciones pseudopotencial con operador MRT.
El código realizado se implementó en los lenguajes de programación C, Cuda C y
Python, en dónde el desarrollo del proyecto se llevó a cabo mediante la herramienta
CMake con la posibilidad de seleccionar su tipo de variables (float o double). El
proyecto se planificó para que los kernels de Cuda C compilados puedan ser implementados
en un script de Python con su módulo PyCuda.
La validación del código se realizó en CPU y GPU para diferentes problemas
numéricos. Se realizó una comparación entre los tiempos de cálculo del código en los
diferentes lenguajes utilizados, en donde se obtuvo que la implementación en Cuda
C llega a ser 23 veces más rápida que el equivalente en C para un único proceso, en
las GPU y CPU evaluadas durante este Proyecto Integrador. Por otro lado, al realizar
la comparación del código implementado en PyCuda con respecto al equivalente en
Cuda C, se obtuvo que el primero es alrededor de un 10% más lento que el segundo.
En cuanto a la comparación de la conveniencia de utilización de tipos de variable float
o double, se obtuvo que la diferencia porcentual entre las precisiones es cercana al
0,003 %, y que el tiempo de cálculo en variables tipo double es aproximadamente un
25% mayor que en float. |
|---|