#This is a function for resource dynamics of nospec species and one resource res1 = function(nospec,specpara,supply,loss,lag,nostep) { # species parameters # growth: growth per unit resource # uptake: uptake per unit growth # mortality # n0 initial size #resource parameters: # supply: resource supply # loss: rate at which resource is removed # lag after how many steps the species is introduced if (nospec > 1) { growth =specpara[,1]; uptake=specpara[,2]; mortality=specpara[,3]; n0=specpara[,4]; } else { growth =specpara[1]; uptake=specpara[2]; mortality=specpara[3]; n0=specpara[4]; } for (i in 1:nospec) { x1 = matrix(rep(0,(nostep+1)*nospec),ncol = nospec) if (lag == 0) x1[1,]=n0 ; } resource =rep(NA,nostep+1) resource[1] = supply; for (t1 in 1:nostep) { xtemp = rep(0,nospec) for (i in 1:nospec) { if (t1 > lag+1) { xtemp[i]= x1[t1,i] + x1[t1,i]*(growth[i]*resource[t1] - mortality[i]); if (xtemp[i]<0) { xtemp[i] = 0; } } else { if (t1==lag+1) xtemp[i] = n0[i] else xtemp[i] = 0 } } restemp = resource[t1] + supply - loss*resource[t1] - sum(growth*uptake*x1[t1,])*resource[t1]; #testovat if (restemp < 0) restemp=0; resource[t1+1] = restemp; x1[t1+1,] = xtemp } cbind(resource,x1) }