_______________________________________________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 !---// Parametersdouble g = 0.5; // half saturation constantdouble Rmax = 0.029; // ind.m-2
// Nombre d'oeufs par zone de reproductionMatrixND oeufsm = recruitmentInputs.get(0).getRepro().copy(); // copy sinon on modifie la matrice de base// Matrice de connectivitéMatrixND Pij = pop.getMappingZoneReproZoneRecru();// Contribution au recrutementDouble p = recruitmentInputs.get(0).getRecuitementContribution();// Classe d'âge 0 de la populationdouble g0 = pop.getPopulationGroup().get(0); // Age 0
// 1. Calcul de DL = nombre de larves par zone popDL = oeufsm*p.mult(Pij); // vecteur DLzp pour chaque zone pop
// 2. Calcul de du nombre de recruesfor(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 list Isis-fish-users@list.isis-fish.org http://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'Halieutique https://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 list Isis-fish-users@list.isis-fish.org http://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'Halieutique https://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