Lien vers le sujet : https://www.doc-solus.fr/prepa/sci/adc/bin/view.corrige.html?q=PSI_PHYSIQUE_CENTRALE_2_2016
Article d'histoire des sciences intéressant sur la loi de refroidissement de Newton (utilisée dans le sujet) :
L'énergie thermique de la résistance est fournie au système qui comprend :
Dans la première phase de chauffage, on peut supposer que les oeufs ne sont pas chauffés du tout car ils sont au-dessus de l'eau. Le système chauffé dans la première phase est donc seulement constitué de l'eau et du cuiseur, que le sujet propose de représenter via la notion de valeur en eau $m_c$.
On peut donc écrire que la puissance électrique devient chaleur et est intégralement transférée au système (car les échanges sont considérés adiabatiques, donc pas de pertes externes) :
$$ \Delta Q_{th} = \mathscr{P} \Delta t_1 = \Delta e_{int} = (m_c + m_0) c (T_{eb} - T_0) $$On en déduit :
$$ \Delta t_1 = (m_c + m_0) c (T_{eb} - T_0) / \mathscr{P} $$La connaissance du temps de chauffage à vide $\Delta t_0$ nous permet d'écrire la chose suivante :
$$ \Delta t_0 = (m_c + m_0) c (T_{eb} - T_0) / \mathscr{P} $$On en déduit la valeur en eau du cuiseur : $$ m_c = \frac{ \mathscr{P} \Delta t_0 }{ c (T_{eb} - T_0) } - m_0 $$
Application numérique :
P = 350 # W
delta_t0 = 150 # s
m_0 = 150 # g
c = 4.18 # J / g / K
T_eb = 100 # °C
T_0 = 20 # °C
m_c = P * delta_t0 / (c * (T_eb - T_0)) - m_0
print(f"m_c: {m_c:.2f} g")
m_c: 7.00 g
Je ne comprends pas bien les explications sur la pique. Le raisonnement pourrait être qu'on perce les coquilles pour permettre aux oeufs de cuire le plus lentement possible dans le but de perdre le moins d'eau possible.
Ou alors de permettre à la vapeur d'eau d'aller au plus proche de l'intérieur de la coquille (on fait des trous après avoir mis les oeufs dans le récipient).
Ou alors d'éviter que les oeufs explosent à cause de la surpression d'air chauffé à l'intérieur ?
Hypothèses : l'oeuf est sphérique de rayon $r_2$, entièrement constitué d'eau.
(a) bilan énergétique sur une couche sphérique
Volume d'une couche sphérique de rayon $r$ et d'épaisseur $dr$ (développement limité) :
$$ V \approx 4 \pi r^2 dr $$La variation d'énergie interne dans la couche pendant un instant $dt$ est
$$ \Delta e|_t^{t+dt} = \mu V c \frac{ \partial T }{ \partial t } dt $$Cette variation d'énergie interne vient de la chaleur qui a été transférée par conduction entre les deux couches au-dessus et en dessous. On peut donc écrire ceci, en notant $j(r, t) \vec{e}_r$ le vecteur flux surfacique de chaleur :
$$ \Delta e|_t^{t+dt} = -\frac{\partial}{\partial r}\left ( 4 \pi r^2 j(r, t) \right ) dr dt $$Note : on a fait l'hypothèse que le champ de température ne dépendait que de $r$, mais des angles sphériques, dans la mesure où on considère que la chaleur diffuse de l'extérieur vers l'intérieur de l'oeuf de manière isotrope.
En égalisant les deux termes et en simplifiant, on obtient :
$$ \mu r^2 c \frac{ \partial T }{ \partial t } = - \frac{\partial r^2 j(r, t)}{\partial r} $$En introduisant le loi de Fourier $j_{th}(r,t) = - \lambda \partial T(r, t) / \partial r$, on obtient
$$ \mu r^2 c \frac{ \partial T }{ \partial t } = \lambda \frac{\partial}{\partial r} \left ( r^2 \frac{\partial T}{\partial r} \right ) $$(b) introduction de variables réduites
En introduisant les variables réduites $\rho= r / r_2$ et $\tau = t / \theta$ l'équation précédente devient :
$$ \frac{r_2^2 \mu c }{\lambda \theta} \frac{\partial T}{\partial \tau} = \frac{1}{\rho^2} \frac{\partial}{\partial \rho} \left ( \rho^2 \frac{ \partial T }{ \partial \rho }\right ) $$On en déduit
$$ \theta = \frac{ r_2^2 \mu c }{\lambda } $$ce qui nous permet d'obtenir la forme voulue par l'énoncé de l'équation de la chaleur
$$ \frac{\partial T}{\partial \tau} = \frac{1}{\rho^2} \frac{\partial}{\partial \rho} \left ( \rho^2 \frac{ \partial T }{ \partial \rho }\right ) $$Commentaire sur la dépendance en $r^2$ de $\theta$ : on retrouve le fait que la diffusion thermique ralentit de plus en plus au fur et à mesure de la distance parcourue (je pense à $t = L^2 / (4 D)$, dont la formule ci-dessus est l'analogue). Si on le dit à l'envers : le fait d'avoir un temps de diffusion proportionnel à la distance au carré montre que la longueur diffusée croît en racine de t, ce qui est l'une des solutions classiques de l'équation de la chaleur.
(a) partie temporelle
En injectant la forme de solution à variables séparées dans l'équation de la chaleur, on obtient :
$$ \frac{g'}{g} = \frac{1}{f} (\frac{2}{\rho} f' + f'') $$Le terme de gauche ne dépend que du temps $\tau$ alors que le terme de droite ne dépend que de l'espace $\rho$. On peut donc dire que c'est une constante.
Concernant la partie temporelle, si la constante est positive, alors on a une solution en exponentielle croissante. Etant donné que ce n'est pas physique, la constante doit être négative. Et donc on peut écrire :
$$ \frac{1}{g(\tau)} \frac{d g(\tau)}{d\tau} = - A^2, $$avec $A > 0$.
On en déduit que $g(\tau)$ s'écrit
$$ g(\tau) = C_\tau \exp(-A^2 \tau) $$(b) partie spatiale
Après avoir remplacé $f(\rho) = \frac{F(\rho)}{\rho}$ dans l'équation différentielle, on obtient :
$$ \frac{ d^2 F(\rho) }{ d^2 \rho } + A^2 F(\rho) = 0 $$C'est une équation différentielle linéaire à coefficients réels constants d'ordre 2 mais que l'on connaît bien : l'équation de l'oscillateur harmonique.
(pour le cas général voir https://fr.wikipedia.org/wiki/%C3%89quation_diff%C3%A9rentielle_lin%C3%A9aire_d%27ordre_deux#Cas_r%C3%A9el)
La solution s'écrit
$$ F(\rho)=C_1\cos(A\rho)+C_2\sin(A\rho) $$On en déduit
$$ f(\rho) = \frac{F(\rho)}{\rho} = C_1 / \rho \cos(A\rho)+C_2 / \rho \sin(A\rho) $$On peut noter que l'on cherche une solution valable pour $\rho$ entre 0 et 1.
Etant donné que
$$\lim_{\rho\rightarrow 0} \frac{ \cos(A \rho)} { \rho }= +\infty,$$on en déduit que $C_1 = 0$.
(c) solution générale
Finalement, on obtient la solution générale $T(\rho, \tau) = T_{eb} + f(\rho) g(\tau)$ :
$$ T(\rho, \tau) = T_{eb} + \frac{C_2 }{\rho} \sin(A\rho) C_\tau \exp(-A^2 \tau) $$ou encore $$ T(\rho, \tau) = T_{eb} + \frac{C_2' }{\rho} \sin(A\rho) \exp(-A^2 \tau) $$
Cette solution est valable pour n'importe quelle valeur de $A$ strictement positive. On en déduit, par le théorème de superposition que les solutions de la forme suivante sont valables : $$ T(\rho, \tau) = T_{eb} + \sum_i \frac{\beta_i \sin(A_i\rho)}{\rho} \exp(-A_i^2 \tau). $$
On devrait logiquement obtenir les bons coefficients $\beta_i$ en utilisant les conditions aux limites et initiales.
Ce sont :
Dans l'approximation de Fourier, on ne garde qu'une seule "harmonique" de la solution complète, celle avec le plus petit $A$ (et qui décroît donc le moins vite).
$$ T(\rho, \tau) \approx T_{eb} + \frac{\beta \sin(A\rho)}{\rho} \exp(-A^2 \tau) $$(a) flux entrant
Le flux de chaleur à la surface de l'oeuf est égal à
$$ \vec{j}_{th} \cdot \vec{u}_r = h \left( T\left(\rho=1, \tau\right) - T_{eb} \right) = h\beta \sin{A} \exp(-A^2\tau) $$Or, on peut aussi calculer ce flux de chaleur grâce à la loi de Fourier $j_{th}(r,t) = - \lambda \partial T(r, t) / \partial r$
Autrement dit, en utilisant la solution approchée du champ de température on peut évaluer cette expression et trouver
$$ \delta Q / \delta t = - \lambda \partial T(r, t) / \partial r = - \lambda \frac{\partial T(\rho = 1, \tau)} { \partial \rho} \frac{\partial \rho}{\partial r} = -\frac{\lambda \beta \exp(-A^2 \tau)}{r_2} \left ( A \cos{A} - \sin{A}\right ) $$En égalisant ces deux expressions, on obtient bien l'expression demandée :
$$ \tan{A} = \frac{A}{1 - \frac{r_2 h}{\lambda}} $$On peut traçer cette "relation de dispersion" qui fixe les valeurs possibles de A.
import numpy as np
import matplotlib.pyplot as plt
plt.style.use('bmh')
%matplotlib inline
from ipywidgets import interact
@interact(r2=(0.001, 0.05, 0.001), h=(0, 2400, 100), lambd=(0.01, 1.2, 0.01))
def surface_relation(r2=0.025, h=1200, lambd=0.6):
A = np.linspace(0, 10, num=500)
fig, ax = plt.subplots()
ax.plot(A, np.tan(A) - A / (1 - r2 * h / lambd), label=r'$\tan{A} - \frac{A}{1 - \frac{r_2 h}{\lambda}}$')
ax.plot(A, A / (1 - r2 * h / lambd), label=r'$\frac{A}{1 - \frac{r_2 h}{\lambda}}$')
ax.plot(A, np.zeros_like(A))
ax.set_ylim(-2, 2)
ax.vlines(np.pi, -10, 10, label='approx. solution')
ax.set_xlabel('$A$')
ax.legend()
interactive(children=(FloatSlider(value=0.025, description='r2', max=0.05, min=0.001, step=0.001), IntSlider(v…
surface_relation()
(b) solution approchée de l'équation de dispersion (conditions aux limites)
Si $r_2 = 0.025 m$ alors on cherche une solution de $\tan A \approx 0^-$ car le membre de droite de l'équation de dispersion vaut alors :
1/ (1 - 0.025 * 1200 / 0.6)
-0.02040816326530612
Cette valeur étant proche de 0, on peut prendre $A\approx \pi$.
L'erreur commise en faisant cette approximation s'obtient en posant $A = \pi + \varepsilon$ et en faisant un développement limité autour de $\pi$:
$$ \tan(x) \approx (x - π) + 1/3 (x - π)^3 + 2/15 (x - π)^5 + O((x - π)^7) $$Autrement dit $\tan A \approx \varepsilon$.
Si on égalise avec le membre de droite de l'équation, on obtient finalement :
$$ \varepsilon = \frac{\pi}{- r_2 h / \lambda} $$Numériquement,
eps = np.pi / (-0.025 * 1200 / 0.6)
print(f"erreur: {eps}, erreur relative {abs(eps / np.pi) * 100:.1f} %")
erreur: -0.06283185307179587, erreur relative 2.0 %
Ce qui est petit ! J'en conclus que l'approximation est valide (c'est d'ailleurs aussi ce qu'on observe graphiquement).
(c) solution en surface
On obtient à ce stade la solution suivante :
On en déduit la solution en surface en fixant $\rho=1$ : $\forall \tau, T(\rho=1, \tau) = T_{eb}$.
Ce résultat est un peu paradoxal, car cela veut dire qu'avec notre modèle approché, il n'y a pas de montée en température à partir de $T_0$ à la surface.
C'est bien entendu la conséquence de la résolution approchée de l'équation de dispersion faite Il s'explique par le fait que l'on a fait une approximation sur $A$. Si $A$ n'avait pas été pris égal à $\pi$, on aurait pu avoir une température différente de la température d'ébullition à la paroi en choisissant bien $\beta$.
On peut expliquer cette situation (comme le sujet nous invite à le faire) par le fait qu'on est dans l'approximation où $r_2$ tend vers $+\infty$.
En effet :
car
$$ \rho < 1 \Rightarrow \frac{\sin(\pi \rho)}{\rho} \underset{\rho \rightarrow 0}{\rightarrow} \pi $$Finalement, la solution dans cette approximation est uniforme sauf à la surface où la température est constante, fixée à la température d'ébullition de l'eau.
(d) solution au centre
En utilisant $T(\rho, \tau) = T_{eb} + \frac{\beta \sin(\pi \rho)}{\rho} \exp(-\pi^2 \tau)$, on obtient la température à $\tau=0$ :
$$ T(\rho, \tau=0)= T_0 = T_{eb} + \beta \pi $$On en déduit
$$ \beta = \frac{T_0 - T_{eb}}{\pi} $$Et la température au centre s'écrit donc
$$ T(\rho = 0, \tau) = T_{eb} + (T_0 - T_{eb}) \exp(- \pi^2 \tau) $$On peut représenter ceci graphiquement :
taus = np.linspace(0, 1, num=200)
T_rho_0 = T_eb + (T_0 - T_eb) * np.exp(-np.pi**2 * taus)
fig, ax = plt.subplots()
ax.plot(taus, T_rho_0)
ax.set_xlabel(r'$\tau$')
ax.set_ylabel(r'$T(\rho=0)$')
Text(0, 0.5, '$T(\\rho=0)$')
On peut définir le temps de cuisson $\Delta t_2$ comme le temps où on attend la température $T_c$ au centre.
$$ T(0, \tau_c) = T_c \Leftrightarrow \tau_c = \frac{-1}{\pi^2} \ln \frac{T_c - T_{eb}}{T_0 - T_{eb}} = \Delta t_2 / \theta $$D'où $$ \Delta t_2 = -\frac{\theta }{\pi^2} \ln \frac{T_c - T_{eb}}{T_0 - T_{eb}} $$
Application numérique :
r2 = 0.025 # m
mu = 1000 # kg / m^3
c = 4180. # J / kg / K
lambd = 0.6 # W / m / K
theta = r2**2 * mu * c / lambd
theta
4354.166666666668
T_Kelvin = 273.15
T_c = 80 + T_Kelvin
T_0 = 20 + T_Kelvin
T_eb = 100 + T_Kelvin
delta_t2 = - theta / np.pi ** 2 * np.log((T_c - T_eb) / (T_0 - T_eb))
delta_t2
611.5905412287802
On peut convertir en minutes :
print(f"delta_t2: {delta_t2/60:.1f} minutes")
delta_t2: 10.2 minutes
10 minutes pour cuire un oeuf, cela me semble raisonnable.
taus = np.linspace(0, 1, num=200)
T_rho_0 = T_eb + (T_0 - T_eb) * np.exp(-np.pi**2 * taus) - T_Kelvin
fig, (ax1, ax2) = plt.subplots(nrows=2)
ax1.plot(taus, T_rho_0)
ax1.set_xlabel(r'$\tau$')
ax1.set_ylabel(r'$T(\rho=0)$')
ax1.vlines(delta_t2 / theta, T_0 - T_Kelvin, T_eb - T_Kelvin)
ax2.plot(taus * theta / 60, T_rho_0)
ax2.set_xlabel(r'$t \, (min.)$')
ax2.set_ylabel(r'$T(\rho=0)$')
ax2.vlines(delta_t2 / 60, T_0 - T_Kelvin, T_eb - T_Kelvin)
plt.tight_layout()
(a) borne inférieure de l'énergie de cuisson
L'énoncé précise qu'un jaune d'oeuf coagule à partir de 65°C et complètement à 85°C.
On peut imaginer la transformation suivante
En supposant que le blanc coagule aux mêmes températures, on a dans ce cas un oeuf qui a commencé à "cuire".
D'où
$$ \varepsilon_{d \, min} = m c (65 - T_0) $$Numériquement, on peut prendre la masse d'un oeuf comme étant approchée par la masse d'une sphère de 2.5 cm de rayon en eau, de même que sa capacité thermique massique.
m_oeuf = 4/3 * np.pi * r2 ** 3 * 1000 * 1000 # g
print(f"masse d'un oeuf: {m_oeuf:.1f} g")
masse d'un oeuf: 65.4 g
epsilon_dmin = m_oeuf / 1000 * c * (65 +T_Kelvin - T_0) # J
print(f"borne inférieure de l'énergie de cuisson: {epsilon_dmin/1e3: .1f} kJ")
borne inférieure de l'énergie de cuisson: 12.3 kJ
(b) borne supérieure
Pour la borne supérieure, on utilise la température de 85°C et on fait le même calcul.
epsilon_dmax = m_oeuf / 1000 * c * (85 +T_Kelvin - T_0) # J
print(f"borne supérieure de l'énergie de cuisson: {epsilon_dmax/1e3: .1f} kJ")
borne supérieure de l'énergie de cuisson: 17.8 kJ
(c) moyenne arithmétique
epsilon = (epsilon_dmin + epsilon_dmax) / 2.
print(f"énergie de cuisson: {epsilon/1e3: .1f} kJ")
énergie de cuisson: 15.0 kJ
On considère comme système ouvert la vapeur d'eau contenue dans la cloche du cuiseur (mais pas les oeufs !).
A l'instant $t$, le système considéré reçoit en entrée une quantité d'eau liquide à 100°C $dm = D_m dt$.
A l'instant $t + dt$ le système considéré perd une quantité d'eau vapeur à 100°C $dm = D_m dt$.
Ce système étant fermé, on lui applique le premier principe en version différentielle.
Les grandeurs d'état du système ne changeant pas (on est à pression et température constante) on peut écrire que la quantité d'énergie élémentaire reçue par le système est nulle.
Il nous reste donc maintenant à évaluer les transferts thermiques qui ont eu lieu, en prenant garde à inclure le changement d'état :
Finalement, on peut écrire :
$$ \delta q = 0 = \mathcal{P} dt - \mathcal{P}_f dt - D_m l_v dt - n \frac{d \epsilon_X}{dt} dt $$Si on intègre la relation précédente entre le début de la vaporisation et sa fin, donc entre $t=0$ et $t=\Delta t_2$, on obtient :
$$ (\mathcal{P} - \mathcal{P}_f) \Delta t_2 - D_m l_v \Delta t_2 - n \epsilon_X = 0. $$Etant donné que $D_m \Delta t_2 = m_0$, on a
$$ m_0 = \frac{(\mathcal{P} - \mathcal{P}_f) \Delta t_2 - n \epsilon_X}{l_v} $$On peut donc justifier les graduations du gobelet : plus il y a d'oeufs, moins il y a besoin d'eau pour atteindre une énergie de cuisson donnée, alors que le temps de cuisson est identique !
On prend la limite $m_0 = 0$. Dans ce cas-là, on peut écrire que
$$
\mathcal{P_{min}} = \frac{7 \epsilon_X}{\Delta t_2}
$$
Numériquement, on obtient
p_min = 7 * 19e3 / (10 * 60)
print(f"puissance minimale : {p_min:.1f} W")
puissance minimale : 221.7 W
La puissance du cuiseur étant de 350 W, on est pas loin de ce régime limite.
Analyse des données.
On peut déduire de la pente en fonction du nombre d'oeufs la valeur $\epsilon_X / l_v$. Or, on a établi que $\varepsilon_{d} = \frac{ m c}{2} (85 + 65 - 2 T_0)$ et que $m_{oeuf} = \mu \frac{4}{3} \pi r_2^3$.
On peut donc inverser le modèle et obtenir :
$$ m_{oeuf} = \frac{2 \varepsilon_d }{ c (150 - 2 T_0)} $$et en déduire
$$ r_2 = \sqrt[3]{\frac{m_{oeuf}}{\frac{4}{3}\mu\pi}} $$Numériquement on a donc :
lv = 2.26e3 # J / g
epsilon_d_exp = 5.94 * lv # J
epsilon_d_exp
13424.400000000001
m_oeuf_exp = 2 * epsilon_d_exp / (c / 1e3 * (150 - 2 * (T_0 - T_Kelvin))) # g
m_oeuf_exp
58.39234449760767
r2_exp = (m_oeuf_exp / (4 / 3 * np.pi * 1))**(1/3) # cm
r2_exp
2.406702640874886
On en déduit que le cuiseur a été calibré sur des oeufs de 2.4 cm de rayon (légèrement plus petit que ce qu'on a utilisé dans l'énoncé).
Concernant la cohérence du temps de cuisson d'un seul oeuf dur, obtenu précédemment à environ 10 minutes, on peut là-encore établir que pour la cuisson d'un seul oeuf dur, on a :
$$ \Delta t_2 = \frac{l_v \, m_0 + \varepsilon_D}{\mathcal{P}} $$Application avec $m_0 = 120 \, g$.
delta_t2_exp = (lv * 120 + epsilon_d_exp) / 350
delta_t2_exp / 60 # minutes
13.55354285714286
C'est globalement cohérent (on avait trouvé dix minutes).
Le champ de température dans l'oeuf au fur et à mesure de la cuisson s'écrit
$$ T(\rho, \tau) \approx T_{eb} + \frac{\beta \sin(\pi \rho)}{\rho} \exp(-\pi^2 \tau), $$avec $\beta = \frac{T_0 - T_{eb}}{\pi}$. On peut tracer ce champ de température à différents temps $\tau$.
taus = np.linspace(0, 1, num=200)
rhos = np.linspace(0+0.01, 1, num=5)
beta = (T_0 - T_eb) / np.pi
fig, ax = plt.subplots()
for rho in rhos:
T = T_eb + beta * np.sin(np.pi * rho) / rho * np.exp(-np.pi**2 * taus) - T_Kelvin
ax.plot(taus, T, label=f'$\\rho$={rho:.2f}')
ax.set_xlabel(r'$\tau$')
ax.set_ylabel(r'$T(\rho, \tau)$')
ax.legend();
Ou encore, la courbe de température au moment où on attend la température de fin de cuisson d'un oeuf dur à coeur.
tau_c = delta_t2 / theta
rhos = np.linspace(0+0.01, 1, num=200)
T = T_eb + beta * np.sin(np.pi * rhos) / rhos * np.exp(-np.pi**2 * tau_c) - T_Kelvin
fig, ax = plt.subplots()
ax.plot(rhos, T, label=r'$T(\rho, \tau_c)$')
ax.set_xlabel(r'$\rho$')
ax.set_ylabel(r'$T (°C)$')
ax.legend();
On pourrait résoudre par un schéma de différences finies avec une vraie prise en compte des conditions initiales et comparer le résultat.
On pourrait rajouter des termes dans la série de Fourier et trouver exactement les coefficients ainsi que la relation de dispersion.
On pourrait faire des expériences avec un rice cooker pour voir si on arrive à des oeufs bien cuits à la vapeur.