Skip to content
Snippets Groups Projects
ClimateCell.cs 3.97 KiB
Newer Older
  • Learn to ignore specific revisions
  • using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace WindStressPRM
    {
        /// <summary>
        /// Cell obj for climate wind regular data
    
        /// Объект - ячейка поля модуля ветра определенной повторяемости на 10м на регулярной сетке
    
        /// </summary>
        public class ClimateCell
        {
            /// <summary>
    
            /// once-in-5-years frequency wind module, m/s 
            /// модуль скорости ветра с повторяемостью один раз в 5 лет, м/с
    
            /// </summary>
            public double Wind5;
            /// <summary>
    
            /// once-in-10-years frequency wind module, m/s
            /// модуль скорости ветра с повторяемостью один раз в 10 лет, м/с
    
            /// </summary>
            public double Wind10 { get; private set; }
            /// <summary>
    
            /// once-in-15-years frequency wind module, m/s
            /// модуль скорости ветра с повторяемостью один раз в 15 лет, м/с
    
            /// </summary>
            public double Wind15 { get; private set; }
            /// <summary>
    
            /// once-in-25-years frequency wind module, m/s
            /// модуль скорости ветра с повторяемостью один раз в 25 лет, м/с
    
            /// для ЛЭП, построенных после 1987 года.
            /// </summary>
            public double Wind25 { get; private set; }
            /// <summary>
    
            /// designated constructor, NaN интерпретируется как отсутствие значения параметра в ячейке.
    
            /// </summary>
            /// <param name="coord"></param>
    
            /// <param name="w5"> скорость ветра повторяемости один раз в 5 лет, м/с</param>
            /// <param name="w10"> скорость ветра повторяемости один раз в 10 лет, м/с</param>
            /// <param name="w15"> скорость ветра повторяемости один раз в 15 лет, м/с</param>
            /// <param name="w25"> скорость ветра повторяемости один раз в 25 лет, м/с (для ЛЭП постройки после 1986г)</param>
    
            public ClimateCell(double w5, double w10, double w15, double w25)
    
            {
                this.Wind5 = w5;
                this.Wind10 = w10;
                this.Wind15 = w15;
    
                this.Wind25 = w25;
    
                this.CheckValue();
    
            }
            /// <summary>
            /// Провекра валидности полей класса
            /// </summary>
            /// <returns></returns>
    
            private void CheckValue()
    
            {
                double w5 = Wind5;
                double w10 = Wind10;
                double w15 = Wind15;
    
                double w25 = Wind25;
    
                if (Double.IsNaN(w5)) // if is Nan - zerofied it.
                {
                    w5 = 0;
                }
                if (Double.IsNaN(w10))
                {
                    w10 = 0;
                }
                if (Double.IsNaN(w15))
                {
                    w15 = 0;
                }
    
                if (Double.IsNaN(w25)) 
    
                // ветер по модулю не должен превышать 70м/с
    
                if (w5 < 0 || w5 > 70)
                { 
                    throw new System.ArgumentOutOfRangeException("w5", w5, "Expected 0=<w5<70"); 
                }
                if (w10 < 0 || w10 > 70) 
                { 
                    throw new System.ArgumentOutOfRangeException("w10", w10, "Expected 0=<w10<70");
                }
                if (w15 < 0 || w15 > 70) 
                {
                    throw new System.ArgumentOutOfRangeException("w15", w15, "Expected 0=<w15<70");
                }
                if (w25 < 0 || w25 > 70) 
                {
                    throw new System.ArgumentOutOfRangeException("w25", w25, "Expected 0=<w25<70"); 
                }