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)) { w25 = 0; } // ветер по модулю не должен превышать 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"); } } } }