public void Run(Clock clock, IImpactBioDiversityState state, IDimensions dimensions) { var s = state; var t = clock.Current; if (clock.IsFirstTimestep) { } else { s.biodiv[t] = s.nospecbase / s.nospecies[t]; foreach (var r in dimensions.GetValues <Region>()) { double ypc = 1000.0 * s.income[t, r] / s.population[t, r]; var dt = Math.Abs(s.temp[t, r] - s.temp[t - 1, r]); var valadj = s.valbase / s.valinc[r] / (1 + s.valbase / s.valinc[r]); s.species[t, r] = s.spbm / s.valbase * ypc / s.valinc[r] / (1.0 + ypc / s.valinc[r]) / valadj * ypc * s.population[t, r] / 1000.0 * dt / s.dbsta / (1.0 + dt / s.dbsta) * (1.0 - s.bioshare + s.bioshare * s.biodiv[t]); } } }
public void Run(Clock clock, IImpactBioDiversityState state, IDimensions dimensions) { var s = state; var t = clock.Current; if (clock.IsFirstTimestep) { } else { s.biodiv[t] = s.nospecbase / s.nospecies[t]; foreach (var r in dimensions.GetValues<Region>()) { double ypc = 1000.0 * s.income[t, r] / s.population[t, r]; var dt = Math.Abs(s.temp[t, r] - s.temp[t - 1, r]); var valadj = s.valbase / s.valinc[r] / (1 + s.valbase / s.valinc[r]); s.species[t, r] = s.spbm / s.valbase * ypc / s.valinc[r] / (1.0 + ypc / s.valinc[r]) / valadj * ypc * s.population[t, r] / 1000.0 * dt / s.dbsta / (1.0 + dt / s.dbsta) * (1.0 - s.bioshare + s.bioshare * s.biodiv[t]); } } }