• Aucun résultat trouvé

Étude, validation et vérification de l’absorption de l’Azote par des graminées dans une simulation individu-centrée.

N/A
N/A
Protected

Academic year: 2021

Partager "Étude, validation et vérification de l’absorption de l’Azote par des graminées dans une simulation individu-centrée."

Copied!
46
0
0

Texte intégral

(1)

HAL Id: hal-02810834

https://hal.inrae.fr/hal-02810834

Submitted on 6 Jun 2020

HAL is a multi-disciplinary open access

archive for the deposit and dissemination of sci-entific research documents, whether they are pub-lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.

individu-centrée.

Clément Neuhauser, Benoit Veyrière

To cite this version:

Clément Neuhauser, Benoit Veyrière. Étude, validation et vérification de l’absorption de l’Azote par des graminées dans une simulation individu-centrée.. [Stage] ISIMA. 2012, 45 p. �hal-02810834�

(2)

Institut Supérieur d'Informatique, de Institut National de la Modélisation et de leurs Applications Recherche Agronomique Campus des Cézeaux - 63173 Aubière 234 Avenue du Brézet

63173 Aubière 63000 Clermont-Ferrand

Rapport d’ingénieur de projet :

Étude, validation et vérification

de l’absorption de l’Azote par

des graminées dans une

simulation individu-centrée

Responsables : Durée :

Claude MAZEL 100 heures

Raphaël MARTIN (de novembre 2011

(3)

Institut Supérieur d'Informatique, de Institut National de la Modélisation et de leurs Applications Recherche Agronomique Campus des Cézeaux - 63173 Aubière 234 Avenue du Brézet

63173 Aubière 63000 Clermont-Ferrand

Rapport d’ingénieur de projet :

Étude, validation et vérification

de l’absorption de l’Azote par

des graminées dans une

simulation individu-centrée

Responsables : Durée :

Claude MAZEL 100 heures

Raphaël MARTIN (de novembre 2011

(4)
(5)

i - Remerciements

Nous tenons tout particulièrement à remercier Monsieur Mazel pour son accueil au sein du projet, pour sa confiance qu’il a placée en nous, pour son écoute et pour son aide tout au long du projet ; Monsieur Martin pour son accueil au sein de l’Inra, ainsi que pour son soutien et pour ses connaissances en analyse et programmation qu’il a mises à notre disposition ; Monsieur Pottier, pour son écoute et sa qualité à appréhender le sujet du fait des ses connaissances poussées en écologie etbiologie.

(6)

ii - Table des illustrations

Figure 1 : Anatomie d’une talle de fétuque *Bague – Belot] ... 12

Figure 2 : Diagramme d’activités de la croissance d’une talle ... 14

Figure 3 : Apparition d’une talle fille *Bague – Belot] ... 15

Figure 4 : Aperçu de l’interface graphique ... 19

Figure 5 : Aperçu de l’onglet « Grille » ... 20

Figure 6 : Diagramme d’activité de l’ouverture, du chargement et de l’exécution d’une simulation existante ... 21

Figure 7 : Aperçu d’un fichier de simulation ... 22

Figure 8 : Aperçu d’un chemin relatif stocké dans un fichier de simulation ... 22

Figure 9 : Aperçu du journal ... 23

Figure 10 : Carte affichant la répartition de l’Azote sur la grille [Mainand – Ducher] ... 24

Figure 11 : Diagramme d’activité du calcul de l’Azote absorbé par une talle ... 27

Figure 12 : Schéma d’absorption d’Azote, bas sur l’exemple précèdent ... 29

Figure 13 : Sens de parcours des cellules avec une double boucle for ... 30

(7)

Table des matières

i - Remerciements ... 4

ii - Table des illustrations ... 5

iii - Résumé ... 8

iv - Abstract ... 9

I. Introduction ... 10

II. Présentation de l’INRA ... 11

III. Présentation de SisFRT ... 11

III. 1. Historique de SisFRT ... 11

III. 2. Approche biologique ... 12

III. 2. 1. Anatomie d’une talle ... 12

III. 2. 2. Croissance d’une talle ... 13

III. 2. 3. Epiaison d’une talle ... 15

III. 2. 4. Mort d’une talle ... 16

III. 3. Le modèle ... 16

III. 3. 1. Le monde ... 16

III. 3. 2. Le temps ... 16

III. 3. 3. Les entités ... 17

III. 4. L’interface graphique ... 18

III. 5. Les entrées/sorties ... 20

III. 5. 1. Les fichiers de simulation ... 22

III. 5. 2. Les fichiers météo ... 23

III. 5. 3. Le journal ... 23

III. 5. 4. Les fichiers de statistiques ... 24

III. 5. 5. Les fichiers Idrisi ... 24

IV. Limites du modèle ... 25

IV. 1. Absorption de l’Azote ... 25

IV. 1. 1. Principe de l'absorption de l'Azote ... 25

IV. 1. 2. Limites de l'ancien algorithme ... 26

(8)

IV. 1. 4. Limites et contraintes du nouvel algorithme ... 30

IV. 2. Fuite d‘Azote ... 31

V. Bilan technique ... 33

VI. Conclusion ... 34

VII. Glossaire ... 35

VIII. Références bibliographiques ... 37

(9)

iii - Résumé

La simulation informatique est devenue un outil essentiel dans le milieu de la recherche, et notamment pour l’étude de systèmes individu-centré. Le logiciel SisFRT est un simulateur qui s’intéresse à l’évolution spatiale d’une population de talles qui est liée aux comportements des différents agents entre eux.

Dans le logiciel SisFRT, programmé en C++ sous Microsoft Visual Studio, la méthode d’absorption d’Azote a été jugée biologiquement incorrecte, il fallait donc l’améliorer. Les scientifiques de l’INRA, Raphaël Martin et Julien Pottier, ont donc proposé un nouvel algorithme.

L’objectif principal de ce projet était donc d’implémenter et d’intégrer ce nouvel algorithme dans SisFRT. L’objectif secondaire était de concevoir des diagrammes d’activités sur le fonctionnement global de SisFRT dans le but d’une meilleure compréhension du modèle. L’objectif principal a été atteint. Cependant, nous n’avons pas eu le temps de détecter d’où provenait la possible fuite d’Azote donnant lieu à une mortalité prématurée des talles de graminées.

(10)

iv - Abstract

Computer simulation became an important tool within research and especially in the study of individual-based systems. SisFRT is a simulator which simulates the “spatial distribution of tillers within a pure grass stand and fluctuation which over time result from an interaction between environmental factors and tiller population behaviour” *Lafarge – Mazel – Hill]. The nitrogen absorption method of SisFRT, which was developed using the object language C++, was biologically incorrect. So we had to improve it, according to the new algorithm, conceived by INRA scientists.

The main objective of this project was to implement and integrate this new algorithm in SisFRT. The second objective was to design activity diagrams on the overall functioning of SisFRT in order to help people understand the model.

The main objective was achieved. However, we have not detected the possible nitrogen leak resulting in the death of tillers.

(11)

I. Introduction

Dans le cadre de notre seconde année au sein de l’école d’ingénieur ISIMA, nous avons effectué un projet de groupe s’étalant sur une durée de quatre mois et correspondant à une durée de cinquante heures de travail par étudiant.

L’équipe se composait de deux étudiants, Clément Neuhauser et Benoit Veyrière, tous deux étudiants au sein de la filière F2, Génie Logiciel et Systèmes Informatiques.

Dans un premier temps, le but de ce projet était d’étudier et de comprendre le fonctionnement d’un logiciel simulant l’évolution spatiale d’une population de graminées

[1], nommé sisFRT [2]. Puis il était nécessaire de revoir l’absorption de l’Azote par cette

population car celle-ci semblait retourner des résultats incohérents, voire aberrants.

Nous allons tout d’abord présenter le logiciel de simulation individu-centrée [3] sisFRT qui est le fruit d’une coopération entre l’ISIMA et l’INRA [4] depuis 1997. Ensuite nous expliquerons en quoi le modèle de ce logiciel comportait-il quelques limites, ou plus précisément, en quoi l’absorption de l’Azote par les gaminées n’était-elle pas très correcte d’un point de vue biologique.

Enfin, nous énumèrerons les difficultés que nous avons rencontrées et surmontées tout au long du projet et les connaissances qu’il nous a apportées.

(12)

II. Présentation de l’INRA

L’INRA (Institut National de la Recherche Agronomique) est un institut de recherche public français spécialisé dans la recherche agronomique. Celui-ci fut fondé en 1946.

L’INRA est le Premier institut de recherche agronomique européen dans le domaine de l'agriculture, de l’alimentation et de l’environnement. Il est aussi le deuxième mondial pour ses publications scientifiques en sciences agricoles. L’INRA est composé de plus de 1 837 scientifiques, 2 590 ingénieurs, 4 061 techniciens et administratifs. [Site de l’INRA P37]

III. Présentation de SisFRT

III. 1. Historique de SisFRT

SisFRT est né en 1997 sous le nom de Sistal [5] (SImulateur Spatialisé du TALlage [6]), suite à une demande de l’INRA qui avait besoin d’un outil permettant de simuler l’évolution spatiale de plantes graminées et plus particulièrement de la fétuque [7]. Le logiciel devait se rapprocher au maximum de la réalité en prenant en compte le fait que la population étudiée était soumise à certaines contraintes environnementales telles que les ressources présente dans le sol (sucre et Azote), l’éclairement, la température, …

Le développement de Sistal s’est prolongé pendant neuf ans grâce à de nombreux stages et projets d’étudiants de l’ISIMA, sous la tutelle de Michel Lafarge, chercheur à l’INRA et de Claude Mazel, enseignant chercheur à l’ISIMA.

Monsieur Lafarge s’est malheureusement rendu compte que le modèle initial n’était pas suffisant pour rendre compte de toutes les observations. En effet, celui-ci comportait trop de paramètres fixés pour toutes les simulations, provenant d’observation « sur le terrain », et ne se souciait pas de certaines contraintes telles que la concurrence entre talles. De plus celui-ci comportait une gestion trop artificielle de la gestion des évènements (tous les objets déclenchaient leurs méthodes en même temps).

C’est en 2006 qu’un étudiant nommé Xavier Marty a effectué son stage de deuxième année au sein de l’unité Agronomie de l’INRA à Clermont-Ferrand. Celui-ci a alors complètement revu le modèle et l’a amélioré pour qu’il soit biologiquement plus juste et pour qu’il prenne en compte plus de phénomènes réels. Il a par exemple modélisé la gestion des évènements par un échéancier stockant les différentes actions. Il a aussi introduit la notion de concurrence entre individu faisant de Sistal un simulateur multi-agents [8]. Par la même

(13)

occasion, le nouveau logiciel résultant de l’association entre l’INRA et l’ISIMA a était rebaptisé SisFRT (SImulateur Spatialisé de Feuilles, de Racines et de Talles [9]).

Son élaboration s’est poursuivie en prenant toujours plus d’éléments en compte. La possibilité d’ajouter un herbivore à une simulation a notamment était mise en place en 2007.

Aujourd’hui, Michel Lafarge étant à la retraite, personne n’est vraiment apte à totalement maîtriser le logiciel. Notre projet a donc permis à certaines personnes telles que Claude Mazel, Raphaël Martin et Julien Pottier de se « remettre dans le bain » ou tout simplement de découvrir SisFRT.

III. 2. Approche biologique

Avant de présenter les différents objets et paramètres du modèle de SisFRT, il est nécessaire d’expliquer quelques notions biologiques sur une talle de graminée ainsi que certains comportements intéressants, tels que la croissance et la mort d’une talle.

III. 2. 1. Anatomie d’une talle

(14)

Une talle correspond à la partie aérienne d’une herbe graminée. Elle se décompose en différentes parties :

 Une tige :

Elle est représentée par une succession de nœuds et d’entre-nœuds.  Un dôme apical [10] :

Encore appelé apex ou cône végétatif, il est composé de cellules en croissance et est situé au sommet de la tige. Il donnera lieu à un nouveau nœud dans un futur proche.  Des racines :

Celles-ci sont plus ou moins longues et permettent à la talle de subvenir à ses besoins en nutriments. Certaines d’entre-elles permettent d’aller chercher l’Azote en profondeur, d’autres couvrent le terrain en largeur.

 Des feuilles :

Celles-ci sont constituées d’une gaine [11] et d’un limbe [12], séparés par une ligule

[13].

 Des bourgeons :

Ils sont situés sur les entre-nœuds et peuvent donner lieu à une talle fille.

III. 2. 2. Croissance d’une talle

La croissance d’une talle est un évènement régi selon une période nommée phyllochrone

[14]. Nous reviendrons là-dessus plus tard, durant l’explication de la modélisation du temps.

Nous avons essayé de représenter au mieux les différentes étapes de la croissance avec le diagramme d’activités ci-dessous :

(15)

Figure 2 : Diagramme d’activités de la croissance d’une talle

La croissance se traduit d’abord par l’apparition d’un nouveau nœud, lui-même accompagné d’un bourgeon et d’un petit limbe. Ensuite, deux cas de figure peuvent se produire. Si la lumière que la talle capte est suffisante, le bourgeon se ramifie et donne naissance à une talle fille deux phyllochrones plus tard. Dans le cas contraire, il s’enterre et devient un bourgeon dit « dormant ». Celui-ci a une chance de devenir un rhizome [15], tige souterraine, contenant une accumulation de réserve nutritive et donnant lieu à une talle fille

Pousse d'un

nœud

+ bourgeon

+ limbe

Enterrement

du bourgeon

[mauvaise lumière]

Création d'un

rhizome

Ramification

du bourgeon

Création d'une

talle fille

[bonne lumière]

[tirage

aléatoire]

[manque d'azote

ou de sucre]

(16)

situé à l’écart de sa mère. A noter que si la talle ne dispose pas de suffisamment d’Azote et/ou de sucre, il se produit alors un arrêt de croissance ; la naissance de la talle fille est donc repoussée.

Voici un schéma représentant l’apparition d’une talle fille :

Figure 3 : Apparition d’une talle fille [Bague – Belot]

On voit bien que le bourgeon présent sur la figue précédente à donné lieu à une talle fille comportant sa gaine, sa ligule et son limbe.

III. 2. 3. Epiaison d’une talle

L’épiaison [15] correspond à la transformation du dôme apical en un épi. Ceci se produit au printemps sur des talles comportant de bonnes ressources nutritives. Les talles concernées par l’épiaison sont qualifiées de reproductrices, contrairement aux végétatives, situées au ras du sol.

(17)

III. 2. 4. Mort d’une talle

La mort d’une talle est souvent liée à la destruction du dôme apical, du fait de maladies, de vieillesse, du manque de lumière, ... Une partie des nutriments est distribuée aux talles filles de la défunte, tandis que l’autre est restituée dans le sol.

Nous nous sommes aperçu que ce principe biologique n’était pas respecté dans SisFRT. Nous aborderons ce point ultérieurement dans le rapport.

III. 3. Le modèle

Comme nous l’avons expliqué précédemment, la première étape de notre projet était d’étudier le principe de fonctionnement du simulateur de l’évolution d’une population de graminées, nommé SisFRT. Ce logiciel ayant été développé sur plusieurs années (plus de 20 ans) et par de nombreuses personnes différentes, il n’est pas aisé de se l’approprier.

Dans cette partie, nous allons vous expliquer le modèle qu’implémente SisFRT.

III. 3. 1. Le monde

Dans SisFRT, le monde est représenté par une grille torique composée de cellules dont les dimensions sont choisies par l’utilisateur durant le paramétrage d’une simulation. Chaque cellule se compose d’une talle au plus, ainsi que d’une réserve propre en Azote et en matières organiques.

III. 3. 2. Le temps

Le modèle SisFRT essayant de se rapprocher au maximum de la réalité, la variable temps n’est pas gérée de la même façon pour toutes les actions qui s’effectuent durant une simulation. En effet, le temps calendaire [16], exprimé en jours, est utilisé pour les événements récurrents, comme l’absorption de l’Azote dans le sol par le biais des racines. Le temps thermique [17] est quant à lui utilisé pour modéliser le fait que l’évolution des talles de graminées est liée à la température. En effet, une talle poussera plus rapidement

(18)

durant une journée chaude que durant une journée plutôt froide. Le temps thermique, exprimé en degré-jour est donc utilisé dans le modèle pour la gestion de certains événements tels que la ramification d’un bourgeon ou la pousse d’un nouveau nœud. Nous pouvons dire que ces actions se déroulent de façon périodique selon un phyllochrone. Un phyllochrone est constant pour un individu donné et est borné en fonction de l’espèce. Pour la fétuque, le phyllochrone est d’environ 200°C-jour. Cela signifie que s’il fait 20°C pendant 10 jours, un phyllochrone s’est alors déroulé, et un nouveau nœud s’est développé par exemple.

III. 3. 3. Les entités

Le simulateur SisFRT a pour but de simuler la répartition de la fétuque ou d’autres types d’herbes graminées. Son fonctionnement se base sur de nombreuses entités. Nous allons décrire les principales.

III. 3. 3. 1. Les talles

Elles représentent l’élément central du modèle car celui-ci est directement lié à la plupart des autres objets tels que les racines, les feuilles, … Une talle dérive d’un végétal et possède de nombreuses caractéristiques propres à elle-même. Par exemple, la durée d’un phyllochrone ainsi que la réserve en Azote sont propres à chaque individu, sauf à la naissance de la talle où son phénotype est le même que celui de sa mère. En fait, certains phénomènes tels que le niveau de luminosité ou la température donnent lieu à des mutations sur les talles entrainant la modification de leurs propriétés.

III. 3. 3. 2. Les racines

Elles correspondent à la partie de la talle lui permettant de s’approvisionner en Azote. Les racines sont représentées par une densité de racine par cellule. La durée de vie d’une racine est exprimée en phyllochrone et est indépendante de celle de la talle. Bien entendu, une talle sans racine ne peut plus subvenir à ses besoins en Azote et est donc vouée à mourir.

(19)

III. 3. 3. 3. Les feuilles

Une feuille permet à la talle de produire chaque jour, en fonction du rayonnement, le sucre nécessaire à sa survie et à son développement. Sa durée de vie de base est proportionnelle à la durée du phyllochrone de la talle, elle varie donc en fonction de l’espèce de la talle.

III. 3. 3. 4. L’Azote

Ce minéral, présent initialement dans le sol, est essentiel à la survie de la plante. Il suit un cycle fermé ; c'est-à-dire qu’à moins qu’il y ait intervention d’un individu extérieur (herbivore, exploitant, …) son stock ne varie pas. En effet l’Azote est prélevé dans le sol par les racines de la talle et est rendu à sa mort.

Nous verrons plus tard que SisFRT contient un bug donnant lieu à une perte anormale d’Azote.

III. 4. L’interface graphique

L’interface graphique, initialement créée avec l’environnement de développement C++ Builder de Borlan, a été migrée sous Visual studio en 2007. Celle-ci peut donc uniquement être utilisée avec le système d’exploitation Windows.

Son rôle est de piloter les simulations. Elle permet donc de créer une simulation à partir de zéro en définissant une multitude de paramètres, de charger une simulation existante à partir d’un ensemble de fichiers que nous détaillerons après et de sauvegarder les entrées et sorties d’une simulation courante.

(20)

Figure 4 : Aperçu de l’interface graphique

Comme vous pouvez le voir, celle-ci comporte un système d’onglets permettant d’établir ou de modifier les paramètres de la simulation. L’onglet « Général », sélectionné par défaut au lancement du programme, permet d’afficher certains paramètres d’une simulation, et permet de la lancer à l’aide du bouton « Commencer ». Dans notre cas, aucun détail n’apparait car nous n’avons rien rempli. Pour charger une simulation existante, il suffit d’utiliser le bouton nommé « Fichier » et d’aller chercher un fichier de simulation.

(21)

Figure 5 : Aperçu de l’onglet « Grille »

On peut voir qu’il est possible de modifier tout un tas de paramètres tels que les dimensions, la répartition initiale de l’Azote, …

III. 5. Les entrées/sorties

Le simulateur utilise plusieurs fichiers pouvant être générés lors de la sauvegarde d’une nouvelle simulation, ou chargés pour pouvoir relancer une simulation antérieure. Avant de vous présenter ces différents fichiers, nous allons vous proposer un diagramme d’activité illustrant le chargement et le déroulement global d’une simulation existante.

(22)

Figure 6 : Diagramme d’activité de l’ouverture, du chargement et de l’exécution d’une simulation existante

Exécution du

.exe

[ouverture non réussie]

Fichier > Ouvrir

Une simulation

Bouton

Commencer

Fenêtre d'erreur

Chargement des

paramètres

[ouverture réussie]

Exécution de

la simulation

Enregistrement

des logs dans

le journal

Enregistrement

des statistiques

Enregistrement

de la grille au

format idrisi

(23)

III. 5. 1. Les fichiers de simulation

Un fichier de simulation est au format xml. Il se compose donc d’éléments ordonnés grâce à des balises.

Figure 7 : Aperçu d’un fichier de simulation

Ce début de fichier de simulation nous permet de retrouver les paramètres fixés à l’aide de l’interface graphique. On voit par exemple le nom de la simulation et les dimensions de la grille.

Comme vous pouvez le voir sur la capture, le fichier de simulation permet aussi au simulateur d’accéder aux autres types de fichier, car il stocke leurs chemins relatifs.

Figure 8 : Aperçu d’un chemin relatif stocké dans un fichier de simulation

(24)

III. 5. 2. Les fichiers météo

Ces fichiers sont lus par le simulateur SisFRT et définissent le rayonnement et la température.

III. 5. 3. Le journal

Le journal est un fichier texte simple, se remplissant au fur et à mesure du déroulement de la simulation et permettant de référencer tous les événements que l’utilisateur à choisi de conserver, ainsi que pour chacun d’entre eux, leur date en temps thermique.

Figure 9 : Aperçu du journal

On peut voir dans cet aperçu l’acquisition en Azote de certaines talles.

Le journal, en plus de permettre de garder une trace de nos simulations, est un bon moyen de débugger le programme en vérifiant si telle ou telle propriété est bien conforme à la réalité.

(25)

III. 5. 4. Les fichiers de statistiques

Les fichiers de statistiques sont enregistrés au format csv. Ce format est facilement lisible par le programme et est exploitable par le logiciel Excel. Il représente donc un moyen direct pour l’utilisateur de voir l’impact qu’a eu la simulation sur différentes espèces.

III. 5. 5. Les fichiers Idrisi

Les fichiers Idrisi permettent d’avoir accès à des cartes représentant la répartition sur la grille de l’Azote, des talles, …

Voici un aperçu d’une telle carte. Celle-ci est donc obtenue après ouverture d’un fichier Idrisi grâce au logiciel « Idrisi » :

(26)

A noter qu’il est possible de convertir les fichiers Idrisi en Ascii grid à l’aide d’un script réalisé sous R [18].

IV. Limites du modèle

Comme nous l’avons déjà fait remarquer au début de ce rapport, la fonction permettant l’absorption de l’Azote par les racines d’une graminée n’était pas très correcte d’un point de vue biologique. Une des grosses parties de notre projet consistait donc à l’améliorer en suivant les conseils de nos responsables de projet.

IV. 1. Absorption de l’Azote

IV. 1. 1. Principe de l'absorption de l'Azote

Une talle, pour évoluer à chaque phyllochrone, a un besoin en Azote et en sucre plus ou moins important en fonction de ses réserves et de sa capacité de stockage. Une talle possède de telles ressources dans la base des gaines de ses feuilles, dans sa souche et dans ses racines. Ses ressources, liées directement à la capacité de stockage, dépendent du diamètre de la talle ainsi que de son âge phyllochronique. Il en est de même pour la taille des bases des feuilles et la taille des racines, ces deux derniers dépendant directement du diamètre de la talle. L’unité de calcul du diamètre d’une talle est le *mm²+. Le volume de la souche [mm 3] est obtenu en multipliant la section de la talle avec l’âge phyllochronique de celle-ci.

L’absorption d’Azote se fait bien évidemment dans un sol maillé en cellules plus ou moins riches en Azote. Toutes les cellules possèdent un taux d’humidité et une température [°C]. Ces deux données font varier le coefficient d’absorption d’une talle(voir fichiers météo). Cependant, chaque espèce possède son propre coefficient d’absorption d’Azote [mg.mm-3] (aussi appelé taux d'absorption ou rapidité d’absorption), et celui-ci influe directement sur la capacité de stockage d’une talle. En effet, sur une cellule donnée, une talle d’une espèce différente et d’un âge différent d’une talle voisine, n’absorbera pas la même quantité d’Azote.

La capacité maximale d’absorption d’Azote se calcule donc à partir de la formule suivante

(27)

IV. 1. 2. Limites de l'ancien algorithme

L’algorithme précédent prenait en compte la capacité de stockage de chaque talle. Celui-ci avait permis de corriger l’ancien problème des concentrations aberrantes d’Azote dans les talles qui ne possédaient pas de seuil limite de capacité de stockage. Les absorptions journalières des talles étaient modulées de la façon suivante :

 Si les réserves ont atteint leur maximum : les absorptions d’Azote sont annulées.  Si les réserves ont atteint 80% de leur maximum : les absorptions d’Azote sont

réduites de 90%.

 Si les réserves sont inférieures à 80% de leur maximum : les absorptions d’Azote ne sont pas modifiées.

Malheureusement, cet algorithme n’était pas en phase avec la réalité concernant l’absorption d’Azote par une ou plusieurs talles sur une cellule. En effet, la restriction drastique des absorptions d’Azote lors d’un appauvrissement d’Azote dans le sol a été jugée non réaliste par les chercheurs de l’INRA.

De plus, lors d’un cas idéal d’absorption d’Azote dans une cellule (section de sol), une talle (1) avec un taux d’absorption « petit » peut absorber plus d’Azote qu’une autre talle (2) possédant un taux d’absorption plus grand, si cette dernière est traitée après (si la talle (1) est traitée avant la talle (2)). Cela provient d’un calcul d’absorption d’Azote de manière itératif : les racines qui absorbent l’Azote sont traitées de façon non concurrentielle.

IV. 1. 3. Un nouvel algorithme

Afin d’éviter les problèmes d’absorption d’Azote cités précédemment, les chercheurs de l’INRA, Julien et Raphaël, ont élaboré un nouvel algorithme permettant la mise en concurrence des racines de talles différentes dans une cellule.

Ce nouvel algorithme prend en compte :

 La limite de capacité de stockage d’une talle (comme l’algorithme précédent) nommée « absorption max » dans l'exemple qui suit.

 le problème de concurrence entre les racines qui sont dans une cellule.

 la capacité d’absorption de l’Azote (renommé « TauxAcquiAzote » dans le programme).

(28)

En effet, les racines sont plus ou moins rapides à absorber l’Azote et ont des besoins différents. Il faut donc aussi tenir compte de leur taux d’acquisition ainsi que de leur seuil d’absorption. Le seuil d’absorption correspond à une limite en dessous de laquelle la racine ne peut plus absorber d’Azote dans la cellule. Par exemple, si une racine possède un seuil de 100 mg, quand la quantité d’Azote disponible passe en dessous de 100 mg, cette racine ne peut plus absorber d’Azote.

(29)

Principe de fonctionnement de l’algorithme avec un exemple :

Prenons une cellule avec une quantité de 210 mg d’Azote et avec trois racines :

Nom Absorption Max. Seuil d’absorption Taux d’acquisition

Racine 1 75 50 1

Racine 2 75 90 2

Racine 3 10 150 3

Il y a donc trois répartitions :

 De 210 à 150 : il y a 60 mg d’Azote disponible pour les 3 racines en concurrence Azote absorbé par Racine 1 = 60 * (1/(1+2+3))=10 mg

Azote absorbé par Racine 2 = 60 * (2/(1+2+3))=20 mg

Azote absorbé par Racine 3 = 60 * (3/(1+2+3))=30 mg >10(absorption max)

La racine 3 peut absorber 30 mg seulement, elle possède une absorption maximale de 10 mg. Il y a donc 20 mg d’Azote à redistribuer sur les racines restantes :

Azote absorbé par Racine 1 = 10 + 20 * (1/(1+2))=10 + 6,7 = 16,7 mg Azote absorbé par Racine 2 = 20 + 20 * (2/(1+2))=20 + 13,3 = 33,3 mg

 De 150 à 90 : il y a 60 mg d’Azote disponible pour les 2 racines en concurrence Azote absorbé par Racine 1 = 60 * (1/(1+2))=20 + 16,7 = 36,7 mg

Azote absorbé par Racine 2 = 60 * (2/(1+2))= 40 + 33,3 = 73,3mg

A cette étape pour la Racine 2, son seuil Max est atteint. Il ne reste donc plus qu’une seule racine pour la dernière étape.

 De 90 à 50 : il y a 40 mg d’Azote disponible pour la dernière racine.

(30)

Au final, on obtient donc :

Nom Azote absorbé Quantité demandée atteinte ?

Seuil atteint ?

Racine 1 75 mg OUI OUI

Racine 2 73,3 mg NON OUI

Racine 3 10 mg OUI NON

Cela correspond au schéma ci-dessous :

Figure 12 : Schéma d’absorption d’Azote, basé sur l’exemple précédent

En effet, on peut voir sur ce schéma qu'il y a autant de 'couche' (répartition) d'absorption que de 'Seuil d’absorption maximum par racine' (150, 90 et 50 mg). A chaque 'couche' d'absorption, les racines qui peuvent y accéder sont en concurrence en fonction de leur quantité d'Azote demandée et de leur Taux d'acquisition (leur rapidité d'absorption).De plus, si dans une 'couche', une racine a atteint sa quantité demandée et qu'elle peut encore en

(31)

absorber (cas de la racine 3 dans la couche [210 à 150] mg), le reste est alors redistribué entre les racines restantes et ainsi de suite si c'est le cas pour une autre racine dans la même couche.

IV. 1. 4. Limites et contraintes du nouvel algorithme

Malgré une gestion de l’Azote dans les cellules plus proche de la réalité biologique, avec une mise en concurrence des talles en fonction de leurs espèces et âges respectives, cet algorithme « souffre » de la façon dont les cellules de la grille sont choisies (de façon itérative).

C'est-à-dire que les cellules sont sélectionnées via une double boucle for dans le code, il y a donc un déséquilibre dans les cellules autour des talles par rapport à leur quantité d’Azote. Ce sens de parcours est illustré dans le schéma ci-dessous :

(32)

Autour des talles, on a donc une plus grosse absorption d'Azote dans les premières cellules sélectionnées, et donc moins d'Azote à terme dans celles-ci :

Figure 14 : Déséquilibre créée autour des talles

Afin d’améliorer le réalisme de l’absorption de l’Azote, pour une possible évolution de la méthode "AcquisitionsAzote()" de la classe "Dieu.cpp" de SisFRT, on peut implémenter une sélection aléatoire des cellules de la grille à la place d’une double boucle for.

IV. 2. Fuite d‘Azote

Comme nous l’avons spécifié précédemment dans ce rapport, nous avons reçu une aide précieuse de la part de nos responsables de projet et notamment de la part de Julien Pottier, pour tous les points délicats en biologie. Nous avons donc appris qu’à sa mort, une talle redonnait une partie de l’Azote qu’elle avait emmagasiné à la cellule où elle se trouve, et une autre à ses filles.

Cependant, les tests du simulateur SisFRT effectués par Julien Pottier ont démontré qu’il y avait un problème de mortalité précoce des talles. En effet, toutes ces simulations ont donné lieu à la mort de l’intégralité des talles. Nous avons conclu qu’une fuite dans le cycle d’Azote était surement la cause de ce disfonctionnement.

Pour pallier à cela, nous avons donc examiné les parties du code de SisFRT se référant au cycle de l‘Azote. Malheureusement, par manque de temps et au vu du nombre important de fonctions touchant à l’Azote, nous n’avons pas pu déterminer si une fuite d’Azote était

(33)

vraiment présente et si oui, où sévissait-elle. De plus, il nous était difficile d’examiner la réserve totale d’Azote du système du fait de l’absence de variable la représentant.

L’analyse nous a toutefois confirmé 3 points :

 Lors de la mort d’une souche de talle, l’Azote est redistribué aux filles si elle en a ; ou à la cellule elle-même sinon, sous forme de matière organique.

 Lors de la mort d’une feuille, l’Azote est redonné à la grille.

 Lors de la mort d’une talle, l’Azote est restitué à la mère si la talle n’a pas de filles et qu’elle a une mère.

(34)

V. Bilan technique

L’objectif principal établi par monsieur Mazel, notre responsable de projet, ainsi que par Raphaël Martin et Julien Pottier, nos responsables INRA, a été rempli. En revanche un objectif secondaire n’a pas été totalement atteint. Celui-ci était de concevoir les diagrammes d’activités sur le cycle de vie de l’Azote dans SisFRT, dans le but de localiser une éventuelle « fuite d’Azote » dans le cycle.

Le but de l’objectif principal était de rendre l’absorption d’Azote par les talles plus cohérente d’un point de vue biologique. Maintenant, les racines des talles dans une cellule sont en concurrence et prennent en compte leur capacité de stockage.

Les objectifs secondaires étaient de comprendre le modèle de SisFRT et de réaliser des diagrammes d’activités, dans l’objectif d’une meilleure compréhension du modèle et de son fonctionnement, par les chercheurs de l’INRA. Il est souhaitable qu’ils puissent le valider et l’utiliser par la suite.

La difficulté majeure dans ce projet était de comprendre le fonctionnement global du modèle au niveau technique ainsi que le fonctionnement de SisFRT lui-même. De plus, nous avons perdu du temps pour le lancement d’une simulation, du fait de la présence de chemins absolus dans le fichier de chargement d’une simulation au lieu de chemins relatifs. Une fois le nouvel algorithme testé et validé sous forme d’un mini programme, il fallait l’intégrer dans SisFRT. Cette partie nous a pris beaucoup de temps au vu de la complexité du logiciel contenant des méthodes mal définies, ainsi que des commentaires lacunaires.

Si nous avions eu plus de temps, nous aurions continué la recherche sur une éventuelle fuite d’Azote. Nous aurions aussi amélioré la méthode d’acquisition d’Azote en sélectionnant aléatoirement les cellules lors de leur tirage afin d’éviter le déséquilibre des stocks d’Azote autour des talles.

(35)

VI. Conclusion

Notre projet de seconde année au sein de l’école d’ingénieur ISIMA, ayant pour thème la simulation de l’évolution spatiale d’une population de graminées, a été une très bonne expérience professionnelle et intellectuelle. En effet, grâce à ce projet, nous avons pu découvrir l’environnement de la recherche. Ce projet nous a aussi confronté à la complexité d’un vrai logiciel de simulation.

Ce projet nous a tout d’abord apporté des connaissances en biologie et écologie. SisFRT nous a fait comprendre comment fonctionne un logiciel de simulation sur l’évolution spatiale d’une population individu-centrée.

Avec notre projet, nous avons travaillé avec Microsoft Visual Studio, nous avons donc pu améliorer nos connaissances sur l’utilisation d’un Environnement de Développement Intégré très utilisé en entreprise. Ce logiciel nous a été d’une grande aide pour notre travail, notamment pour les diverses recherches sur le fonctionnement des méthodes.

Enfin, travailler en équipe sur un projet de 100 heures nous a obligé à nous répartir équitablement et astucieusement la masse de travail, mais aussi à mettre nos deux esprits en collusion pour les tâches les plus ardues.

(36)

VII. Glossaire

Dôme apical [10] : Pouvant aussi être appelé apex ou cône végétatif, le dôme apical

représente le sommet végétatif d'une tige.

Epiaison [15] : stade de l’évolution d’une talle correspondant à l’apparition d’un épi hors de

la gaine de la dernière feuille.

Fétuque [7] : La fétuque est une herbe graminée dont la répartition spatiale est simulée

dans le logiciel SisFRT.

Gaine [11] : Base élargie d’une tige.

Graminées [1] : Aussi appelées poacées, les graminées représentent une famille botanique

regroupant la plupart des espèces de plantes qu'on appelle communément « herbes ».

INRA [4] : Institut National de la Recherche Agronomique.

Ligule [13] : Pièce membraneuse située à la jonction de la gaine et du limbe.

Limbe [12] : Partie élargie d'une feuille ou d'un pétale, adaptée pour la capture de l’énergie

lumineuse.

Phyllochrone [15] : Durée entre deux évolutions de la plante. La durée d’un phyllochrone est

constante selon l’espèce et dépend étroitement des conditions météorologiques.

R [18] : R est un logiciel beaucoup utilisé en biologie, permettant principalement de traiter

des données et d’analyser des statistiques.

Rhizome [14] : Partie souterraine de la tige d’une graminée, contenant généralement

d’importantes réserves nutritives. Un rhizome pousse en dessous de la surface du sol de façon horizontale et donne lieu à une talle fille située à l’écart de la talle mère.

Simulateur multi-agents [8] : Logiciel permettant de paramétrer et d’effectuer des

simulations individu-centrée (ou multi-agents).

Simulation individu-centrée [3] : Egalement appelée simulation multi-agents, cette

simulation consiste en un environnement dans lequel des agents, définis par leur comportement et un certain nombre de caractéristiques, interagissent entre eux.

SisFRT [2] : Simulateur Spatialisé des Feuilles, des Racines et des Talles, anciennement

(37)

SISTAL [5] : Simulateur Spatialisé du TALlage, créé en 1997 suite à une demande de l’INRA

qui avait besoin d’un outil permettant de simuler l’évolution spatiale de plantes graminées.

Tallage [6] : Phénomène permettant à une talle de se ramifier et de donner naissance à une

talle fille.

Talle [9] : Jeune pousse qui s’élève soit de la racine, soit de la tige souterraine d’une plante

herbacée graminée.

Temps calendaire [16] : Temps correspondant au temps réel et mesuré en jour.

Temps thermique [17] : Temps utilisé dans SisFRT pour tenir compte de la température pour

certains évènements. Celui-ci est exprimé en degré-jour, ce qui correspond au temps calendaire multiplié par la température.

(38)

VIII. Références bibliographiques

Lafarge Michel, Mazel Claude, Hill David, 2005. A modelling of the tillering of reproducing

the fine-scale horizontal heterogeneity of a pure grass sward and its dynamics. Ecological

Modeling 183, 125-141.

Lafarge Michel, Mazel Claude, Hill David, 2005. An individual-based, stochastic and spatial

model to simulate the ramification of grass tillers and their distribution in swards.

Simulation Modelling Practice and Theory 13,308-334.

Bague Mathieu, Belot Franck, 2006. Rapport de projet : Simulation de tallage dans un

environnement multi-spécifique.

Marty Xavier, 2007. Rapport de stage : Simulation de tallage dans un environnement

hétérogène.

Murat Florent, Jeannet Frédéric, 2008. Rapport de projet : Introduction d’une gestion de

l’herbe par pâturage dans Sisfrt.

Dos Santos Sylvie, Brigaud Jérémy, 2009, Rapport de projet : Révision de la localisation de

l’Azote du sol et modification de la mortalité des brins d’herbe dans le simulateur SisFRT.

Mainand David, Duchet Romain, 2010. Rapport de projet : Modifications concernant les

racines, les réserves et la morphologie des brins d’herbe du simulateur SisFRT. Site internet de l’INRA : www.inra.fr/l_institut

(39)
(40)

IX. Table des annexes

Annexe 1 : Diagramme UML de SisFRT.

Annexe 2 : Code de la nouvelle méthode de l’acquisition d’Azote.

Annexe 3 : Diagramme de GANT.

(41)
(42)

Annexe 2 : Code de la nouvelle méthode de l’acquisition d’Azote.

//====================================================// // toutTraite : // // regarde si toutes les especes de la map ont // // été traité // //====================================================//

bool Dieu::toutTraite(map<Vegetal *, pair <float,bool>> especeTraitee ) {

bool val =true;

for(map<Vegetal *, pair <float,bool>>::iterator it = especeTraitee.begin() ; it!=especeTraitee.end() ; ++it)

{

if(it->second.second == false) //si la racine de cette espece n'a pas été traitée

{

val = false; // alors on renvoie faux

break; } } return val; } //====================================================// // AquisitionsAzote : // // absorptions quotidiennes d'Azote par les racines // // modifications recentes: // // - changement de prise en compte du coef // // meteo // // - mise en place de limitation d'absoption // //====================================================//

OrganisedEvent * Dieu::acquisitionsAzote () {

stringstream commentRessources("");

commentRessources << "Acquisition d'Azote" << endl; GrilleTorique * grille = getGrille();

CelluleSisfrt * cell = NULL;

// map de stockage de l'Azote capté par talle

map<int,float> AzoteTotal; map<int,Talle *> lienVegetal;

float bin; int L = grille->getWidth(); int l = grille->getHeight(); int i,j; float qteDispo = 0; float qteUtilisee = 0; float capaciteAbsorptionTotale = 0;

float tailleCellule = CelluleSisfrt::GetLargeur() * CelluleSisfrt::GetLongueur();

float coefDisponibilite = getModele()->getMeteo()->getDisponibilite(getModele()->getJour());

float modifCoefTransfoAzote;

int OK; // variables de test

int supp;

float deltaAzote; // difference entre Azote dispo et le plus haut seuil d'Absorption

parmis les especes dans la cellule

float seuilMAx; // seuil absorption maximal ds la liste

float sommeCapaciteAbsorption;

float sommeCapaciteAbsorption2;

float deltaAzote2;

float res; //variable temporaire pour le calul de l'Azote

if (coefDisponibilite > 0) {

(43)

map<Vegetal *, float>::iterator racine, racineFin; map<Vegetal *, pair <float,bool>> listeTalle;

map<Vegetal *, pair <float,bool>>::iterator itListeTalle,itSeuilMax; // pour chaque cellule

for (i = 0; i < L; i++) {

for (j = 0; j < l; j++) {

bool aucun = true; cell = (*grille)(i,j);

qteDispo = cell->getAzote()->getQte(); capaciteAbsorptionTotale = 0;

//=================================================================//

//creation de la map (liste) des racines présentes dans la cellule //

//=================================================================//

for (racine = cell->getRacines()->begin(); racine != cell->getRacines()->end(); racine ++) {

pair <float,bool> pairTemp;

pairTemp.first = racine->second; //capamax

pairTemp.second = false; //valeur par defaut

listeTalle[racine->first] = pairTemp ; //creation de la map temporaire

}

//=================================================================//

// tant que toute les racines ne sont pas traitées, on recommence //

//=================================================================//

while ( toutTraite(listeTalle) == false ) {

//initialisation des variables

deltaAzote = 0; seuilMAx = 0; sommeCapaciteAbsorption = 0; sommeCapaciteAbsorption2 = 0; deltaAzote2 = 0; supp = 0; qteUtilisee = 0; //=====================================================================//

// calcul du seuil d'absorption max et de l'Azote dispo (delta Azote) //

//=====================================================================//

for(itListeTalle = listeTalle.begin() ; itListeTalle != listeTalle.end(); itListeTalle ++) {

if(itListeTalle->second.second == false) //si la racine n'a pas été traité

{

//si le seuil est inférieur à la qte d'Azote dispo

if(itListeTalle->first->getEspece()->getSeuilAzoteMin() < qteDispo ) {

if( itListeTalle->first->getEspece()->getSeuilAzoteMin() > seuilMAx ) {

// on passe au moins une fois ici par cellule (on a un seuil max par cellule)

aucun = false;

seuilMAx = itListeTalle->first->getEspece()->getSeuilAzoteMin(); itSeuilMax = itListeTalle;

}

sommeCapaciteAbsorption += itListeTalle->first->getEspece()->getTauxAquiAzote(); Talle * talle= dynamic_cast<Talle *>(itListeTalle->first);

//calcul de la quantite maximale absorbable par la talle

float Section = talle->getPhenotype()->getDiametre();

float Capamax = itListeTalle->first->getEspece()->getCoefCapaReserveAzote() * max( itListeTalle->first->getEspece()->getAgeCapaMaxAzote() ,talle->getNbPhyllochrone() )*Section ; itListeTalle->second.first = Capamax;

} else

{ //si le seuil est supérieur à la qte d'Azote dispo, on le traite pas

itListeTalle->second.second = true; }

} }

(44)

//==========================================================================================// // si on a au moins une racine avec un seuil max(et donc au moins une racine à traiter) // // augmente la vitesse de calcul si une cellule n'a pas assez d'Azote, même pour une racine // //==========================================================================================//

if(aucun == false) {

deltaAzote = qteDispo - seuilMAx ;

// fonction des densités de chacune x leur potentiel d’absorption, et du temps thermique écoulé)

sommeCapaciteAbsorption *= (temperature * tailleCellule); do

{

OK = 0;

itListeTalle = listeTalle.begin();

//=================================================//

// tant qu'on a pas listé toute la map d'espece //

//=================================================//

while ( itListeTalle != listeTalle.end() ) {

//si la racine n'a pas encore été traitée

if(itListeTalle->second.second == false) {

res = deltaAzote * itListeTalle->first->getEspece()->getTauxAquiAzote()/sommeCapaciteAbsorption;

// si on est dans le cas où l'Azote absorbé est superieur à l'absorption max

if( (itListeTalle->first->getAzoteReserve() + itListeTalle->first->getAzoteTemp() + res) >= itListeTalle->second.first)

{

//on sauvegarde au passage le prochain delta et la prochaine capacité d'aborption

if((itListeTalle->first->getAzoteReserve() + itListeTalle->first->getAzoteTemp() + res) != itListeTalle->second.first)

{

sommeCapaciteAbsorption2 += itListeTalle->first->getEspece()->getTauxAquiAzote(); }

//calcul ce qu'il reste en Azote pour cette couche et le sauvegarde pour le prochain tour de boucle

deltaAzote2 += >getAzoteReserve() + itListeTalle->first->getAzoteTemp() + res - itListeTalle->second.first ;

// on a au moins une espece qui a atteind son absorption max

OK = 1;

// mise a jour de la quantité d'Azote dispo si on supprime une racine de la liste

qteDispo = qteDispo + (>first->getAzoteReserve() + itListeTalle->first->getAzoteTemp()) - itListeTalle->second.first ;

//on ajoute la maximum d'Azote pour atteindre l'absorption max en Azote

//qtedispo = qtedispo - (la différence entre l'absorption max et la qté déja absorbée)

itListeTalle->first->addAzote( res - deltaAzote2 ); cell->getAzote()->utiliser( res - deltaAzote2 ); if( itListeTalle == itSeuilMax)

{

supp = 1; // on interdit la suppression ultérieure de cet élément

}

itListeTalle->second.second = true; //on supprime cette espece de la liste

} else

{

qteDispo =qteDispo - res;

itListeTalle->first->addAzote(res); // on ajoute de l'Azote pour cette racine

cell->getAzote()->utiliser(res); // on retire l'Azote absorbé de la cellule

} }

itListeTalle++; //on avance dans la liste

}

sommeCapaciteAbsorption = sommeCapaciteAbsorption2; // on réinitialise pour le prochain tour de boucle

deltaAzote = deltaAzote2; sommeCapaciteAbsorption2 = 0; deltaAzote2 = 0;

(45)

} while (OK == 1); // on a au moins une racine qui a atteind son absorption max donc on recommence

if (supp == 0) {

//on supprime cette espece de la liste et on incremente espece

itSeuilMax->second.second = true; }

}

}// fin while touttraite

//==========================================================================================// // on met les quantité absorbé dans une map pour l'écrire plus tard dans le journal // //==========================================================================================//

for(itListeTalle = listeTalle.begin() ; itListeTalle != listeTalle.end(); itListeTalle ++) {

Talle * talle= dynamic_cast<Talle *>(itListeTalle->first);

if (talle && (i == (int) (talle->getX() / CelluleSisfrt::GetLargeur())) && (j == (int) (talle->getY()/CelluleSisfrt::GetLongueur())))

{

commentRessources << "\t\tquantite acquise par la talle " << talle->getId() << " sur la case " << i << " " << j << " : " << qteUtilisee << endl;

commentRessources << "\t\tdensité restant sur la case : " << (cell->getAzote()->getQte()/tailleCellule) << endl << endl;

}

// Azote absorbé par talles

bin = AzoteTotal[talle->getId()]; AzoteTotal[talle->getId()] += qteUtilisee; lienVegetal[talle->getId()] = talle; }

}// fin grande boucle for j

}// fin grande boucle for i

}//fin if coef dispo

//===================================//

// on écrit dans le journal //

//===================================//

commentRessources << "\t\t##### quantite totales par talles jour " << getModele()->getJour() << endl;

for ( map<int,float>::iterator it = AzoteTotal.begin() ; it != AzoteTotal.end() ; ++ it ) {

commentRessources << "\t\t$Azote$\ttalle " << it->first << " absorbe " << it->second << " d'Azote";

commentRessources << " : reserv_temp( pas de taxe ) = " << lienVegetal[it->first]->getAzoteTemp() << endl;

}

getModele()->getJournal()->write(commentRessources.str(), Journal::Ressources_);

return NULL;

(46)

Figure

Figure 1 : Anatomie d’une talle de fétuque [Bague – Belot]
Figure 2 : Diagramme d’activités de la croissance d’une talle
Figure 3 : Apparition d’une talle fille [Bague – Belot]
Figure 4 : Aperçu de l’interface graphique
+7

Références

Documents relatifs

Le Conseil économique et social des Nations Unies (1997) donne une définition pertinente du concept d’intégration de la dimension genre, laquelle suggère que

Partager des informations et confronter des expériences qui ont déjà démontré leur pertinence, tels sont les objectifs de la ren- contre régionale «Coopération internationale dans

Dans un travail de recherche publié il y a quelques temps, et qui portait sur l’image de soi et de l’autre à travers les textes proposés dans le manuel de

Les connaissances phonologiques et plus particulièrement la conscience phonémique associées à l’acquisition des premières connaissances alphabétiques (connaissance des

Il mit alors une cloche graduée sur le mercure, de manière à emprisonner l’air du ballon, et pour que cette cloche pût tenir seule, et afin de pouvoir noter le volume de

Les moyens consacrés à la vie étudiante sont en hausse de 134 M € par rapport à 2020, dont plus de 80 M € seront consacrés aux bourses sur critères sociaux (avec en

Elles ont conduit à des entretiens entre cinq personnalités intéressées par cette perspective avec des membres du cabinet de la ministre de l’enseignement supérieur, de la

Permettre à l’État et aux établissements de faire un point de situation budgétaire, de partager les grandes priorités de politiques nationales et des projets de sites,