Está en la página 1de 4

Notas - DFC - Capı́tulo 3

Coste computacional
José Miguel Pérez - (5-Abril-2020)

Versión 1.0

Problema 5 (Examen Ordinario - VA - CTA - Curso 2018 - 2019)


Dado un flujo viscoso bidimensional en una tobera convergente divergente que funciona en régimen
subsónico, se pretende obtener la solución del problema mediante la resolución numérica de las ecuaciones
de Euler,
@U @U @U
+A +B =0. (1)
@t @x @y
Para ello asumiremos que existe una transformación de coordenadas que nos permite transformar la malla
de la tobera o malla fı́sica (ver figura 1-Izquierda) en una malla cartesiana equi-espaciada o malla computa-
cional (ver figura 1-Derecha). Como puede verse en la figura existe una transformación entre ambas mallas
de la forma ⇠ = ⇠(x, y) y ⌘ = ⌘(x, y), donde x y y son las coordenadas fı́sicas y ⇠ y ⌘ las computacionales.
Los nodos en los que se definen las variables, y se resuelven las ecuaciones, se obtienen de la intersección
de las lı́neas discontinuas en cualquiera de las dos mallas. La intersección de las lı́neas discontinuas con las
continuas definen los nodos del contorno.
Como se puede ver en la malla computacional la separación entre nodos en la dirección ⇠ y ⌘ es respec-
tivamente ⇠ y ⌘ (las mismas en toda la malla). Mientras que el número de nodos internos en ambas
direcciones es N⇠ y N⌘ , respectivamente. Para finalizar, la transformación entre mallas es uno a uno, por lo
que ambas mallas tienen el mismo número de nodos.
L L


u ∆y

D D
∆η

v 1

y ∆x
η 1 ∆ξ Nξ

x ξ
x = x(ξ; η) y = y(ξ; η)

ξ = ξ(x; y); η = η(x; y)

Figure 1: Malla estructurada utilizada en la resolución de las ecuaciones de Euler. La malla de la izquierda
está definida en variables fı́sicas mientras que la de la derecha lo está en variables computacionales.

Antes de comenzar la simulación numérica es conveniente realizar una estimación del coste computacional
de dicha simulación. En primer lugar debemos determinar el número de variables computacionales. Si U
dado por (1) es, por ejemplo, el vector de variables primitivas, U = (⇢, u, v, p)T , entonces el número de

1 of 4
variables computacionales es nv N , donde nv = 4 (número de variables primitivas) y N = N⇠ N⌘ (número de
nodos internos de la malla).
Por otro lado las ecuaciones discretizadas adoptarán la forma,
Vn+1 = Vn + tCVn ,
donde Vn+1 es el vector de variables computacionales a tiempo tn+1 , que como hemos dicho tendrá dimensión
igual a nv N , y C es una matriz con nv N filas y nv N columnas. Esta matriz será una matriz “sparse”. Es decir
sus elementos serán nulos salvo en un número m (pequeño) de diagonales, incluyendo la diagonal principal.
Esto significa que el número de elementos no nulos será del orden de mnv N . Este número de elementos será
el número de multiplicaciones que realizaremos en cada iterada temporal cuando multipliquemos la matriz
C por Vn . Por lo tanto el número de operaciones por iteración temporal (excluyendo sumas que son menos
costosas que las multiplicaciones) será,

Nop⇥iterada = mnv N = mnv N⇠ N⌘ . (2)


Para obtener el coste computacional es necesario estimar el número de iteraciones temporales a realizar.
Para ello necesitamos saber el tiempo caracterı́stico del problema, el cuál será proporcional al tiempo de
simulación, y el valor de t utilizado en las simulaciones numéricas. Dado que el flujo se nueve en esencia
a lo largo del eje x, u > v, tenemos que tc ⇠ L/c, donde c es la velocidad caracterı́stica del fluido. Bajo
esta misma hipótesis, la condición de CFL nos dice que tc/ ⇠ ⇠ O(1), es decir, t ⇠ ⇠/c. El número de
iteradas temporales será por lo tanto igual a,
tc L c
nit temporales ⇠
= = N⇠ . (3)
t c ⇠
En la expresión anterior hemos utilizado que L = N⇠ ⇠. Con estas expresiones en mente tenemos que:
(a) Estimación del número de iteradas temporales: Este número viene dado por la ecuación (3).
(b) Coste computacional de la simulación bajo las condiciones anteriormente descritas: El coste computa-
cional es igual al coste computacional por iterada temporal multiplicado por el número total de iteradas
temporales. Utilizando las expresiones (2) y (3) tenemos que,

Ccomp. = nit temporales ⇥ Nop⇥iterada / N⇠2 N⌘ (4)


Para finalizar, si N⇠ ⇠ N⌘ , entonces,
Ccomp. / N⇠3 . (5)

(c) Supongamos ahora que reescalamos el dominio L0 = ↵L y D0 = ↵D, donde ↵ es un número real.
Sin pérdida de generalidad supondremos que dicho número es mayor que la unidad. Asumiremos
también que mantenemos el número de nodos en las direcciones ⇠ y ⌘, es decir, N⇠0 = N⇠ y N⌘0 = N⌘ .
Entonces, ¿cuál es el nuevo coste computacional? Para responder esta pregunta es necesario recalcular
los parámetros anteriores.
L0 ↵L
(1) Tiempo caracterı́stico: t0c = = = ↵tc , donde tc es el tiempo caracterı́stico calculado
c c
con anterioridad. Es decir, al dilatar el dominio y mantener la velocidad caracterı́stica constante
tenemos que el tiempo caracterı́stico también se dilata el mismo factor ↵ que lo hizo el dominio.
L0 ↵L
(2) Distancia entre nodos: ⇠ 0 = 0 = = ↵ ⇠ . Es decir, el espaciado entre nodos se dilata un
N⇠ N⇠
factor ↵.
⇠0 ↵ ⇠
(3) Paso de tiempo utilizado en el esquema temporal: t0 ⇠ = = ↵ t , donde t es el
c c
paso de tiempo calculado con anterioridad.
t0 ↵tc
(4) Número de iteradas temporales: n0it temporales = c 0 ⇠ = nit temporales , donde nit temporales
t ↵ t
es el número de iteradas temporales obtenidas en el apartado (b). Esto es razonable, dado que
aunque aumentó el tiempo caracterı́stico un factor ↵ también lo hizo el paso de tiempo, por el
mismo factor, por lo que el número de iteradas temporales es el mismo.

2 of 4
(5) Dimensión del vector de variables computacionales y número de operaciones por iterada: nv N⇠0 N⌘0 =
nv N⇠ N⌘ . Esto último nos indica que el número de operaciones por paso de tiempo es idéntico al
0
obtenido en el apartado anterior, Nop⇥iterada = Nop⇥iterada , ver ecuación (2).
Con todo esto en mente, tenemos que el nuevo coste computacional será,
0
Ccomp. = n0it temporales
0
⇥ Nop⇥iterada = nit temporales ⇥ Nop⇥iterada = Ccomp. (6)

Es decir, obtenemos el mismo coste computacional que el obtenido en el apartado (b), ver ecuaciones
(4) y (5).
(d) Supongamos ahora que el dominio se dilata sólo a lo largo del eje x (o eje ⇠) un factor ↵ incrementado
en ese mismo factor el número de nodos en dicha dirección. Es decir; L0 = ↵L, D0 = D, N⇠0 = ↵N⇠ y
N⌘0 = N⌘ . Entonces, ¿cuál es el coste computacional en estas condiciones? Para responder la pregunta
seguiremos el mismo procedimiento que el considerado en el apartado (c).
L0 ↵L
(1) Tiempo caracterı́stico: t0c = = = ↵tc .
c c
0
L ↵L
(2) Distancia entre nodos: ⇠0 = 0 = = ⇠.
N⇠ ↵N⇠
(3) Paso de tiempo utilizado en el esquema temporal: Asumiendo que u > v, tenemos que, t0 ⇠
⇠0 ⇠
= ⇠ t , siendo c la velocidad caracterı́stica del fluido en la dirección x (o ⇠).
c c
t0 ↵tc
(4) Número de iteradas temporales: n0it temporales = c 0 ⇠ = ↵nit temporales , donde nit temporales
t t
viene dada por (3).
(5) Dimensión del vector de variables computacionales y número de operaciones por iterada temporal:
nv N⇠0 N⌘0 = nv ↵N⇠ N⌘ . Es decir, Nop⇥iterada
0
= ↵Nop⇥iterada , ver ecuación (2).
Por lo tanto el coste computacional será,
0
Ccomp. = n0it temporales
0
⇥ Nop⇥iterada = ↵nit temporales ⇥ ↵Nop⇥iterada = ↵2 Ccomp.
Se obtiene un coste computacional ↵2 veces superior al coste computacional visto en (4).
(e) Respecto a las condiciones de contorno, las ecuaciones de Euler bidimensionales podrán descomponerse
en un conjunto de cuatro ondas caracterı́sticas con velocidades: u + a, u, u y u + a. Dado que el flujo es
subsónico, tres de estas ondas entraran en el dominio computacional por la izquierda, mientras que la
otra entrará por la derecha (ver figura 1). Por lo tanto el número de condiciones de contorno a imponer
en cada punto de los contornos, serán, tres en la entrada y una en la salida. Más concretamente, en
cada punto de la salida debemos imponer la presión estática y en cada punto del contorno de entrada
debemos imponer dos variables termodinámicas de remanso, por ejemplo p0 y T0 , y una condición
relacionada con la velocidad tangencial; o la componente v de la velocidad o el ángulo con el que el
flujo entra en la tobera.

Otros exámenes posteriores,...


En exámenes posteriores se introdujo un tiempo caracterı́stico adicional al problema relacionado con
la imposición de una condición de contorno (en x = 0) armónica en el tiempo con periodo T (ver
problemas 3, 6 y 6 de los exámenes 10, 11 y 12, respectivamente). Asociado a este periodo tenemos
definida una frecuencia angular ! = 2⇡/T . Por lo tanto tendremos dos tiempos; (a) el tiempo de
residencia del fluido en la tobera, tr ⇠ L/c (considerado en el problema anterior) y (b) el tiempo de
la oscilación del flujo en el contorno to ⇠ ! 1 . El tiempo caracterı́stico del problema será el mayor de
los dos, y lo denominaremos tp . Definiendo el número de Strouhal,
St = tr /to ⇠ L!/c , (7)
tenemos que si St 1, tp = tr , por lo que procedemos igual que hicimos con anterioridad y si St ⌧ 1
entonces tp = to y debemos reescribir las expresiones del ejercicio anterior. En ambos casos el número
de iteradas temporales nit temporales = tp / t. A continuación definimos algunos conceptos utilizados
en los ejercicios 3, 3 y 6 de los exámenes 10, 11 y 12, respectivamente.

3 of 4
• Número de puntos por longitud de onda (Npplo ): Dada una onda de longitud l = 2⇡/k, y una
discretización espacial homogénea con distancia entre nodos adyacentes ⇠, entonces,
l lN⇠ lN⇠
Npplo = = = . (8)
⇠ ⇠N⇠ L

Dado que la onda se mueve con velocidad c, el espacio que recorre ésta en un periodo T es igual
a cT . Esta magnitud es la longitud de la onda, por lo que l = cT ⇠ c/!. Sustituyendo esto en la
expresión anterior, se tiene que
cN⇠ N⇠
Npplo ⇠ ⇠ (9)
!L St
En el último paso en la expresión anterior hemos utilizado (7). Dado que k̂ = ⇠k y como
k = 2⇡/l, entonces, k̂ ⇠ ⇠/l pero esto es 1/Npplo (ver ecuación (8)), por lo que utilizando (9) se
tiene que
St
k̂ ⇠ . (10)
N⇠
• Número de pasos temporales por periodo de las onda (Nppp ): Dada una onda de periodo T , y
dado el paso temporal t ⇠ ⇠/c definido por razones de estabilidad, entonces

T c cL L 1 N⇠
Nppp = ⇠ = = = . (11)
t ⇠! ⇠!L ⇠ St St

De nuevo utilizamos (7) en la penúltima igualdad.


• Coste computacional cuando St ⌧ 1. En este caso el tiempo caracterı́stico viene dado por to , por
lo que en la integración numérica el número de pasos temporales a dar debe ser nit temporales =
to / t. Dado que to ⇠ 1/! y por razones de estabilidad t ⇠ ⇠/c, tenemos que,

c N⇠
nit temporales ⇠ = Nppp ⇠ . (12)
⇠! St
En los últimos dos pasos de la expresión anterior hemos utilizado (11). Por otro lado si recordamos,
el coste computacional viene dado por (5) donde ahora nit temporales esta definido por (12),

1 3
Ccomp. = nit temporales ⇥ Nop⇥iterada / N , (13)
St ⇠
donde asumimos que N⇠ ⇠ N⌘ .
• Error relativo temporal para un esquema de orden m,
✓ ◆✓ ◆
m 1 m m+1 1
Et ⇠ t @t u .
(m + 1)! @t u

El primer término entre paréntesis es el término dominante del error cometido en el esquema de
orden m. El segundo término es el valor de la derivada temporal, por lo que Etm mide el valor del
error de la derivada temporal en comparación con el valor de dicha derivada (error relativo!!!).
• Error relativo espacial para un esquema de orden m,
✓ ◆✓ ◆
1 1
Exm ⇠ xm @xm+1 u .
(m + 1)! @x u

Mismo razonamiento que en el caso anterior. En caso de duda pensar en el término dominante del
error cometido cuando se considera la discretización central de segundo orden de la derivada espacial
vista en clase.

4 of 4

También podría gustarte