You are on page 1of 79

Modlisation des biofilms de digestion anarobie par

systme multi-agents
Matres de stage :
Jean-Philippe Steyer (INRA LBE)
Christophe LePage (CIRAD TERA)
Responsable :
Francis Sevila (Agro-M)
Laurent Lardon
Mmoire de DAA
AgroTIC
Octobre 2001
- 2 -
Remerciements
Je tiens tout dabord remercier tous ceux qui mont encadr et aid au cours de ce travail, et
particulirement :
Les membres de lquipe Green du CIRAD de Montpellier
Christophe LePage
Franois Bousquet
Pierre Bommel
Les membres de lquipe automatique de lINRA-LBE de Narbonne
Jean Philippe Steyer
Jrme Harmand
Thierry Conte
Victor Alvaraz
Nancy et Pondichery
Tous les agents et stagiaires INRA
- 3 -
Sommaire
Remerciements _____________________________________________________________ 2
I. Introduction ___________________________________________________________ 5
II. Notations______________________________________________________________ 7
III. Problmatique__________________________________________________________ 8
A. Prsentation du problme ___________________________________________________ 9
1. Structure daccueil _______________________________________________________________ 9
2. La digestion anarobie ____________________________________________________________ 9
3. La structure des biofilms__________________________________________________________ 11
B. Les modles dj raliss ___________________________________________________ 13
1. Modle global du racteur_________________________________________________________ 13
2. Modles analytiques de biofilm ____________________________________________________ 13
3. Automates cellulaires ____________________________________________________________ 14
IV. Elaboration du modle __________________________________________________ 16
A. La modlisation multi-agents________________________________________________ 17
1. Prsentation____________________________________________________________________ 17
2. Plate formes de modlisation multi agent _____________________________________________ 17
B. Description du modle SMA ________________________________________________ 19
1. Positionnement et but du modle ___________________________________________________ 19
2. Les diffrents phnomnes modliser ______________________________________________ 21
3. Interaction global / local __________________________________________________________ 26
4. Architecture du modle __________________________________________________________ 27
5. Indicateurs dvelopps ___________________________________________________________ 30
C. Adaptations prliminaires __________________________________________________ 30
1. Quel algorithme de diffusion - raction ______________________________________________ 30
2. Dsynchronisation des agents ______________________________________________________ 33
3. Ajout d'un controleur ____________________________________________________________ 33
V. Validation Evolution du modle _________________________________________ 34
A. Analyse des rsultats_______________________________________________________ 35
B. Etude de sensibilit ________________________________________________________ 39
1. Conduite ______________________________________________________________________ 39
2. Sensibilit des paramtres de modlisation ___________________________________________ 39
3. Sensibilit la squence des calculs_________________________________________________ 41
C. Dveloppements ultrieurs du modle ________________________________________ 42
1. Dveloppements du modle _______________________________________________________ 42
2. Limites de la plate-forme utilise ___________________________________________________ 44
VI. Conclusion ___________________________________________________________ 45
VII. Bibliographie _______________________________________________________ 48
VIII. Annexes____________________________________________________________ 49
- 4 -
Table des illustrations
Figure 1 : Schma de la digestion anarobie____________________________________________________ 10
Figure 2 : Racteur lit fixe anarobie________________________________________________________ 11
Figure 3 : Illustration de lhtrognit spatiale dun biofilm______________________________________ 12
Figure 4 : Modle sur un digesteur parfaitement agit ____________________________________________ 13
Figure 5 : Bilan de matire et de biomasse dun biofilm___________________________________________ 14
Figure 6 : Architecture de la plate forme CORMAS ______________________________________________ 18
Figure 7 : Evolution des taux spcifiques actognes (1) et mthanognes (2) _______________________ 23
Figure 8 : Diagramme de dcision pour la distribution de biomasse _________________________________ 24
Figure 9 : Illustration de la loi de Fick ________________________________________________________ 25
Figure 10 : Diagramme de classes du modle___________________________________________________ 27
Figure 11 : Diagramme dexcution du modle__________________________________________________ 28
Figure 12 : Diagramme dexcution du modle avec passerelle _____________________________________ 32
Figure 13 : Profil de concentrations Simulation 1________________________________________________ 35
Figure 14: Profis de concentrations Simulation 2 _______________________________________________ 36
Figure 15 : Profils dactivit au sein du biofilm Simulation 1_______________________________________ 37
Figure 16 : Profils d'activit au sein du biofilm Simulation 2 _______________________________________ 37
Figure 17 : Evolution des paramtres dtat vus du biofilm et vus du racteur simulation 1 ____________ 38
Figure 18 : Evolution des paramtres vus du biofilm et vus du racteur simulation 2 ____________________ 39
Figure 19 : Rgles de distribution de biomasse appliques par Picioreanu ____________________________ 43
- 5 -
I. Introduction
- 6 -
Quy a-t-il de commun entre une canalisation, une panse de ruminant et un racteur de
dpollution ? Le point commun qui fdre ce regroupement htroclite, ce sont les biofilms,
ces amas de micro-organismes qui se forment sur toute surface expose leau. De fait ils
sont omniprsents dans notre environnement : on en trouve sur les feuilles des algues,
recouvrant les rochers des rivires, mais aussi sur les outils chirurgicaux o ils peuvent tre
pathognes. A ces biofilms quon essaye tant bien que mal dliminer, il convient dopposer
les biofilms prsents dans les racteurs biologiques, qui ralisent efficacement les
transformations chimiques industrielles ; les digesteurs utiliss pour la dpollution des eaux
sont un exemple de lutilisation fructueuse des biofilms.
Que ce soit pour les liminer ou au contraire les matriser et les conserver, ltude des
biofilms savre aujourdhui des plus utiles. De rcentes techniques dtudes ont permis de
considrablement amliorer la connaissance de leur structure et des mcanismes en jeu dans
leur formation et leur dynamique. La formation du biofilm revient la formation dun
cosystme sommaire qui apporte une rsistance aux perturbations de lenvironnement
(trophiques ou physiques) et permet une organisation en chane trophique.
Les digesteurs anarobies utilisent la tendance des micro-organismes former des biofilms.
En maximisant la possibilit pour les bactries de se fixer et deffectuer efficacement les
transformations biochimiques attendues, les racteurs actuels permettent dobtenir des taux de
dpollution trs intressants. Mais en contrepartie de ces intrts industriels et cologiques
certains, ils souffrent de difficults de contrle et de problmes de stabilit. La matrise des
digesteurs passe srement par celle des cosystmes constitus par le biofilm. Cest dans ce
but que des modles de biofilm sont raliss.
Notre objectif a t dutiliser une nouvelle approche de modlisation -la modlisation multi-
agents- pour raliser un modle de biofilm capable de sappuyer sur les mcanismes
fondamentaux dun biofilm plus que sur ses structures observes. Cette approche prsente
lintrt de mettre en vidence le manque de connaissances sur un point prcis ou au contraire
un niveau de connaissance suffisant pour reproduire les observations. Nous esprons aussi de
cette approche quelle soit plus robuste quune approche classique et quelle permette de
prvoir lvolution du biofilm dans des conditions atypiques.
Ce rapport est organis comme suit :
la premire partie prsente la digestion anarobie et les principales connaissances sur les
biofilms, ainsi que les principales modlisations
la deuxime partie prsente la modlisation multi-agents, explique son intrt pour la
modlisation des biofilms, puis dtaille llaboration du modle, les diffrents
mcanismes modliser ainsi que les solutions choisies
la troisime partie prsente lanalyse des rsultats de simulation, lanalyse de sensibilit et
les perspectives de dveloppement du modle.
- 7 -
II. Notations
Abrviations
AGV Acides Gras Volatils
DOC Demande chimique en Oxygne
TSH Temps de sjour hydraulique
EPS Extracellular Polysacharidic Substances
SMA Systme multi-agents
Lettres latines
X Biomasse (g/L)
S Concentration en substrat (g/L)
Ac Concentration en actate (g/L)
Q Dbit dentre
Ks
i
Constante de saturation (g/L)
k
ij
Coefficient de rendement de la raction i pour la molcule j
A Surface du biofilm
Vu Volume utile du racteur
J Flux de matire
D Coefficient de diffusivit
Lettres grecques
Taux spcifique

Taux darrachement
Surface spcifique (m/m
3
)
Indices
in Entre
out Sortie
Dfinissant la solution du racteur
Problmatique
- 8 -
III. Problmatique
La digestion anarobie est un procd utilis en dpollution des eaux uses. Ce procd
savre intressant mais la matrise lchelle industrielle de ractions biologiques
spontanes ncessite une bonne connaissance des phnomnes en jeu. Dans ce contexte, la
modlisation de la digestion anarobie permet damliorer la connaissance fondamentale de
ce procd mais aussi sa conduite industrielle et de synthtiser les connaissances actuelles.
Cette partie prsente le cadre du travail et ses objectifs. Aprs une prsentation de la
digestion anarobie et des biofilms, les diffrents types dapproche et de modlisation sont
brivement dcrits.
A. Prsentation du problme ___________________________________________________ 9
1. Structure daccueil _______________________________________________________________ 9
2. La digestion anarobie ____________________________________________________________ 9
3. La structure des biofilms__________________________________________________________ 11
B. Les modles dj raliss ___________________________________________________ 13
1. Modle global du racteur_________________________________________________________ 13
2. Modles analytiques de biofilm ____________________________________________________ 13
3. Automates cellulaires ____________________________________________________________ 14
Problmatique
- 9 -
A. Prsentation du problme
1. STRUCTURE DACCUEIL
a) Le LBE
Le Laboratoire de Biotechnologie de l'Environnement (LBE) mne une recherche
fondamentale et applique dans le domaine du traitement des pollutions et de la valorisation
de la matire prsente dans les rejets liquides et solides d'origine urbaine et agro-industrielle.
Les travaux effectus portent sur la Microbiologie Molculaire, le Gnie Microbiologique, le
Gnie des Procds et lAutomatique. Un centre de transfert rattach au laboratoire permet de
nombreuses relations avec les industries et les collectivits.
b) Approche Thmatiques et projets de recherche de lquipe
automatique
LEquipe Automatique, au sein de laquelle ce stage a t ralis, a pour mission de
Dvelopper et mettre en uvre des capteurs de mesure en ligne des principaux
procds et aider l'oprateur humain dans la gestion des installations,
Utiliser les outils de l'Automatique pour amliorer la connaissance, la matrise et la
conception des procds biologiques de traitement des rejets issus de l'activit

Cette thmatique fdre des aspects issus des Sciences pour l'Ingnieur et intgre les
connaissances microbiologiques, technologiques et conomiques dans une vision globale de

ligne finalit industrielle.
Commande et optimisation de la conception des racteurs : Dveloppement et mise en
uvre de lois de commande pour grer les incertitudes et les non-linarits des procds
biologiques interconnects.
Aide la dcision : Dveloppement et mise en uvre de stratgies de dtection et
localisation de dfauts et de diagnostic en temps rel.
A DIGESTION ANAEROBIE
La digestion anarobie, appele aussi mthanisation est un procd spontan identifi depuis
pour la dpollution des eaux uses seulement depuis les annes 70
Problmatique
- 10 -
a) principe
Les principales tapes de la digestion anarobie telles quelles ont t identifies par Zeikus
(1980) font appel diffrentes populations de micro-organismes.
Macro-molcules
Monomres
Acides organiques,
alcools
Actate
B. acidognes
B. acidognes
B. actognes
B. monoactognes
B. mthanognes
actoclastes
B. mthanognes
hydrognophiles
Mthanognse
Hydrolyse et
Acidognse
Actognse
CO
2
+ H
2
CH
4
CO
2
+ CH
4
Figure 1 : Schma de la digestion anarobie
La premire tape est assure par des enzymes extracellulaires qui assurent la transformation
du substrat en monomres (acides gras, glycrol, acides amins, sucres simples). La deuxime
phase acidogne mtabolise les monomres en acides organiques courtes chanes. Ceux-ci
sont alors mtaboliss en Acides Gras Volatils (AGV). Ltude thermodynamique des
ractions actognes conduit lhypothse que les populations actognes sont inhibes par
leur produit. Leur croissance dpend donc de llimination de leurs produits finaux (i.e.
Acides gras volatils et H
2
) par dautres micro-organismes.
Les micro-organismes mthanognes sont des archbactries, leur vitesse de croissance est
beaucoup plus faible que celle des actognes. Elles mtabolisent les produits des bactries
actognes et acidognes, produisant du mthane et du dioxyde de carbone. Elles sont
toutefois inhibes par leur substrat.
Cette description volontairement simpliste des ractions complexes de la digestion anarobie
suffit faire apparatre un point fondamental : le racteur ne dpolluera efficacement que si
les deux catgories de micro-organismes travaillent de concert mais lobtention dun quilibre
entre les actognes et les mthanognes nest pas automatique ; on pourra noter par exemple
que si la concentration en substrat est trop forte (cas de surcharge du racteur), la forte
production dAGV qui sen suit provoque linhibition des mthanognes, puis celle des
actognes, bloquant le racteur.
Problmatique
- 11 -
b) Intrts et limites de la digestion anarobie
La digestion anarobie offre plusieurs avantages par rapport la voie plus classique arobie :
capacit dgrader des effluents complexes et concentrs, faible production de boues, faibles
cots de fonctionnement voire production dnergie.
Mais ce procd se montre instable, sensible aux variations des conditions opratoires et
parfois plusieurs mois sont ncessaires pour ramener le racteur un point de fonctionnement
normal.
Ce dfaut majeur de la digestion anarobie explique son faible emploi industriel et ncessite
pour tre franchi une amlioration des outils de diagnostic et de pilotage qui passe entre autre
par une meilleure connaissance des phnomnes biologiques en jeux.
c) les grands types de racteurs
La digestion anarobie est mise en uvre dans des racteurs (ou fermenteurs) tanches. Aux
racteurs agits, o la biomasse ntait pas fixe et devait donc tre rcupre par dcantation,
on prfre maintenant des racteurs biomasse fixe. Limmobilisation de la biomasse permet
daugmenter les performances et la robustesse dun racteur. Il existe plusieurs modalits
dimmobilisation de la biomasse :
Le filtre ou lit fixe consiste en un garnissage
immobile colonis par les bactries ; il prsente
toutefois une grande sensibilit au colmatage.
Le racteur lit de boue utilise la tendance naturelle
de la biomasse former des granules ; ce type de
racteur savre trs efficace mais les phnomnes de
granulation sont peu matriss. Cest malgr tout le
modle le plus rpandu en Europe.
Le racteur lit fluidis utilise des particules solides
fluidises par lalimentation du racteur comme
support de croissance des bactries ; ces racteurs ne
prsentent pas de colmatage et sont trs efficaces.
Cette technique prometteuse nest malheureusement
quutilise avec parcimonie au stade industriel du fait
de ses difficults opratoires
Entre
liquide
Sortie
liquide
biogaz
Figure 2 : Racteur lit fixe anarobie
Le travail ralis dans ce stage porte sur les lits fixes ; la disponibilit de nombreuses donnes
et de modles fiables sur un racteur de ce type explique ce choix.
3. LA STRUCTURE DES BIOFILMS
Les micro-organismes sorganisent sur les supports et particules de son environnement en
films adhrents. Le biofilm ainsi form est le lieu privilgi des ractions biochimiques, on
trouve en effet trs peu de bactries libres et actives dans la phase libre. Dans ce contexte,
Problmatique
- 12 -
mieux comprendre la mise en place et la dynamique des biofilms savre crucial pour
amliorer le pilotage des digesteurs.
Un biofilm est constitu de bactries fixes entre elles et au support par une matrice
extracellulaire polysaccharidique (Extracellular Polysaccharidic Substance). Historiquement,
les biofilms taient dabord considrs comme une structure homogne mais de nouvelles
mthodes dtude ont permis de montrer quils sont en fait des milieux htrognes et
stratifis.
La surface du biofilm, rvle par microscopie lectronique, prsente des formes
caractristiques de champignon et de tulipe. De mme au sein du biofilm, il existe de
nombreuses lacunes et des canaux. Les mesures de flux par microscopie cofoncale laser et
laide de micro sondes, ont montr que ces canaux jouaient un rle important dans la
pntration du biofilm par la solution en apportant un terme convectif.
Les microsondes ont par ailleurs mis en vidence la stratification des biofilms : au fur et
mesure que la profondeur augmente, la densit augmente alors que la porosit, la biomasse
active et la diffusivit diminuent.
Figure 3 : Illustration de lhtrognit spatiale dun biofilm
Ces moyens dinvestigation trs prcis des biofilms ont montr que les conditions du milieu
jouent un rle important sur leur structure. Les concentrations des soluts et les conditions
hydrodynamiques, en particulier, en agissant sur lquilibre entre la croissance et le
dtachement des cellules influent fortement la structure.
Des tudes sur les biofilms, on retiendra que de nombreux facteurs influent leur structure et
leur dveloppement :
Des facteurs physico-chimiques : transfert des soluts, dgazage, contrainte
hydrodynamique
Des facteurs biologiques : expression des caractres gntiques pour ladhrence
cellulaire, la cintique, la signalisation intercellulaire
Des facteurs alatoires : colonisation initiale, mutation
Problmatique
- 13 -
B. Les modles dj raliss
Plusieurs approches sont possibles pour modliser le racteur. On peut adopter une approche
globale, ou chercher modliser plus finement le biofilm.
1. MODELE GLOBAL DU REACTEUR
Le racteur est considr dans son ensemble,
les variations des variables dtat du racteur
sont dcrites en fonction des entres et sorties,
classiquement en sappuyant sur des balances
massiques des molcules et des biomasses. La
dynamique du biofilm est peu ou pas
explicite, sa distribution spatiale en masse et
en activit non dcrite.
Ces modles sont intressants pour assister le
contrle du racteur et prvoir lvolution du
racteur dans son domaine normal
dutilisation. Les modles de biofilm
permettent de mieux dcrire le
fonctionnement intime du racteur.
Q
g
Q
S
X
Q
in
S
in
X
in
Figure 4 : Modle sur un digesteur parfaitement agit
2. MODELES ANALYTIQUES DE BIOFILM
Les modles analytiques consistent en la dfinition et rsolution dquations diffrentielles
dcrivant lvolution dun jeu de variables. Ils sont le plus souvent utiliss pour des systmes
de grande chelle o se dgage une certaine homognit. Jusquaux annes 80, les biofilms
taient supposs tre des structures homognes planes, ce qui a conduit la formulation de
modles mathmatiques continus pour la prvision de lactivit des biofilms. La prise en
compte de lhtrognit des biofilms dans ce type de modle a consist modliser les
processus dattachement-dtachement de cellules, et de convection par les pores.
Un modle de biofilm classiquement dcrit dune part la dynamique des espces chimiques,
dautre part celle des micro-organismes (cf. Figure 5).
Les molcules sont soumises des phnomnes de convection, de diffusion, et de raction.
Ces phnomnes son trs rapides et atteignent leur point dquilibre en moins dune minute.
Ils constituent la dynamique rapide du biofilm.
Les micro-organismes se multiplient, meurent ou sont inactivs, se dtachent et sattachent au
biofilm. Ces phnomnes sont beaucoup plus lents et atteignent leur point dquilibre au bout
dun temps beaucoup plus important (de plusieurs heures la semaine). Ils constituent la
dynamique lente du biofilm.
Problmatique
- 14 -
Biofilm Solution Support
Substrat
Produit
CL
Qin
Qout
Diffusion
Raction
Croissance
Convection
Arrachement / Adsorption
Figure 5 : Bilan de matire et de biomasse dun biofilm
Les deux dynamiques du biofilm sinscrivent dans des chelles de temps trs diffrentes ; il
est frquent en modlisation des biofilms quon utilise cette proprit pour modliser
sparment les deux dynamiques : les calculs de chaque dynamique sont effectus en
supposant fixes les variables affectes par lautre dynamique [Picioreanu et al 97].
3. AUTOMATES CELLULAIRES
Les modles discrets deviennent ncessaires ds que lchelle est suffisamment petite pour
que des phnomnes individuels deviennent importants.
Les automates cellulaires reprsentent un type de modle discret, adapt la modlisation de
systmes htrognes. Un automate cellulaire est un systme o l'espace est divis en cellules
considres comme des entits individuelles, qui peuvent prendre plusieurs tats possibles.
Elles changent d'tat des moments fixes selon une rgle de transition fonde sur la
configuration d'tats au voisinage de chaque cellule. Il sagit bien de modles discrets puisque
lespace mais aussi le temps et les tats possibles de chaque cellule sont discrets. Les rgles de
transitions sont gnralement trs simple mais aboutissent des phnomnes macroscopiques
complexes, comparables ceux dfinis par les quations analytiques.
Ils ont t utiliss rcemment pour la modlisation des biofilms [Picioreanu et al 1997].
Une autre approche de modlisation est le recours aux systmes multi-agents. Cest la voie
que nous avons choisi dexplorer. Cette approche encore trs rcente savre dores et dj
prometteuse car capable dintgrer de nombreux phnomnes.
Problmatique
- 15 -
Conclusion :
La digestion anarobie prsente de nombreux intrts conomiques et environnementaux mais
souffre de son instabilit. Ltude des biofilms vise amliorer les connaissances sur le
fonctionnement de ses racteurs afin damliorer leur diagnostic et leur pilotage.
Notons que la modlisation des biofilms dpasse de loin le cadre seul des digesteurs. Les
phnomnes mis en jeu dans un biofilm de digesteur sont semblables ceux rencontrs dans
une conduite deau ou dans le dveloppement des endotheliums.
De nombreux modles de biofilms ont dj pu tre formuls, soit partir dquations
analytiques, soit partir dautomates cellulaires. Nous avons choisi dexprimenter une
nouvelle voie de modlisation par systme multi-agents qui devrait nous permettre
damliorer lutilisation des connaissances sur les biofilms pour comprendre et prvoir leur
dynamique.
Elaboration du modle
- 16 -
IV. Elaboration du modle
Le modle de biofilm ralis sappuie sur le formalisme multi-agent, apparu dans les annes
80. Ce type de modlisation bien que trs prometteur pour les simulations en cologie, reste
encore peu utilis. Aprs une brve introduction au formalisme multi-agents, les diffrents
phnomnes mis en jeu dans le biofilm sont dcrits ainsi que leur implmentation dans la
plate forme CORMAS.
A. La modlisation multi-agents________________________________________________ 17
1. Prsentation____________________________________________________________________ 17
2. Plate formes de modlisation multi agent _____________________________________________ 17
B. Description du modle SMA ________________________________________________ 19
1. Positionnement et but du modle ___________________________________________________ 19
2. Les diffrents phnomnes modliser ______________________________________________ 21
3. Interaction global / local __________________________________________________________ 26
4. Architecture du modle __________________________________________________________ 27
5. Indicateurs dvelopps ___________________________________________________________ 30
C. Adaptations prliminaires __________________________________________________ 30
1. Quel algorithme de diffusion - raction ______________________________________________ 30
2. Dsynchronisation des agents ______________________________________________________ 33
3. Ajout d'un controleur ____________________________________________________________ 33
Elaboration du modle
- 17 -
A. La modlisation multi-agents
1. PRESENTATION
Face un systme complexe, on ralise des modles pour :
faire apparatre des quilibres et des attracteurs entre les lments,
contrler la dynamique voire la viabilit dun systme
aider la dcision
prdire les volutions possibles.
Une premire approche de modlisation consiste dcrire lensemble du systme laide
dun jeu dquations. La modlisation multi-agent est une autre approche apparue dans les
annes 80 qui substitue cette notion dexpert individuel celle daction distribue : on rpartit
les actions et les dcisions en lments simples. La modlisation multi-agent repose sur
lhypothse que les proprits dun groupe dindividus sont dtermines par les
comportements des individus qui le composent.
Un Systme Multi Agents (SMA) est constitu typiquement de :
dun ensemble dAgents : Un agent est une entit virtuelle dont le comportement est
autonome, voluant dans un environnement dont il a une perception partielle et sur lequel
il peut agir et avec lequel il peut interagir (Demazeau 96). Il peut tre purement ractif (il
rpond aux changements de son environnement) ou cognitif (mmorise et analyse ses
perceptions et mobilise ses objectifs et croyances). Il est susceptible de communiquer et
d'interagir avec son environnement.
dun environnement : L'environnement est l'espace commun aux agents. Il est dot en
outre d'objets situs passifs sur lesquels les agents peuvent agir : percevoir, dtruire,
modifier. L'environnement d'un agent est l'environnement du SMA et l'ensemble des
agents y voluant.
dune organisation : C'est l'agencement des relations, des hirarchies entre les agents.
Dans les systmes multi-agents, le but peut tre de faire apparatre l'organisation.
d'un ensemble de points de vue : Ce sont les descripteurs du systme. Ils peuvent tre
omniscients ou montrer la perception qu'a chaque agent de son environnement.
Des exemples clbres de systme multi-agents sont donns par les modles dinsectes
sociaux comme les fourmis ou par les modles de dplacement de troupeau. Pour ce dernier,
Reynolds a montr quen attribuant chaque individu dun troupeau quelques lois de
dplacement et dinteraction simples (vitement, convergence, rpulsion), on pouvait
reproduire les mouvements complexes du groupe entier.
2. PLATE FORMES DE MODELISATION MULTI AGENT
a) La plate forme CORMAS
Il s'agit d'un environnement de dveloppement de systmes Multi-Agents ddi la gestion de
ressources naturelles dvelopp par le CIRAD [Le Page et al 2001]. Il est particulirement
adapt l'implmentation de modles d'interactions entre dynamiques naturelles et
dynamiques sociales grce un ensemble dobjets prdfinis.
Elaboration du modle
- 18 -
La plate forme CORMAS dfinit trois catgories dentits : spatiales, sociales et passives.
Les entits spatiales constituent lenvironnement. Elles possdent entre autres attributs la
collection des cellules voisines, la collection des agents situs sur la cellule
Les entits sociales sont les agents proprement dits ; ils peuvent tre situs,
communicants.
Les entits passives regroupent les autres objets utiliss dans le modle : il sagit des
protocoles de communication, des objets situs sur la grille spatiale.
La Figure 6 explicite larchitecture de la plate forme en prsentant les relations dhritage qui
relient les diffrentes classes.
Limplmentation dun nouveau modle multi-agent se fait en crant de nouvelles classes qui
hritent des classes dcrites.
Objet
Objet situ
Entit
Messages
Entit spatiale
Agent situ
communiquant
Agent situ Agent
communiquant
Agent
Cellule spatiale
Figure 6 : Architecture de la plate forme CORMAS
b) Exemple dune application : le modle Bacsim
Les simulations en cologie visent en gnral formaliser la dynamique de populations en
interactions entre elles et avec leur milieu. On va dans un modle multi-agent de dynamique
de populations raliser des simulations "individus centres", c'est--dire que chaque individu
est reprsent au lieu de travailler sur des groupes et des moyennes. Ce genre de simulations
runit les approches thologique (science des comportements animaux) et cologique
(dynamique des populations) et permet dinclure la variabilit interindividuelle et les
interactions spatiales dans les modles cologiques. Cette approche aboutit des modles
biologiquement plus ralistes mais ncessite des temps de calcul trs longs.
A lheure actuelle et notre connaissance, il nexiste quun seul autre modle multi-agent de
biofilm : il a t ralis par J-U Kreft et G. Booth [Kreft et al 2001]. Il sagit dun modle
cologique individu centr (IBs) o les agents sont les bactries elles-mmes. Il modlise
sparment dune part la croissance et le comportement dindividus bactriens comme agents
autonomes, et dautre part la diffusion-raction des soluts.
Elaboration du modle
- 19 -
Chaque bactrie est modlise comme une sphre, la consommation de substrat est dcrite par
une loi de Monod avec limitations par le substrat et le produit. Les divisions cellulaires
suivent le modle de Donachie [Donachie Robinson 96] qui dtermine le volume cellulaire
au moment de la division. Ltalement de la biomasse gnre suit une rgle de distance
minimale entre deux cellules voisines, base sur le calcul du rayon de recouvrement avec
chacun des voisins
Les concentrations des soluts sont dcrites par une balance massique incluant les
phnomnes de transport et de raction. Les vitesses de raction sont dtermines par les
agents et les concentrations des diffrents soluts, donc chaque pas de temps, pour chaque
cellule spatiale, on recalcule la vitesse de raction locale partir des taux spcifiques de tous
les agents de la cellule.
Cette approche a lintrt de se baser directement sur la dynamique de chaque bactrie,
considre individuellement. Mais elle ncessite de modliser un grand nombre dagents ; les
concentrations en bactries dun biofilm sont en effet de lordre de 10
11
bactries par millilitre
de biofilm.
B. Description du modle SMA
1. POSITIONNEMENT ET BUT DU MODELE
Notre but est de mettre au point un modle qui permette de simuler le dveloppement de
biofilms en fonction des conditions appliques au milieu de dveloppement, et donc par
extension en fonction de la loi de commande du racteur. Ce modle doit permettre de tester
des hypothses sur la dynamique des biofilms et vrifier des constations exprimentales.
Dans ce contexte, pourquoi faire appel la modlisation multi-agents alors que de nombreux
modles ont dj t raliss base dquations diffrentielles?
a) Adquation avec la phase disjointe de dveloppement du
biofilm
Le biofilm constitu est une structure o sont associes de manire htrogne et stratifie
bactries, matrice extracellulaire et lacunes. Dans ce milieu, la notion de colonie en tant
quindividualits nest pas trs justifie ; les observations microscopiques ne font pas tat de
colonies identifiables dans un biofilm form mture, du moins dans le cas des biofilms de lits
fixes.
Par contre pendant linitiation dun biofilm, la notion de colonie est beaucoup plus justifie ;
la colonisation du milieu se fait par taches, des colonies disjointes se fixent et se dveloppent
sur la surface. Elles finissent par se rejoindre et former un biofilm mture. Sur les biofilms de
racteur lit turbul, o les contraintes sur le biofilm sont beaucoup plus fortes, on identifie
des peuplements par colonie.
Dans un modle base dquations, la phase disjointe du biofilm est dure dcrire alors
quelle est naturelle pour un SMA.
Elaboration du modle
- 20 -
b) Adquation avec le point de vue biologiste
La ralisation dun systme multi-agent pour dcrire un biofilm revient dcrire un systme
macroscopique par ses constituants microscopiques, dorigine biologique. Le fonctionnement
dun modle bas sur les connaissances sur les micro-organismes, et sa fidlit la ralit, a
lavantage de tester la validit de ses connaissances et met en vidence les phnomnes pour
lesquels nos connaissances sont insuffisantes.
Les tudes sur les biofilms ont pu montrer que son historique dterminait pour une part non
ngligeable les ractions dun biofilm aux modifications des conditions du milieu [Michaud
2001]. Cet enregistrement du pass se fait sous la forme de production de matrice
extracellulaire, dorientation mtabolique, Le fait de dfinir des agents, cest dire des
individus, dans le biofilm permet de fait de les doter de mmoire .
Un autre intrt des agents est quils sont potentiellement diffrents et peuvent donc exprimer
la variabilit gntique des individus dans une population. Enfin, ils se prtent tout fait
lutilisation de modles gntiques, o chaque agent est dot de chromosomes qui dcriraient
ses voies mtaboliques et les constantes mtaboliques associes.
c) Description du modle propos
Conformment larchtype dun SMA, nous avons trois entits considrer : lespace, les
agents et lobservateur.
Le modle propos dfinit les agents comme des groupes de bactries, assimils des
colonies. Ces agents sont localiss et forment le biofilm. Il est noter que la dfinition des
agents utilise est finalement assez abstraite et ne repose pas sur des individualits trs
marques. La dfinition dun agent bactrie impose des capacits de calcul importantes du
fait du nombre dagents quil faudrait simuler. Ce problme est permanent en modlisation
cologique individu-centre, o le nombre dindividus simuler peut vite devenir trs grand.
Cependant pour des bactries, o de nombreux individus sont identiques, il est peut-tre
possible de dfinir un agent abstrait, qui serait un groupe de bactries, de masse variable et
deffectif inconnu, et qui identifierait les caractristiques et les ractions dagents biologiques
Par rapport un agent cellulaire, un certain nombre de comportements ne sont plus
appropris : division cellulaire, pression mcanique entre les cellules. Il faut en fait considrer
cet agent comme une masse ractante, sur laquelle nous pouvons appliquer les techniques
classiques de balance massique.
Ce choix dun agent virtuel est la principale diffrence avec le modle de Kreft. Il doit
permettre deffectuer des simulations plus grande chelle, puisque nous avons moins
dagent modliser ; le modle ralis devrait ainsi tre plus facile relier au fonctionnement
gnral du racteur.
De fait lespace est divis en deux parties : la phase libre, qui ne contient aucun agent mais
nest pas ractive et la phase biofilm.
La phase libre est suppose parfaitement remue et soumise lalimentation du racteur.
Les concentrations sont donc constantes en tout point de la phase libre.
La phase biofilm nest pas soumise aux mouvements de convection, les concentrations
sont fixes par la diffusion des molcules et les ractions biochimiques.
Elaboration du modle
- 21 -
Une troisime phase a t ajoute, cest la couche limite entre le biofilm et la phase libre ;
cette couche dpaisseur variable selon les conditions dalimentation et le type de racteur,
nest pas ractive mais nest pas soumise au mlange : elle suit donc un rgime diffusif.
Le systme modlis nest pas seulement le biofilm, mais le biofilm et la solution du racteur.
Les modlisations de biofilm considrent souvent les proprits de la phase liquide
proximit du biofilm comme constantes ; cest lhypothse dun racteur parfaitement
mlang et contrl. Nous avons fait le choix de tenir compte des interactions biofilm
liquide. Il reste dterminer si lchelle de modlisation permet une gnralisation suffisante
pour prvoir limpact des stratgies dalimentation sur le biofilm.
2. LES DIFFERENTS PHENOMENES A MODELISER
Nous avons adopt lhypothse classique en modlisation de biofilm, selon laquelle deux
dynamiques dchelle de temps diffrentes dcrivent le biofilm. Ainsi la modlisation de
lenvironnement tel que nous lavons dfinie correspond la dynamique rapide du biofilm
(quilibre atteint en quelques secondes), et la modlisation des agents correspond la
dynamique lente (quilibre en quelques heures voire quelques jours).
La modlisation mtabolique choisie est une version inspire de celle qui a t fixe pour le
modle AMOCO : seules deux ractions successives sont considres, la raction actogne et
la raction mthanogne.
Mthane X Actate X Substrat
X X
+ + 2 1
2 1
Un pas de modlisation de lenvironnement doit traiter les phnomnes de
Diffusion des diffrents soluts
Convection, contrainte hydrodynamique
Ractions chimiques, quilibres acido-basiques,
Ractions biochimiques (en interaction avec les agents)
Seules les ractions biochimiques ont t considres, les quilibres acido-basiques et gazeux
ntant pas indispensables au fonctionnement du modle. Cependant, larchitecture actuelle
permet dajouter les calculs de ces ractions sans difficults. De mme les phnomnes de
convection nont pas t retenus. Ceci est d la dfinition des agents et du biofilm : le
biofilm est dfini par la prsence dagents. Les lacunes et canaux du biofilm ntant pas
reprsents, il est impossible de dfinir de convection. Nous avons fait lhypothse que
lutilisation de coefficients de diffusivit assez levs permet de rendre compte
macroscopiquement des phnomnes de diffusion-convection observs microscopiquement.
Un pas de modlisation dun agent doit raliser les oprations suivantes :
Loi de croissance - mort
Loi dinteraction physique, colonisation
Elaboration du modle
- 22 -
a) Croissance cellulaire
La vitesse de croissance des micro-organismes est classiquement proportionnelle leur
concentration. Le coefficient de proportionnalit, not et appel taux spcifique de
croissance, est une fonction des conditions du milieu. Il existe de nombreux modles pour
calculer ce taux de croissance dont la plupart est base sur le modle de Monod (1942) qui
relie la concentration des molcules limitantes (substrats, inhibiteurs).
X
K S
S
X
dt
dX
S
+

max

(1)

max
(j
-1
) est le taux de croissance maximal observ saturation en substrat, K
S
(g/L) est la
constante de demi-saturation, qui correspond la concentration pour laquelle =
max
/2.
Il existe de nombreuses variantes du modle de Monod, permettant de rendre compte
dinhibitions par le substrat ou par un produit de la raction.
La relation (1) dcrit la croissance en terme daugmentation de concentration en micro-
organisme. Il ny a pas de modle gnral qui relie la croissance du biofilm la croissance en
concentration. Il faudra donc tablir un modle de croissance en paisseur du biofilm,
compatible avec les donnes exprimentales.
Dans le cas particulier de notre exemple dtude, les proprits cintiques suivantes ont t
dtermines lchelle du racteur partir des mesures effectues lquilibre pour une srie
de conditions dalimentation [Bernard et al 2001] :

'

,
_

+ +

2
2
2
2 2
2 max
2 2
1 1
1 max
1 1
I
s
s
K
S
K S
S
K S
S


max
1

1,2 jour
-1
actognse
s
K
1
7,1 g.L
-1
max
2

0,74 jour
-1
s
K
2
0,55 g.L
-1
mthanognse
I
K
2
0,96 g.L
-1
Gnralement, linhibition des actognes nest pas apparente car celle des mthanognes
apparat avant. Ces paramtres ont t dtermins macroscopiquement et ne sont peut-tre pas
vrifis microscopiquement. Nanmoins, ce sont ceux que nous utiliserons dans un premier
temps afin de conduire les tests prliminaires du modle avant de les identifier plus
prcisment.
Elaboration du modle
- 23 -
0 2 4 6 8 10 12 14 16 18 20
0
0.2
0.4
0.6
0.8
1
[Substrat] g/L
j
o
u
r
-
1
mu1
0 1 2 3 4 5 6 7 8 9 10
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
[Actate] g/L
j
o
u
r
-
1
mu2i
Figure 7 : Evolution des taux spcifiques actognes (1) et mthanognes (2)
b) Disparition de biomasse
La disparition nette de biomasse active regroupe les phnomnes darrachement de biofilm,
de mort bactrienne, et dinactivation. Les observations exprimentales montrent que
larrachement est fonction de lactivit des bactries et du dbit impos.
Lorsque le dbit augmente, les forces dabrasion aussi. Selon le volume du racteur, le
dbit dalimentation ne reprsente pas la mme force dabrasion ; on prfrera donc relier
les forces dabrasion au temps de sjour hydraulique (TSH), dfini par le rapport :
Dbit
Vutile
TSH .
Une augmentation de la concentration en substrat cre une augmentation de lactivit des
bactries, la vitesse de division sacclre mais la matrice extracellulaire nest pas
produite en consquence, ce qui facilite donc larrachement des bactries. Dans ce cas, le
terme de croissance nette reste positif.
La valeur moyenne du terme darrachement est identifie partir des conditions dquilibre
issues du modle global. A lquilibre, les biomasses sont constantes, ce qui se traduit
macroscopiquement par
obs
=
obs
. Cependant larrachement nest pas identique au sein du
biofilm, des bactries proches de la priphrie sont plus facilement arrachables.
Elaboration du modle
- 24 -
La relation =(x) doit tre telle que la valeur moyenne soit gale la valeur observe, ce qui
se traduit par :
) 0 ( *
max
max
0

x dx
obs
x

.
La formule dcrivant le terme darrachement doit tre croissante en fonction de lpaisseur et
dcroissante en fonction du temps de sjour. On suppose dans un premier temps une relation linaire
( ) x
TSH
a
x , et on identifie le gain grce lintgrale. On en dduit donc
( )
( )
obs
obs
e
x
TSH
x

(2)
o e
obs
est lpaisseur du biofilm correspondant au
obs
.
c) Distribution de la biomasse
La production nette de biomasse dune colonie
est ( )X
dt
dX
. Lorsque ce terme est
positif, il sert soit la croissance de la colonie,
soit la cration et au dveloppement de
nouvelles colonies dans le voisinage.
Les rgles de distribution de biomasse sont
telles que :
la masse m dune colonie ne peut dpasser
une valeur seuil,
la densit de biomasse dune cellule
spatiale ne peut dpasser une valeur seuil
le nombre de colonies prsentes sur une
mme cellule est limit.
Une srie de tests sur la variation de biomasse
(dm), la masse de lagent, la biomasse totale
prsente sur la cellule spatiale, et loccupation
du voisinage permet de dterminer la
distribution de la biomasse chaque pas de
temps en respectant les conditions dcrites ci-
dessus.
La Figure 8 dcrit lenchanement des tests
pour la prise de dcision pour la distribution de
biomasse.
m>0
bm>Bmax
Nb voisins libres>0
m>mMax
dm>0
Prsence fille
bm>Bmax
V
m=m+dm dm=0
m=dm m=m+dm
oui
non
non
non
non
non
non
non
oui
oui
oui
oui
oui
m>mseuil
non
oui
oui
Figure 8 : Diagramme de dcision pour la distribution de biomasse
Elaboration du modle
- 25 -
d) Raction
La cintique des ractions biochimiques suit, elle aussi, la loi de Monod, un terme de
rendement prs.
X k
dt
dS
S
Reac

,
_

(3)
Espce chimique Bactrie effectrice Constante Valeur
(g/gXi)
Substrat (S1) Actogne (X1) k11 -42
Actate (S2) Actogne (X1) k12 6,99
Actate (S2) Mthanogne (X2) k21 -16,09
Mthane (S3) Mthanogne (X2) k22 5,04
e) Diffusion
Le biofilm et la couche limite sont des
milieux o les soluts sont soumis entre autres
phnomnes la diffusion.
La diffusion suit la loi de Fick :
x
S
D J
S


o J est le flux massique par unit de surface,
D la diffusivit en m/j, S la concentration en
g/L. Un bilan massique sur un volume
lmentaire
donne : ( )dt dx x J x J A dm ) ( ) ( +
d'o dt
dx
dx x J x J
Adx
dm
dS
) ( ) ( +

On en dduit que la variation de concentration
due la diffusion d'un solut est
2
2
dx
S d
D
dt
dS
S
diff

,
_

(4)
Figure 9 : Illustration de la loi de Fick
Les valeurs de diffusivit sont donnes pour des diffusions dans leau. Par rapport de leau
pure, un biofilm va prsenter une rsistance la diffusion : les valeurs de diffusivit
classiquement rencontres dans les biofilms varient dun facteur 0,3 0,8 par rapport la
diffusivit de leau. Nous avons appliqu une relation affine reliant la diffusivit la densit
de biomasse.
Elaboration du modle
- 26 -
3. INTERACTION GLOBAL / LOCAL
a) De lalimentation la phase liquide
En permanence un dbit dentre est appliqu au racteur ; le volume du racteur tant
constant, le mme dbit sort du racteur. Le dbit dentre est caractris par ses
concentrations dentre en substrat et en actate, et par sa valeur en L/h.
Conso od S Q S Q
dt
dS
V
out in in u
+

Pr
En appliquant lhypothse que les dbits dentre et de sortie sont gaux (rgime permanent)
et en exprimant le dbit en fonction du Temps de sjour, on obtient la relation
u
in
V
Conso od
TSH
S S
dt
dS
+

Pr
b) Du biofilm la phase liquide
Nous faisons maintenant lhypothse que les ractions chimiques nont lieu que dans le
biofilm. Le terme Production - Consommation est donc gal au flux de matire observ la
couche limite du biofilm.
Le flux est dcrit par la loi de Fick (cf. prcdent), En sappuyant sur lhypothse
simplificatrice que le flux observ au niveau du biofilm est normal sa surface, on ne drive
donc que selon laxe x. Le flux de matire (g/m) est rapport au racteur par sa surface
spcifique exprime en m/m
3
.
u
biofilm
Volume
Surface

J
TSH
S S
dt
dS
in
+

On obtient finalement la relation :


BL
Ac
in
BL
S
in
dx
dAc
D
TSH
Ac Ac
dt
dAc
dx
dS
D
TSH
S S
dt
dS

,
_

,
_

(5)
c) Expression des paramtres dtat
Le fonctionnement des racteurs peut tre suivi partir de plusieurs capteurs en ligne. Les
capteurs sont souvent utiliss pour quantifier lentre et la sortie du racteur mais rarement sur
lintrieur mme du racteur.
Afin de pouvoir comparer au mieux les rsultats du modle et les donnes exprimentales,
nous avons calcul les variables du modle vues de lextrieur .
Elaboration du modle
- 27 -
Les concentrations de sortie en substrat et en actate sont celles de la phase libre.
Dbit de mthane
Le biofilm produit chaque pas de temps

3
3
4
S dl m
CH
. En ramenant cette production au
volume modlis et au temps, on obtient lexpression du dbit massique en g.L
-1
.j
-1

3
2
4
.
S
Dt h
dl
q
CH
(6)
Concentration en biomasse
On ramne la masse de biomasse prsente dans la portion de biofilm modlis au volume
modlis :

X
h
dl
X
g
2
(7)
4. ARCHITECTURE DU MODELE
a) Diagrammes du modle multi-agents
Le diagramme suivant montre larchitecture du modle en terme et son intgration dans la
plate forme CORMAS. Il indique pour chaque classe du modle, la classe dont elle hrite, ses
variables et ses mthodes.
SpatialEntity AgentLocation
bm2
bm
s3
Biofilm_Cell
bilanBM
bilanFilm
influence
reaction
init
s1
effectif
bm1
s2
xi2
xi1
film
rayon
dynastie
Biofilm_Colonie
m
mu
age
buffm
MuM
init
croissance
influence
step
Biofilm_Methano
init
calculMu
reaction
Biofilm_Aceto
init
calculMu
reaction
Cormas_Model
step
connectReactor: a:
theBiofilm_Methanos
theBiofilm_Colonies
theBiofilm_Acetos
Biofilm
theBiofilm_Cells
init
bilanModele
step
rayon:
sauve:t
Figure 10 : Diagramme de classes du modle
Elaboration du modle
- 28 -
Biofilm_Cell init
Biofilm initCells
Biofilm_Aceto init
Biofilm_Methano init
Biofilm initAgents
Biofilm init
Biofilm_Cell diffusion
Biofilm_Colonie calculMu
Biofilm_Colonie reaction
Biofilm_Cell reaction
Biofilm_Cell step
Biofilm connectReactor
Biofilm_Colonie calculMu
Biofilm_Colonie croissance
Biofilm_Colonie step:theAgents
Biofilm_Colonie arrachement
Biofilm_Colonie influence
Biofilm_Cell BilanBM
Biofilm_Cell BilanFilm
Biofilm BilanModele
Biofilm controleur
Biofilm nettoyage
Biofilm sauve
Biofilm step
Biofilm
Le modle comprend cinq classes :
Biofilm_Cell qui est un lment de lenvironnement
discret ; elle hrite de la classe SpatialEntityElement de
Cormas.
Biofilm_Colonie qui reprsente une colonie quelconque.
Biofilm_Aceto qui reprsente une colonie actogne
Biofilm_Methano qui reprsente une bactrie
mthanogne.
Biofilm qui initie et conduit la simulation
Biofilm_Methano et Biofilm_Aceto hritent dune mme
classe Biofilm_Colonie qui possde les attributs et les
mthodes communes aux colonies. Biofilm_Colonie est un
agent localis, il hrite de la classe AgentLocation dfinie
dans Cormas.
Lobjet Biofilm_Cell dcrit la dynamique de
lenvironnement : volution des concentrations, appartenance
au biofilm.
Les objets Biofilm_Colonie sont des agents qui voluent dans
lenvironnement : ils sont fixes mais peuvent crotre, se
rduire, se multiplier ou disparatre. Ils sont a priori
indpendants, mais peuvent possder une descendance. Ils
diffrent entre eux par leur appartenance une population
(actogne ou mthanogne), leur masse, leurs constantes
mtaboliques.
Lenvironnement et les agents interagissent fortement : les
soluts prsents dans lenvironnement dterminent la
dynamique des agents ; lobjet Biofilm_Cell ralise la
raction, mais en se servant des paramtres mtaboliques des
agents locaux.
La procdure dinitialisation est effectue une fois, la mthode
Biofilm step est excute chaque pas de temps.
La procdure dinitialisation affecte les valeurs initiales de
concentration des soluts de lespace (Biofilm initCells) puis
cre et place les agents sur la grille (Biofilm initAgents), en
leur attribuant une masse et leurs proprits mtaboliques.
Figure 11 : Diagramme dexcution du
modle
A chaque pas de temps on effectue plusieurs fois le pas de simulation de lenvironnement
(Biofilm_Cell step) et une fois le pas de simulation des agents (Biofilm_Colonie step).
Elaboration du modle
- 29 -
La mthode Biofilm_Cell step appelle la mthode Biofilm_Cell Diffusion qui effectue la
diffusion des soluts partir dune loi de Fick discrtise, puis la mthode Biofilm_Cell
Reaction.
Cette dernire appelle la mthode calcul_mu des agents de type Biofilm_Aceto et
Biofilm_Methano afin de dterminer le taux spcifique observ pour la cellule, et effectue le
calcul des ractions selon la loi de Monod.
Les changements de concentration dus la diffusion et la raction sont somms dans une
variable de la cellule. A la fin du pas de temps, cette variable reprsente la variation de
concentration de la cellule.
La mthode Biofilm_Cell influence met jour les concentrations en fonction de ces variables
de variation. En procdant ainsi, tous les calculs effectus successivement pour un mme pas
de temps utilisent les mmes valeurs numriques, on respecte la simultanit des phnomnes
malgr un calcul squentiel.
La mthode Biofilm connectReactor met jour les concentrations des soluts dans la phase
libre en fonction de lalimentation et des ractions
Il est important de souligner que bien que les calculs soient squentiels, les phnomnes
restent synchroniss au sein de chaque dynamique. En effet, les mthodes diffusion et
raction pour les cellules, croissance et arrachement pour le agents ne modifient pas
directement la variable qui les concerne mais ajoutent leur "influence" sur la variable dans
une variable tampon. A la fin de chaque cycle, les mthode Biofilm_Cell influence et
Biofilm_colonie influence modifient la variable en fonction du buffer.
b) Constantes et paramtres
Le tableau suivant regroupe toutes les constantes et les paramtres du modle.
Paramtre Unit Valeur usuelle
Pas de temps Dt Jour 0,001
Pas spatial Dl m 50.10
-6
Concentration initiale en substrat S0 g/L 2
Concentration initiale en actate Ac0 g/L 0,7
Alimentation en substrat Sin g/L 10
Alimentation en quivalent actate Acin g/L 2
Temps de sjour hydraulique TSH Jour 1
Surface spcifique Sigma m/m
3
180
Concentration initiale en bactrie actogne X1 g/L 5
Concentration initiale en bactrie mthanogne X2 g/L 5
Epaisseur m 400.10
-6
Dtachement de biomasse observ Gamma obs jour
-1
0,4
Epaisseur du biofilm correspondant Eobs m 100.10
-6
Diffusivit du substrat D1 m/jour 0,6.10
-4
Diffusivit de lactate D2 m/jour 1,03.10
-4
Concentration maximale dans le biofilm BMax g/L 30
Seuil de colonisation Bseuil g/L 1
Elaboration du modle
- 30 -
5. INDICATEURS DEVELOPPES
Une srie dindicateurs ont t dvelopps afin de pouvoir analyser les rsultats de simulation.
Des fichiers de sauvegarde sont crs tous les 50 pas de temps (ce qui correspond 1h12 pour
un pas de temps de 0.001 jours). Ils dcrivent ltat de lenvironnement (concentrations des
soluts, densit des biomasses) en tout point de lespace modlis, la rpartition en masse et
en ge des agents, ainsi que les paramtres dtat du racteur ( alimentation, concentration des
soluts dans la phase libre, dbit de mthane, concentration globale de biomasse).
Les fichiers sont traits par Matlab pour fournir lvolution des profils de concentration, de
densit et dactivit au sein du biofilm, lvolution du biofilm (surface, primtre), lvolution
du racteur.
C. Adaptations prliminaires
1. QUEL ALGORITHME DE DIFFUSION - REACTION
La modlisation dun biofilm comprend trs souvent la modlisation du phnomne physico-
chimique de diffusion des molcules et de leur raction chimique. Certains modles supposent
quil ny a pas de gradient de soluts au sein du biofilm et se contentent de modliser les
ractions chimiques et biochimiques. Cette hypothse est vrifie dans le cas des biofilms fins
(moins de 100 m). Dans notre cas, nous voulions dune part tablir un modle le plus
gnrique possible et dautre part le valider sur lexemple des lits fixes o lpaisseur du
biofilm est suffisante pour que leffet de la diffusion ne soit pas nglig.
a) Les diffrents algorithmes
La diffusion suit une loi de Fick, la raction biochimique suit une loi de Monod. En
combinant ces deux relations, et en faisant lhypothse quil ny a pas de variation de la
concentration S selon laxe y, on obtient pour un biofilm lquilibre lquation diffrentielle
suivante,
0 + X k
dx
dJ

ce qui se traduit pour une quation de Monod du premier degr par lquation diffrentielle :
0
2
2
+
K
kXS
dx
S d
D (8)
Cette relation est complte par les conditions aux limites : la premire traduit la continuit
avec la phase libre, la deuxime traduit le fait quaucun flux de matire ne puisse traverser le
support.

S S
L x
et 0
0

x
dX
dS
Cette quation a une solution analytique [Droste 86] :
( )

cosh
cosh

,
_


L
x
S S
o
DK
kX
L
Elaboration du modle
- 31 -
Ceci est la solution pour une raction qui suit une cintique du premier degr. Dans le cas de
ractions en chanes et aux cintiques plus complexes, il nest pas possible de fournir de
solutions analytiques. On fait alors appel des techniques numriques qui par calculs itratifs
permettent de fournir une solution au problme.
En appliquant une discrtisation spatiale et temporelle la relation (8), on obtient en
monodimensionnel pour chaque maille j de lenvironnement
( )
t X k
X
S
dl
D
t
S
x
j

,
_

+
2
2
2
soit :
( )
t
x
t
x
t
x
t
x
t
x
t
x
t
x
t t
x
S S
dl
dt
D S dt S S S
dl
D
S S
1 1
2
1 1
2
) 2 1 (
+ +
+
+ + + +

La dernire formulation montre que le pas de temps doit tre choisi en fonction de la largeur
de maille choisie. En effet si le rapport dt/dl est trop lev, on risque de faire diffuser plus
de matire quil ny en a dans la maille et on aboutit alors des concentrations ngatives.
En appliquant cette relation en deux dimensions, on peut alors calculer pour chaque pas de
temps la concentration en chaque maille du plan.
( ) ( ) [ ]
t
y x
t
y x
t
y x
t
y x
t
y x
t
y x
t
y x
t t
y x
S S S S S S
dl
dt
D S S
, 1 , 1 , , , 1 , 1
2
, ,
2 2 + + + +
+ +
+
La mthode Biofilm diffusion utilise cette relation pour calculer chaque pas de temps la
variation de concentration de chaque solut pour chaque cellule spatiale. Cependant on est
oblig dutiliser un pas de temps trs petit au vu des largeurs de mailles et des coefficients de
diffusivit utiliss. A titre dexemple, il faut un pas de temps de 340 millisecondes pour une
largeur de maille de 50 m mais de 34 millisecondes pour une largeur de maille de 10 m.
Or les rsolutions habituellement utilises sont de lordre du m. Cette mthode de rsolution
nest donc pas satisfaisante. La mthode des Directions Alternatives Implicites de Peaceman
et Rachford (ADI) permet deffectuer le calcul des problmes multi-dimensionnel de
diffusion-raction (cf. en annexe). Elle a lavantage de ne pas ncessiter dhypothses dtat
stationnaire et doffrir une relative simplicit calculatoire (des systmes dquations en srie).
Elle repose sur deux quations de diffrences finies utilises alternativement par demi pas de
temps quon balaye sur le plan selon les deux axes alternativement. Elle gnre alors des
systmes dquations triangulaires.
Afin de rsoudre les systmes dquation, il convient dajouter des conditions aux bordures.
En plus des conditions aux bordures classiques prsentes dans la rsolution adimensionnelle
(continuit avec la phase libre et drive nulle sur le support), on ajoute un bouclage de
lespace selon laxe y : ceci revient supposer quil ny ait pas de gradient selon y. Cette
hypothse est valable pour des petits volumes de simulation.
La rsolution de la raction diffusion par la mthode ADI demande la rsolution, pour un plan
de N colonnes et L lignes, de N systmes dquations L lignes et L systmes N lignes, et
ce pour chaque solut, chaque pas de temps.
Elaboration du modle
- 32 -
b) Optimisation du pas de temps
Lorsquon effectue un calcul de raction-diffusion, le systme arrive souvent une situation
dquilibre, les transferts locaux de masse deviennent alors trs faibles. Il est alors inutile
dutiliser des pas de temps aussi fins que lorsquon tait loin dune situation dquilibre.
Cest pourquoi nous avons ajout la boucle de calcul, une mise jour du pas de temps en
fonction de lcart la position dquilibre. Plusieurs indicateurs ont t tests, bass soit sur
lcart-type, soit sur le transfert de matire.
Un contrle visant maintenir un transfert de biomasse par pas de temps suprieur un seuil
sest montr efficace sans perturbation significative du rsultat final.
c) La passerelle Matlab
Biofilm_Cell init
Biofilm initCells
Biofilm_Aceto init
Biofilm_Methano init
Biofilm initAgents
Biofilm init
Biofilm stepMatlab
Biofilm connectReactor
Biofilm_Colonie calculMu
Biofilm_Colonie croissance
Biofilm_Colonie step:theAgents
Biofilm_Colonie arrachement
Biofilm_Colonie influence
Biofil_Aceto calculMu
Biofilm_Methano calculMu
Biofilm_Cell BilanBM
Biofilm_Cell BilanFilm
Biofilm BilanModele
Biofilm controleur
Biofilm nettoyage
Biofilm sauve
Biofilm step
Biofilm
Lalgorithme de rsolution a dabord t dvelopp
sous Matlab ; cet algorithme utilisant essentiellement
des calculs matriciels pour lesquels Matlab est
efficace, nous avons dcid dutiliser une passerelle
entre le modle multi-agent proprement dit (qui est
programm en Small Talk) et la rsolution du champ
de concentration.
La passerelle consiste en ltablissement dun lien de
type Dynamic Data Exchange entre VisualWorks et
Matlab. Les liaisons DDE unissent une application
cliente qui initie la conversation, et une application
serveur qui effectue des tches pour lapplication
cliente. Ce type de lien ncessite que les deux
applications soient ouvertes.
La classe de communication a t dveloppe partir
de celle ralise pour le couplage Visual Works -
Vensim par Eric Piquet et Christophe Le Page.
Le type de donne chang est au format texte ; dans
ce format, il est apparu que Visual Works ntait
capable dexporter que 800 valeurs numriques.
Lalgorithme de raction diffusion a besoin de 4
valeurs numriques par cellule (substrat, actate,
biomasse actogne, biomasse mthanogne). On est
donc ramen des grilles dau maximum 200 cases.
Lintrt de la passerelle est alors assez diminu, mais
on a maintenant la possibilit de modliser sur une
gamme dchelle plus grande sans toutefois augmenter
significativement la rsolution (nombre de cellules/m)
des simulations.
Figure 12 : Diagramme dexcution du modle
avec passerelle
Elaboration du modle
- 33 -
Il faut noter que le couplage par DDE est instable et limit ; il ncessite de plus que les deux
applications soient installes dans leur intgralit et ouvertes, avec tout ce que a implique en
terme doccupation de la RAM. Lutilisation de DLL (Dynamic Link Libraries) semble plus
indique, il faudrait pour cela compiler lalgorithme Matlab en C++ sous forme de dll.
La passerelle se substitue aux deux mthodes Biofilm_Cell step et Biofilm_Cell influence.
Elle ncessite par contre le calcul des taux spcifiques, insr dans la mthode Biofilm_Cell
bilanBM.
2. DESYNCHRONISATION DES AGENTS
A linitialisation de la simulation, les agents sont crs et placs sur la grille. Si les agents sont
tous identiques, on peut faire apparatre des artefacts de simulation comme la division
synchronise de toutes les colonies. Ces synchronisations ne sont pas dues la simulation
dun phnomne mais au mode de modlisation. On peut viter ce problme en appliquant un
tirage alatoire pour les proprits de chaque agent (biomasse initiale, constante de raction).
3. AJOUT D'UN CONTROLEUR
Notre but est de voir l'effet d'un mode de conduite de racteur sur le biofilm ; nous avons donc
ajout une mthode Biofilm contrleur qui permet chaque pas de temps de modifier les
paramtres d'alimentation. Dans un premier temps, l'alimentation est choisie constante, le
temps de valider le modle ; le contrleur se contente de jouer sur le dbit en cas de lessivage
du racteur (si la concentration du milieu est gale la concentration d'alimentation, le
contrleur rduit le dbit) ou en cas d'alimentation insuffisante (si la concentration en substrat
du milieu est infrieure 1 g/L on augmente le dbit)
Conclusion
Llaboration du modle a essay de rpondre aux deux impratifs dvolutivit et de mise en
uvre calculatoire. Tel quil est actuellement, il est possible de rajouter au modle de
nouveaux lments, de nouvelles interactions, de changer les lois de fonctionnement.
Le modle sappuie sur une srie dhypothses :
Possibilit de dcoupler la simulation des dynamiques rapides et lentes du biofilm
Possibilit de dfinir des agents non observs mais identifiant les proprits dagents plus
petits et plus nombreux
Le flux de molcules est dcrit par la loi de Fick sur la diffusion, et le flux sortant est
normal la surface du biofilm
Les ractions biochimiques sont localises dans le biofilm
La biomasse est fixe et ne se dplace pas au sein du biofilm
Validation
- 34 -
V. Validation Evolution du modle
Un modle est une simplification de la ralit, il vise reproduire le comportement d'un
systme. Pour s'assurer de la validit du modle, nous pouvons comparer des donnes relles
aux donnes prdites par le modle, mais c'est difficile raliser pour les modles de vie
artificielle.
Une premire validation consiste vrifier que le modle naboutit pas des rsultats
aberrants mais au contraire conformes lexprience quon a du systme rel. Ltude de
sensibilit permet de dtecter des biais du modle et de dtecter les paramtres fondamentaux
du modle.
A. Analyse des rsultats_______________________________________________________ 35
B. Etude de sensibilit ________________________________________________________ 39
1. Conduite ______________________________________________________________________ 39
2. Sensibilit des paramtres de modlisation ___________________________________________ 39
3. Sensibilit la squence des calculs_________________________________________________ 41
C. Dveloppements ultrieurs du modle ________________________________________ 42
1. Dveloppements du modle _______________________________________________________ 42
2. Limites de la plate-forme utilise ___________________________________________________ 44
Validation
- 35 -
A. Analyse des rsultats
Les rsultats prsents sont les rsultats de deux simulations. La premire est une simulation
de 15 jours sur 15000 pas, sur un espace de 5*15 cellules avec une maille de 50 m. Le
systme est initialis avec un biofilm homogne de 100 m. Les concentrations d'alimentation
sont celles communment rencontres dans l'effluent du racteur pilote. Les concentrations
initiales des soluts sont celles dun systme lquilibre ; elles ont t tablies partir du
modle AMOCO qui fournit galement les constantes mtaboliques du modle BIOFILM.
La deuxime simulation est celle d'un biofilm install, relativement pais (500 m), aliment
uniquement en substrat.
a) Profils de concentration des soluts
Comme on peut le voir sur la Figure 13, les profils des soluts sont pratiquement plats. Or les
constations exprimentales montrent que les gradients de soluts existent, et peuvent mme
tre parfois trs forts. Cet cart peut tre interprt soit par lutilisation de valeurs de
diffusivit trop fortes, soit par la surestimation du mlange de la phase libre situe en face du
biofilm. Lapport dacides gras volatils dans le systme par lalimentation du racteur
participe aussi ce nivellement des profils.
0 5 10 15
0
10
20
0.6 jours
[
X
1
]

g
/
l
0 5 10 15
0
5
10
[
X
2
]

g
/
l
0 5 10 15
0
0.5
1
%
a
c
e
t
o
g
e
n
e
0 5 10 15
0
10
20
1.2 jours
0 5 10 15
0
5
10
0 5 10 15
0
0.5
1
0 5 10 15
0
10
20
1.8 jours
0 5 10 15
0
5
10
0 5 10 15
0
0.5
1
0 5 10 15
0
10
20
2.4 jours
0 5 10 15
0
5
10
0 5 10 15
0
0.5
1
0 5 10 15
0
10
20
3 jours
0 5 10 15
0
5
10
0 5 10 15
0
0.5
1
0 5 10 15
0
5
[
S
u
b
s
t
r
a
t
]

g
/
l
0 5 10 15
0
1
[
A
c
e
t
a
t
e
]

g
/
l
0 5 10 15
0
0.05
[
M
e
t
h
a
n
e
]

g
/
l
0 5 10 15
0
5
0 5 10 15
0
1
0 5 10 15
0
0.05
0 5 10 15
0
5
0 5 10 15
0
1
0 5 10 15
0
0.05
0 5 10 15
0
5
0 5 10 15
0
1
0 5 10 15
0
0.05
0 5 10 15
0
5
0 5 10 15
0
1
0 5 10 15
0
0.05
Figure 13 : Profil de concentrations Simulation 1
Dans le cas de la simulation 2 (Figure 14 ), la suppression d'alimentation en acides gras a pour
consquence la chute de la concentration moyenne du racteur en acides gras ; cette espce
n'est pratiquement plus rencontre dans la phase libre. Paralllement un gradient de substrat et
d'actate s'tablit, le biofilm entre en contrle diffusif partiel.
Validation
- 36 -
0 10 20
0
10
20
10 jours
[
X
1
]

g
/
l
0 10 20
0
5
10
[
X
2
]

g
/
l
0 10 20
0
0.5
1
%
a
c
e
t
o
g
e
n
e
0 10 20
0
10
20
20 jours
0 10 20
0
5
10
0 10 20
0
0.5
1
0 10 20
0
10
20
30 jours
0 10 20
0
5
10
0 10 20
0
0.5
1
0 10 20
0
10
20
40 jours
0 10 20
0
5
10
0 10 20
0
0.5
1
0 10 20
0
10
20
50 jours
0 10 20
0
5
10
0 10 20
0
0.5
1
0 10 20
0
1
2
[
S
u
b
s
t
r
a
t
]

g
/
l
0 10 20
0
0.1
0.2
[
A
c
e
t
a
t
e
]

g
/
l
0 10 20
0
0.01
0.02
[
M
e
t
h
a
n
e
]

g
/
l
0 10 20
0
1
2
0 10 20
0
0.1
0.2
0 10 20
0
0.01
0.02
0 10 20
0
1
2
0 10 20
0
0.1
0.2
0 10 20
0
0.01
0.02
0 10 20
0
1
2
0 10 20
0
0.1
0.2
0 10 20
0
0.01
0.02
0 10 20
0
1
2
0 10 20
0
0.1
0.2
0 10 20
0
0.01
0.02
Figure 14: Profils de concentrations Simulation 2
b) Profils de concentration des biomasses
Comme le montrent la Figure 13 et la Figure 14, les profils de biomasse sinstallent trs vite
(il est plat linitialisation). Le rapport des biomasses volue selon la position au sein du
biofilm, les actognes sont majoritaires la priphrie du biofilm mais leur proportion
diminue dans les couches profondes du biofilm. Cette rpartition des biomasses est conforme
aux constations exprimentales. Dans le cas d'une alimentation riche en acides gras et pauvre
en substrat, le profil de rpartition des biomasses peut s'inverser, les bactries mthanognes
ayant alors une activit plus forte que les actognes. Ceci est vrai tant que les actognes ne
rentrent pas dans leur domaine d'inhibition.
c) Profils dactivit
La Figure 15 et la Figure 16 montrent l'volution des profils d'activit du biofilm ; la
premire srie de graphes montre l'volution de la croissance nette, la deuxime srie montre
celle du taux spcifique.
La croissance nette du biofilm diminue dans le temps, ce qui laisse supposer quau bout des
quinze jours de simulation, le systme est proche de ses conditions dquilibre. Les taux
spcifiques tendent converger vers la mme valeur, ce qui signifie que le systme est en
quilibre, les deux biomasses atteignant un mme niveau dactivit. Les taux spcifiques sont
pratiquement constants au sein du biofilm, ce qui est d aux profils plats des concentrations
de soluts.
Validation
- 37 -
Figure 15 : Profils dactivit au sein du biofilm Simulation 1
Dans les cas o le biofilm entre en contrle diffusif, les profils des taux spcifiques sont
opposs, le taux actogne diminue dans le biofilm alors que le taux actogne augmente. Le
profil du rapport actogne/mthanogne peut alors tre stable.
-0.2
0
0.2
0.5 jours
-0.2
0
0.2
1 jours
-0.2
0
0.2
1.5 jours
-0.2
0
0.2
2 jours
-0.2
0
0.2
2.5 jours
0 5 10 15
-0.2
0
0.2
3 jours
-0.2
0
0.2
3.5 jours
-0.2
0
0.2
4 jours
-0.2
0
0.2
4.5 jours
-0.2
0
0.2
5 jours
0 5 10 15
0
0.2
0.4
0.5 jours
Mu1
Mu2
0
0.2
0.4
1 jours
0
0.2
0.4
1.5 jours
0
0.2
0.4
2 jours
0
0.2
0.4
2.5 jours
0 5 10 15
0
0.2
0.4
3 jours
0 5 10 15
0
0.2
0.4
3.5 jours
0 5 10 15
0
0.2
0.4
4 jours
0 5 10 15
0
0.2
0.4
4.5 jours
0 5 10 15
0
0.2
0.4
5 jours
j
o
u
r
-
1
Figure 16 : Profils d'activit au sein du biofilm Simulation 2
-0.2
0
0.2
0.3 jours
-0.2
0
0.2
0.6 jours
-0.2
0
0.2
0.9 jours
-0.2
0
0.2
1.2 jours
-0.2
0
0.2
1.5 jours
-0.2
0
0.2
1.8 jours
-0.2
0
0.2
2.1 jours
-0.2
0
0.2
2.4 jours
-0.2
0
0.2
2.7 jours
-0.2
0
0.2
3 jours
0
0.2
0.4
0.3 jours
Mu1
Mu2
0
0.2
0.4
0.6 jours
0
0.2
0.4
0.9 jours
0
0.2
0.4
1.2 jours
0
0.2
0.4
1.5 jours
0 5 10 15
0
0.2
0.4
1.8 jours
0 5 10 15
0
0.2
0.4
2.1 jours
0 5 10 15
0
0.2
0.4
2.4 jours
0 5 10 15
0
0.2
0.4
2.7 jours
0 5 10 15
0
0.2
0.4
3 jours
j
o
u
r
-
1
Validation
- 38 -
d) Evolution du biofilm
La Figure 17 et la Figure 18 montrent l'volution de paramtres d'tat du racteur
(concentration en substrat, actate, biomasses, Temps d sjour et dbit de gaz) exprims,
pour les concentrations, en fonction du volume du biofilm et en fonction du volume du
racteur.
La croissance du biofilm se ressent sur les courbes dvolution des concentrations en substrat
et en actate (cf. Figure 17). Dans un premier temps, le racteur est en lessivage, les apports
par lalimentation sont largement suprieurs aux quantits mtabolies ; ceci se traduit par une
convergence des concentrations au sein du racteur vers les valeurs de lalimentation (10g/L
pour le substrat et 2 g/L pour les acides gras). A partir dune concentration suffisante en
biomasse, les quantits apportes sont consommes et les concentrations globales convergent
vers une valeur faible dquilibre. Le racteur a alors atteint son point de fonctionnement et il
traite leffluent dpolluer. Le passage du lessivage vers le fonctionnement normal,
comparable au passage du biofilm en formation un biofilm lquilibre, est visible sous la
forme dun point dinflexion sur les courbes de concentrations globales en biomasse.
0
2
4
6
[substrat]g/L
0
1
2
[acetate]g/L
0
5
10
moyenne biofilm
g
/
l
[bm1]
0
2
4
6
t emps
g
/
L
[bm2]
0 10 20 30 40 50 60
0
5
10
g
/
L
substrat
acetate
0
1
2
Evolution des variables d etat du reacteur
0 10 20 30 40 50 60
0
0.5
1
g
/
L
X1
X2
0
0.2
0.4
0 10 20 30 40 50 60
0
0.05
0.1
t emps
L CH4/Lreacteur/h
0 10 20 30 40 50 60
0
0.5
1
t emps
TSH
Figure 17 : Evolution des paramtres dtat vus du biofilm et vus du racteur simulation 1
Validation
- 39 -
0
2
4
[substrat]g/L
0
0.5
1
[acetate]g/L
0
5
10
moyenne biofilm
g
/
l
[bm1]
0
5
10
t emps
g
/
L
[bm2]
0 20 40 60 80 100
0
5
g
/
L
substrat
acetate
0
0.5
Evolution des variables d etat du reacteur
0 20 40 60 80 100
0
0.2
0.4
0.6
0.8
1
g
/
L
X1
X2
0
0.2
0.4
0.6
0.8
1
0 20 40 60 80 100
0
0.05
0.1
t emps
QCH4 g/Lreac/h
0 20 40 60 80 100
0
0.2
0.4
0.6
t emps
TSH
Figure 18 : Evolution des paramtres vus du biofilm et vus du racteur simulation 2
Les courbes obtenues partir des simulations fournissent des rsultats crdibles et
interprtables. Le modle nen est pas valid pour autant, puisque seules ses tendances sont
valides. L'tude de sensibilit permettra de dtecter d'ventuels biais du modle.
B. Etude de sensibilit
1. CONDUITE
Ltude de sensibilit consiste faire varier des paramtres du modle afin de mettre en
vidence quels paramtres influent fortement le modle. Certains paramtres peuvent modifier
fortement les rsultats de simulations sans que cela corresponde un rsultat rel : on peut
ainsi identifier les biais de modlisation et essayer de les supprimer.
Les paramtres soumis ltude de sensibilit sont : le pas de temps, le pas despace, la
densit minimale de division, l'paisseur maximale du biofilm, le nombre d'agents par cellule.
2. SENSIBILITE DES PARAMETRES DE MODELISATION
La simulation "tmoin" est une simulation de 15 jours (soit 15 000 pas de temps) sur une
grille spatiale de 5x15 cellules, conduite avec les valeurs de paramtres indiques dans le
paragraphe constantes et paramtres en tant que valeurs usuelles.
Validation
- 40 -
a) Masse minimale de division : Bseuil
Ce paramtre est la masse minimale partir de laquelle une colonie dont le terme de
croissance net est positif va chercher coloniser son voisinage. Le paramtre entr est
exprim en g/L puis est calcul en grammes en ramenant la concentration au volume de la
cellule spatiale. Le seuil massique est donc dpendant de la largeur de maille choisie pour la
simulation. On effectue trois simulations de 15 jours avec une valeur de Bseuil
respectivement de 1, 5 et 10 g/L (jeux de donnes 1,2 et 3).
Comme on pouvait sy attendre, la valeur de Bseuil modifie la croissance en paisseur du
biofilm. On atteint des paisseurs de 300 m pour la simulation avec Bseuil=1 g/L, et
seulement 200 m pour les deux autres, pour des biofilms initis 100 m dans tous les cas.
La densit massique de biomasse actogne est plus leve pour les simulations 5 et 10 g/L
(12 g/L biofilm au lieu de 8g/L), avec une masse totale de biomasse quivalente ( de lordre
de 0,6 g/L racteur). La densit de biomasse mthanogne reste quasiment la mme dans les
trois cas.
Une valeur de Bseuil faible, en favorisant la colonisation des cellules par les agents, se traduit
par une croissance du biofilm en paisseur plus rapide au dtriment de la croissance en
densit.
b) Nombre dagent maximal dune cellule : Effsup
Ce paramtre a t introduit pour limiter le nombre dagents. Sur les premires simulations,
en effet, le nombre dagents sur certaines cellules pouvait devenir trs grand (200) amenant le
blocage du systme. Les valeurs testes sont de 5, 10 et 20 agents par cellules. Le cas 1 agent
par cellule est un cas particulier du systme multi-agents qui correspondrait un automate
cellulaire.
Les simulations diffrent fortement par le nombre dagents ( de 150 500 agents) mais ont
des surfaces de biofilms quivalentes. La simulation 10 agents par cellule semble converger
vers un profil du rapport actogne/mthanogne invers par rapport aux deux autres
simulations. Cette simulation diffre galement par lvolution des concentrations des soluts.
Notons cependant que les concentrations globales des biomasses sont comparables pour toutes
les simulations (0,5 g/L actogne et 0,2 g/L mthanogne) ; les diffrences observes sont
peut-tre des diffrences transitoires.
Il faudra vrifier, dune part leffet de simulations plus longues et leffet dune densit
maximale en agents radicalement plus grande, au risque de dstabiliser le simulateur.
c) Epaisseur du biofilm : Thickness
La valeur Thickness dtermine en fait le terme de disparition de biomasse puisquil indique
lpaisseur de biofilm correspondant la perte de biomasse observe. Des valeurs leves de
Thickness dterminent des pertes de biomasse faibles. Pour les valeurs leves on observe
logiquement une croissance plus rapide du biofilm. La valeur la plus leve (800m) conduit
un biofilm o la biomasse actogne puise le substrat sa disposition, la biomasse
mthanogne mtabolise alors surtout les acides gras issus de lalimentation du racteur.
Lactivit mthanogne tant dans ce ca plus importante que lactivit actogne, le profil du
rapport des biomasses tend saplanir voire sinverser.
Validation
- 41 -
d) Pas de temps : Dt
Aucune diffrence na pu tre mise en vidence entre trois simulations ralises avec des pas
de temps respectifs de 1, 5 et 10 millimes de jour (soit environ 1 minute et demi, 7 minutes et
14 minutes). Lalgorithme de calcul par la mthode ADI arrive la solution sans ncessiter de
trop nombreuses itrations.
e) Pas spatial : Dl
On compare cinq simulations, effectues avec des largeurs de maille de 5,10, 20, 50 et 100
m. A chaque fois on initie la simulation avec un biofilm homogne de 100 m dpaisseur.
Les simulations fournissent, aprs 15 000 pas, des biofilms dpaisseurs diffrentes (de 130
400 m). Il semble donc que pour des largeurs de maille leve, la croissance en paisseur
soit privilgie par rapport la croissance en densit.
Les rgles de distribution de biomasse ne sont donc pas valides ; des agents sur de petites
cellules ont un pouvoir colonisant infrieur ceux prsents sur une grande cellule. Ceci est
peut tre d la saturation en biomasse des cellules
3. SENSIBILITE A LA SEQUENCE DES CALCULS
La modlisation de la dynamique rapide, cest--dire des phnomnes de raction et de
diffusion doit effectuer pour tout point de lespace les calculs suivants :
Activit spcifique des agents
Raction biochimique locale
Diffusion des molcules
Au cours de llaboration du modle, plusieurs mthodes de calcul ont t essayes. Dans la
premire version du modle, sans passerelle avec Matlab, les trois calculs taient effectus de
manire squentielle mais les phnomnes restaient synchrones. Avec la mise en place de la
passerelle (BIOFILM v2) les trois phases du calcul sont conduites en une seule tape. La
considration de l'activit mtabolique propre de chaque agent (BIOFILM v3) oblige, pour
chaque calcul d'activit, interroger chaque agent. En dlocalisant le calcul de la raction
diffusion vers Matlab, il est impossible d'accder aux variables de chaque agent. L'activit
moyenne de chaque cellule est alors calcule depuis la dynamique lente, en faisant l'hypothse
que la valeur d'activit n'voluera pas de manire significative pendant un pas de temps de
dynamique lente. Cette hypothse est raisonnable car les courbes de l'activit spcifique
voluent assez lentement en fonction des concentrations. Cependant cette hypothse est
vrifier dans chaque nouvelle conformation.
Le cycle de calcul de dynamique rapide est effectu plusieurs fois au sein dun cycle de
dynamique lente. Au cours de llaboration du modle, plusieurs squences de calcul ont t
testes :
Dynamique
lente Rapide
Croissance Activit Raction Diffusion
Croissance Activit-Raction-Diffusion
Croissance Activit Raction-Diffusion
Croissance Activit Raction-Diffusion optimis
Validation
- 42 -
La dernire mthode est la plus rapide en terme de temps de calcul.
Les comparaisons entre des algorithmes calculant la raction et la diffusion en une seule
rsolution (v2) ou de manire squentielle (v3) ont montr peu de diffrences, diffrentes
largeurs de maille comme lindique le tableau. Tout au plus le champ de concentration est
lgrement moins lisse dans le cas de la rsolution squentielle.
Cycles Maille
D-R D/R
Diffrence S1 Diffrence S2
50 m 0,15% - 0,8% 0,11% - 0,33%
5m 175 161 0,64% - 2,9% 0,28% - 0,91%
Tests : calcul pour 0.001 jour sur une matrice 30*30
C. Dveloppements ultrieurs du modle
1. DEVELOPPEMENTS DU MODELE
Ce premier modle a laiss de cot de nombreux phnomnes, visant la validation dune
approche mthodologique. Ses limites montres par lanalyse de sensibilit ainsi que sa
confrontation aux connaissances actuelles des biofilms nous pousse ajouter au modle actuel
dautres mcanismes et dautres phnomnes.
a) Un modle plus proche des connaissances biologiques
Par rapport au niveau de connaissances actuel sur le fonctionnement des biofilms, nous avons
cart beaucoup de phnomnes. Parmi les phnomnes majeurs quil faudrait ajouter, il y a
la production de matrice extracellulaire, la dormance dune part de la biomasse et les
communications intercellulaires.
Le mcanisme de disparition de biomasse tel quil est dcrit actuellement ne se base pas sur la
simulation de phnomnes microscopiques pour reproduire un phnomne macroscopique
mais sur lapplication dune rgle macroscopique. Une modlisation du dtachement
cellulaire base sur ladhsion la matrice, la mort cellulaire et les forces de dtachement
serait plus reprsentative des phnomnes lorigine de la disparition de biomasse. Il parat
de toute manire ncessaire de modliser un composant qui reprsente jusqu 70% de la
masse dun biofilm. Une premire amlioration du modle consisterait donc lui ajouter une
nouvelle composante EPS , probablement distribue entre les proprits de lespace et
celles des agents.
Les phnomnes dinactivation sont trs importants dans la dynamique des biofilms. Cest en
effet lexistence de bactries dormantes, capables de reprendre leur activit ds que
ncessaire, qui permet aux biofilms dtre si rsistants aux perturbations extrieures.
La prise en compte de ces phnomnes permettrait daboutir un modle beaucoup plus
reprsentatif dun biofilm mais ncessite lidentification de nombreux paramtres. Leur
implmentation ncessite donc la conduite dexpriences spcifiques en parallle.
b) De nouvelles rgles pour la distribution de biomasse
Les rgles de distribution de biomasse utilises ont t invalides par lanalyse de sensibilit.
Il faut donc les repenser. Le modle tabli par Kreft reposait sur le dplacement des bactries
Validation
- 43 -
selon des rgles de minimisation du recouvrement des bactries entre elles, selon une
technique similaire aux Boids (simulation multi-agents des troupeaux) de Reynolds. Dans le
modle BIOFILM, en considration de la taille des agents et des forces dadhsion de la
matrice extracellulaire, la biomasse tait considre comme fixe. Manifestement cette
hypothse doit tre revue car elle introduit un fort ralentissement de la croissance en paisseur
pour les mailles fines : en effet, actuellement seule les agents situs linterface peuvent
participer la croissance en paisseur. Le transfert de biomasses aux colonies filles devait
rduire ce phnomne mais manifestement il na pas suffi.
Un modle valid bas sur un automate cellulaire [Picioreanu et al 97] dplace la biomasse
de cellule en cellule. Lorsque tous les voisins dune cellule sont saturs, une des cellules
voisines est pousse pour librer de lespace.
[X]>Xseuil
[X]=dX
[X]= [X]+dX
Nb voisins
libres>0
non
oui non
oui
Dplacement dune
cellule occupe
Pour la cellule en cours
Pour la cellule dplace
oui
[X]= dX=[X]/2
Fin de la
boucle
Figure 19 : Rgles de distribution de biomasse appliques par Picioreanu
Le modle de Wik [Wik 97], ralis sur un filtre anarobie, inclut lui aussi un dplacement
des biomasses.
Les nouvelles rgles de distribution des biomasses devront sans doute inclure ces
phnomnes.
c) Espces chimiques
Actuellement, peu despces chimiques sont suivies par le modle et seules les ractions
biochimiques sont simules alors que les quilibres acido-basiques et gazeux jouent un rle
non ngligeable dans lactivit du racteur. Dautre part la modlisation de la dynamique de
ces substances permettrait de produire plus dindicateurs comparables ceux utiliss pour le
suivi dun racteur (alcalinit, %CO2, pH,) et donc d'affiner l'interprtation en terme de
dynamique du biofilm des mesures actuellement obtenues.
d) Algorithmes gntiques
Deux phnomnes observs sur les biofilms poussent sintresser lapplication de la
thorie des algorithmes gntiques aux agents bactriens :
Validation
- 44 -
Dune part, les populations bactriennes peuplant le biofilm subissent une slection en
fonction des contraintes appliques. Lors de la mise en place du biofilm, lapplication de
contraintes fortes slectionne les populations les plus actives.
Dautre part, les voies mtaboliques actives voluent selon ltat du biofilm : pendant la
mise en place du biofilm, le substrat dgrad sert surtout la production de matrice
extracellulaire alors que lorsque le biofilm est stable, le substrat est dgrad
majoritairement en mthane.
Ces phnomnes pourraient tre modliss par lcriture des paramtres mtaboliques sur
deux gnes , qui seraient activs selon ltat du biofilm. Ces caractres mtaboliques
hritables permettraient de simuler la concurrence entre les agents et la slection des plus
performants.
2. LIMITES DE LA PLATE-FORME UTILISEE
La plate-forme CORMAS dans son architecture, ne prsente pas dincompatibilit avec le
type de modle propos. Larchitecture globale du modle BIOFILM pour CORMAS rejoint
dailleurs celle de BACSIM, le modle ralis par Kreft et Booth.
Cependant limplmentation du modle a soulev quelques problmes : le recours un
logiciel spcialis (MATLAB) pour effectuer une part des calculs sest avre acclrer
notablement les calculs mais au prix dune instabilit chronique du logiciel. Cette instabilit
serait peut tre leve par lutilisation dun autre type de passerelle entre CORMAS et Matlab
que les liens DDE.
Enfin, il est ncessaire de rappeler, mme si cela semble invitable pour ce genre de travaux,
que les temps de calcul d'une simulation sont longs ; il faut en effet compter 2h30 de calcul
pour une grille de 750 sur 250 microns, avec une maille de 50 m alors que pour des
simulations plus ralistes, il faudrait affiner la largeur des mailles 5 m en maintenant la
taille de l'espace modlis.
Conclusion
- 45 -
VI. Conclusion
Conclusion
- 46 -
Le but de ce travail tait la ralisation dun modle de biofilm appliqu au cas des racteurs
anarobies. Les biofilms interviennent dans la digestion anarobie mais aussi dans de trs
nombreux domaines industriels et mdicaux.
La digestion anarobie repose sur lactivit de deux groupes de micro-organismes, les
bactries actognes et les archobactries mthanognes. Ces deux groupes sont organiss
en chane trophique, les mthanognes utilisant les acides gras produits par les actognes.
Parmi les diffrentes architectures de racteur, beaucoup utilisent la proprit des micro-
organismes se fixer sur les parois sous forme de biofilms. Ces biofilms sont des structures
complexes, assemblages de bactries et de matrice extracellulaire, caractrises par une forte
htrognit et une stratification.
La connaissance et la matrise de lcosystme que forment les biofilms est une tape
importante pour la conduite optimale des racteurs mais aussi pour la lutte contre la formation
des biofilms indsirables.
La modlisation permet de fournir des prvisions sur lvolution du systme et ses ractions
aux changements du milieu. Le type de modlisation choisi est de plus en plus utilis pour les
modlisations cologiques. La modlisation multi-agent se base sur lhypothse que les
proprits dun systme sont dtermines par les comportements et les interactions qui le
composent. En sappuyant sur les mcanismes au niveau de lindividu, elle permet de rendre
compte de lhtrognit du systme et de traduire directement les connaissances sur les
comportements des individus. A lapproche classique de modlisation, elle apporte lavantage
de mettre en vidence le niveau de connaissances du systme et de faire apparatre les
phnomnes insuffisamment connus.
Conformment larchtype dun systme multi-agents, le modle BIOFILM dfinit un
environnement sur lequel voluent des agents. Les agents sont dfinis comme des entits
ractantes, assimilables une colonie homogne de bactries. Cette entit nest pas forcment
observe mais elle doit identifier le comportement dun ensemble de bactries tout en gardant
une dimension dagent. Le recours un agent virtuel permet de ne pas manipuler un nombre
trop important dagents. Chaque agent est fix, suit une balance massique et est capable de
crer de nouveaux agents dans son voisinage.
La dynamique de lenvironnement est celle du champ de concentrations des diffrentes
espces chimiques. La dynamique du champ de concentration est modlise par un
phnomne de diffusion-raction au sein du biofilm, et par une zone parfaitement mlange
dans la phase libre. La rsolution du systme diffrentiel de raction diffusion est effectue en
sur un plan, selon la mthode des directions alternes implicites, qui converge rapidement
vers la solution.
Ltude de sensibilit a montr que le choix de la largeur des mailles influenait fortement les
rsultats. Ce biais de simulation est imput aux rgles de distribution de biomasse et de
cration des nouveaux agents. De nouvelles rgles devront tre tablies, base sur lhypothse
que la biomasse nest pas fixe mais susceptible de se dplacer sous la pression des voisins.
La prise en compte de la matrice extracellulaire devrait galement permettre daffiner les
rgles dcrivant larrachement de biomasse ainsi que le champ de diffusivit. Une
amlioration du modle passera aussi par laugmentation du nombre despces chimiques
modlises et par la dotation de plusieurs voies mtaboliques possibles aux agents bactriens.
Conclusion
- 47 -
Ce travail prsente larchitecture dun modle multi-agents de biofilm. Si le modle nest pas
encore valid et demande notamment une refonte des rgles de distribution de biomasse,
lapproche est prometteuse car capable de reprsenter lhtrognit dun biofilm et de se
baser sur ses mcanismes fondamentaux.
Bibliographie
- 48 -
VII. Bibliographie
Bernard O., Hadj-Sadok Z., Dochain D., Genovesi A., Steyer J-P. (2001) Dynamical
model development and parameter identification for an anaerobic wastewater treatment
process. Biotechnology Engineering in press
Droste R. L., Kennedy K.J. (1986) Sequential Substrate utilization and effectiveness factor
in fixed biofilms, Biotechnology and Bioengineering vol XXVIII, pp 1713-1720
Kreft J-U, Booth G., Wimpenny J.W.T. (1998) BacSim, a simulator for indivudal-based
modelling of bacterial colony growth. Microbiology, 144, 3275-3287
Kreft J-U, Booth G., Wimpenny J.W.T. (1999) Application of individual-based modelling
in microbial ecology, in Proceedings of the 8
th
International Symposium on Microbial
Ecology
Kreft J-U, Booth G., Picioreanu C. (2001) Individual-based modelling of biofilms,
Microbiology, in press
Le Page C., Bousquet F., Bommel P., Baron C., Lardon S. (2001) CORMAS : un
environnement de dveloppent de systmes multi-agents ddi la gestion de ressources
naturelles, Techniques et Sciences informatiques, Volume X, nX/2001, 1-19
Picioreanu C., van Loosdrecht M.C.M., Heijnen J.J. (1998a) A new combined differential discrete
cellular automaton approach for biofilm modeling : application for growth in gel beads. Biotechnology
and Bioengineering 57(6), 719-731.
Picioreanu C., van Loosdrecht M.C.M., Heijnen J.J. (1998b) Mathematical Modeling of Biofilm
structure with a hybrid differential discrete cellulr automaton approach Biotechnology and
Bioengineering 58(1), 101-116.
Wik T. (1999) On modelling the dynamics of fixed biofilm reactors, Ph.D. thesis, Chalmers University
of technology, Goteborg
Wimpenny J., Manz W., Szewzyk U. (2000) Heterogeneity in biofilms FEMS Microbiology
Reviews 24, 661-671.
Zhang T., Bishop P. (1994a) Density, porosity and pore structure of biofilms. Water
Research 28, 2267-2277
Annexes
VIII. Annexes
1. Principe de lADI
2. Code source de lalgorithme de rsolution par la mthode ADI (Matalb 5)
3. Code source du modle BIOFILM (CORMAS)
Annexes
ADI
La mthode des Directions Implicites Alternes a t propose par Peaceman et Rachford en
1955 pour la rsolution des problmes de diffusion raction en plusieurs dimensions. Cette
mthode a lavantage de ne pas reposer sur une hypothse de stabilit.
La relation diffrentielle dcrivant la diffusion-raction scrit :
( )
( ) dt S X
X
S
D
t
S
x
y x

,
_

,
2
2
,

o dsigne la variation de concentration due lactivit biologique ( classiquement =kX).


Une approximation par les diffrences finies de cette relation scrit :
( ) ( )
( )

'

,
_

,
_

+
+
+
y x y x y x x
t
y x
t t
y x y x t
t
y x
t
y x
y
x
y x t
S S S S
S S S
t S X
Y
S
X
S
dl
D
S
, 1 , , 1
2
, , ,
, ,
2
2
2
2
2
,
2
,

Le thorme de lADI permet dexprimer cette quation aux diffrences finies sous forme
dun systme de deux diffrences finies appliques dans deux directions diffrentes.
( )

'

,
_

,
_

+ +

,
_

+ +
+
+
+ +
+
+ +
2
, , ,
2
2
,
2
2
, ,
, , ,
2
2
,
2
,
2
,
,
2
,
2
t
t
y x
t
y x
t t
y x y
t
t
y x x
t
t
y x
t t
y x
t
y x
t
y x
t
y x y
t
t
y x x
t
y x
t
t
y x
S X S S
t
D S S
S X S S
t
D S S

En factorisant la premire quation, on obtient la relation :


( ) ( ) ( ) ( ) ( ) ( ) ( )
t
y x
t
y x
t t t
t
t
t
t
t
t
S X S S S S S S
y x y x y x y x y x y x
, ,
2 2 2
, 2 1 2 1
1 , , 1 , , 1 , , 1


+ + + + + + +
+ +
+ + +
2
2d
t
D


Applique toutes les cellules dune ligne (cest dire toutes les valeurs de x et une valeur de
y) on obtient un systme dquations dont la solution est une ligne du plan au temps t+t/2.
En balayant le plan selon laxe y, on obtient autant de systmes dquations qui permettent de
dcrire le champs de concentrations au temps t+t/2.
De mme, la deuxime quation permet de gnrer une srie de systmes en balayant le plan
selon laxe x.
( ) ( ) ( ) ( ) ( ) ( )
,
_

+ + + + + + +
+ + + +
+ + +
+ +
2
, ,
2 2 2
, 2 1 2 1
, 1 , , 1 1 , , 1 ,
t
t
y x
t
y x
t
t
t
t
t
t
t t t t t t
S X S S S S S S
y x y x y x y x y x y x



Annexes
Cependant, sous cette forme les systmes dquations nont pas de solution unique : chaque
ligne comprenant 3 inconnues alignes , on ne possde pour n inconnues que n-2 relations,
les inconnues situes en bordure du plan ne possdant quune voisine sur un axe. Il faut donc
ajouter des conditions aux bordures afin de lever lindtermination. Nous avons appliqu pour
laxe x (normal au biofilm) les hypothses classiques sur les conditions aux bordures utilises
en modlisation des biofilms cites plus haut, et pour laxe y un bouclage de lenvironnement
selon cette direction. Cette dernire condition repose sur lhypothse quil ny a pas de
gradient selon laxe y ; cette hypothse est valide pour des simulations de petite surface.
Les systmes dquations sont triangulaires, on a donc intrt effectuer une rsolution
gaussienne par limination plutt quune rsolution par inversion de matrice. Ceci se traduit
par lutilisation de loprateur \ plutt que ^-1 dans Matlab et permet un important
gain de temps de calcul surtout pour les matrices de grande taille.
Annexes
%****** diffusionR ***************
% Laurent Lardon 24/08/2001
% INRA LBE Narbonne
%******************************
% Modlise la dynamique rapide d'un biofilm
% Phnomnes de reaction-diffusion en une passe avec pas de temps adaptable
%*********************************************************
function reponse=diffusionR(matrice,L,N,dt,S0,Ac0)
%close all;
%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
% Chargement des donnes et des paramtres $
%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
S1=flip(L,N,matrice(:,1));
S2=flip(L,N,matrice(:,2));
S3=zeros(L,N);
X1=flip(L,N,matrice(:,3));
X2=flip(L,N,matrice(:,4));
load('param.txt','-ascii');
% Parametres du reacteur
Sin=param(2);
Acin=param(4);
TS=param(5); % temps de sjour hydraulique en h
ASpe=param(6); % surface specifique du reacteur
% Diffusivits
D1=param(7); %0.6e-4; %m/j glucose
D2=param(8); %1.03e-4; %m/j actate
%constantes de modelisation
dl=param(9); %5e-6; %largeur maille en m
%paramtres mtaboliques
Ks1=param(10); k11=param(11);k12=param(12);
Ks2=param(13);k21=param(14);k22=param(15);
Ki2=param(16);
mu1=param(17);mu2=param(18);
%$$$$$$$$$$$$$$$$$$$$$$$$$$
% Prparation des donnes $
%$$$$$$$$$$$$$$$$$$$$$$$$$$
%passage en adimensionnel
S1=S1/Sin;
S2=S2/Sin;
%calcul du tau bas sur tau pour la diffusion d'une grille alatoire;
tau=dl^2*4e4; %pas de temps de la boucle de calcul
%initialisation des compteurs
temps=0;
index=1;
%boucles
while temps<dt
%******************* Application ADI ***************
grille1=S1;grilleX1=X1;
grille2=S2;grilleX2=X2;
x=size(grille1,2); y=size(grille1,1);
buffS1=zeros(y,x);buffS2=zeros(y,x);
%preparation du 1er systeme d'eqn
%S1
D=D1;
%1er membre
jean=member1(D1,tau,x,dl);
Annexes
% ecriture du deuxieme membre et rsolution des systemes pour tout y
% bouclage de l'environnement le long de l'axe y
phi=zeros(x,1);
phi(1,1)=S0/Sin;
phi(2:x-1,1)=(D*tau/(2*dl^2))*grille1(y,2:x-1)'+(1-D*tau/(dl^2))*grille1(1,2:x-1)'+ ...
(D*tau/(2*dl^2))*grille1(2,2:x-1)'+...
(k11*grilleX1(1,2:x-1)*tau/2/Sin)';
phi(x,1)=0;
buffS1(1,:)=(jean\phi)';
for j=2:y-1
phi=zeros(x,1);
phi(1,1)=S0/Sin;
phi(2:x-1,1)=(D*tau/(2*dl^2))*grille1(j-1,2:x-1)'+(1-D*tau/(dl^2))*grille1(j,2:x-1)'+ ...
(D*tau/(2*dl^2))*grille1(j+1,2:x-1)'+...
(k11*grilleX1(j,2:x-1)*tau/2/Sin)';
phi(x,1)=0;
buffS1(j,:)=(jean\phi)';
end
phi=zeros(x,1);
phi(1,1)=S0/Sin;
phi(2:x-1,1)=(D*tau/(2*dl^2))*grille1(1,2:x-1)'+(D*tau/(2*dl^2))*grille1(y-1,2:x-1)'+...
(1-D*tau/(dl^2))*grille1(y,2:x-1)'+...
(k11*grilleX1(y,2:x-1)*tau/2/Sin)';
phi(x,1)=0;
buffS1(y,:)=(jean\phi)';
%figure;surf(buffS1);
%cas S2
D=D2;
%preparation du 1er systeme d'eqn
%1er membre
jean=member1(D2,tau,x,dl);
% ecriture du deuxieme membre et rsolution des systemes pour tout y
% bouclage de l'environnement le long de l'axe y
phi=zeros(x,1);
phi(1,1)=Ac0/Sin;
phi(2:x-1,1)=(D*tau/(2*dl^2))*grille2(y,2:x-1)'+(1-D*tau/(dl^2))*grille2(1,2:x-1)'+ ...
(D*tau/(2*dl^2))*grille2(2,2:x-1)'+...
(k12*grilleX1(1,2:x-1)*tau/2/Sin)'+...
(k21*grilleX2(1,2:x-1)*tau/2/Sin)';
phi(x,1)=0;
buffS2(1,:)=(jean\phi)';
for j=2:y-1
phi=zeros(x,1);
phi(1,1)=Ac0/Sin;
phi(2:x-1,1)=(D*tau/(2*dl^2))*grille2(j-1,2:x-1)'+(1-D*tau/(dl^2))*grille2(j,2:x-1)'+ ...
(D*tau/(2*dl^2))*grille2(j+1,2:x-1)'+...
(k12*grilleX1(j,2:x-1)*tau/2/Sin)'+...
(k21*grilleX2(1,2:x-1)*tau/2/Sin)';
phi(x,1)=0;
buffS2(j,:)=(jean\phi)';
end
phi=zeros(x,1);
phi(1,1)=Ac0/Sin;
phi(2:x-1,1)=(D*tau/(2*dl^2))*grille2(1,2:x-1)'+(D*tau/(2*dl^2))*grille2(y-1,2:x-1)'+...
(1-D*tau/(dl^2))*grille2(y,2:x-1)'+...
(k12*grilleX1(y,2:x-1)*tau/2/Sin)'+...
(k21*grilleX2(y,2:x-1)*tau/2/Sin)';
phi(x,1)=0;
buffS2(y,:)=(jean\phi)';
%passage a la transpose
buffS1=buffS1';
grilleX1=grilleX1';
buffS2=buffS2';
grilleX2=grilleX2';
%preparation du 2e systeme d'eqn
%cas S1
Annexes
D=D1;
jean=member2(D1,tau,y,dl);
% ecriture et rsolution des systemes pour tout x
phi=zeros(y,1);
phi=(D*tau/(2*dl^2))*ones(y,1)*S0/Sin +(1-D*tau/(dl^2))*buffS1(1,:)'+(D*tau/(2*dl^2))*buffS1(2,:)'+...
(k11*grilleX1(1,:)*tau/2/Sin)';
grille1(:,1)=(jean\phi);
grille1(:,1)=S0/Sin;
for j=2:x-1
phi=zeros(y,1);
phi=(D*tau/(2*dl^2))*buffS1(j-1,:)'+(1-D*tau/(dl^2))*buffS1(j,:)'+(D*tau/(2*dl^2))*buffS1(j+1,:)'+...
(k11*grilleX1(1,:)*tau/2/Sin)';
grille1(:,j)=(jean\phi);
end
phi=zeros(y,1);
phi=(D*tau/(2*dl^2))*buffS1(x-1,:)'+(1-D*tau/(dl^2))*buffS1(x,:)'+(D*tau/(2*dl^2))*buffS1(x-1,:)'+...
(k11*grilleX1(1,:)*tau/2/Sin)';
grille1(:,x)=(jean\phi);
grille1(:,x)=grille1(:,x-1);
%figure;surf(grille1);
%cas S2
D=D2;
jean=member2(D2,tau,y,dl);
% ecriture et rsolution des systemes pour tout x
phi=zeros(y,1);
phi=(D*tau/(2*dl^2))*ones(y,1)*Ac0/Sin +(1-D*tau/(dl^2))*buffS2(1,:)'+...
(D*tau/(2*dl^2))*buffS2(2,:)'+...
(k12*grilleX1(1,:)*tau/2/Sin)'+...
(k21*grilleX2(1,:)*tau/2/Sin)';
grille2(:,1)=(jean\phi);
grille2(:,1)=Ac0/Sin;
for j=2:x-1
phi=zeros(y,1);
phi=(D*tau/(2*dl^2))*buffS2(j-1,:)'+(1-D*tau/(dl^2))*buffS2(j,:)'+...
(D*tau/(2*dl^2))*buffS2(j+1,:)'+...
(k12*grilleX1(1,:)*tau/2/Sin)'+...
(k21*grilleX2(j,:)*tau/2/Sin)';
grille2(:,j)=(jean\phi);
end
phi=zeros(y,1);
phi=(D*tau/(2*dl^2))*buffS2(x-1,:)'+(1-D*tau/(dl^2))*buffS2(x,:)'+...
(D*tau/(2*dl^2))*buffS2(x-1,:)'+...
(k11*grilleX1(x,:)*tau/2/Sin)'+...
(k21*grilleX2(x,:)*tau/2/Sin)';
grille2(:,x)=(jean\phi);
grille2(:,x)=grille2(:,x-1);
%redressement de la grille
grilleX1=grilleX1';
grilleX2=grilleX2';
%Indicateurs
indic(index,1)=sum(sum(abs(grille1-S1)));
indic(index,2)=sum(sum(abs(grille2-S2)));
S1=grille1;S2=grille2;
temps=temps+tau;
%Optimisation du pas de temps
if max(indic(index,1),indic(index,2))<0.2
tau=tau*5;
end
tau=min(tau, dt/10);
tau=min(tau, dt-temps);
index=index+1;
end
%repassage en dimensionnel
S1=S1*Sin;
Annexes
S2=S2*Sin;
S3=k22*grilleX2*dt;
%repassage en matrice colonnes
reponse=flop(L,N,S1);
reponse(:,2)=flop(L,N,S2);
reponse(:,3)=flop(L,N,S3);
%****************************** Subfunctions *************************************
function m=member1(D,tau,x,dl)
a1=-(D*tau/(2*dl^2));
a2=1+D*tau/(dl^2);
a3=a1;
d1=diag(ones(1,x-1),-1);
d2=diag(ones(1,x),0);
d3=diag(ones(1,x-1),1);
m=a1*d1+a2*d2+a3*d3;
m(1,1)=1;m(1,2)=0;m(1,3)=0;
m(x,x)=-1;m(x,x-1)=1;
function m=member2(D,tau,y,dl)
a1=-(D*tau/(2*dl^2));
a2=1+D*tau/(dl^2);
a3=a1;
d1=diag(ones(1,y-1),-1);
d2=diag(ones(1,y),0);
d3=diag(ones(1,y-1),1);
m=a1*d1+a2*d2+a3*d3;
m(1,y)=a3;
m(y,1)=a1;
function reponse=flip(L,N,mat)
%moulinette sur les matrices : passe en matrice spatiale
for i=1:L*N
j=fix((i-1)/N)+1; %nde ligne
k=i-((j-1)*N); %nde colonne
reponse(j,k)=mat(i,1);
%reponse(j,k+2*N)=mat(i,3);
%reponse(j,k+3*N)=mat(i,4);
end
function reponse=flop(L,N,mat)
%moulinette sur les matrices : passe en matrice tabulaire
for i=1:L*N
j=fix((i-1)/N)+1; %nde ligne
k=i-((j-1)*N); %nde colonne
reponse(i,1)=mat(j,k);
end
Annexes
SpatialEntity_Element subclass: #Biofilm_Cell
instanceVariableNames: 's1 s2 s3 xi1 xi2 film buffs1 buffs2 buffs3 bm bm1 bm2 effectif '
classVariableNames: ''
poolDictionaries: ''
category: 'Cormas-Biofilm'!
!Biofilm_Cell methodsFor: 'controle'!
step:repet
"Stocke dans les buffers les influences de chacun des processus qui feront la valeur du temps t+1"
self diffusion:repet.
self reaction:repet.
"self charge."! !
!Biofilm_Cell methodsFor: 'procedure'!
bilanBM
"normalise les concentrations"
| t |
t:=0.
self theOccupants do: [:membre| membre do: [:colonie| t:=t+(colonie m/(Dl*Dl*Df*0.001))]].
self theOccupants do: [:membre| membre do: [:colonie| (t>(BMax)) ifTrue:[colonie m: colonie m/t*BMax]]].
"calcul de la biomasse totale et du nombre de colonies de la cellule"
self bm1:0.
self bm2:0.
self effectif: 0.
self xi1: 0.
self xi2: 0.
(self theOccupants at: #Biofilm_Aceto) do: [:colonie|
self bm1: self bm1+colonie m.
self effectif: self effectif +1.
self xi1: self xi1+(colonie mu*colonie m)].
(self theOccupants at: #Biofilm_Methano) do: [:colonie|
self bm2: self bm2+colonie m.
self effectif:self effectif +1.
self xi2: self xi2+(colonie mu*colonie m)].
self bm1: (self bm1/(Dl*Dl*Df*0.001)).
self xi1: (self xi1/(Dl*Dl*Df*0.001)).
self bm2: (self bm2/(Dl*Dl*Df*0.001)).
self xi2: (self xi2/(Dl*Dl*Df*0.001)).
self bm: self bm1+self bm2.!
bilanFilm
"Met a jour la variable film: true pour le biofilm et la couche limite"
|cellFilm|
cellFilm:=0.
self neighbourhood do:[:cellule|(cellule bm1 + cellule bm2)>0 ifTrue:[cellFilm:=cellFilm+1]].
(cellFilm>0) ifTrue:[self film:true]
ifFalse:[self film:false].
(self bm>0) ifTrue: [self film:true].!
charge:repet
"alimentation-dilution des cellules appartenant la phase liquide du reacteur"
(self bm=0) ifTrue: [
self buffs1: self buffs1+((Sin-self s1)/TSH*Dt/repet).
self buffs2: self buffs2+((0-self s2)/TSH*Dt/repet).].!
diffusion:repet
"diffusion des molcules selon loi de Fick discretise"
| voisin total diff |
voisin := self neighbourhood.
"diffusion acetate"
"selection du taux de diffusion en fonction de l'appartenance au biofilm"
self film ifTrue: [diff := (D1Ac*(-0.5*(self bm min:BMax)/BMax+0.8))].
self film ifFalse: [diff := D2Ac].
"calcul de la qte de matiere mobilisee par le processus de diffusion sur la cellule"
total := 0 asDouble.
Annexes
voisin do: [:cellule | total := total + (cellule s2 - self s2)].
((total abs)<(1d-100)) ifTrue: [total:=0].
self buffs2: self buffs2 + (diff * Dt * total/ (repet*Dl * Dl) ).
"diffusion substrat"
"selection du taux de diffusion en fonction de l'appartenance au biofilm"
self film ifTrue: [diff := (D1DCO*(-0.5*(self bm1+self bm2 min:BMax)/BMax+0.8))].
self film ifFalse: [diff := D2DCO].
"calcul de la qte de matiere mobilisee par le processus de diffusion sur la cellule"
total:=0.
voisin do: [:cellule | total := total + (cellule s1 - self s1)].
self buffs1: self buffs1 + (diff * Dt * total / (repet*Dl * Dl)).!
influence
"met a jour les variables avec leur buffer"
self s1: (self s1 + self buffs1) asDouble.
self s2:(self s2 +self buffs2) asDouble.
" self s3: self buffs3."
"Remise a zero des buffers"
self buffs1: 0 asDouble.
self buffs2: 0 asDouble.
self buffs3: 0 asDouble.!
reaction: repet
"Reaction bacterienne fast dynamic"
"Calcul du mu de la cellule en fonction du mu de chaque colonie"
(self theOccupants at: #Biofilm_Aceto) do: [:colonie |
colonie calculMu.
colonie reaction:repet.].
(self theOccupants at: #Biofilm_Methano) do: [:colonie |
colonie calculMu.
colonie reaction:repet.].! !
!Biofilm_Cell methodsFor: 'init'!
init
self initliquide.!
initliquide
"initialise les cellules de l'environnement de la phase liquide"
super init.
self s1: S0 asDouble.
self s2: (Ac0) asDouble.
self s3: 0 asDouble.
self film: false.
self buffs1: 0 asDouble.
self buffs2: 0 asDouble.
self buffs3: 0 asDouble.
self bm1:0.
self bm2:0.
self bm:0.! !
!Biofilm_Cell methodsFor: 'accessing'!
bm
^bm!
bm1
^bm1!
bm1: anObject
bm1 := anObject!
bm2
^bm2!
bm2: anObject
bm2 := anObject!
Annexes
bm: anObject
bm := anObject!
buffs1
^buffs1!
buffs1: anObject
buffs1 := anObject!
buffs2
^buffs2!
buffs2: anObject
buffs2 := anObject!
buffs3
^buffs3!
buffs3: anObject
buffs3 := anObject!
effectif
^effectif!
effectif: anObject
effectif := anObject!
film
^film!
film: anObject
film := anObject!
s1
^s1!
s1: anObject
s1 := anObject!
s2
^s2!
s2: anObject
s2 := anObject!
s3
^s3!
s3: anObject
s3 := anObject!
xi1
^xi1!
xi1: anObject
xi1 := anObject!
xi2
^xi2!
xi2: anObject
xi2 := anObject! !
!Biofilm_Cell methodsFor: 'pov'!
pdvAc
self s2 isNil ifTrue: [^#tresfaible].
self s2 <0.1 ifTrue: [^#tresfaible].
self s2 <0.25 ifTrue: [^#faible].
self s2 <0.5 ifTrue: [^#moyen].
self s2 <0.75 ifTrue: [^#moyen1].
self s2 <1 ifTrue: [^#moyen2].
self s2 <1.25 ifTrue: [^#moyen3].
self s2 <1.5 ifTrue: [^#moyen4].
self s2 <2 ifTrue: [^#fort].
^#fort.!
Annexes
pdVBiofilm
self film ifTrue:[^#film].
self film ifFalse:[^#liquide].!
pdvSubstrat
self s1 isNil ifTrue: [^#tresfaible].
self s1 <5 ifTrue: [^#tresfaible].
self s1 <10 ifTrue: [^#faible].
self s1 <15 ifTrue: [^#moyen].
self s1 <16 ifTrue: [^#moyen1].
self s1 <17 ifTrue: [^#moyen2].
self s1 <18 ifTrue: [^#moyen3].
self s1 <19 ifTrue: [^#moyen4].
self s1 <20 ifTrue: [^#fort].
^#tresfort.!
povbm1
self bm1 <1 ifTrue: [^#faible].
self bm1 <5 ifTrue: [^#moyen].
self bm1 <10 ifTrue: [^#moyen1].
self bm1 <15 ifTrue: [^#moyen2].
self bm1 <20 ifTrue: [^#moyen3].
self bm1 <25 ifTrue: [^#moyen4].
self bm1 <30 ifTrue: [^#fort].
self bm1 <40 ifTrue: [^#tresfort].
^#tresfort.!
povbm2
self bm2 <1 ifTrue: [^#faible].
self bm2 <5 ifTrue: [^#moyen].
self bm2 <10 ifTrue: [^#moyen1].
self bm2 <15 ifTrue: [^#moyen2].
self bm2 <20 ifTrue: [^#moyen3].
self bm2 <25 ifTrue: [^#moyen4].
self bm2 <30 ifTrue: [^#fort].
self bm2<40 ifTrue: [^#tresfort].
^#tresfort.!
povSeuil
((self bm1+self bm2) <(BMax/2)) ifTrue:[^#vide].
((self bm1+self bm2) <(0.9*BMax)) ifTrue:[^#plein].
^#saturation.!
povSubstrat
self s1 isNil ifTrue: [^#tresfaible].
self s1 <5 ifTrue: [^#tresfaible].
self s1 <10 ifTrue: [^#faible].
self s1 <15 ifTrue: [^#moyen].
self s1 <20 ifTrue: [^#fort].
^#fort.! !
Annexes
Cormas_Model subclass: #Biofilm
instanceVariableNames: 'theBiofilm_Cells theBiofilm_Colonies effectif substrat acetate X1 X2 theBiofilm_Acetos
theBiofilm_Methanos mlap '
classVariableNames: ''
poolDictionaries: ''
category: 'Cormas-Biofilm'!
!Biofilm methodsFor: 'instance-creation'!
initAgents
"Cration et Installation des agents sur la grille"
| colonie bord rang |
super initAgents.
"Selection de la zone a ensemencer"
bord:=OrderedCollection new.
rang:=0.
2 timesRepeat: [
theBiofilm_Cells do: [:cellule| (((cellule id+rang) rem: self space colonne) =0) ifTrue:[bord add:cellule]].
rang:=(rang+1)].
"Distribution des agents"
bord do:[:cellule| colonie := Biofilm_Aceto new.
colonie init.
colonie moveTo: cellule.
colonie patch film:true.
"liste les cellules entre la colonie et la phase liquide"
self rayon: colonie.
theBiofilm_Acetos add: colonie.
theBiofilm_Colonies add:colonie.].
bord do:[:cellule| colonie := Biofilm_Methano new.
colonie init.
colonie moveTo: cellule.
colonie patch film:true.
"liste les cellules entre la colonie et la phase liquide"
self rayon: colonie.
theBiofilm_Methanos add: colonie.
theBiofilm_Colonies add:colonie.].!
initAgents2
"Cration et Installation des agents sur la grille"
| colonie bord rang |
super initAgents.
"Selection de la zone a ensemencer"
bord:=OrderedCollection new.
rang:=0.
1 timesRepeat: [
theBiofilm_Cells do: [:cellule| (((cellule id+rang) rem: self space colonne) =0) ifTrue:[bord add:cellule]].
rang:=(rang+1)].
"Distribution des agents"
bord do:[:cellule| colonie := Biofilm_Aceto new.
colonie init.
colonie moveTo: cellule.
colonie patch film:true.
"liste les cellules entre la colonie et la phase liquide"
self rayon: colonie.
theBiofilm_Acetos add: colonie.
theBiofilm_Colonies add:colonie.].
bord do:[:cellule| colonie := Biofilm_Methano new.
colonie init.
colonie moveTo: cellule.
colonie patch film:true.
"liste les cellules entre la colonie et la phase liquide"
self rayon: colonie.
theBiofilm_Methanos add: colonie.
theBiofilm_Colonies add:colonie.].! !
!Biofilm methodsFor: 'init'!
init
Annexes
"Paramtres racteur"
Ac0:=(0.7).
S0:=(2.2).
Met0:=0. "debit massique de methane en gl-1j-1"
Epaisseur:=0. "epaisseur moyenne du biofilm en m"
X1r:=0. "concentration moyenne ds le reacteur en acetos en g/L"
X2r:=0.
AcIn:=(1).
Sin:=(10). "g/L"
TSH:=(1). "jour"
SurfSpe:=(180). "surface specifique m/m3"
"Paramtres simulation"
Dt:=(1e-3). "j"
Dl:=50e-6. "m soit 50m"
Df:=50e-6.
X10:=(5*(Dl*Dl*Df)*0.001). "g/L"
X20:=(5*(Dl*Dl*Df)*0.001)."2.5"
"Paramtre biofilm"
Thickness:=400e-6. "epaisseur en nb cellules=m/Dl"
Gamma:=(0.3)."0.39."
D1DCO:=(0.6e-4). "m/j"
D2DCO:=(0.6e-4).
D1Ac:=(1.03e-4).
D2Ac:=(1.03e-4).
KFeed:=5.
BMax:=30. "g/L"
Bseuil:=(1*BMax/30*(Dl*Dl*Df)*0.001). "g"
EffSup:=5.
"Paramtres biologiques"
Ks1:=(7.1). "g/L"
Ks2:=(0.55).
Ki2:=(0.96). "(g/L)"
Mu1Max:=(1.2). "jour^-1"
Mu2Max:=(0.74).
k11:=-42.
k12:=(6.99).
k21:=(-16.09).
k22:=(5.04).
Lig:=self space ligne.
Col:=self space colonne.
self initCells.
self initAgents.
self writeParam.
theBiofilm_Colonies do: [:colonie|colonie calculMu].
self bilanModele.
mlap:=VensimDde new.!
init1bis
"Paramtres racteur"
Ac0:=(0.7).
S0:=(2.2).
Met0:=0. "debit massique de methane en gl-1j-1"
Epaisseur:=0. "epaisseur moyenne du biofilm en m"
X1r:=0. "concentration moyenne ds le reacteur en acetos en g/L"
X2r:=0.
AcIn:=(2).
Sin:=(10). "g/L"
TSH:=(1). "jour"
SurfSpe:=(180). "surface specifique m/m3"
"Paramtres simulation"
Dt:=(1e-3). "j"
Dl:=10e-6. "m soit 50m"
Df:=50e-6.
X10:=(5*(Dl*Dl*Df)*0.001). "g/L"
Annexes
X20:=(5*(Dl*Dl*Df)*0.001)."2.5"
"Paramtre biofilm"
Thickness:=800e-6. "epaisseur en nb cellules=m/Dl"
Gamma:=(0.3)."0.39."
D1DCO:=(0.6e-4). "m/j"
D2DCO:=(0.6e-4).
D1Ac:=(1.03e-4).
D2Ac:=(1.03e-4).
KFeed:=5.
BMax:=30. "g/L"
Bseuil:=(1*BMax/30*(Dl*Dl*Df)*0.001). "g"
EffSup:=10.
"Paramtres biologiques"
Ks1:=(7.1). "g/L"
Ks2:=(0.55).
Ki2:=(0.96). "(g/L)"
Mu1Max:=(1.2). "jour^-1"
Mu2Max:=(0.74).
k11:=-42.
k12:=(6.99).
k21:=(-16.09).
k22:=(5.04).
Lig:=self space ligne.
Col:=self space colonne.
self initCells.
self initAgents.
self writeParam.
theBiofilm_Colonies do: [:colonie|colonie calculMu].
self bilanModele.! !
!Biofilm methodsFor: 'procedure'!
bilanModele
"Calcule les variables d'etat du reacteur"
| methane bf |
bf:=0.
X1r:=0.
X2r:=0.
methane:=0.
theBiofilm_Cells do: [:cellule| cellule bilanBM.].
theBiofilm_Cells do: [:cellule| cellule bilanFilm.
(cellule bm>0) ifTrue:
[bf:=bf+1].
X1r:=X1r+cellule bm1.
X2r:=X2r+cellule bm2.
methane:=methane+cellule
s3].
"epaisseur du biofilm"
Epaisseur:=Dl*bf/Lig.
"debit mthane L/Lreac/h"
Met0:=methane*SurfSpe*Dl/(Lig*Dt*24)/16*25.
"concentrations en biomasse moyenne vues du reacteur"
X1r:=X1r*SurfSpe*Dl/Lig.
X2r:=X2r*SurfSpe*Dl/Lig.!
connectReactor:repet a:t
"Effet de l'alimentation du reacteur et de l'activit du bioiflm sur la concentration dans la phase liquide"
|boundLayer sub ac s a |
"Determine le flux entre biofilm et phase liquide hyp que flux = f(dS de la couche limite)"
"Selectionne les cellules de la couche limite"
boundLayer:= OrderedCollection new.
boundLayer:=theBiofilm_Cells select:[:cellule| (cellule film) and:[(cellule bm1 + cellule bm2)=0]].
"Fait la moyenne des dS le long de l'interface"
Annexes
sub:=0. ac:=0.
boundLayer do:[:cellule| sub:=sub+(cellule s1). ac:=ac+(cellule s2).].
sub:=sub/(boundLayer size).
ac:=ac/(boundLayer size).
sub:=(S0-sub)/Dl*D2DCO.
ac:=(Ac0-ac)/Dl*D2Ac.
"Determine les nvlles concentrations de la phase liquide"
s:= (((Sin-S0)/TSH) - (SurfSpe*sub))*Dt/repet.
a:=(((AcIn-Ac0)/TSH)-(SurfSpe*ac))*Dt/repet.
S0:=S0"+s". Ac0:=Ac0"+a".
theBiofilm_Cells do: [:cellule| (cellule film) ifFalse:[cellule s1:S0. cellule s2:Ac0]].!
controleur1:but
"simule l'effet d'un controleur sur le modle"
"controleur d'apaptation des biomasses INRIA"
| Qin inf sup Vm met |
Vm:=948. "volume reacteur reel en L"
met:=Met0*Vm/24. "dbit CH4 L/h"
inf:=25.
sup:=50.
Qin:=3.8*met/(Sin+(1.48*AcIn)-but).
(Qin<inf) ifTrue:[Qin:=inf].
(Qin>sup) ifTrue:[Qin:=sup].
TSH:=(Vm/Qin/24) asFloat. "temps de sjour en jour"!
controleur2
"controle le debit d'alim pour maintenir la concentration de substrat"
(S0>(Sin-1)) ifTrue: [TSH:=TSH*1.1].
(S0<1.5) ifTrue: [TSH:=TSH/1.1].
TSH:=TSH max: 0.8.
TSH:=TSH min: 7.!
nettoyage:num
"arrondit toutes les variables la puissance de num"
theBiofilm_Cells do: [:cellule|
self tronque:cellule s1 at:num.
self tronque:cellule s2 at:num.
(cellule s1<0) ifTrue: [cellule s1:0].
(cellule s2<0) ifTrue: [cellule s2:0]].
theBiofilm_Colonies do:[:colonie|
self tronque:colonie m at:num.
(colonie m<0) ifTrue:[colonie m:0].].!
rayon:colonie
"determine les cellules comprises entre la colonie et la phase liquide"
| limite |
theBiofilm_Cells do: [:cellule| limite:=colonie patch id- ((colonie patch id -1) rem: self space colonne).
((cellule id>=limite ) and: [cellule
id<colonie patch id]) ifTrue: [colonie rayon add: cellule]].!
sauveDemographie: nomFichier num: ordre
| newFile stream |
newFile := (nomFichier,'A', ordre printString, '.txt') asFilename.
stream := newFile writeStream.
self theBiofilm_Acetos do:
[:a | stream nextPutAll: a m printString.
stream nextPutAll: ' '.
stream nextPutAll: a age printString.
stream nextPutAll: ' '.
stream nextPutAll: a patch id printString, '\' withCRs].
stream close.
newFile := (nomFichier,'B', ordre printString, '.txt') asFilename.
Annexes
stream := newFile writeStream.
self theBiofilm_Methanos do:
[:a | stream nextPutAll: a m printString.
stream nextPutAll: ' '.
stream nextPutAll: a age printString.
stream nextPutAll: ' '.
stream nextPutAll: a patch id printString, '\' withCRs].
stream close.!
sauveEnvironnement: nomFichier
| newFile stream |
newFile := nomFichier asFilename.
stream := newFile writeStream.
self theBiofilm_Cells do: [:a |
" a s1: a s1 asFloat."
" a s2: a s2 asFloat."
stream nextPutAll: a s1 printString.
stream nextPutAll: ' '.
stream nextPutAll: a s2 printString.
stream nextPutAll: ' '.
stream nextPutAll: a s3 printString.
stream nextPutAll: ' '.
stream nextPutAll: (a bm1) printString.
stream nextPutAll: ' '.
stream nextPutAll: (a bm2) printString.
stream nextPutAll: ' '.
stream nextPutAll: (a effectif) printString , '\' withCRs].
stream close.
"theBiofilmColonies do: [:colonie|"
" colonie x1: colonie x1 asFloat."
" colonie x2: colonie x2 asFloat.]."!
sauveEtat: nomFichier
"sauve les variables d'etat du reacteur"
| newFile stream |
newFile := nomFichier asFilename.
stream := newFile writeStream.
stream nextPutAll: S0 printString, '\' withCRs.
stream nextPutAll: Ac0 printString, '\' withCRs.
stream nextPutAll: Met0 printString, '\' withCRs.
stream nextPutAll: TSH printString, '\' withCRs .
stream nextPutAll: Epaisseur printString, '\' withCRs .
stream nextPutAll: X1r printString, '\' withCRs.
stream nextPutAll: X2r printString, '\' withCRs.
stream close.!
stepMatlab2:theCellules lig:l col:n
"Appelle matlab pour le calcul charge-diffusion-reaction"
"Stocke dans les buffers les influences de chacun des processus qui feront la valeur du temps t+1"
| "mlap" result grille mot matrice requete |
"Preparation des donnees"
matrice:='['.
theCellules do:[:cellule|
matrice:=matrice,(((cellule s1) reduceGeneralityIfPossible)
literalArrayEncoding) printString,' '.
matrice:=matrice,(((cellule s2)reduceGeneralityIfPossible)
literalArrayEncoding ) printString,' ;'].
matrice:=matrice, ']'.
mlap execute: 'a=',matrice.
matrice:='['.
theCellules do:[:cellule|
matrice:=matrice,(((cellule xi1)reduceGeneralityIfPossible)
literalArrayEncoding ) printString,' '.
matrice:=matrice,(((cellule xi2)reduceGeneralityIfPossible)
literalArrayEncoding ) printString,';' ].
matrice:=matrice, ']'.
mlap execute: 'b=',matrice.
requete:='reponse=diffusionR([a,b],',Lig printString,',',Col printString,',',Dt printString,',',(((S0*100) truncated)/100)
printString,',',(((Ac0*100) truncated)/100) printString,')'.
Annexes
mlap execute: requete.
result:=mlap request: 'reponse'.
" mlap terminate."
" self halt."
"result est la matrice reponse sous forme de ByteSTring"
grille:=OrderedCollection new.
mot:=''.
"place les valeurs numriques dans la collection grille"
result do:[:car| car isSeparator
ifFalse:[mot:=mot copyWith:(car)]
ifTrue: [ (mot size=0) ifFalse:[grille add:(mot asNumber)].
mot:=''].].
theCellules do:[:cellule| cellule s1: (grille at:((cellule id)*3-2)) asDouble.
cellule s2: (grille at:((cellule id)*3-1)) asDouble.
cellule s3: (grille at:((cellule id)*3)) asDouble.].!
stepMatlab2:theCellules lig:l col:n fois:f
"Appelle matlab pour le calcul charge-diffusion-reaction"
"Stocke dans les buffers les influences de chacun des processus qui feront la valeur du temps t+1"
| "mlap" result grille mot matrice requete |
"Preparation des donnees"
matrice:='['.
theCellules do:[:cellule|
matrice:=matrice,(((cellule s1) reduceGeneralityIfPossible)
literalArrayEncoding) printString,' '.
matrice:=matrice,(((cellule s2)reduceGeneralityIfPossible)
literalArrayEncoding ) printString,' '.
matrice:=matrice,(((cellule xi1)reduceGeneralityIfPossible)
literalArrayEncoding ) printString,' '.
matrice:=matrice,(((cellule xi2)reduceGeneralityIfPossible)
literalArrayEncoding ) printString,';' ].
matrice:=matrice, ']'.
" mlap:=VensimDde new."
mlap execute: 'a=',matrice.
requete:='reponse=diffusionR2(a,',Lig printString,',',Col printString,',',Dt printString,',',(((S0*100) truncated)/100)
printString,',',(((Ac0*100) truncated)/100) printString,',', f printString,')'.
mlap execute: requete.
result:=mlap request: 'reponse'.
mlap terminate.
" self halt."
"result est la matrice reponse sous forme de ByteSTring"
grille:=OrderedCollection new.
mot:=''.
"place les valeurs numriques dans la collection grille"
result do:[:car| car isSeparator
ifFalse:[mot:=mot copyWith:(car)]
ifTrue: [ (mot size=0) ifFalse:[grille add:(mot asNumber)].
mot:=''].].
theCellules do:[:cellule| cellule s1: (grille at:((cellule id)*3-2)) asDouble.
cellule s2: (grille at:((cellule id)*3-1)) asDouble.
cellule s3: (grille at:((cellule id)*3)) asDouble.].!
stepMatlab:theCellules lig:l col:n
"Appelle matlab pour le calcul charge-diffusion-reaction"
"Stocke dans les buffers les influences de chacun des processus qui feront la valeur du temps t+1"
| "mlap" result grille mot matrice requete |
"Preparation des donnees"
matrice:='['.
theCellules do:[:cellule|
matrice:=matrice,(((cellule s1) reduceGeneralityIfPossible)
literalArrayEncoding) printString,' '.
matrice:=matrice,(((cellule s2)reduceGeneralityIfPossible)
literalArrayEncoding ) printString,' '.
Annexes
matrice:=matrice,(((cellule xi1)reduceGeneralityIfPossible)
literalArrayEncoding ) printString,' '.
matrice:=matrice,(((cellule xi2)reduceGeneralityIfPossible)
literalArrayEncoding ) printString,';' ].
matrice:=matrice, ']'.
" mlap:=VensimDde new."
mlap execute: 'a=',matrice.
requete:='reponse=diffusionR(a,',Lig printString,',',Col printString,',',Dt printString,',',(((S0*100) truncated)/100)
printString,',',(((Ac0*100) truncated)/100) printString,')'.
mlap execute: requete.
result:=mlap request: 'reponse'.
" mlap terminate."
" self halt."
"result est la matrice reponse sous forme de ByteSTring"
grille:=OrderedCollection new.
mot:=''.
"place les valeurs numriques dans la collection grille"
result do:[:car| car isSeparator
ifFalse:[mot:=mot copyWith:(car)]
ifTrue: [ (mot size=0) ifFalse:[grille add:(mot asNumber)].
mot:=''].].
theCellules do:[:cellule| cellule s1: (grille at:((cellule id)*3-2)) asDouble.
cellule s2: (grille at:((cellule id)*3-1)) asDouble.
cellule s3: (grille at:((cellule id)*3)) asDouble.].!
tronque:num at:puissance
"arrondit un nombre"
^((num*puissance) truncated)/puissance.!
writeParam
"Ecriture d'un fichier de paramtres"
| newFile stream |
newFile := 'c:\vwnc30\cormas\data\param.txt' asFilename.
stream := newFile writeStream.
stream nextPutAll: S0 printString,'\' withCRs.
stream nextPutAll: Sin printString, '\' withCRs.
stream nextPutAll: Ac0 printString, '\' withCRs.
stream nextPutAll: AcIn printString , '\' withCRs.
stream nextPutAll: TSH printString , '\' withCRs.
stream nextPutAll: SurfSpe printString , '\' withCRs.
stream nextPutAll: D1DCO printString , '\' withCRs.
stream nextPutAll: D1Ac printString , '\' withCRs.
stream nextPutAll: Dl printString , '\' withCRs.
stream nextPutAll: Ks1 printString , '\' withCRs.
stream nextPutAll: k11 printString , '\' withCRs.
stream nextPutAll: k12 printString , '\' withCRs.
stream nextPutAll: Ks2 printString , '\' withCRs.
stream nextPutAll: k21 printString , '\' withCRs.
stream nextPutAll: k22 printString , '\' withCRs.
stream nextPutAll: Ki2 printString , '\' withCRs.
stream nextPutAll: Mu1Max printString , '\' withCRs.
stream nextPutAll: Mu2Max printString , '\' withCRs.
stream nextPutAll: Lig printString,'\' withCRs.
stream nextPutAll: Col printString, '\' withCRs.
stream nextPutAll: X10 printString,'\' withCRs.
stream nextPutAll: X20 printString, '\' withCRs.
stream nextPutAll: BMax printString,'\' withCRs.
stream nextPutAll: Bseuil printString, '\' withCRs.
stream nextPutAll: KFeed printString, '\' withCRs.
stream nextPutAll: EffSup printString, '\' withCRs.
stream nextPutAll: Thickness printString, '\' withCRs.
stream nextPutAll: Dt printString, '\' withCRs.
stream close!
writeParam:N
"Ecriture d'un fichier de paramtres"
| newFile stream |
newFile := ('c:\vwnc30\cormas\param', (N printString),'.txt') asFilename.
stream := newFile writeStream.
Annexes
stream nextPutAll: S0 printString,'\' withCRs.
stream nextPutAll: Sin printString, '\' withCRs.
stream nextPutAll: Ac0 printString, '\' withCRs.
stream nextPutAll: AcIn printString , '\' withCRs.
stream nextPutAll: TSH printString , '\' withCRs.
stream nextPutAll: SurfSpe printString , '\' withCRs.
stream nextPutAll: D1DCO printString , '\' withCRs.
stream nextPutAll: D1Ac printString , '\' withCRs.
stream nextPutAll: Dl printString , '\' withCRs.
stream nextPutAll: Ks1 printString , '\' withCRs.
stream nextPutAll: k11 printString , '\' withCRs.
stream nextPutAll: k12 printString , '\' withCRs.
stream nextPutAll: Ks2 printString , '\' withCRs.
stream nextPutAll: k21 printString , '\' withCRs.
stream nextPutAll: k22 printString , '\' withCRs.
stream nextPutAll: Ki2 printString , '\' withCRs.
stream nextPutAll: Mu1Max printString , '\' withCRs.
stream nextPutAll: Mu2Max printString , '\' withCRs.
stream nextPutAll: Lig printString,'\' withCRs.
stream nextPutAll: Col printString, '\' withCRs.
stream nextPutAll: X10 printString,'\' withCRs.
stream nextPutAll: X20 printString, '\' withCRs.
stream nextPutAll: BMax printString,'\' withCRs.
stream nextPutAll: Bseuil printString, '\' withCRs.
stream nextPutAll: KFeed printString, '\' withCRs.
stream close! !
!Biofilm methodsFor: 'control'!
step1: t
"Pas de temps du modele triphas : liq+BL+BF"
| theAgents repet|
"Boucle de diffusion-reaction"
repet:=250.
repet timesRepeat: [
"diffusion pour les cellules du biofilm et de la couche limite"
(theBiofilm_Cells select:[:cellule|(cellule film)]) do:[:cellule|cellule step:repet.].
"echange avec le reacteur"
self connectReactor:repet a:t.
"MaJ changements "
theBiofilm_Cells do: [:cellule| cellule influence]].
"Dynamique bacterienne"
theAgents:=OrderedCollection new.
theBiofilm_Colonies do: [:colonie| colonie step: theAgents.].
(theAgents size >0) ifTrue: [theAgents do: [:colonie | theBiofilm_Colonies add:colonie.
self rayon:colonie]].
theBiofilm_Colonies do: [:colonie| colonie influence].
theBiofilm_Colonies do: [:colonie| (colonie dead) ifTrue: [colonie leave.]].
theBiofilm_Acetos removeAllSuchThat: [:colonie|(colonie dead) ].
theBiofilm_Methanos removeAllSuchThat: [:colonie|(colonie dead) ].
theBiofilm_Colonies removeAllSuchThat: [:colonie|(colonie dead) ].
"Mise a jour"
theBiofilm_Cells do: [:cellule| cellule bilanBM.].
theBiofilm_Cells do: [:cellule| cellule bilanFilm.].
"Sauvegarde reguliere de la grille spatiale"
(t rem: 50)=0 ifTrue: [self sauveEnvironnement: 'env', t printString, '.txt'.
self sauveDemographie: 'population',t printString, '.txt'.
self nettoyage:100000].
" self updateCharts: t."!
step1bis: t
"Pas de temps du modele triphas : liq+BL+BF"
| theAgents repet|
"Boucle de diffusion-reaction"
repet:=250*10.
Annexes
repet timesRepeat: [
"diffusion pour les cellules du biofilm et de la couche limite"
(theBiofilm_Cells select:[:cellule|(cellule film)]) do:[:cellule|cellule step:repet.].
"echange avec le reacteur"
self connectReactor:repet a:t.
"MaJ changements "
theBiofilm_Cells do: [:cellule| cellule influence]].
"Dynamique bacterienne"
theAgents:=OrderedCollection new.
theBiofilm_Colonies do: [:colonie| colonie step: theAgents.].
(theAgents size >0) ifTrue: [theAgents do: [:colonie | theBiofilm_Colonies add:colonie.
self rayon:colonie]].
theBiofilm_Colonies do: [:colonie| colonie influence].
theBiofilm_Colonies do: [:colonie| (colonie dead) ifTrue: [colonie leave.]].
theBiofilm_Acetos removeAllSuchThat: [:colonie|(colonie dead) ].
theBiofilm_Methanos removeAllSuchThat: [:colonie|(colonie dead) ].
theBiofilm_Colonies removeAllSuchThat: [:colonie|(colonie dead) ].
"Mise a jour"
self bilanModele.
self controleur2.
"Sauvegarde reguliere de la grille spatiale"
(t rem: 50)=0 ifTrue: [self sauveEnvironnement: 'C:\vwnc30\cormas\data\env', t printString, '.txt'.
self sauveDemographie: 'C:\vwnc30\cormas\data\population' num:
t.
self sauveEtat: 'C:\vwnc30\cormas\data\etat',t printString, '.txt'.
self nettoyage:100000].!
step2: t
"Pas de temps du modele triphas : liq+BL+BF"
| theAgents repet|
"Boucle de diffusion-reaction"
repet:=1.
repet timesRepeat: [
"diffusion pour les cellules du biofilm et de la couche limite"
self stepMatlab2: theBiofilm_Cells lig: Lig col:Col.
"echange avec le reacteur"
self connectReactor:repet a:t.].
"Dynamique bacterienne"
theAgents:=OrderedCollection new.
theBiofilm_Colonies do: [:colonie| colonie step: theAgents.].
(theAgents size >0) ifTrue: [theAgents do: [:colonie | theBiofilm_Colonies add:colonie.
self rayon:colonie.
].self halt.].
theBiofilm_Colonies do: [:colonie| colonie influence].
theBiofilm_Colonies do: [:colonie| (colonie dead) ifTrue: [colonie leave.]].
theBiofilm_Acetos removeAllSuchThat: [:colonie|(colonie dead) ].
theBiofilm_Methanos removeAllSuchThat: [:colonie|(colonie dead) ].
theBiofilm_Colonies removeAllSuchThat: [:colonie|(colonie dead) ].
"Mise a jour"
self bilanModele.
" self controleur2."
"Sauvegarde reguliere de la grille spatiale"
(t rem: 50)=0 ifTrue: [self sauveEnvironnement: 'C:\vwnc30\cormas\data\env', t printString, '.txt'.
self sauveDemographie: 'C:\vwnc30\cormas\data\population' num:
t.
Annexes
self sauveEtat: 'C:\vwnc30\cormas\data\etat',t printString, '.txt'.
self nettoyage:100000].!
step2: t fois:N
"Pas de temps du modele triphas : liq+BL+BF"
| theAgents repet|
(t=0) ifTrue: [
(N=1) ifTrue: [Sin:=10. AcIn:=2. BMax:=30. Bseuil:=1. X10:=5. X20:=5].
(N=2) ifTrue: [Sin:=10. AcIn:=2. BMax:=30. Bseuil:=5. X10:=5. X20:=5].
(N=3) ifTrue: [Sin:=10. AcIn:=2. BMax:=30. Bseuil:=10. X10:=5. X20:=5].
(N=4) ifTrue: [Sin:=10. AcIn:=2. BMax:=30. Bseuil:=1. X10:=1. X20:=1].
(N=5) ifTrue: [Sin:=10. AcIn:=2. BMax:=30. Bseuil:=1. X10:=10. X20:=10].
(N=6) ifTrue: [Sin:=10. AcIn:=2. BMax:=30. Bseuil:=1. X10:=30. X20:=30].
(N=7) ifTrue: [Sin:=2. AcIn:=0. BMax:=30. Bseuil:=1. X10:=5. X20:=5].
(N=8) ifTrue: [Sin:=2. AcIn:=0.5. BMax:=30. Bseuil:=1. X10:=5. X20:=5].
(N=9) ifTrue: [Sin:=5. AcIn:=0. BMax:=30. Bseuil:=1. X10:=5. X20:=5].
(N=10) ifTrue: [Sin:=16. AcIn:=3. BMax:=30. Bseuil:=1. X10:=5. X20:=5.].
self writeParam:N].
"Boucle de diffusion-reaction"
repet:=1.
repet timesRepeat: [
"diffusion pour les cellules du biofilm et de la couche limite"
self stepMatlab2: theBiofilm_Cells lig: Lig col:Col fois:N.
"echange avec le reacteur"
self connectReactor:repet a:t.].
"Dynamique bacterienne"
theAgents:=OrderedCollection new.
theBiofilm_Colonies do: [:colonie| colonie step: theAgents.].
(theAgents size >0) ifTrue: [theAgents do: [:colonie | theBiofilm_Colonies add:colonie.
self rayon:colonie]].
theBiofilm_Colonies do: [:colonie| colonie influence].
theBiofilm_Colonies do: [:colonie| (colonie dead) ifTrue: [colonie leave.]].
theBiofilm_Acetos removeAllSuchThat: [:colonie|(colonie dead) ].
theBiofilm_Methanos removeAllSuchThat: [:colonie|(colonie dead) ].
theBiofilm_Colonies removeAllSuchThat: [:colonie|(colonie dead) ].
"Mise a jour"
self bilanModele.
self controleur2.
"Sauvegarde reguliere de la grille spatiale"
(t rem: 50)=0 ifTrue: [self sauveEnvironnement: 'C:\vwnc30\cormas\data', (N printString),'\env', t printString, '.txt'.
self sauveDemographie: 'C:\vwnc30\cormas\data', (N
printString),'\population' num: t.
self sauveEtat: 'C:\vwnc30\cormas\data', (N printString),'\etat',t
printString, '.txt'.
self nettoyage:100000].! !
!Biofilm methodsFor: 'accessing'!
theBiofilm_Acetos
^theBiofilm_Acetos!
theBiofilm_Acetos: x
theBiofilm_Acetos := x!
theBiofilm_Cells
^theBiofilm_Cells!
theBiofilm_Cells: x
theBiofilm_Cells := x!
theBiofilm_Colonies
^theBiofilm_Colonies!
theBiofilm_Colonies: anObject
Annexes
theBiofilm_Colonies := anObject!
theBiofilm_Methanos
^theBiofilm_Methanos!
theBiofilm_Methanos: x
theBiofilm_Methanos := x! !
!Biofilm methodsFor: 'graphiques'!
acetate
^acetate isNil
ifTrue: [acetate := List new]
ifFalse: [acetate]!
acetate: x
acetate := x!
acetateData
"return the data (a number) to be plotted with the acetate chart"
|total|
total:=0.
theBiofilm_Cells do:[:cellule|total:=cellule s2 + total].
^total!
effectif
^effectif isNil
ifTrue: [effectif := List new]
ifFalse: [effectif]!
effectif: x
effectif := x!
effectifData
"return the data (a number) to be plotted with the effectif chart"
^theBiofilmColonies size!
substrat
^substrat isNil
ifTrue: [substrat := List new]
ifFalse: [substrat]!
substrat: x
substrat := x!
substratData
"return the data (a number) to be plotted with the substrat chart"
|total|
total:=0.
theBiofilm_Cells do:[:cellule|total:=cellule s1 + total].
^total!
X1
^X1 isNil
ifTrue: [X1 := List new]
ifFalse: [X1]!
X1: x
X1 := x!
X1Data
"return the data (a number) to be plotted with the X1 chart"
| total |
total:=0.
theBiofilm_Cells do:[:cellule|total:=total+cellule bm1].
^total!
X2
^X2 isNil
ifTrue: [X2 := List new]
ifFalse: [X2]!
X2: x
X2 := x!
X2Data
Annexes
"return the data (a number) to be plotted with the X2 chart"
| total |
total:=0.
theBiofilm_Cells do:[:cellule|total:=total+cellule bm2].
^total! !
Annexes
AgentLocation subclass: #Biofilm_Colonie
instanceVariableNames: 'm pere dynastie mu decay death buffm rayon age muM '
classVariableNames: 'CurrentId '
poolDictionaries: ''
category: 'Cormas-Biofilm'!
!Biofilm_Colonie methodsFor: 'init'!
init
super init.
self m: 0.
self buffm:0.
self mu:0.
self mu:0.
self death: 0.
self age:0.
self dead: false.
self dynastie: OrderedCollection new.
self rayon: OrderedCollection new.! !
!Biofilm_Colonie methodsFor: 'procedure'!
arrachement
"Arrachement du biofim des colonies en inhanition depuis 48h"
"on enlve la bactrie en inhanition, ses filles du voisinages et ttes les colonies entre elle et la phase liquide"
| wagon |
self dead:true.
wagon:=OrderedCollection new.
self rayon do:[:cellule| cellule theOccupants do:[:membre| membre do:[:colonie|
"(self dynastie includes:colonie) ifTrue:["wagon add:colonie"]"]]].
wagon do: [:colonie| colonie dead: true].
"self halt."!
arrachement2
"Arrachement du biofim des colonies en inhanition depuis 48h"
"on enlve la bactrie en inhanition, ses filles du voisinages et ttes les colonies entre elle et la phase liquide"
self dead:true.!
croissance:lesColonies
| dm voisin liste |
"Augmentation des effectifs de la colonie : les buffX contiennent le dX"
dm:=(self mu-self decay)* self m*Dt.
((dm<0) or: [((self patch bm < BMax) and: [ m<Bseuil])]) ifTrue: [self buffm:self buffm+dm].
((dm>0) and: [((self patch bm > (Bseuil/(Dl*Dl*Df*0.001))) or: [ m>Bseuil])]) ifTrue: [
"liste les cellules voisines avec de la place et dans l'epaisseur autorise de biofilm"
voisin:=OrderedCollection new.
self patch neighbourhood do:[:cellule| (cellule bm<BMax ) ifTrue: [voisin add:cellule]].
voisin removeAllSuchThat: [:cellule| ((Col-(cellule id rem:Col)>(Thickness/Dl) and:[(cellule id rem:Col)>0])). ].
(voisin size=0) ifTrue: ["pas de voisin libre"
(self patch bm<BMax) ifTrue: [self buffm:self buffm+dm]
ifFalse: [self buffm:self buffm]]
ifFalse: ["voisins libres"
liste:=OrderedCollection new.
self dynastie do:[:fille|(voisin includes: fille patch) ifTrue: [liste add:
fille. voisin remove: fille patch]].
"division cellulaire"
voisin do:[:cellule| self division:cellule dans:lesColonies vers:liste].
"transfert de biomasse vers les filles"
(liste size>0) ifTrue: [liste do:[:colonie| colonie buffm: colonie
buffm+(dm/liste size) ].].
].
].! !
!Biofilm_Colonie methodsFor: 'control'!
influence
Annexes
"met a jour les variables avec leur buffer"
self m: (self m + self buffm) asDouble.
"met les buffer a zero"
self buffm:0 asDouble.
"elimine les colonies a concentration ngatives"
(self m<0) ifTrue: [self arrachement2]."[self dead:true]."!
step:gens
"stocke dans les buffers les influences"
self calculMu.
self croissance:gens.! !
!Biofilm_Colonie methodsFor: 'id'!
CurrentId
^CurrentId isNil
ifTrue: [0]
ifFalse: [CurrentId]!
CurrentId: x
^CurrentId := x!
initId
self id: (self CurrentId: self CurrentId + 1)! !
!Biofilm_Colonie methodsFor: 'accessing'!
age
^age!
age: anObject
age := anObject!
buffm
^buffm!
buffm: anObject
buffm := anObject!
death
^death!
death: anObject
death := anObject!
decay
^decay!
decay: anObject
decay := anObject!
dynastie
^dynastie!
dynastie: anObject
dynastie := anObject!
m
^m!
m: anObject
m := anObject!
mu
^mu!
mu: anObject
mu := anObject!
muM
^muM!
muM: anObject
muM := anObject!
Annexes
pere
^pere!
pere: anObject
pere := anObject!
rayon
^rayon!
rayon: anObject
rayon := anObject! !
!Biofilm_Colonie methodsFor: 'pov'!
povColonie
^#colonie!
povVivant
(self dead) ifTrue: [^#mort]
ifFalse: [^#colonie].! !
Annexes
Biofilm_Colonie subclass: #Biofilm_Aceto
instanceVariableNames: ''
classVariableNames: 'CurrentId '
poolDictionaries: ''
category: 'Cormas-Biofilm'!
!Biofilm_Aceto methodsFor: 'init'!
init
super init.
self m: "((Cormas random-0.5)/0.5*2+1)*"X10. "+/- 20%"
self muM: Mu1Max"*((Cormas random-0.5)/0.5+1)". "+/- 10%"! !
!Biofilm_Aceto methodsFor: 'procedure'!
calculMu
"Calcule les taux spcifiques de chaque population bactrienne "
| ncol nlig |
self mu: self muM * self patch s1/ (self patch s1 + Ks1).
"Si taux specifiques faibles, compteur de sous nutrition de la colonie"
self mu < (self muM / KFeed)
"ifTrue: [self death: self death + Dt]"
ifFalse: [self death: 0].
"Vieillissement mtabolique"
self age: ((self age) + Dt).
"disparition de biomasse active par arrachement, minralisation,..."
nlig:= (((self patch id)-1) quo: Col)+1."num de la ligne "
ncol:= Col-(((self patch id) - ((nlig-1)*Col)))+1. "rem: Col)+1."
self decay: 2*Gamma/(TSH*TSH)*(ncol*Dl)/(Thickness).
self death > 1.8 ifTrue: [self dead: true. self arrachement].!
croissance
super croissance.!
division: cellule dans: lesColonies vers: liste
"division cellulaire"
| colonie |
cellule effectif < EffSup ifTrue:
[colonie := Biofilm_Aceto new.
colonie init.
colonie m: 0.
colonie pere: self.
self dynastie add: colonie.
colonie moveTo: cellule.
lesColonies add: colonie.
liste add: colonie]!
reaction:repet
"Reaction chimique actogne"
self patch buffs1: self patch buffs1 + (k11 * self mu * self m /(0.001*Dl*Dl*Df) * Dt / repet).
self patch buffs2: self patch buffs2+ (k12 * self mu * self m /(0.001*Dl*Dl*Df)* Dt / repet).! !
!Biofilm_Aceto methodsFor: 'control'!
step
"to be completed"! !
!Biofilm_Aceto methodsFor: 'id'!
CurrentId
^CurrentId isNil
ifTrue: [0]
ifFalse: [CurrentId]!
CurrentId: x
^CurrentId := x!
initId
Annexes
self id: (self CurrentId: self CurrentId + 1)! !
!Biofilm_Aceto methodsFor: 'pov'!
povAceto
^#aceto! !
Annexes
Biofilm_Colonie subclass: #Biofilm_Methano
instanceVariableNames: ''
classVariableNames: 'CurrentId '
poolDictionaries: ''
category: 'Cormas-Biofilm'!
!Biofilm_Methano methodsFor: 'init'!
init
super init.
self m: "(Cormas random)*"X20.
self muM: Mu2Max"*((Cormas random-0.5)/0.5+1)".! !
!Biofilm_Methano methodsFor: 'procedure'!
calculMu
"Calcule les taux spcifiques de chaque population bactrienne "
| ncol nlig |
self mu: self muM * self patch s2/ (self patch s2 + Ks2 + (self patch s2*self patch s2)/Ki2).
"Si taux specifiques faibles, compteur de sous nutrition de la colonie"
self mu < (self muM / KFeed)
" ifTrue: [self death: self death + Dt]"
ifFalse: [self death: 0].
"Vieillissement mtabolique"
self age: ((self age) + Dt).
"disparition de biomasse active par arrachement, minralisation,..."
nlig:= (((self patch id)-1) quo: Col)+1."num de la ligne "
ncol:= Col-(((self patch id) - ((nlig-1)*Col)))+1. "rem: Col)+1."
"nlig:= ((self patch id) quo: Col)-1.
ncol:= (((self patch id) - (nlig*Col)) rem: Col)+1."
self decay:2*Gamma/(TSH*TSH)*(ncol*Dl)/(Thickness).!
croissance
super croissance.!
division: cellule dans: lesColonies vers: liste
"division cellulaire"
| colonie |
cellule effectif < EffSup ifTrue:
[colonie := Biofilm_Methano new.
colonie init.
colonie m: 0.
colonie pere: self.
self dynastie add: colonie.
colonie moveTo: cellule.
lesColonies add: colonie.
liste add: colonie]!
reaction:repet
"Reaction chimique methanogne"
self patch buffs2: self patch buffs2+ (k21 * self mu * self m /(0.001*Dl*Dl*Df) * Dt / repet).
self patch s3: self patch s3 + (k22 * self mu * self m /(0.001*Dl*Dl*Df)* Dt / repet)! !
!Biofilm_Methano methodsFor: 'control'!
step
"to be completed"! !
!Biofilm_Methano methodsFor: 'id'!
CurrentId
^CurrentId isNil
ifTrue: [0]
ifFalse: [CurrentId]!
CurrentId: x
^CurrentId := x!
initId
Annexes
self id: (self CurrentId: self CurrentId + 1)! !
!Biofilm_Methano methodsFor: 'pov'!
povMethano
^#methano! !
Annexes
Modeling of Biofilms in Wastewater Treatment Processes using Multi-
Agent Systems
The industrial and medical fundamental role of biofilms has lead to many studies about their
structures and their dynamic evolutions. This resulted in descriptive knowledge (e.g.,
evolution of properties of the biofilm in space and time) and functional knowledge (e.g., cell-
cell communication) of biofilms. Many studies were thus devoted to build mathematical
models for biofilm analysis but most of them were based on classical approaches (e.g., using
mass balance and space distribution in partial derivative equations). On the other side, only
very few studies were directly based on the functional mechanisms to obtain virtual systems
which mimic the descriptive observations and allow to predict the state of a biofilm and its
possible evolution. In addition, in classical approaches, it is usually difficult to add new
mechanisms in already developed models. This paper will present a non-classical approach
based multi-agent systems for the analysis of biofilm formation in the anaerobic reactors
which counteracts the above mentioned drawbacks. In addition, this model shows spatial
repartition of biomass in the biofilm and the impact of the biofilm activity on its environment.
The biomass is modeled by agents who are representing micro-colonies of identical bacteria.
Each agent follows a mass balance law while its growth is described by a Monod law and its
detachment is calculated as a function of its depth in the biofilm and of the level of
hydrodynamic forces. The agents interact then with each other to find equilibrium between
density or spatial growth. The diffusion-reaction problem has been solved in two dimensions
by the Alternating Directions Implicit method. Several simulations studies will be proposed to
account for characteristics of the influent liquid phase, for the diffusion of molecules in the
biofilm and for the biochemical reaction.

You might also like