Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Coste computacional
José Miguel Pérez - (5-Abril-2020)
Versión 1.0
Nη
u ∆y
D D
∆η
v 1
y ∆x
η 1 ∆ξ Nξ
x ξ
x = x(ξ; η) y = 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á,
(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.
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
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