Commit 0a4a44d8 authored by patrick.lambert's avatar patrick.lambert
Browse files

with different Allee Effect (none, independant or dependant of catchment size)

parent 38575a86
......@@ -289,6 +289,7 @@
<tempMinRep>10</tempMinRep>
<tempOptRep>17</tempOptRep>
<tempMaxRep>30</tempMaxRep>
<Soffset>-1.0</Soffset>
<eta>2.4</eta>
<ratioS95__S50>1.9</ratioS95__S50>
<a>270000</a>
......
......@@ -302,6 +302,7 @@
<tempMinRep>10</tempMinRep>
<tempOptRep>17</tempOptRep>
<tempMaxRep>30</tempMaxRep>
<Soffset>-1.0</Soffset>
<eta>2.4</eta>
<ratioS95__S50>1.9</ratioS95__S50>
<a>270000</a>
......
......@@ -47,10 +47,11 @@ public class ReproduceAndSurviveAfterReproductionWithDiagnose extends AquaNismsG
private double tempOptRep = 20.;
private double eta = 2.4; // parameter linking surface of a basin and S_etoile
private double ratioS95_S50 = 2.;
private double Soffset = -1.;
private double a = 270000.; // Parameter of fecndity (number of eggs per individual) Modifié depuis la valeur
// initial de tHibault, qui était 135000
// initial de tHibault, qui était 135000
private double delta_t = 0.33; // duration of the mortality considered in the reproduction process (ex.: from eggs
// to juvenile in estuary for alosa alosa = 0.33)
// to juvenile in estuary for alosa alosa = 0.33)
private double survOptRep = 0.0017;
private double lambda = 0.00041;
private double initialLength = 2.;
......@@ -95,6 +96,9 @@ public class ReproduceAndSurviveAfterReproductionWithDiagnose extends AquaNismsG
mortalityFunction = new MortalityFunction();
stockRecruitmentRelationship = new StockRecruitmentRelationship();
if (Double.isNaN(Soffset))
Soffset = -1.;
}
......@@ -195,10 +199,13 @@ public class ReproduceAndSurviveAfterReproductionWithDiagnose extends AquaNismsG
amountPerSuperIndividual = alpha / maxNumberOfSuperIndividualPerReproduction;
// Compute the Allee effect parameters S95 and S50
S95 = eta * riverBasin.getAccessibleSurface(); // corresponds to S* in the rougier publication
S50 = S95 / ratioS95_S50;
if (Soffset >= 0.) {
S95 = Soffset;
S50 = Soffset;
} else {
S95 = eta * riverBasin.getAccessibleSurface(); // corresponds to S* in the rougier publication
S50 = S95 / ratioS95_S50;
}
// initilisation of the stock recruitment relationship
stockRecruitmentRelationship.init(alpha, beta, S50, S95);
......@@ -223,7 +230,7 @@ public class ReproduceAndSurviveAfterReproductionWithDiagnose extends AquaNismsG
// System.out.println(fish.getAge() + " -> "+ fish.getLength() + "
// ("+fish.getStage()+")");
numberOfFemaleSpawners += fish.getAmount(); // on ajoute a chaque fois le fish.getAmount
// (CcumSum)
// (CcumSum)
if (fish.getNumberOfReproduction() < 1) {
numberOfFemaleSpawnerForFirstTime += fish.getAmount();
femaleSpawnersForFirstTimeAgesSum += fish.getAge() * fish.getAmount();
......@@ -231,7 +238,7 @@ public class ReproduceAndSurviveAfterReproductionWithDiagnose extends AquaNismsG
}
} else if (fish.getGender() == Gender.MALE) {
numberOfMaleSpawners += fish.getAmount(); // on ajoute a chaque fois le fish.getAmount
// (CcumSum)
// (CcumSum)
if (fish.getNumberOfReproduction() < 1) {
numberOfMaleSpawnerForFirstTime += fish.getAmount();
maleSpawnersForFirstTimeAgesSum += fish.getAge() * fish.getAmount();
......@@ -657,7 +664,11 @@ public class ReproduceAndSurviveAfterReproductionWithDiagnose extends AquaNismsG
public double getEffectiveStock(double stock) {
return stock / (1 + Math.exp(-log19 * (stock - S50) / (S95 - S50)));
if (S50 == S95) // catchment size independant Allee effect (including no Allee effect when S95 = 0)
return (stock < S95 ? 0. : stock);
else // catchment size dependant Allee effect
return stock / (1 + Math.exp(-log19 * (stock - S50) / (S95 - S50)));
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment