J-0
00m
00j
00h
00min
00s

Version interactive avec LaTeX compilé

CCINP Modélisation PC 2015

Notez ce sujet en cliquant sur l'étoile
0.0(0 votes)
Logo ccinp
2025_09_04_9ef064b21bb7593a730cg

EPREUVE SPECIFIQUE - FILIERE PC

MODELISATION DE SYSTEMES PHYSIQUES OU CHIMIQUES

Durée : 4 heures

Abstract

N.B. : le candidat attachera la plus grande importance à la clarté, à la précision et à la concision de la rédaction. Si un candidat est amené à repérer ce qui peut lui sembler être une erreur d'énoncé, il le signalera sur sa copie et devra poursuivre sa composition en expliquant les raisons des initiatives qu'il a été amené à prendre.

Les calculatrices sont interdites

Le sujet comporte deux parties indépendantes. Le candidat précisera au début de sa copie le langage de programmation (Python ou Scilab) qu'il a choisi et toutes les questions seront traitées dans le même langage. Un bonus sera accordé aux copies soignées avec des programmes bien commentés. Plusieurs fonctions du langage Scilab sont rappelées en annexe A. Les candidats choisissant le langage Python pourront utiliser les bibliothèques numpy et matplotlib.pyplot. Une documentation simplifiée de plusieurs fonctions de ces bibliothèques est présente en annexes B et C .

SIMULATION NUMERIQUE DU TRANSFERT THERMIQUE DANS UN MUR EN REGIME TRANSITOIRE

On étudie les transferts thermiques dans le mur d'une maison, figure 1(a). La température à l'intérieur de la maison est constante dans le temps et égale à . Aux temps négatifs , la température extérieure est égale à . A , elle chute brusquement à et elle reste égale à cette valeur aux temps positifs ( ), figure 1(b). On souhaite étudier l'évolution du profil de température dans le mur au cours du temps.
Figures 1 (a) - Schéma du mur étudié. (b) - Evolution de la température extérieure au cours du temps.
Le mur a une épaisseur . Les propriétés physiques du mur sont constantes : conductivité thermique , capacité thermique massique , masse volumique .

PARTIE I : ETUDE PRELIMINAIRE

Dans cette partie, on établit l'équation gouvernant les variations de la température et on la résout en régime permanent.

I.A. Equation gouvernant la température

On suppose que la température dans le mur ne dépend que du temps et de la coordonnée .
I.A.1. A quelle condition peut-on supposer que la température ne dépend pas des coordonnées et ?
I.A.2. Donner l'équation générale qui décrit le transport de chaleur dans un solide en l'absence de source d'énergie. Comment cette équation se simplifie-t-elle sous les hypothèses de la question I.A. 1 ?

I.B. Conditions aux limites

On envisage plusieurs types de conditions aux limites.
(i) La température est imposée aux limites du système.
(ii) La paroi extérieure est isolée par un matériau de très faible conductivité.
I.B.1. Traduire chacune de ces conditions aux limites sur la fonction et/ou sa dérivée.
Dans toute la suite, on adoptera des conditions aux limites de type température imposée.

I.C. Solutions en régime permanent

I.C.1. Résoudre l'équation obtenue à la question I.A.2. en régime permanent, avec les conditions aux limites de type températures imposées (question I.B.(i)) :
  • pour un instant particulier négatif ,
  • pour un instant particulier positif , très longtemps après la variation de température extérieure, quand le régime permanent est de nouveau établi dans le mur.
    I.C.2. Quelle est la nature des profils obtenus (en régime permanent) à ces deux instants ? Tracer à la main les deux profils sur un même graphique sur la copie.
    I.C.3. Sur le même graphique, tracer à la main qualitativement les profils intermédiaires à différents instants entre la variation brutale de la température extérieure ( ) et l'instant où le régime est de nouveau permanent.

PARTIE II : RESOLUTION NUMERIQUE

II.A. Equation à résoudre

On cherche à résoudre numériquement l'équation aux dérivées partielles :
est une constante. A l'équation (1) sont associées les conditions :
II.A.1. Quelle est l'expression de en fonction des paramètres physiques du mur ?
II.A.2. Exprimer et en fonction de et .
Pour effectuer la résolution de l'équation (1), nous utiliserons la méthode des différences finies présentée dans la partie II.B.

II.B. Méthode des différences finies

II.B.1 Discrétisation dans l'espace et dans le temps
On divise l'intervalle , représentant l'épaisseur du mur, en points, numérotés de 0 à , régulièrement espacés de (figure 2, page suivante). Cette division est appelée «discrétisation». La distance est appelée le «pas d'espace». A l'intérieur du mur (frontières intérieure et extérieure exclues) se trouvent donc points. On cherche à obtenir la température en ces points particuliers à chaque instant.
Figure 2 - Discrétisation spatiale dans la direction .
II.B.1.a. Donner l'expression de en fonction de et de l'épaisseur du mur .
II.B.1.b. Donner l'abscisse du point en fonction de et , sachant que et .
Le temps est discrétisé en ItMax intervalles de durée et on ne s'intéresse au profil de température qu'aux instants particuliers . L'intervalle élémentaire de temps est appelé le «pas de temps».
Pour résoudre l'équation (1), deux méthodes sont proposées :
  • méthode utilisant un schéma explicite,
  • méthode utilisant un schéma implicite.

II.B.2. Méthode utilisant un schéma explicite

II.B.2.a. A l'aide d'un développement limité de la fonction , donner une expression de à l'ordre en fonction de et de ses dérivées partielles par rapport à évaluées en ( ). De même, donner une expression de à l'ordre 3 .
II.B.2.b. En déduire une expression approchée à l'ordre de (dérivée partielle spatiale seconde de évaluée au point à l'instant ) en fonction de et et .
On note la température , évaluée au point d'abscisse à l'instant . De même, on note et .
II.B.2.c. Déduire de la question précédente une expression approchée de (dérivée partielle spatiale seconde de évaluée en à l'instant ) en fonction de et et .
La dérivée partielle temporelle de l'équation (1) est maintenant approchée grâce à un développement limité.
II.B.2.d. A l'aide d'un développement limité de la fonction , donner une expression de à l'ordre en fonction de et de sa dérivée partielle par rapport à évaluées en ( ).
II.B.2.e. En déduire une valeur approchée de (dérivée partielle par rapport au temps de évaluée au point à l'instant ) à l'ordre en fonction de et .
II.B.2.f. Donner une expression de (dérivée partielle par rapport au temps de évaluée en à l'instant ) en fonction de et , avec .
L'équation (1) est valable en chaque point d'abscisse et à chaque instant .
II.B.2.g. Ecrire la forme approchée de cette équation au point et à l'instant en approchant avec la formule obtenue à la question II.B.2.c. et en approchant avec la formule obtenue à la question II.B.2.f.
II.B.2.h. Montrer que l'équation obtenue à la question II.B.2.g peut s'écrire sous la forme :
en précisant la valeur du paramètre en fonction de et .
L'équation (2) est appelée schéma numérique explicite. Si on connaît la température en tous les points à l'instant , on peut calculer grâce à elle la température en tous les points à l'instant ultérieur .
II.B.2.i. L'équation (2) est-elle valable dans tout le domaine, c'est-à-dire pour toute valeur de ? Que valent et ?
II.B.2.j. Dans cette question, on élabore une fonction schema_explicite permettant de calculer la température en chaque point au cours du temps selon la formule (2). Parmi les variables d'entrée se trouvera un vecteur TO de dimension , défini en dehors de la fonction, contenant les valeurs de la température aux points de discrétisation à l'instant initial. Au sein de la fonction, un algorithme calculera itérativement la température avec un nombre maximal d'itérations ItMax. En sortie de la fonction, on récupérera le nombre d'itérations réellement effectuées, nbIter et une matrice T_tous_k, de dimensions ItMax. Chaque colonne de cette matrice contient le vecteur dont les éléments sont les valeurs de la température aux points (points à l'intérieur du mur) à l'instant :
On souhaite arrêter le calcul lorsque la température ne varie presque plus dans le temps. Dans ce but, on évaluera la norme 2 de à chaque itération. La définition de la norme 2 est rappelée à la question II.B.2.j. (vi).
II.B.2.j. (i) Ecrire l'en-tête de la fonction en précisant bien les paramètres d'entrée et de sortie.
II.B.2.j.(ii) Le schéma numérique (2) permet d'approcher avec succès la solution à la condition . Programmer un test qui avertit l'utilisateur si cette condition n'est pas respectée.
II.B.2.j.(iii) Affecter la valeur 2000 à ItMax. Créer la matrice T_tous_k de dimensions ItMax en la remplissant de zéros.
II.B.2.j. (iv) Remplacer la première colonne de T_tous_k par le vecteur des valeurs initiales T0.
II.B.2.j.(v) Calculer le profil de température à l'instant , en distinguant le cas , le cas et le cas . Affecter ces valeurs à la deuxième colonne de T_tous_k.
II.B.2.j.(vi) Ecrire une fonction calc_norme qui calcule la norme 2 d'un vecteur. On rappelle que la norme 2 d'un vecteur s'écrit :
II.B.2.j.(vii) Elaborer une boucle permettant de calculer itérativement le profil de température aux instants avec . Cette boucle sera interrompue lorsque la norme 2 du vecteur deviendra inférieure à ou lorsque le nombre d'itérations atteindra la valeur ItMax (prévoir les deux cas). Utiliser, pour cela, la fonction calc_norme définie à la question II.B.2.j. (vi).
II.B.2.j.(viii) Ecrire la fin de la fonction afin de renvoyer tous les arguments de sortie définis au début de la question II.B.2.j.

II.B.3. Méthode utilisant un schéma implicite

Le schéma explicite (2) ne converge que si le pas de temps est suffisamment faible par rapport au pas d'espace . Si l'on souhaite effectuer un calcul pour un temps physique long, beaucoup d'itérations seront nécessaires et le temps de calcul sera très long. C'est pourquoi on préfère d'autres types de schémas appelés schémas implicites.
Dans cette partie, la dérivée partielle seconde par rapport à de la température apparaissant dans l'équation (1) est évaluée au point d'abscisse et à l'instant :
et la dérivée partielle par rapport à est évaluée au point d'abscisse et à l'instant :
II.B.3.a. Donner la nouvelle expression approchée de l'équation (1) définie en page 3.
II.B.3.b. Montrer que l'équation obtenue à la question II.B.3.a. peut être mise sous la forme
L'équation (3) est appelée schéma implicite car la température à l'instant est exprimée en fonction de la température à l'instant ultérieur .
Le système d'équations ainsi obtenu peut être écrit sous la forme :
est une matrice carrée et et sont les vecteurs de dimension définis par :
et est un vecteur de taille faisant intervenir les conditions aux limites.
II.B.3.c. Préciser l'expression de la matrice et l'expression du vecteur .
A chaque pas de temps, il faut inverser le système matriciel :
pour obtenir à partir de .
II.B.3.d. Le but de cette question est d'écrire une fonction CalcTkp1 qui permet de résoudre un système matriciel tridiagonal en utilisant l'algorithme de Thomas présenté ci-dessous.

Algorithme de Thomas :

On cherche à résoudre un système matriciel tridiagonal de la forme :
est une matrice de dimensions tridiagonale, c'est-à-dire une matrice dont tous les éléments sont nuls, sauf sur la diagonale principale, la diagonale supérieure et la diagonale inférieure
et où les vecteurs et , de dimension , s'écrivent :
Dans cet algorithme, on calcule d'abord les coefficients suivants :
et
Les inconnues sont alors obtenues par les formules:
II.B.3.d.(i) En utilisant l'algorithme de Thomas, écrire une fonction CalcTkp1 qui permet de calculer le vecteur , solution du système matriciel (5), à partir de la matrice et du vecteur .
II.B.3.e. Dans cette question, une fonction schema_implicite est élaborée avec les mêmes arguments d'entrée et de sortie que la fonction schema_explicite (définis à la question II.B.2.j.) et qui utilise les mêmes critères d'arrêt (définis à la question II.B.2.j. (vii)).
II.B.3.e.(i) Ecrire l'en-tête de la fonction en précisant les paramètres d'entrée et de sortie.
II.B.3.e.(ii) Affecter la valeur 2000 à ItMax. Créer la matrice T_tous_k dont les dimensions sont ItMax en la remplissant de zéros.
II.B.3.e.(iii) Remplacer la colonne de T tous k par le vecteur des valeurs initiales T 0 .
II.B.3.e.(iv) Définir la matrice M et le vecteur v qui interviennent dans l'équation (4).
II.B.3.e.(v) Calculer le profil de température à l'instant . Affecter ces valeurs à la deuxième colonne de T_tous_k.
II.B.3.e.(vi) Ecrire une boucle permettant de calculer itérativement le profil de température aux instants ultérieurs avec , en prévoyant un arrêt lorsque la norme 2 du vecteur devient inférieure à ou lorsque le nombre d'itérations atteint la valeur ItMax (prévoir les deux cas). Utiliser pour cela la fonction calc_norme définie à la question II.B.2.j. (vi).
II.B.3.e.(vii) Ecrire la fin de la fonction afin de renvoyer tous les arguments de sortie définis au début de la question II.B.2.j.

II.C. Programme principal

II.C.1. Début du programme

II.C.1.a. Définir les variables epais (épaisseur du mur), conduc (conductivité thermique), rho (masse volumique), Cp (capacité thermique massique), Tint (température intérieure), Text1
(température extérieure pour les instants ), Text2 (température extérieure pour les instants ), N (nombre de points de calcul à l'intérieur du mur) et Dt (intervalle de temps élémentaire) et leur affecter les valeurs correspondant au problème physique défini au début de l'énoncé. On prendra un nombre de points de discrétisation et un pas de temps de 25 secondes.
II.C.1.b. Calculer les coefficients a et b avec la formule trouvée à la question II.A.2.
II.C.1.c. Créer un vecteur x dont les éléments sont définis à la question II.B.1.b.
II.C.1.d. Calculer le vecteur des températures initiales T0.
II.C.1.e. Calculer alpha selon la formule trouvée à la question II.A.1. Calculer en utilisant la formule calculée à la question II.B.2.h.

II.C.2. Calcul des températures

II.C.2.a. Ecrire un morceau de programme qui demande à l'utilisateur quel schéma (explicite ou implicite) il souhaite utiliser et qui appelle la fonction correspondante.

II.C.3. Analyse du résultat

II.C.3.a. Ecrire un morceau de programme permettant de tracer sur un même graphique le profil de température en fonction de x tous les 100 pas de temps.
II.C.3.b. Faire afficher le temps en heures au bout duquel le régime permanent est établi.

Fin de l'énoncé

ANNEXE A : COMMANDES ET FONCTIONS USUELLES DE SCILAB

Description : commande permettant de créer une matrice dont la première ligne contient les éléments , la seconde ligne contient les éléments et la troisième, les éléments .
Exemple:

A(i,j)

Arguments d'entrée : les coordonnées de l'élément dans le tableau .
Argument de sortie : l'élément ( ) de la matrice .
Description: fonction qui retourne l'élément ( ) de la matrice . Pour obtenir toute la colonne de la matrice , on utilise la syntaxe . De même, pour accéder à l'intégralité de la ligne de la matrice , on écrit .
Exemple:
A(2,4)

A(:,3)
.
11.
0.
A(2,:)
.

Description : commande permettant de créer un vecteur dont les éléments sont espacés de et dont le premier élément est et le dernier élément est le plus grand multiple de inférieur ou égal à .
ATTENTION: le vecteur ainsi créé est un vecteur ligne. Pour convertir un vecteur ligne en un vecteur colonne, on le transpose en utilisant l'apostrophe «'» : x_trans=x'.
Exemple:
x_trans
.
2.5
3.
3.5
4.
4.5
5.
5.5
6.

zeros(n,m)

Arguments d'entrée : deux entiers et correspondant aux dimensions de la matrice à créer.
Argument de sortie : un tableau (matrice) d'éléments nuls.
Description: fonction créant une matrice (tableau) de dimensions dont tous les éléments sont nuls.
Exemple: zeros(3,4)

plot(x,y)

Arguments d'entrée: un vecteur d'abscisses (tableau de dimension ) et un vecteur d'ordonnées (tableau de dimension ).
Description : fonction permettant de tracer sur un graphique points dont les abscisses sont contenues dans le vecteur et les ordonnées dans le vecteur .
Exemple:

plot(x,y)

ANNEXE B : BIBLIOTHEQUE NUMPY DE PYTHON

Dans les exemples ci-dessous, la bibliothèque numpy a préalablement été importée à l'aide de la commande : import numpy as np
On peut alors utiliser les fonctions de la bibliothèque, dont voici quelques exemples :

np.array(liste)

Argument d'entrée: une liste définissant un tableau à 1 dimension (vecteur) ou 2 dimensions (matrice).
Argument de sortie : un tableau (matrice).
Description : fonction permettant de créer une matrice (de type tableau) à partir d'une liste.
Exemple : np.array([4,3,2])

np.array([[5],[7],[1]])
[[5]
[7]
[1]]
np.array([[3,4,10],[1,8,7]])

[118 7]]
.
Arguments d'entrée : un tuple contenant les coordonnées de l'élément dans le tableau .
Argument de sortie : l'élément (i ) de la matrice .
Description: fonction qui retourne l'élément ( ) de la matrice . Pour obtenir toute la colonne de la matrice , on utilise la syntaxe . De même, pour accéder à l'intégralité de la ligne de la matrice , on écrit .
ATTENTION: en langage Python, les lignes d'un de dimension sont numérotées de à et les colonnes sont numérotées de à
Exemple : np.array( )
A[0,2]

A[:,2]
[10 7]
A[1,:]

np.zeros((n,m))

Arguments d'entrée : un tuple de deux entiers correspondant aux dimensions de la matrice à créer.
Argument de sortie : un tableau (matrice) d'éléments nuls.
Description: fonction créant une matrice (tableau) de dimensions dont tous les éléments sont nuls.
Exemple: np.zeros((3,4))

[llll]
[llll]

np.linspace(Min,Max,nbElements)

Arguments d'entrée : un tuple de 3 entiers.
Argument de sortie : un tableau (vecteur).
Description: fonction créant un vecteur (tableau) de nbElements nombres espacés régulièrement entre et . Le élément est égal à , le dernier est égal à et les éléments sont espacés de (Max-Min)/(nbElements - 1) :
Exemple: np.linspace(3,25,5)

ANNEXE C : BIBLIOTHEQUE MATPLOTLIB.PYPLOT DE PYTHON

Cette bibliothèque permet de tracer des graphiques. Dans les exemples ci-dessous, la bibliothèque matplotlib.pyplot a préalablement été importée à l'aide de la commande :

import matplotlib.pyplot as plt

On peut alors utiliser les fonctions de la bibliothèque, dont voici quelques exemples :

plt.plot(x,y)

Arguments d'entrée: un vecteur d'abscisses (tableau de dimension ) et un vecteur d'ordonnées (tableau de dimension ).
Description : fonction permettant de tracer sur un graphique de points dont les abscisses sont contenues dans le vecteur et les ordonnées dans le vecteur . Cette fonction doit être suivie de la fonction plt.show() pour que le graphique soit affiché.
Exemple : np.linspace

plt.plot(x,y)
plt.xlabel('x')
plt.ylabel('y')
plt.show()
plt.xlabel(nom)
Argument d'entrée : une chaîne de caractères.
Description : fonction permettant d'afficher le contenu de nom en abscisse d'un graphique.
plt.ylabel(nom)
Argument d'entrée : une chaîne de caractères.
Description : fonction permettant d'afficher le contenu de nom en ordonnée d'un graphique.

plt.show()

Description : fonction réalisant l'affichage d'un graphe préalablement créé par la commande plt.plot( ). Elle doit être appelée après la fonction plt.plot et après les fonctions plt.xlabel et plt.ylabel.
CCINP Modélisation PC 2015 - Version Web LaTeX | WikiPrépa | WikiPrépa