Newer
Older
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, m/s
/// скорость ветра повторяемости один раз в 5 лет, м/с
/// </summary>
public double Wind5;
/// <summary>
/// once-in-10-years frequency wind, m/s
/// скорость ветра повторяемости один раз в 10 лет, м/с
/// </summary>
public double Wind10 { get; private set; }
/// <summary>
/// once-in-15-years frequency wind, m/s
/// скорость ветра повторяемости один раз в 15 лет, м/с
/// </summary>
public double Wind15 { get; private set; }
/// <summary>
/// once-in-25-years frequency wind, 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;
if (!(this.CheckValue()))
{
throw new System.ArgumentException("Climate wind value is not correct");
}
}
/// <summary>
/// Провекра валидности полей класса
/// </summary>
/// <returns></returns>
public bool CheckValue()
{
double w5 = Wind5;
double w10 = Wind10;
double w15 = Wind15;
if (Double.IsNaN(w5)) // if is Nan - zerofied it.
{
w5 = 0;
}
if (Double.IsNaN(w10))
{
w10 = 0;
}
if (Double.IsNaN(w15))
{
w15 = 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"); }
return w5 >=0 && w5 < 70 && w10 >=0 && w10 < 70 && w15 >= 0 && w15 < 70 && w25 >= 0 && w25 < 70;