Ejemplo n.º 1
0
        public void Run(Clock clock, IGlobalHotellingTaxationState state, IDimensions dimensions)
        {
            var t = clock.Current;
            var s = state;

            var perCapitaConsumptionNow      = s.consumption[t] / s.population[t];
            var perCapitaConsumptionPrevious = s.consumption[t - 1] / s.population[t - 1];

            var perCapitaGrowthRate = perCapitaConsumptionNow / perCapitaConsumptionPrevious - 1.0;

            // TODO Think whether this makes sense
            if (perCapitaConsumptionNow == 0.0 && perCapitaConsumptionPrevious == 0.0)
            {
                perCapitaGrowthRate = 0.0;
            }

            var discountrate = perCapitaGrowthRate * s.elasticityofmarginalutility + s.prtp;

            foreach (var r in dimensions.GetValues <Region>())
            {
                if (t < s.baseyear)
                {
                    s.currtax[t, r] = 0.0;
                }
                else if (t == s.baseyear)
                {
                    s.currtax[t, r] = s.basetax;
                }
                else
                {
                    s.currtax[t, r] = s.currtax[t - 1, r] * (1.0 + discountrate);
                }


                s.currtaxn2o[t, r] = s.currtax[t, r];
                s.currtaxch4[t, r] = s.currtax[t, r];
            }
        }
Ejemplo n.º 2
0
        public void Run(Clock clock, IGlobalHotellingTaxationState state, IDimensions dimensions)
        {
            var t = clock.Current;
            var s = state;

            var perCapitaConsumptionNow = s.consumption[t] / s.population[t];
            var perCapitaConsumptionPrevious = s.consumption[t - 1] / s.population[t - 1];

            var perCapitaGrowthRate = perCapitaConsumptionNow / perCapitaConsumptionPrevious - 1.0;

            // TODO Think whether this makes sense
            if (perCapitaConsumptionNow == 0.0 && perCapitaConsumptionPrevious == 0.0)
                perCapitaGrowthRate = 0.0;

            var discountrate = perCapitaGrowthRate * s.elasticityofmarginalutility + s.prtp;

            foreach (var r in dimensions.GetValues<Region>())
            {
                if (t < s.baseyear)
                    s.currtax[t, r] = 0.0;
                else if (t == s.baseyear)
                    s.currtax[t, r] = s.basetax;
                else
                    s.currtax[t, r] = s.currtax[t - 1, r] * (1.0 + discountrate);

                s.currtaxn2o[t, r] = s.currtax[t, r];
                s.currtaxch4[t, r] = s.currtax[t, r];

            }
        }