Periódicas, igual que antes \(\rho_0 = \rho_N\) y \(\rho_{N+1} = \rho_1\).
Neumann: fijamos el flujo igual a cero \(F_{\frac 1 2} = F_{N+\frac 1 2} = 0\). Es decir, formalmente \(\rho_0 = \rho_{N+1} = 0\) y trabajar con todas las incógnitas interiores.
Dirichlet: fijamos \(\rho(t,-1) = \rho(t,1) = 0\). Podemos elegir \(\rho_1 = \rho_{N+1} = 0\) y trabajar con un punto menos, o ajustar la malla.
T =2ρ =ρ0(x);anim =@animatefor n=1:ceil(T/Δt)global ρplot(x, ρ, ylim=[0.0,1.5], title=@sprintf("t = %0.3f", float((n-1)*Δt)), thickness_scaling =1.5,linewidth=3,label="") ρ = A \ ρendgif(anim,fps=5)
Problema con fuente
La ecuación de calor con una fuente de calor (a veces llamada forzamiento) \[\begin{equation}
\tag{F}
\label{eq:forced}
\frac{\partial \rho}{\partial t} - \frac{\partial^2 u}{\partial x^2} = f(t,x)
\end{equation}\] se plantea en un dominio acotado con las mismas condiciones de contorno.
Si contamos con unos flujos \(F_{i+\frac 1 2} \sim - \nabla u(x_{i+\frac 1 2})\) (que incluyen la condición de contorno) podemos plantear la ecuación \[
\frac{\diff \rho_i} {\diff t} + \frac{F_{i+\frac 1 2} - F_{i-\frac 1 2}}{\Delta x} = f(t,x_i).
\]
Los métodos anteriores quedan, en realidad, como métodos de diferencias finitas \[
\frac{\diff \bm \rho} {\diff t} (t) + A \bm \rho(t) = \begin{pmatrix} f(t, x_1) \\ \vdots \\ f(t, x_N) \end{pmatrix}.
\]
Balance de masa
Con condiciones periódicas, la solución continua satisface \[
\frac{\diff}{\diff t} \int_{-1}^1 \rho(t,x) \diff x = \int_{-1}^1 f(t,x) \diff x.
\]
En el método también es cierto que \[
\Delta x \sum_i \rho^{n+1}_i = \Delta \sum_i \rho^n_i + \Delta t \Delta x \sum_i f(t_n, x_i) .
\]
Método de Euler implícito
Como ya hemos calculado las matrices necesarias, extendemos el código anterior
Code
T =5f(t,x) =sin(π*x) # Tiene \int_{-1}^1 f(t,x) dx = 0.ρ =ρ0(x);anim =@animatefor n=1:ceil(T/Δt)global ρplot(x, ρ, ylim=[0.0,1.5], title=@sprintf("t = %0.3f", float((n-1)*Δt)), thickness_scaling =1.5,linewidth=3,label="") ρ = A \ ( ρ + Δt *f.( n*Δt, x ))endgif(anim,fps=5)
Problema estacionario
El comportamiento habitual es que cuando \(t \to \infty\) las soluciones tienda a uno de los estados estacionarios que resuelven \[\begin{equation}
\tag{E}
\label{eq:stationary}
- \frac{\partial^2 u}{\partial x^2} = f
\end{equation}\]
Esto es cierto con condiciones periódicas si \(f = f(x)\) y \(\int_{-1}^1 f(x) \diff x = 0\).
Dada \(f\), \(\eqref{eq:stationary}\) tiene solución única si:
Con condición de contorno Dirichlet (\(u(0) = u(1) = 0\)) hay una única solución siempre.
Con condiciones periódicas o Neumann (\(- \frac{\partial u}{\partial x} (-1) = - \frac{\partial u}{\partial x} (1) = 0\) en \(\partial \Omega\)) hay solución si y sólo si \(\int_{-1}^1 f = 0\).
Además, si \(u\) es solución y \(C \in \mathbb R\), entonces \(u + C\) es solución.
Si preescribimos \(\int_{-1}^1 u = M\) ya hay única solución.
Si contamos con unos flujos \(F_{i+\frac 1 2} \sim - \nabla u(x_{i+\frac 1 2})\) (que incluyen la condición de contorno) podemos plantear la ecuación \[
\frac{F_{i+\frac 1 2} - F_{i-\frac 1 2}}{\Delta x} = f(x_i).
\]
La condición de masa, caso de ser necesaria, viene dada por \[
\Delta x \sum_{i} \rho_i = M.
\]
Problema estacionario numérico
Para resolver \(\eqref{eq:forced}\) teníamos que estudiar \[
\left(I + \frac{\Delta t}{\Delta x^2} D_2\right) \bm \rho^{n+1} = \bm \rho^n + \Delta t f(t_n).
\]
Pero para resolver \(\eqref{eq:stationary}\) debemos resolver \[
\frac{1}{\Delta x^2} D_2 \bm \rho = \bm f.
\]
El problema con condiciones periódicas no está bien determinado