Un bioréacteur est constitué d’une cuve où interagissent de la biomasse (cellules vivantes) et du nutriment (sucre). Un flux de débit D l’alimente en nutriment et en retire les produits.
Pour écrire les équations de bilan de masse, on suppose les concentrations uniformes à l’intérieur du bioréacteur et on introduit les variables suivantes :
Les équations du bilan de masse s’écrivent alors
| (1) |
Pour les compléter, nous introduisons les lois de conversion entre biomasse et nutriments. Croissance et consommation sont proportionnelles à la biomasse, le coefficient dépendant uniquement de la concentration en sucre (et pas du temps). On introduit le taux spécifique de croissance
| (2) |
Nous allons pouvoir agir sur le débit, le coefficient k ainsi que sur la concentration en sucre en entrée x2in.
Notons que ce modèle pourrait être appliqué, en augmentant le nombre de variables de biomasse, à la modélisation de la digestion des boues dans les bassins de décantation.
Ce modèle est l’objet de la macro bioreact. Elle est chargée en mémoire en lançant
biosystems() et ses paramètres peuvent être choisis grâce à la fonction bio_init().
A l’aide de la commmande portrait(bioreact), visualiser le champ de vecteurs et quelques trajectoires (domaine [0,0,5,5], 100 points, pas de 0.1 et 10x10 points pour le champ de vecteurs).
Question 1 Combien y a-t-il de points d’équilibre ?
Question 2 Trouver la stabilité des points d’équilibre en utilisant la macro tangent pour obtenir le linéarisé tangent.
Question 3 Changer progressivement la valeur du débit (qui est une commande du système) en tapant debit=... et observer l’évolution des points d’équilibre.
Question 4 Vérifier théoriquement ces résultats.
Nous considérons dans cette partie une dynamique proie-prédateur d’équations
| (3) |
x1 modélise la proie et x2 le prédateur. La commande u = (u1,u2) correspond à l’effet de l’homme sur la dynamique de chacune des deux espèces (chasse, insecticide...). Il est bien évidemment possible de changer la valeur de chacun des paramètres de ces équations.
Nous allons utiliser la macro p_p (qui est l’implémentaion du système dynamique décrit ci-dessus), ainsi qu’equilpp, macro qui calcule le point d’équilibre du système dans le quadrant positif ou nul. Ces macros sont chargées en mémoire par l’appel de la macro biosystems(), et les paramètres du système sont initialisés par la macro bio_init().
Nous nous plaçons dans un premier temps dans le cas k infini (sous Scilab, donner la valeur %inf au paramètre k_pp) et u identiquement nul.
Question 5 Quel est le point d’équilibre du système ? Quel est le comportement du système ? Retrouver le premier résultat à l’aide de la macro equilpp (taper equilpp() ou equilpp([0;0])). Choisir alors un cadre convenable dans portrait(p_p). On prendra un pas d’intégration de 1.
Prenons à présent u strictement positif et tel que u1 = u2.
Question 6 Comment se déplace le point d’équilibre lorsque u croît ? Commenter.
Pour certaines valeurs de u, le point d’équilibre est à composante négative. Pour obtenir des points d’equilibre à composante négative, il faut appeler equilpp avec 2 arguments, le premier étant la commande ue, le deuxième pouvant avoir n’importe quelle valeur (la seule présence d’un second argument autorise les points d’équilibre à composante négative).
Question 7 Commenter.
Reprenons l’étude avec k fini.
Question 8 En quoi le comportement qualitatif du système diffère-t-il du cas précédent ?
Question 9 Que se passe-t-il si l’on prend des composantes différentes dans u (comme par exemple une des deux nulle) ? Quels sont les effets sur l’espèce la plus tuée ? Et les répercussions sur l’autre espèce ?
On considère un cas où le point d’équilibre est positif. Utilisons la macro tangent pour définir un champ de vecteurs linéaire pplin qui représente la dynamique linéarisée autour du point d’équilibre fixé. La syntaxe est [f,g,pplin]=tangent(’p_p’,equilpp(ue),ue). On pourra faire cette question à la main pour plus de précision sur les valeurs propres.
Question 10 Peut-on conclure sur la stabilité du point d’équilibre ?
Soit xe le point d’équilibre précédent. On pose :
| (4) |
Question 11 Comment évolue au cours du temps la quantité V ? Conclure sur la stabilité du point d’équilibre.
Superposons les champs p_p et pplin autour du point d’équilibre retenu. On fera attention au moment de l’appel de portrait à utiliser list(pplin,ue).
Question 12 Visualiser quelques trajectoires. Commenter.
Un tel système modélise la dynamique de deux populations vivant sur une même ressource. Ce peut être le cas par exemple de deux souches de levure, ou encore de crustacés sur une algue. Ce système a pour équations
| (5) |
où 1/u est le niveau de ressources et r,s,k,l,a,b des paramètres que l’on peut faire varier (attention : ces paramètres sont notés r_compet, s_compet, etc... sous Scilab. Seule u possède le même nom u).
Nous allons utiliser ce modèle pour appliquer les concepts de commande et d’observateur.
On utilise ici la macro compet, qui est l’implémentation du modèle de compétition, ainsi que equilcom, qui calcule les coordonnées du point d’équilibre en fonction de la commande u (inverse du niveau de ressource). Toutes deux sont chargées grâce à biosystems(), et compet est initialisée à l’aide de bio_init().
Question 13 Calculer le point d’équilibre pour u = 1 (valeur par défaut). Vérifier avec equilcom. Choisir alors un cadre convenable pour tracer le champ de vecteurs grâce à la commande portrait(list(compet,1)). Visualiser quelques trajectoires. Interpréter.
Question 14 Observer le déplacement du point d’équilibre et la modification du champ de vecteurs lorsque u varie. Commenter.
Question 15 Calculer le linéarisé tangent au point d’équilibre du système compet. On pourra utiliser la commande [f,g,complin]=tangent(’compet’,equilcom(ue),ue). Tester la commandabilité et l’observabilité du linéarisé à l’aide de la commande contr(f,g). Visualiser le champ de vecteurs du linéarisé tangent nommé complin.
On pourra se reporter à la partie “Automatique” pour simuler le bouclage de ce système.
L’objectif de ce TP est d’observer l’évolution des concentrations des réactifs et des produits d’une réaction en chaîne.
Nous considérons donc les réactions (d’ordre 1) A → B → C de constantes k1 et k2.
On peut alors écrire les différentes équations cinétiques :
| (6) |
ce qui peut se résoudre analytiquement. On obtient ainsi les formules suivantes :
| (7) |
Question 16 En écrivant les fonctions dans un fichier approprié et les commandes dans un autre fichier, simuler l’évolution des concentrations des trois espèces chimiques en partant des expressions théoriques de ces concentrations (système 7). On pourra prendre A0 = 1, B0 = C0 = 0, k1 = 10 et k2 = 1. (Un bon temps de simulation est alors tf=6).
Question 17 Implémenter le système dynamique (système 6).
Question 18 Tracer l’évolution des concentrations selon les deux systèmes précédents. Tracer également les différences entre les résultats des deux systèmes.
Question 19 Reprendre la simulation en faisant varier les concentrations initiales ainsi que les constantes de réaction.