Lorsqu’un plongeur sous-marin respire de l’air comprimé (en bouteille) puis détendu (dans son
détendeur), cet air est à la pression ambiante sous l’eau, soit environ 2 bars à 10 mètres de
profondeur, 3 bars à 20 mètres, etc (environ 1 bar additionnel tous les 10 mètres). L’air comprimé
contient environ 81 % d’azote, environ 19 % d’oxygène, et d’autres gaz en proportions minimes. À
cette pression, l’azote inspiré se dissout dans le sang à son passage dans les poumons : il y a
saturation.
Lorque le plongeur remonte, l’azote a tendance à désaturer et, selon les conditions, ceci peut
conduire à la formation de bulles d’azote dans le sang. La circulation de telles bulles peut conduire
à de très graves accidents.
C’est pourquoi des tables de décompression ont été établies. Nous présentons ici le modèle dit
de Haldane, qui est à la base de la plupart des tables de décompression (ceci est moins vrai pour
les ordinateurs de plongée qui utilisent des versions “améliorées”, voire des modèles tout à fait
différents).
1 Profil de plongée
Ici, nous ne nous préoccupons pas de la cinématique du plongeur, et nous considérons simplement
qu’il effectue une trajectoire t ∈ [0,T]z(t), où z≥ 0 est la profondeur.
La pression ambiante à la profondeur z est donnée par la distribution hydrostatique
(1)
où pa est la pression atmosphérique (1, 01325105Pa, soit environ 1 bar), ρw est la massevolumique de l’eau (103kgm−3), g est la l’accélération de la pesanteur (9, 81ms−2).
2 Un modèle à compartiments pour la dynamique de l’azote dissous
Soit αN2≈ 0, 81 la proportion d’azote dans l’air. Sousmis à la pression ambiante p, l’azote est à la
pression partiellepN2 donnée par la loi de Dalton :
(2)
Dans le modèle de Haldane, on représente les tissus humains par n compartiments, où le
compartiment i est caractérisé par deux paramètres :
un paramètre 𝜃i, la période (mesurée en minutes) ;
un paramètre Sci, le coefficient de sursaturation critique (sans dimension).
Par exemple, pour les tables officielles françaises, on a :
période (minutes)
5
7
10
15
20
30
40
50
60
80
100
120
Sc (sans dimension)
2.72
2.54
2.38
2.20
2.04
1.82
1.68
1.61
1.58
1.56
1.55
1.54
Dans le compartiment i, la quantité d’azote dissous dans le sang (même unité qu’une pression)
est notée piN2. D’après la loi de Henry, l’équilibre entre l’azote dissous dans le sang et gazeux dans
les poumons est atteint lorsque piN2 = pN2.
La dynamique de la dissolution de l’azote qui conduit à un tel équilibre est donnée par le
système différentiel linéaire suivant :
(3)
Au bout du temps 𝜃i, l’azote dissous a diminué de moitié dans le compartiment i, d’où le terme en
. Une telle dynamique linéaire est classique au premier ordre au voisinage d’un équilibre ; elle
sera toutefois appliquée au cas où pN2 varie.
3 Contraintes pour éviter la formation de bulles
À la suite de nombreuses expériences, on considère que la désaturation ne pose pas de risques pour
le plongeur tant que le coefficient de sursaturation critique n’est atteint dans aucun compartiment,
i.e. tant que
(4)
Dès qu’une de ces inégalités est “saturée” (égalité), un palier de décompression s’impose.
Des modèles plus élaborés tiennent compte de la présence de bulles même si cette condition est
vérifiée, et s’intéressent à leur nombre et à leur distribution en taille (Reduced Gradient Bubble
Model). Ils sont hors de notre propos ici.
En outre, le plongeur est tenu de remonter à une vitesse inférieure à smax
(smax = 12m∕min = 0.2ms−1) :
(5)
4 Un système dynamique linéaire avec contraintes
Si nous regroupons les relations précédentes, nous aboutissons à un système dynamique linéaire
d’état pN2 = (p1N2,p2N2,...,pnN2)′, piloté par le profil z() et sa dérivée (), et soumis à des
contraintes inégalités linéaires en l’état :
(6)
(7)
(8)
5 Simulations
patm=1.01325*10^5; gg=9.81; rhow=10^3; theta=60*[5,7,10,15,20,30,40,50,60,80,100,120]'; alpha=0.81; Sc=[2.72,2.54,2.38,2.20,2.04,1.82,1.68,1.61,1.58,1.56,1.55,1.54]; smax=0.2; function z=profil(t) z=min(10*t/60,10,-8*(t/60-30)); endfunction t=0:(30*60); // 30 minutes de plongée unité = seconde xbasc();plot2d(t,-profil(t)); vitesse=profil(t(2:$))-profil(t(1:($-1))); function ppdot=saturation(t,pp) ppdot=-log(2)*diag(1 ./theta)*(pp-alpha*(patm+rhow*gg .*profil(t))); endfunction pressions=ode(patm*alpha*ones(theta),0,t,saturation); xbasc();plot2d((ones(theta)*t)',pressions'/patm); xbasc();plot2d([t(ones(theta)*t)]',[patm+rhow*gg .*profil(t),pressions ./Sc]');// ??? mini(Sc'*rhow*gg*profil(t)-pressions)