Traducción del original en coreano escrito por el autor. Leer el original (한국어)
Método de Galerkin Discontinuo (DGM): Discretización de alta precisión para el análisis de flujos compresibles en mallas no estructuradas
Los puntos 1, 4 y 10 del tetraedro quedan un grado por debajo de 4, 10 y 20. Si el factor de refinamiento no es 2^{K+1}, la tabla es el primer sitio a mirar.
Dentro de la celda, grado . En la cara, un flujo numérico. En una malla no estructurada ese par es DGM.
Al mover p, el número de elementos o smooth/step cambian la curva interior y el salto en la cara.
DG는 각 요소 안에서만 다항식 — 요소 경계에 점프가 보인다. p=3까지 올리면 부드러운 함수는 거의 일치, step은 Gibbs 진동이 나타난다.
En smooth, p=3 se pega a la curva. En step, el mismo p sigue oscilando en el borde.
Ecuación de Gobierno y Separación de Flujos#
Ecuación de conservación para flujo compresible:
Donde:
- : Vector de variables conservativas
- : Flujo convectivo (convective)
- : Flujo viscoso (viscous)
- : Término fuente
Expansión de Funciones de Base y Derivación de la Forma Débil#
Dentro de la celda , la solución se aproxima como una combinación lineal de funciones de base:
es el número de grados de libertad dentro de la celda, determinado por el grado del polinomio de aproximación ( en 3D).
Multiplicando por una función de prueba e integrando sobre :
Al aplicar la fórmula de Green (integración por partes), se divide en integral de volumen e integral de superficie (contorno):
en el contorno es el flujo numérico calculado utilizando información de las celdas adyacentes (por ejemplo, Roe, HLLC, etc.).
Matriz de Masa e Integración Temporal#
Organizando como una Ecuación Diferencial Ordinaria (ODE) para el -ésimo coeficiente de la función de base:
Donde la matriz de masa (mass matrix) es:
Si se utilizan funciones de base ortogonales (como la base de Taylor o los polinomios de Legendre), se convierte en una matriz diagonal, eliminando el costo de calcular la matriz inversa. El vector residual es la suma del término de integral de volumen y el término de flujo de superficie:
Aplicación de la Cuadratura de Gauss#
Las integrales de volumen y superficie se calculan numéricamente mediante la cuadratura de Gauss-Legendre. Para integrar con precisión un polinomio de grado , se requiere una integración de al menos orden .
Número de puntos de Gauss por tipo de celda (por grados representativos):
| Tipo de celda | 1er orden | 2do orden | 3er orden |
|---|---|---|---|
| Tetraedro | 1 | 4 | 10 |
| Hexaedro | 1 | 8 | 27 |
| Prisma | 3 | 9 | 18 |
| Pirámide | 1 | 5 | 15 |
Para los tipos de cara (face), se utiliza el triple de los puntos de la celda (proyección 3D).
en da 1, 4, 10 y 20. Cinco variables conservadas dan 5, 20, 50 y 100 incógnitas por celda. Los puntos 1, 4, 10 del tetraedro coinciden con en , un grado bajo 4, 10, 20. Los 1, 8, 27 del hexaedro son . La regla de triplicar asigna 3, 12 y 30 puntos de cara. El orden vale 1, 3 y 5. Con menos puntos que grados de libertad, el flujo no lineal pierde ese orden primero. Quitar un punto hasta divergir está en el piso de cuadratura de la base de Taylor.
Secuencia de Implementación del Algoritmo#
En la implementación real, se procede en el siguiente orden:
- Clasificación de celdas y caras: Tetra/Hexa/Prisma/Pirámide/Poliedro.
- Preparación de funciones de base: Calcular adecuadas para cada tipo de celda × grado de aproximación.
- Caché de puntos de Gauss: Almacenar las coordenadas y pesos del elemento de referencia (reference element) en la memoria.
- Inicialización de variables: Establecer (condiciones de flujo libre, etc.).
- Bucle (avance temporal):
- Integral de volumen: — Calcular y sumar flujos en cada punto de Gauss.
- Flujo de superficie: — Calcular el flujo numérico.
- Actualización RK: Integración temporal explícita como SSP-RK3.
import numpy as np
def compute_volume_residual(U_hat, phi, dphi, gauss_w, flux_func):
"""Cálculo del residual de volumen (celda individual)"""
Np, Ng = phi.shape # (número de funciones de base, número de puntos de Gauss)
R = np.zeros_like(U_hat)
for g in range(Ng):
# Reconstrucción de magnitudes físicas en el punto de Gauss
U_g = phi[:, g] @ U_hat # shape: (nvar,)
F_g = flux_func(U_g) # (nvar, ndim)
# Contribución al residual de volumen
for k in range(Np):
R[k] += gauss_w[g] * (dphi[k, :, g] @ F_g.T)
return RSelección del Flujo Numérico — Advertencias Prácticas#
En DGM, el flujo numérico está directamente relacionado con la estabilidad y la precisión.
- Flujo de Roe: Captura bien las discontinuidades de contacto, pero puede provocar choques de expansión (expansion shock) si no hay corrección de entropía.
- HLLC: Más estable que Roe, pero en casos raros puede ocurrir una disipación excesiva.
- LxF (Lax-Friedrichs): Implementación simple, pero la disipación es grande, lo que reduce la ganancia de alto orden.
Errores comunes:
- Puntos de Gauss insuficientes: En flujos no lineales, se producen errores de aliasing que reducen el orden.
- Ignorar la diagonalización de la matriz de masa: Si se utilizan funciones de base de FEM comunes, se requiere resolver un sistema lineal en cada paso, lo cual es ineficiente.
- Inconsistencia en la dirección normal de la cara: Verificar siempre que el signo de la normal de la celda adyacente sea opuesto en la cara compartida.
Verificación de Precisión — Vórtice de Taylor-Green#
Al comparar la solución analítica incompresible con los resultados de DGM, el DGM de orden debería mostrar teóricamente una convergencia de . En la práctica, si el error no disminuye veces cuando la malla se refina al doble, conviene revisar el orden de cuadratura o el tratamiento de contorno.
Partir el espaciado a la mitad da el cociente : 4, 8 y 16 en . Clavado en 2, el orden observado es 1. Con puntos un grado abajo, subir tampoco da ese cociente.
¿Fiarse de K=1 cuando el factor de refinamiento no es 4?#
En , bajar por 2 y no por 4 no es una corrida . Los puntos 1, 4, 10 quedan una columna bajo los grados de libertad 4, 10, 20. Con esa columna, el estudio de orden no separa el integrador de la cuadratura.
El contraste es y . En , 10 grados de libertad y cociente 8; en , 20 y 16. LxF puede comerse la ganancia aunque el cociente cuadre. Donde esa disipación aplasta un vórtice pequeño: el esquema de baja disipación.
Referencias#
- Luo, H. et al., "A discontinuous Galerkin method based on a Taylor basis for the compressible flows on arbitrary grids," J. Comput. Phys. 227 (2008).
- Luo, H. et al., "Hybrid discontinuous Galerkin–finite volume techniques for compressible flows on unstructured meshes," AIAA Paper (2012).
Relacionados
Comparte si te resultó útil.