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...

Descripción completa

Guardado en:
Detalles Bibliográficos
Autor principal: Coronel, Thomás
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:
Descripción
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.