Commit 428f6f9c by patrick.lambert

### GR3D R functions

parent 16f26f44
 ... ... @@ -8,6 +8,15 @@ temperatureEffect = function(tempWater, Tmin, Topt, Tmax){ return(response) } thermalRange = function(pct = 0.8, Tmin, Topt, Tmax){ lower = uniroot(function(x) temperatureEffect(x, Tmin, Topt, Tmax) - pct, interval = c(Tmin, Topt))\$root upper = uniroot(function(x) temperatureEffect(x, Tmin, Topt, Tmax) - pct, interval = c(Topt, Tmax))\$root return(c(lower = lower,upper = upper)) } #optimalThermalRange(Tmin = 3, Topt = 17, Tmax =27) # ---------------------------------------------- # growth simulation ... ... @@ -27,12 +36,12 @@ vonBertalanffyInverse = function(L, L0, Linf, K){ # von Bertalanffy increment # pas cohérent avec la temperature effet sur le coeff de croissance mais ca marche vonBertalanffyIncrement = function(nStep, L0, Linf, K, deltaT, sigma, withTempEffect=FALSE, TrefAtSea = c(9.876946, 13.489854, 15.891487, 11.554104) ){ vonBertalanffyIncrement = function(nStep, L0, Linf, K, timeStepDuration, sigma, withTempEffect=FALSE, TrefAtSea = c(9.876946, 13.489854, 15.891487, 11.554104) ){ tempEffect = temperatureEffect( TrefAtSea , 3, 17, 26) L = matrix(nrow = nStep + 1) L[1] = L0 for (i in 1:nStep) { mu = log((Linf - L[i]) * (1 - exp(-K * deltaT))) - sigma * sigma / 2 mu = log((Linf - L[i]) * (1 - exp(-K * timeStepDuration))) - sigma * sigma / 2 increment = exp(rnorm(1, mu, sigma)) if (withTempEffect) { increment = increment * tempEffect[((i - 1) %% 4) + 1] ... ... @@ -42,13 +51,13 @@ vonBertalanffyIncrement = function(nStep, L0, Linf, K, deltaT, sigma, withTempEf return(L) } vonBertalanffyWithNextIncrement = function(L, L0, Linf, K, deltaT, sigma, tempEffect ){ vonBertalanffyWithNextIncrement = function(L, L0, Linf, K, timeStepDuration, sigma, tempEffect ){ if (sigma == 0) { mu = log((Linf - L) * (1 - exp(-K * deltaT))) mu = log((Linf - L) * (1 - exp(-K * timeStepDuration))) increment = exp(mu) } else { mu = log((Linf - L) * (1 - exp(-K * deltaT))) - (sigma * sigma) / 2 mu = log((Linf - L) * (1 - exp(-K * timeStepDuration))) - (sigma * sigma) / 2 increment = exp(rnorm(1, mu, sigma)) } L = L + increment * tempEffect ... ...
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