La ecuación del calor es una ecuación diferencial parcial que describe la distribución del calor (o variaciones de temperatura) en una región a lo largo del tiempo. Su solución permite determinar la temperatura en cualquier punto de la región en cualquier instante de tiempo.
En este post se desarrollará la ecuación del calor en una dimensión, es decir, en una barra de longitud L. Primero veremos para el caso homogéneo, cuando la temperatura en los extremos de la barra son iguales a cero. Luego veremos el caso no homogéneo, cuando la temperatura en los extremos son distintos de cero.
Caso para condiciones de contorno (frontera) homogéneas:
La ecuación del calor en una dimensión está dada por:
\[\begin{align*} u(x,t) &= \text{Temperatura en el punto x en el tiempo t} \\ K &= \text{Coeficiente de difusión térmica} \\ f(x) &= \text{Temperatura inicial en el punto x} \\ u(0,t) &= \text{Temperatura en el extremo izquierdo de la barra} \\ u(L,t) &= \text{Temperatura en el extremo derecho de la barra} \end{align*}\]
La ecuación del calor se puede resolver usando el método de separación de variables.
importnumpyasnpimportmatplotlib.pyplotaspltfrommatplotlibimportgridspec# Parámetros
L=5# Longitud de la barra
K=0.1# Constante de conductividad térmica
N=10# Número de términos de la serie de Fourier
T=20# Tiempo final
# Malla espacial y temporal
x=np.linspace(0,L,100)# Puntos en el eje x
t=np.linspace(0,T,100)# Puntos en el eje t
X,T=np.meshgrid(x,t)# Matrices de coordenadas
# Solución
u=np.zeros_like(X)# Matriz de temperatura
forninrange(1,N+1):# Suma de la serie de Fourier
ifn%2==1:# Solo los términos impares contribuyen
a_n=4*L/(np.pi**2*n**2)*(-1)**((n-1)/2)# Coeficiente de Fourier
u+=a_n*np.sin(n*np.pi*X/L)*np.exp(-K*(n*np.pi/L)**2*T)# Gráfica
fig=plt.figure(figsize=(10,6))gs=gridspec.GridSpec(1,2,width_ratios=[9,1])# Gráfica principal
ax=plt.subplot(gs[0],projection='3d')surface=ax.plot_surface(X,T,u,cmap='plasma')ax.set_xlabel('x longitud barra (m)')ax.set_ylabel('t tiempo (s)')ax.set_zlabel('u(x,t)')# Barra de color
ax2=plt.subplot(gs[1])cbar=plt.colorbar(surface,cax=ax2,shrink=0.5,aspect=15)cbar.set_label('Temperatura (C°)')plt.tight_layout(pad=2.0)plt.show()
Gráfica de la solución
Fig: Heat Solution for L= 5 , K=0.1
Caso para condiciones de contorno (frontera) no homogéneas:
La ecuación del calor en una dimensión está dada por: