"Compilation OK" merci Sigrid !! Le mer. 19 févr. 2020 à 18:18, Sigrid LEHUTA <Sigrid.Lehuta@ifremer.fr> a écrit :
En fait l'objet result est une matrice [group, zone de recrutement] disponible dans l'equation de recrutement qui tient déja compte de la mortalité, la connectivité et l'étalement du recrutement.
Il ne te reste plus qu'a appliquer une mortalité densité dépendente.
Un exemple un peu plus compliqué ci dessous car les param de densité dépendence dépendent de la zone considérée.
// Apply here the Density dependent mortality specific to each nursery (july-august) then the age 0 mortality (Archambault et al. 2016) double M_A0 = -1.5; // Parameters of the density dependent mortality // Seine, Veys, UK west, Rye, Somme // Density dependent mortality in nurseries (Archambault et al. 2016) // Single pop double [] Alpha = {0.41,0.5,0.24,0.11,0.25}; double [] K = {120,370,110,190,200}; // Nursery surfaces double [] Surf = {966.9453,320.2793,1649.987,503.5813,1679.987}; for (MatrixIterator i = result.iterator(); i.hasNext();) { // l'iterateur parcours la matrice case par case i.next(); Object[] sem = i.getSemanticsCoordinates(); Zone zoneRecru = (Zone) sem[1]; // à une case donnée on peut recuperer ses coordonnées (group pour la dim 0 et zone pour la dim 1) int index = 0; double L = i.getValue(); double survLarv = 0; if(L != 0){ // Seine, Veys, UK west, Rye, Somme if(zoneRecru.getName().equals("Sole_nurs_Seine")){ index = 0; }else if(zoneRecru.getName().equals("Sole_nurs_Veys")){ index = 1; }else if(zoneRecru.getName().equals("Sole_nurs_UKwest")){ index = 2; }else if(zoneRecru.getName().equals("Sole_nurs_Rye")){ index = 3; }else if(zoneRecru.getName().equals("Sole_nurs_Somme")){ index = 4; } survLarv = (Alpha[index] *L) / ( 1+ (Alpha[index] * L/(K[index]*1000*Surf[index])) ) * Math.exp(M_A0/3); } i.setValue(survLarv); } return 0;
Le 19/02/2020 à 17:49, Charlotte Sève a écrit :
Merci beaucoup Sigrid ! Ça a l'air de marcher, cependant le reste de mon equation de fonctionne pas...
J'essaye de coder une fonction de recrutement qui me calcule, à partir du nombre d'oeufs produits (calculé dans l'équation de repro) le nombre de recru par zone pop. Sachant qu'il y a une connectivité larvaire et un étalement du recrutement sur plusieurs mois (mais un seul mois de reproduction). Et qu'en plus il y a un recrutement densité-dépendant...
Pour le moment j'en suis là mais ça ne fonctionne pas du tout ! --- // Parameters double g = 0.5; // half saturation constant double Rmax = 0.029; // ind.m-2
// Nombre d'oeufs par zone de reproduction MatrixND oeufsm = recruitmentInputs.get(0).getRepro().copy(); // copy sinon on modifie la matrice de base // Matrice de connectivité MatrixND Pij = pop.getMappingZoneReproZoneRecru(); // Contribution au recrutement Double p = recruitmentInputs.get(0).getRecuitementContribution(); // Classe d'âge 0 de la population double g0 = pop.getPopulationGroup().get(0); // Age 0
// 1. Calcul de DL = nombre de larves par zone pop DL = oeufsm*p.mult(Pij); // vecteur DLzp pour chaque zone pop
// 2. Calcul de du nombre de recrues for(Zone zone:zonePop){ Val = result.getValue(g0, zonePop); result.getValue(g0, Val + DL*Rmax/(DL + g*Rmax)); } return result; --- C'est ma première expérience sur JAVA alors j'ai dû faire pas mal d'erreurs - désolée ! S'il y en a quelques unes qui te sautent aux yeux... SInon déjà merci beaucoup pour ta dernière réponse :)!
Charlotte
Le mer. 19 févr. 2020 à 17:35, Sigrid LEHUTA <Sigrid.Lehuta@ifremer.fr> a écrit :
je dirais simplement
pop.getMappingZoneReproZoneRecru() tu veux donner un peu de contexte pour qu on vérifie?
Le 19/02/2020 à 16: 48, Charlotte Sève a écrit :
Hello,
Est-ce que quelqu'un saurait s'il est possible d'appeler la matrice de connectivité dans ISIS en utilisant : "pop.getBean.getFieldPopulationMappingZoneReproZoneRecru" ?
Merci beaucoup ! Charlotte
_______________________________________________ Isis-fish-users mailing listIsis-fish-users@list.isis-fish.orghttp://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
-- NB : Please note that I do not work on Monday mornings and Wednesday afternoons
Sigrid LEHUTA ~ ><> ~ Ecologie et Modèles pour l'Halieutique IFREMER Nantes Rue de l'Ile d'Yeu - BP 21105, 44311 Nantes Cedex 03, France Tél : 02 40 37 42 38 (N° interne : 8238)
Membre de l'Association Française d'Halieutiquehttps://www.association-francaise-halieutique.fr/
_______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
--
*Charlotte Sève*, PhD Student CRIOBE - USR 3278 (CNRS-EPHE-UPVD) Phone: +33 6 21 10 10 16 Skype: charlotteseve
_______________________________________________ Isis-fish-users mailing listIsis-fish-users@list.isis-fish.orghttp://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
-- NB : Please note that I do not work on Monday mornings and Wednesday afternoons
Sigrid LEHUTA ~ ><> ~ Ecologie et Modèles pour l'Halieutique IFREMER Nantes Rue de l'Ile d'Yeu - BP 21105, 44311 Nantes Cedex 03, France Tél : 02 40 37 42 38 (N° interne : 8238)
Membre de l'Association Française d'Halieutiquehttps://www.association-francaise-halieutique.fr/
_______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
-- *Charlotte Sève*, PhD Student CRIOBE - USR 3278 (CNRS-EPHE-UPVD) Phone: +33 6 21 10 10 16 Skype: charlotteseve