Lección 1.3– Estabilidad y Precisión (flujo en canal cont. se lección 1.1)
En las dos lecciones anteriores, se aprendió cómo iniciar la simulación (Lección 1.1), y algunas de las operaciones de visualización (Lección 1.2). En la Lección 1.2, también se observó que hay oscilaciones numéricas en los campos de velocidad y vorticidad (Figs. 9 y 10 de la Lección 1.2). En esta lección, aprenderemos cómo configurar algunos de los parámetros en grid.txt para mejorar la precisión y / o la estabilidad numérica.
Generalmente en CFD (Dinámica de Fluidos Computacional por sus siglas en Ingles), a más precisión de la simulación se requieren más recursos computacionales (tiempo de cálculo, memoria RAM, modos de códigos complicados,… ). También la mayoría de las veces, tenemos que comprometer la precisión de la simulación y el tiempo de computacional por la estabilidad numérica. Por favor, tenga en cuenta de ellos y sigamos adelante.
Removiendo la Inestabilidad Numérica
En primer lugar, vamos a considerar las oscilaciones numéricas que observamos en la Lección 1.2. Partimos con el original grid.txt, para el caso de caudal en canal 2D que se puede descargar desde aquí. Abra directamente el grid.txt del directorio principal. Como se explicó en la Lección 1.1, en el grid.txt se especifican los parámetros numéricos. Todas las líneas, excepto las líneas separadoras consisten en 3 bloques. Por ejemplo, después del separador de la segunda línea, se ve esto:
· 01:cmode 0 // Simulation mode, ….
El primer bloque (01:cmode) denota el nombre de cada parámetro (a menudo se usa un nombre similar a la notación usada en la guía de usuario Users’ Guide). El segundo bloque (“0” en el ejemplo anterior) es el número que se especifica para cada parámetro. Por lo que en el tercer bloque (/ / Modo de simulación, …) es sólo un comentario, y no tiene nada que ver con los resultados de la simulación. Estos tres bloques tienen que estar separados por espacio (s).
Por favor, busque las siguientes líneas:
· 02:nx 384 // No. grid points in x
· 03:ny 128 // No. grid points in y
· 04:lx 0.015 // Domain x-size
· 05:ly 0.005 // Domain y-size
Como dicen los comentarios (después del tercer bloque) nx y ny son, respectivamente, el número de puntos de la rejilla en las direcciones “x” e “y”, y lx y ly son, respectivamente, la longitud en las direcciones “x” e “y” (use el SI de unidades). Desde que Flowsquare resuelve campo de flujo utilizando el esquema de diferencias finitas, a mayor número de puntos de la rejilla en una longitud de una unidad de dominio significa que sería más precisa la simulación. Sin embargo, a más puntos de rejilla se aumenta el tiempo de cálculo computacional, por lo que se tiene que equilibrar entre la resolución y el tiempo de cálculo. Además, excepto en casos especiales, las densidades de cuadrícula (lx / nx y ly / ny) en direcciones “x” e “y” deben ser iguales.
Ahora, tenemos las siguientes líneas en grid.txt.
· 10:nfil 0 // Interval time steps for filtering
· 11:wfil 0 // Relaxation parameter for filtering
Estas líneas están directamente relacionados con el problema actual – oscilaciones no físicas. El filtrado significa en agregar una viscosidad a su flujo de manera que las pequeñas perturbaciones, que son demasiado pequeñas para ser físicos, desaparecen. Vamos a cambiar las líneas anteriores a:
· 10:nfil 1 // Interval time steps for filtering
· 11:wfil 1 // Relaxation parameter for filtering
Al iniciar la simulación. Vamos a usar “Ch0_filter” como el nombre del caso de simulación. Alrededor de los 600 pasos de tiempo (aproximadamente 1 minuto de simulación), detenega la simulación y despliegue el gráfico de la sección transversal del campo “v” (componente de velocidad vertical), al igual que la que se muestra en la Figura 9 de la Lección 1.2. Sin embargo esta vez, la distorsión desaparece y el campo “v” y este sería suave como el de la figura. 1 se muestra a continuación.
Por lo general, usted tendrá que utilizar el filtrado para la mayoría de las simulaciones. Sin embargo, utilizando wfil = 1 puede ser a veces demasiado y que puede resultar en un fluido como el ketchup. Se recomienda usar un wfil lo más pequeño posible (0,01-0,1).
Mejorando la precisión
Usted puede encontrar la siguiente línea que especifica el esquema numérico que se utiliza en la simulación:
· 09:iorder 0 // 0: low order, 1: high order, ….
Se puede utilizar un número entre 0 y 3 para el “iorder” para elegir el esquema numérico, y cada número significa:
· iorder = 0: Esquema Bajo nivel (diferencias de 2º, integral de 1º orden )
· iorder = 1: Esquema de alto orden (diferencias de 4 º, integral de 3º)
· iorder = 2: Diferencia de 2º orden y metodo de Lax-Wendroff
· iorder = 3: Diferencia de 4 º orden y metodo de Lax-Wendroff
Aquí, vamos a especificar “1” para “iorder” (como sigue), lo que significa que vamos a utilizar un esquema de orden superior para mejorar la precisión de la simulación.
· 09:iorder 1 // 0: low order, 1: high order, ….
Además, dado que queremos simular con la mayor precisión posible, quite toda la viscosidad adicional apagando el filtrado como se muestra:
· 10:nfil 0 // Interval time steps for filtering
· 11:wfil 0 // Relaxation parameter for filtering
Ahora, estamos listos para empezar la simulación de alta precisión del caso del caudal en canal 2D. Esta vez, el tiempo de cálculo puede ser mucho más largo (aproximadamente 3-5 veces). Usted puede detener la simulación para comprobar si hay distorsión numérica (esperemos que no!). Vamos a nombrar la simulación de alto orden como “Ch1”, y simular el flujo mediante el esquema de alta precisión hasta 4000 pasos de tiempo. A continuación, vamos a comparar los resultados bajos y altos de simulación orden usando el modo de post-análisis. Gracias por leer!