Guía de introducción a PyFR

El formato Flux Reconstruction (FR) es un formato numérico fluido compacto de alta precisión. PyFR es un paquete CFD de código abierto que utiliza un formato FR muy preciso para hacer frente a algunos de los problemas de flujo de fluidos más desafiantes del mundo. Especialmente cuando se trata de turbulencias irregulares. Los blogs relacionados se pueden encontrar en el blog de Nvidia . El sitio web oficial de PyFR ofrece descargas y manuales sobre. Este artículo es una guía introductoria basada en el contenido anterior, la plataforma operativa es Ubuntu 19.10.

instalación

  1. Instale las dependencias básicas, el comando es
sudo pip3 install xxx

Estos xxxincluyen:

appdirs >= 1.4.0
gimmik >= 2.0
h5py >= 2.6
mako >= 1.0.0
mpi4py >= 2.0
numpy >= 1.8
pytools >= 2016.2.1
  1. Verifique la versión de gcc :, gcc --versionno debe ser menor a 4.9.
  2. Instale las dependencias restantes:
sudo apt install python3 python3-pip libopenmpi-dev openmpi-bin
sudo apt install metis libmetis-dev libblas3
pip3 install virtualenv
  1. Instalar paraview:sudo apt install paraview
  2. Configure el entorno virtual:
python3 -m virtualenv ENV3
source ENV3/bin/activate

E instale PyFR en el entorno virtual:pip install pyfr

Ejecutar comando

PyFR usa tres formatos de archivo:

  • .ini——Archivo de parámetros
  • .pyfrm—— Archivo de cuadrícula
  • .pyfrs-Archivo de solución

PyFR proporciona varios comandos:

  • pyfr import——Importe archivos en formato .msh o .pyfrm, que contienen información de cuadrícula. P.ej:pyfr import mesh.msh mesh.pyfrm
  • pyfr partition-Divida la cuadrícula existente y sus archivos de solución relacionados. P.ej:pyfr partition 2 mesh.pyfrm solution.pyfrs .
  • pyfr run-Ejecutar una simulación. P.ej:pyfr run mesh.pyfrm configuration.ini
  • pyfr restart——Reinicie una simulación basada en el archivo de solución existente. P.ej:pyfr restart mesh.pyfrm solution.pyfrs
  • pyfr export- La .pyfrsconversión de archivos VTK .vtuo pvtuarchivos no estructurales .

Para ejecutar PyFR en paralelo, pyfruse el prefijo antes del comando mpiexec -n <cores/devices>. Tenga en cuenta que la cuadrícula debe dividirse por adelantado y la cantidad de núcleos o dispositivos debe ser igual a la cantidad de particiones. Luego pyfr runagregue parámetros paralelos al final: -b cuda-Cuda paralelo, -b openmp-OpenMP paralelo, -b opencl-OpenCL paralelo. Si las operaciones anteriores son correctas, debería poder usar OpenMP directamente en este momento. Cuda y OpenCL deben instalarse por sí mismos.

Ejemplo: vórtice Euler bidimensional

Tome OpenMP como ejemplo. Descargue el código fuente del sitio web de PyFR y examplescopie la carpeta en un directorio de trabajo adecuado. euler_vortex_2dAbra el terminal en la carpeta.

  1. Primero, inicie el entorno virtual de Python:source ~/ENV3/bin/activate
  2. Convierta el archivo de malla:pyfr import euler_vortex_2d.msh euler_vortex_2d.pyfrm
  3. Divida la cuadrícula en dos particiones:pyfr partition 2 euler_vortex_2d.pyfrm .
  4. Ejecutar: mpiexec -n 2 pyfr run -b openmp -p euler_vortex_2d.pyfrm euler_vortex_2d.ini
    (Nota: el parámetro paralelo aquí es el -b openmptexto original del manual -b cuda. -n 2Corresponde a las dos particiones en el paso 3.)
  5. Convierta el último fotograma de datos en un .vtuarchivo de formato. El comando es: pyfr export euler_vortex_2d.pyfrm euler_vortex_2d-100.0.pyfrs euler_vortex_2d-100.0.vtu -d 4
    Hay dos puntos a explicar en este comando: uno es traer el archivo .pyfrm, y el otro es usar el último parámetro -d 4, lo que significa subdividir la unidad en 4 subunidades lineales para mejorar la precisión de visualización.
  6. Abra el .vtuarchivo con Paraview . El campo de velocidad es el siguiente:Campo de velocidad

posdata

En particular, debe señalarse que de los ejemplos de cálculo anteriores, la nvelocidad es la más rápida cuando el número de subprocesos paralelos que utilizan OpenMP es exactamente igual al número de núcleos físicos de la computadora; de lo contrario, se ralentizará considerablemente. Por ejemplo, en mi computadora portátil, el -n 2tiempo de ejecución es de solo 19 segundos, -n 4o un solo hilo toma unas pocas horas. Para ser honesto, no entendí por qué la diferencia era tan grande.

Supongo que te gusta

Origin blog.csdn.net/iamzhtr/article/details/103112959
Recomendado
Clasificación