Por Daniel Duque
Se suponen cambios de un campo f sólo en la dirección x
El cambio en la cantidad total AΔx,fi será:
ddt(AΔxfi)=Φi−1/2+Φi+1/2
Los flujos por las caras vienen dados por:
Φi−1/2=Acfi−1/2
Φi+1/2=−Acfi+1/2
ddt(AΔxfi)=Acfi−1/2−Acfi+1/2
Un problema obvio es que no conocemos el campo en los puntos intermedios.
Así que podemos suponer una interpolación lineal:
fi−1/2≈fi−1+fi2
fi+1/2≈fi+fi+12
De este modo,
ddt(AΔxfi)=Acfi−1−fi+12
dfidt=−cfi+1−fi−12Δx
La parte derecha se puede identificar como la derivada espacial (centrada):
∂f∂t+c∂f∂x=0
Muy a menudo, se parte de las EDPs, conocidas, por ejempo:
∂f∂t+c∂f∂x=0
Estas se discretizan: sustituyendo las derivadas por diferencias.
Sin embargo, este es un proceso de ida y vuelta, porque las EDPs se deducen a nivel discreto.
Para nosotros, es más útil la expresión discreta:
dfidt=−cfi+1−fi−12Δx
De hecho, habría que discretizar la derivada temporal también. Lo más sencillo es el método de Euler:
dfidt≈fn+1i−fniΔt
Donde el tiempo es t=nΔt.
Interpretando que la parte derecha de la ecuación se refiere al paso actual:
fn+1i−fniΔt=−cfni+1−fni−12Δx
Se llega a:
fn+1i=fni−cΔt2Δx(fni+1−fni−1)
Atención a la combinación cΔtΔx: es el número de Courant.
Sin embargo, es más estable si la parte derecha se considera que se refiere a valores del siguiente tiempo (¡desconocidos!). Se llega a
fn+1i=fni−cΔt2Δx(fn+1i+1−fn+1i−1)
La interpolación lineal resulta ser bastante mala para estos problemas. Es mucho mejor un esquema "upwind":
fi−1/2≈fi−1
fi+1/2≈fi