Esempio n. 1
0
        public double GetCurrentLevel(TurbineCurtailment curtailment)
        {
            var result = (from level in CustomLevels.AsEnumerable()
                          where level.Key == curtailment
                          select level.Value.Item2).FirstOrDefault();

            return(result);
        }
Esempio n. 2
0
        public double GetLevel(TurbineCurtailment curtailment, DateTime timestamp)
        {
            var result = 0.0;

            foreach (var level in CustomLevels)
            {
                if (level.Key.Equals(curtailment) && level.Value.Item1 == timestamp)
                {
                    result = level.Value.Item2;
                }
            }

            return(result);
        }
Esempio n. 3
0
        public double GetStandardLevel(TurbineCurtailment curtailment)
        {
            var standardLevel = 0.0;

            switch (curtailment)
            {
            case TurbineCurtailment.Default:
                standardLevel = 0.0;
                break;

            case TurbineCurtailment.Noise:
                standardLevel = 0.25;
                break;

            case TurbineCurtailment.Bats:
                standardLevel = 0.15;
                break;

            case TurbineCurtailment.Shadow:
                standardLevel = 0.1;
                break;

            case TurbineCurtailment.BoatAction:
                standardLevel = 0.05;
                break;

            case TurbineCurtailment.Technical:
                standardLevel = 0.05;
                break;

            case TurbineCurtailment.Grid:
                standardLevel = 0.05;
                break;

            default:
                standardLevel = 0.0;
                break;
            }

            return(standardLevel);
        }
Esempio n. 4
0
        /// <remarks>
        /// When set, the method saves the curtailment level information for the current timestamp in UTC for later retrieval.
        ///
        /// Each instance of this object supports a different set of custom levels since we run one thread per customer.
        /// For now we just save it in memory but will use a database later.
        /// </remarks>
        public void SetCustomLevel(TurbineCurtailment curtailment, double level)
        {
            var customerLevel = Tuple.Create(DateTime.Now.ToUniversalTime(), level);

            switch (curtailment)
            {
            case TurbineCurtailment.Default:
                CustomLevels[curtailment] = customerLevel;
                break;

            case TurbineCurtailment.Noise:
                CustomLevels[curtailment] = customerLevel;
                break;

            case TurbineCurtailment.Bats:
                CustomLevels[curtailment] = customerLevel;
                break;

            case TurbineCurtailment.Shadow:
                CustomLevels[curtailment] = customerLevel;
                break;

            case TurbineCurtailment.BoatAction:
                CustomLevels[curtailment] = customerLevel;
                break;

            case TurbineCurtailment.Technical:
                CustomLevels[curtailment] = customerLevel;
                break;

            case TurbineCurtailment.Grid:
                CustomLevels[curtailment] = customerLevel;
                break;

            default:
                break;
            }
        }