public void Run(Clock clock, IImpactWaterResourcesState state, IDimensions dimensions) { var s = state; var t = clock.Current; if (t > Timestep.FromYear(2000)) { s.watech[t] = Math.Pow(1.0 - s.watechrate, t.Value - Timestep.FromYear(2000).Value); } else { s.watech[t] = 1.0; } foreach (var r in dimensions.GetValues <Region>()) { double ypc = s.income[t, r] / s.population[t, r] * 1000.0; double ypc90 = s.gdp90[r] / s.pop90[r] * 1000.0; var water = s.wrbm[r] * s.gdp90[r] * s.watech[t] * Math.Pow(ypc / ypc90, s.wrel) * Math.Pow(s.population[t, r] / s.pop90[r], s.wrpl) * Math.Pow(s.temp[t, r], s.wrnl); if (water > 0.1 * s.income[t, r]) { s.water[t, r] = 0.1 * s.income[t, r]; } else { s.water[t, r] = water; } } }
public void Run(Clock clock, IImpactWaterResourcesState state, IDimensions dimensions) { var s = state; var t = clock.Current; if (t > Timestep.FromYear(2000)) s.watech[t] = Math.Pow(1.0 - s.watechrate, t.Value - Timestep.FromYear(2000).Value); else s.watech[t] = 1.0; foreach (var r in dimensions.GetValues<Region>()) { double ypc = s.income[t, r] / s.population[t, r] * 1000.0; double ypc90 = s.gdp90[r] / s.pop90[r] * 1000.0; var water = s.wrbm[r] * s.gdp90[r] * s.watech[t] * Math.Pow(ypc / ypc90, s.wrel) * Math.Pow(s.population[t, r] / s.pop90[r], s.wrpl) * Math.Pow(s.temp[t, r], s.wrnl); if (water > 0.1 * s.income[t, r]) s.water[t, r] = 0.1 * s.income[t, r]; else s.water[t, r] = water; } }