Bonjour à tous,

Je m'appelle Etienne Joubert. Je suis en apprentissage à Ifremer, sous la tutelle de Marc Bouchoucha sur le sujet de la restauration écologique. J'ai repris il y a quelque temps le modèle Isisfish sur la rade de Toulon et ses populations de sars commun, créé par Adrian Bach en stage à ma place l'année dernière.

Dans un premier temps, j'aimerais vous partager mon admiration pour votre travail. Ce logiciel libre est plein de fonctionnalités tout en restant simple à prendre en main après quelques tutos sur le langage JAVA. Je trouve assez incroyable tout ce qu'il permet de faire même pour un novice en la matière comme moi et j'ai hâte de savoir mieux le manipuler!

Si je vous contacte c'est également pour vous poser quelques questions sur le passage du code insérés dans les cases du volet population dans les simulations. Les variables que l'on rentre subissent-elles des modifications dans la "racine" ou "code source" (je n'ai pas le terme exact) du modèle? Je m'explique avec un exemple:

Lorsque je rentre dans le volet reproduction une boucle simple comme celle qui suit (ce code est piqué au modèle de démo sur les populations de néfrops du golfe de Gascogne mais fonctionne et a le bénéfice de ne pas être une concoction "maison" j'ai donc tendance à plus y faire confiance pour débuguer mes problèmes):

double compt=0;

double ktemp = context.getValueAndCompute("SarCommun.reproductionEquation.Ktemp", 1.0);

for (Zone zone : zoneRepro){

     compt=0;

     for (PopulationGroup : groups){

          double cf = group.getReproductionRate()*Ktemp;

          compt += N.getValue(group, zone) * cf;

     }

     result.setValue(zone, compt*prepro);

}

return 0;

D'une part, N.getValue(group, zone) correspond t'il bien au nombre d'individus d'un groupe dans une zone donnée au mois de reproduction voulu?

Si tel est le cas, peut être est-ce une erreur d'interprétation de ma part mais avec:

         - un taux de reproduction égal à 1 uniquement pour le groupe 8 de ma population (un taux de 0 est affecté aux autres groupes),

         - un nombre d'individus initialisé à 380, qui est égal à 365 lorsque les sars se reproduisent (mortalité),

          - aucune équation de recrutement à par un "return 0;" (0 ou 1 ne change pas la donne apparemment).

Je suis sensé obtenir un nombre de juvéniles égal au nombre d'adultes reproducteurs, non ?

Or j'obtiens un nombre de nouvelles recrues dans C0 égal à 722. Ce nombre de sortie semble suivre une tendance particulière de 0.47051% par rapport à la valeur d'entrée. Lorsque je remplace N.getValue(group, zone) directement dans le code par 380 ou par 1000 par exemple j'obtiens respectivement 158 et 417. Cela signifie que la valeur d'entrée de N.getValue(group, zone) pour mon exemple est sensiblement proche de 1731. Ce qui n'est pas la valeur attendue.

À cela j'ai deux hypothèses

-Soit, tout est faux depuis le début et je me trompe de variable.

-Soit, il me semble que ce chiffre correspond au nombre d'individus potentiellement reproducteurs dans ce groupe au mois d'avril (la reproduction se déroule en mars dans ce modèle donc normalement ce n'est pas ce qui est sensé avoir lieu). Dans ce cas, cela veut dire que la reproduction est prise en compte au début  mois +1 dans le code de simulation?

Cela concorderait et serait une solution à mon problème mais je m'inquiète de corriger une de mes erreurs par un autre biais.

Cependant je ne m'explique pas pourquoi les données du modèle seraient corrigées par un facteur 0.47051.

Je vous remercie et vous souhaite une excellente fin d'après-midi.

Bien cordialement,

Etienne Joubert