CCINP Modélisation PC 2025Sujet, corrigé et rapport du jury
- Équilibres acido-basiques en solution
- Produit de solubilité
- Méthode de Newton et résolution numérique
- Équations de diffusion et discrétisation
- Réactions d'oxydoréduction
- Diagramme de Pourbaix
- Programmation scientifique en Python (numpy)
Téléchargements
Présentation du sujet
Difficulté moyenneCarbonatation du béton : acidification, diffusion du dioxyde de carbone et oxydation des armatures métalliquesAfficher ou masquer la section
Présentation du sujet
Difficulté moyenneLe sujet étudie la carbonatation du béton armé en trois parties progressives : le calcul du pH de la solution interstitielle par équilibres chimiques et méthode de Newton, la modélisation et la résolution numérique de la propagation du front de carbonatation, puis l'oxydation des armatures métalliques à l'aide de réactions d'oxydoréduction, d'un diagramme de Pourbaix et d'un traitement d'image.
- 1Partie I : acidification du milieuDissolution du dioxyde de carbone, équilibres chimiques en solution, calcul du pH et résolution numérique par la méthode de Newton pour déterminer la concentration en ions hydroxyde.
- 2Partie II : propagation du front de carbonatationModélisation de la diffusion du dioxyde de carbone par une équation de transport, discrétisation et résolution numérique en Python.
- 3Partie III : oxydation des armaturesÉtude des réactions d'oxydoréduction des armatures métalliques, du diagramme de Pourbaix, et traitement d'image pour visualiser l'état de corrosion.
Difficulté moyenne. De nombreuses questions ont été bien abordées dans l'ensemble, mais le rapport relève des difficultés transversales persistantes (justifications absentes, applications numériques fautives, erreurs de programmation) et plusieurs questions, notamment en fin de partie III, mal ou rarement traitées.
L'épreuve en chiffres
Moyenne 11,16 / 20 · écart-type 3,53 · 4 303 présents · où vous situez-vous ?Afficher ou masquer la section
L'épreuve en chiffres
- Moyenne
- 11,16/ 20
- Écart-type
- 3,53
- Présents
- 4 303
- Coefficient
- 7
- Durée
- 4 h
Votre note sur 20 à ce sujet, en conditions de concours.
Source : document officiel du concours, épreuve du 9 mai 2025. Notes publiées par le concours (après harmonisation le cas échéant). Courbe : estimation par une loi normale.
Ce qu'a observé le jury
6 erreurs relevéesMilieu réactionnel mal identifié · Méthode de Newton mal initialisée · Tableaux numpy mal manipulésAfficher ou masquer la section
Ce qu'a observé le jury
6 erreurs relevéesLes correcteurs relèvent un manque général de rigueur dans les justifications, des erreurs fréquentes en Python malgré un guidage explicite, et une rédaction souvent négligée sur le fond comme sur la forme. Ces défauts limitent la valorisation des raisonnements corrects et pénalisent parfois injustement des copies prometteuses.
Les erreurs les plus sanctionnées
- 1Milieu réactionnel mal identifiéQ5
De nombreuses erreurs viennent d'une confusion entre milieu acide et milieu basique, ce qui a des conséquences sur les questions suivantes.
« De nombreuses erreurs proviennent d’une mauvaise interprétation du milieu réactionnel (acide au lieu de basique), impactant les questions »
- 2Méthode de Newton mal initialiséeQ16
L'initialisation de la méthode de Newton et sa condition d'arrêt sont souvent mal traitées.
« Souvent mal traitée, notamment en ce qui concerne l’initialisation de la méthode de Newton et la condition d’arrêt. »
- 3Tableaux numpy mal manipulésQ26
Des erreurs récurrentes apparaissent dans l'utilisation de np.zeros, avec des inversions entre lignes et colonnes.
« Des erreurs récurrentes dans l’utilisation de np.zeros, avec des inversions de lignes et »
- 4Développements limités mal maîtrisésQ29-Q30
Les développements limités demandés sont souvent faux ou incomplètement justifiés, deux questions de suite.
« Question 29. Les développements limités sont souvent faux ou »
- 5Confusion entre expressions géométriques prochesQ41
Une confusion fréquente apparaît entre la différence des rayons au carré et le carré de la différence des rayons.
« Confusion fréquente entre la différence des rayons au carré et le carré de la différence des rayons. »
- 6Fonction range en Python mal compriseQ42
Cette question a été mal traitée dans l'ensemble, peu de candidats comprenant les arguments de la fonction range.
« Cette question a été mal traitée dans l’ensemble ; peu de candidats comprennent les arguments de range. »
Ce qui a été bien réussi
- Les quatre premières questions de la partie I ont été bien abordées dans l'ensemble.
- Le diagramme de Pourbaix demandé en partie III est souvent correctement tracé.
- Lorsque la dernière question du sujet est traitée, elle a souvent donné lieu à des propositions correctes de programme.
Conseils du jury
- Présenter une expression littérale complète avant tout calcul numérique, en explicitant les valeurs et les conversions d'unités utilisées.
- Vérifier systématiquement l'homogénéité des expressions, au niveau des unités comme des dimensions vectorielles ou scalaires.
- Utiliser un stylo noir, encadrer les résultats, sauter des lignes entre les questions et numéroter les copies de façon cohérente.
- Soigner la syntaxe Python (indentation, appel correct des fonctions, gestion des indices dans les tableaux).
Synthèse rédigée par WikiPrépa à partir du rapport officiel du jury (à télécharger en PDF). Les citations sont extraites du rapport.
Ces sujets peuvent vous intéresser
Lecture du sujet en ligne
L'énoncé complet, avec les formules et les figures, sans ouvrir le PDF.Afficher ou masquer la section
Lecture du sujet en ligne
ÉPREUVE MUTUALISÉE AVEC E3A-POLYTECH ÉPREUVE SPÉCIFIQUE - FILIÈRE PC
MODÉLISATION DE SYSTÈMES 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.
\section*{RAPPEL DES CONSIGNES} - Utiliser uniquement un stylo noir ou bleu foncé non effaçable pour la rédaction de votre composition ; d'autres couleurs, excepté le vert, bleu clair ou turquoise, peuvent être utilisées, mais exclusivement pour les schémas et la mise en évidence des résultats. - Ne pas utiliser de correcteur. - Écrire le mot FIN à la fin de votre composition.
Les calculatrices sont interdites.
Sujet : page 2 à page 13
Annexes : page 14 à page 16
Impact de la carbonatation d'un béton sur son intégrité structurelle
Introduction - Contextualisation de l'étude

- la partie I visera à déterminer la valeur du pH à la suite de la dissolution du dioxyde de carbone de l'air dans le béton;
- la partie II abordera la diffusion du
CO_2 dans le béton; - la partie III traitera de l'oxydation de la structure métallique et de son impact sur le risque d'écaillement du béton.
Partie I - Acidification du milieu
I. 1 - Risque de carbonatation à l'air ambiant
| Composant |
|
|
|
Autres gaz | ||
|
|
|
|
|

b. En déduire une relation entre la concentration en acide carbonique notée
c. Exprimer la constante de Henry
Q5. Rappeler les équations des réactions acide-base permettant la formation du
Q12. En déduire la valeur de
1.2 - Calcul du pH dans la solution interstitielle
b. Proposer alors une instruction définissant la variable pH_depart. Proposer une instruction permettant de calculer à partir de pH_depart, la variable OH_depart qui sera utilisée comme point de départ pour la méthode de Newton.
b. Déterminer l'expression de
c. Proposer une fonction Derive ( x ) prenant en argument une variable x et renvoyant l'image de x par la fonction dérivée
Q18. Déterminer le pH de la solution interstitielle. En déduire l'espèce prédominante pour le diacide
Partie II - Propagation du front de carbonatation
II. 1 - Mise en équation du problème
- la carbonatation n'a pas d'impact sur la densité du béton ni sur sa microstructure ;
- le taux de
CO_2 dans l'air ne varie pas au cours du temps; - le béton est à l'équilibre hygrométrique avec l'humidité relative ambiante.
-
Φ : la porosité, nombre entre 0 et 1 qui correspond à la fraction volumique non occupée par le matériau ; -
S : le taux de saturation des pores, nombre entre 0 et 1 qui correspond à la fraction volumique des cavités remplies de solution interstitielle.

Q20. Interpréter chacun des termes de l'équation (5).
a. En appliquant l'équation de diffusion dans le cas unidirectionnel, relier
b. À l'aide des Q23, Q24 et Q25a, montrer que la relation (5) se met sous la forme de l'équation de transport suivante :
II. 2 - Résolution numérique de l'équation de transport
- la première section définit les grandeurs fixes du problème ;
- la deuxième section initialise les listes résultats;
- la troisième section permet de déterminer l'évolution en fonction du temps de la concentration;
- la quatrième section permet de vérifier si la valeur minimale de la concentration est supérieure à la valeur seuil et renvoie la valeur de la profondeur le cas échéant;
- La cinquième section est destinée à la visualisation de ces résultats.
import numpy as np
import matplotlib.pyplot as plt
#Section 1 : Définition des données
N_x = 50
N_T = 1000
T_max = 100
L_max = 20
k2 = 3*10**(-7)
S = 0.5
Phi = 10**(-3)
Alpha = 3*10**(-2)
D_CO2 = 10**(-3.4)
CO = 2.5*10**(-3)
#Section 2 : Initialisation des résultats
#Instruction 1
for i in range(N_T):
#Instruction }\overline{2
#Section 3: Implantation de la méthode d'Euler
#Instruction 3.a
#Instruction 3.b
#Instruction 4
for i in range(0, N_T-1):
for j in range( }\overline{1},N\_x-1\mathrm{ ):
#Instruction 5
#Section 4 : Application du seuil
def C_seuil(C, Vseuil):
Res = #Instruction 6.a
for i in range(#Instruction 6.b) :
for j in range(#Instruction 6.c):
if #Instruction 6.d:
#Instruction 6.e
break
return Res
#Section 5 : Visualisation des résultats
LT, Front = #Instruction 7.a
#Instruction 7.b
#Instruction 7.c
#Instruction 7.d
#Instruction 7.e
plt.show()
a.
b. c
c.
a.
b.
a.
b.

a. l'Instruction 7.a permet de remplir le tableau des temps noté LT qui varie de 0 à 100 jours en N_T échantillon et de remplir le tableau Front qui correspond à la profondeur à partir de laquelle il y a carbonatation pour un seuil Vseuil
b. l'Instruction 7.b permet de tracer le front en fonction du temps en rouge continu;
c. l'Instruction 7.c génère le titre de l'axe des abscisses;
d. l'Instruction 7.d génère le titre de l'axe des ordonnées;
e. l'Instruction 7.e nomme le graphique «Profondeur de carbonatation».
Partie III - Oxydation des armatures
III. 1 - Oxydation de l'armature
- le liquide interstitiel est assimilé à une solution aqueuse basique ;
- le liquide interstitiel entoure entièrement et uniformément les armatures;
- l'armature est uniquement composée de fer pur Fe ;
- la réaction de carbonatation est totale.

- oxydation anodique du fer solide en
Fe^(2 +)_((aq)) , - réduction cathodique de l'oxygène en ions hydroxides,
- formation du précipité d'hydroxyde de fer
Fe(OH)_(2(s)) à la surface de l'acier.
L'hydroxyde de fer (II) qui se forme n'est pas stable en solution aqueuse aérée : en présence d'oxygène, il peut selon le pH donner d'autres formes. On étudie figure 7 le diagramme de Pourbaix du fer.
.jpg)
Q40. Déduire la variation de volume
- F, la constante de Faraday ;
-
M , la masse molaire de l'hydroxydeFe(OH)_2 ; -
I , l'intensité du courant induit par la réaction d'oxydo-réduction; -
t , le temps; -
m(t) , la masse de l'hydroxydeFe(OH)_2 formée à l'instant t; -
z , la valence de l'hydroxydeFe(OH)_2 .
b. On modélise l'ossature de l'armature par un cylindre de longueur
c. Montrer que l'évolution temporelle de la section induite par l'oxydation de l'armature est régie par l'expression suivante où on donnera les expressions de
III. 2 - Validation numérique


a. Compléter l'Instruction 1 permettant d'initialiser la liste Contour.
b. Compléter les Instructions 2 et 3 permettant de parcourir le tableau image.
c. Compléter l'Instruction 4 permettant de déterminer les pixels définissant le contour de l'image.
d. Stocker ces pixels dans la liste contour à l'aide de l'Instruction 5.
[Instruction 1]
for $i$ in range([Instruction 2]):
for $j$ in range([Instruction 3]):
I = image[i,j]
if I==0 and ( ... or ... or ...):\#[Instruction 4]
[Instruction 5]
Q45. Proposer les instructions permettant de calculer la valeur du diamètre de l'armature métallique.
Annexe 1 - Quelques commandes utiles en langage Python
Bibliothèque NUMPY
- np.linspace(start, stop, N point) :
- Description : renvoie un nombre d'échantillons espacés uniformément, calculés sur l'intervalle [start, stop];
- Argument d'entrée : début, fin et nombre d'échantillons dans l'intervalle ;
- Argument de sortie: un tableau.
| Commande | Résultat |
| np.linspace
|
|
- np.zeros(i) :
- Description : renvoie un tableau de taille i rempli de zéros;
- Argument d'entrée : un scalaire
- Argument de sortie: un tableau.
| Commande | Résultat |
| np.zeros (5) |
|
- np.array(liste) :
- Description : crée une matrice (de type tableau) à partir d'une liste.
- Argument d'entrée : une liste définissant un tableau à 1 dimension (vecteur) ou 2 dimensions (matrice).
- Argument de sortie : un tableau (matrice).
| Commande | Résultat |
| np.array
|
|
-
A[i, j] : _– - Description : retourne l'élément
(i + 1, j + 1) de la matriceA . Pour accéder à l'intégralité de la lignei + 1 de la matriceA , on écritA[i, : ] . De même, pour obtenir toute la colonnej + 1 de la matrice A , on utilise la syntaxeA[ :, j] . - Argument d'entrée: une liste contenant les coordonnées de l'élément dans le tableau A.
- Argument de sortie : l'élément
(i + 1, j + 1) de la matriceA .
| Commande | Résultat |
|
|
3 |
|
|
Bibliothèque MATPLOTLIB. PYPLOT
- Description : fonction permettant de tracer un graphique de n points dont les abscisses sont contenues dans le vecteur x et les ordonnées dans le vecteur y. Cette fonction doit être suivie de la fonction plt. show () pour que le graphique soit affiché.
- Argument d'entrée : un vecteur d'abscisses x (tableau de n éléments) et un vecteur d'ordonnées y (tableau de
n éléments). La chaîne de caractères 'SC' précise le style et la couleur de la courbe tracée. Des valeurs possibles pour ces deux critères sont :
| Description | Ligne continue | Ligne traitillée | Marqueur rond | Marqueur plus |
| Symbole S | - | -- |
|
+ |
| Description | bleu | rouge | vert | noir |
| Symbole C | b | r | g | k |
- Argument de sortie: un graphique.
x = np.linspace(3, 25, 5)
y = np.sin(x)
plt.plot(x,y,'-b') # tracé d'une ligne bleue continue
plt.title('titre_graphique') # titre du graphe
plt xlabel('x') # titre de l'axe des abscisses
plt ylabel('y') # titre de l'axe des ordonnées
plt.show()
Annexe 2 - L'algorithme de Newton
Présentation de la méthode :
- Initialisation de
x_0 à une valeur quelconque. - Calcul de
x_1 à partir de la tangente àC_f enx_0 . Cette dernière intersecte l'axe des abscisses enx_1 . - Calcul de
x_(i + 1) en fonction dex_i tant que la distance|x_(i + 1) − x_i| est supérieure à l'erreur souhaitée.

Formule de récurrence :
On a ainsi :
Soit :
Questions fréquentes
4 questionsSur quoi porte l'épreuve de modélisation CCINP PC 2025 ?Afficher ou masquer la section
Questions fréquentes
4 questionsSur quoi porte l'épreuve de modélisation CCINP PC 2025 ?
Le sujet porte sur la carbonatation du béton armé : acidification du milieu et calcul du pH, propagation du front de carbonatation par une équation de diffusion, puis oxydation des armatures métalliques.
Quelles erreurs le jury a-t-il le plus relevées sur ce sujet de modélisation PC ?
Des justifications absentes ou trop brèves, des applications numériques fautives, une confusion entre milieu acide et basique, et des erreurs récurrentes de programmation Python, notamment sur les tableaux numpy et la fonction range.
L'épreuve de modélisation CCINP PC 2025 est-elle difficile ?
Le rapport décrit un sujet où de nombreuses questions ont été bien abordées, mais où des difficultés transversales de rigueur et de rédaction, ainsi que plusieurs questions de fin de sujet mal traitées, ont pénalisé les copies.
Faut-il maîtriser la méthode de Newton et numpy pour ce sujet de modélisation PC ?
Oui, la partie I demande de résoudre une équation par la méthode de Newton en Python, et la partie II utilise numpy pour discrétiser et résoudre numériquement une équation de diffusion.
Pas de description pour le moment
