Skip to content
Snippets Groups Projects
Powerline.cs 5.13 KiB
Newer Older
  • Learn to ignore specific revisions
  • using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace WindStressPRM
    {
        /// <summary>
        /// power line object
        /// объект - ЛЭП
        /// </summary>
        public class Powerline
        {
            /// <summary>
            ///  unique id
            ///  уникальный идентификатор 
            /// </summary>
            public int Identifier { get; set; }
            /// <summary>
            /// year of construction
            /// год постройки ЛЭП
            /// </summary>
            public int Year { get; set; }
            /// <summary>
            /// average height of cable span between two poles, meters
            /// средняя высота пролета, м
            /// </summary>
            public double Height { get; set; }
            /// <summary>
    
            /// voltage class kV for switches
    
            /// Напряжение ЛЭП, кВ
            /// </summary>
    
            public int Voltage { get; set; }
    
            /// <summary>
            /// Line vertices coordinate list
            /// список координат вершин ЛЭП как линейного объекта
            /// </summary>
            public IList<Coordinate> Coordinates { get; set; }
            /// <summary>
            /// assigned powerstation/pole
            /// идентификатор соответсвующего конца/начала линии (столб, трансформаторная подстанция, понижающая подстанция)
            /// </summary>
            public int PointFromID { get; set; }
            /// <summary>
            /// assigned powerstation/pole
            /// идентификатор соответсвующего конца/начала линии (столб, трансформаторная подстанция, понижающая подстанция)
            /// </summary>
            public int PointToID { get; set; }
            /// <summary>
            /// broken/not broken switch
            /// сломана (true) или нет (false) линяя
            /// </summary>
            public bool IsBroken { get; set; }
            /// <summary>
            /// power on switch
            /// получает (true) или нет (false) линия питание
            /// </summary>
            public bool IsON { get; set; }
            /// <summary>
            /// designated constructor
            /// </summary>
    
            /// <param name="coord"> Line vertices coordinate list/список координат вершин ЛЭП как линейного объекта</param>
            /// <param name="id"> uniq  id/уникальный идентификатор </param>
            /// <param name="year">year of construction/год постройки ЛЭП </param>
            /// <param name="height"> average height of cable span between two poles, meters/средняя высота пролета, м</param>
            /// <param name="voltage"> voltage class kV for switches, Напряжение ЛЭП, кВ</param>
            /// <param name="toID"> assigned powerstation/pole/идентификатор соответсвующего конца/начала линии (столб, трансформаторная подстанция, понижающая подстанция)</param>
            /// <param name="fromID"> assigned powerstation/pole/идентификатор соответсвующего конца/начала линии (столб, трансформаторная подстанция, понижающая подстанция)</param>
    
            public Powerline(IList<Coordinate> coordinates, int id, int year, double height, int voltage, int toID, int fromID)
    
            {
                this.Coordinates = coordinates;
                this.Identifier = id;
                this.Year = year;
                this.Height = height;
    
                this.Voltage = voltage;
    
                this.IsBroken = false;
                this.IsON = false;
                this.PointFromID = fromID;
                this.PointToID = toID;
    
                this.CheckValue();
    
            }
            /// <summary>
            /// проверка валидности полей
            /// </summary>
            /// <returns></returns>
    
            private void CheckValue()
    
                if (Identifier < 0)
                { 
                    throw new System.ArgumentOutOfRangeException("Identifier", Identifier, "Expected >0"); 
                }
                if (Year > 2050 || Year < 1900)
                {
                    throw new System.ArgumentOutOfRangeException("Year", Year, "Expected 1900<=Year<=2050");
                }
                if (Height <= 0 || Height > 50) 
                {
                    throw new System.ArgumentOutOfRangeException("Height", Height, "Expected 0<Height<=50"); 
                }
                if (Voltage <= 0 || Voltage > 1500)
                { 
                    throw new System.ArgumentOutOfRangeException("Voltage", Voltage, "Expected 0<Voltage<=1500");
                }
                if (PointFromID < 0)
                {
                    throw new System.ArgumentOutOfRangeException("PointFromID", PointFromID, "Expected >0");
                }
                if (PointToID < 0)
                {
                    throw new System.ArgumentOutOfRangeException("PointToID", PointToID, "Expected >0"); 
                }