# -*- coding: utf-8 -*-


import matplotlib.pyplot as plt




###############################################################################
######    Diffusion de la chaleur            ##################################
###############################################################################

""" Trecer le profil de température en fonction du temps dans un barreau soumis 
à deux tempétarures différentes aux extrémités."""


# Donnees du problemes
D = 1e-5
L = 1
T1 = 20
T2 = 200

# Discrétisation spatiale
n_x = 101                # Nb de points de la barre
dx =                     # Pas spatial
L_x =                    # Liste des positions de la barre.

# Discrétisation temporelle
dt = 1                # L'énoncé impose un pas temporel de 1 s.
n_t = 4*3600          # Nb d'instants (4h=4*3600s)
t = 0                 # Temps initial


# Initialisations de liste de temperature
L_T = [T1]*n_x    # Initialement, barre à T1 ...
L_T[-1] = T2        # Sauf une extrémité à T2


# Coefficient pratique
c = D*dt/(dx**2)

# Resolution
plt.figure()
plt.plot(L_x,L_T)      # Tracer T(x) initial.
for i in range(n_t):   # Pour chaque instant :
    L_T_temp = [T1]      # T(x) temporaire pour ce t, initialisée à T1 à gauche.
    for k in range(1,n_x-1): # Pour chaque position suivante :
        L_T_temp.append(                     ) # Equation de la chaleur
    L_T_temp.append(T2)      # Extrémité à T2
    L_T[:] = L_T_temp[:]     # Copie complète dans la liste L_T
    if                         : # Toutes les 10 minutes = 600 s...
        plt.plot(L_x,L_T)  # ... tracer T(x)
plt.xlabel('Position x (m)'); plt.ylabel('temperature T (degre C)')
plt.title('Propagation de la chaleur')
plt.show()