Newer
Older
using System;
using System.Collections.Generic;
namespace Mes_Wind_console
{
class Program
{
static void Main(string[] args)
{
Test();
}
static void Test()
{
const int rowCountPrognostic = 3;
const int colCountPrognostic = 3;
var prognosticMatrix = new Matrix<PrognosticCell> // TODO: Matrix Лишняя проверка Cells.Rank в RowsCount() / ColumnCount()?
{
Cells = new PrognosticCell[rowCountPrognostic, colCountPrognostic],
Size = new CellSize(500, 500),
Origin = new Coordinate(3555223.71, 5828444.07), // TODO: Coordinate в комментариях к полям - широта и долгота ?? done
};
// fill cells of prognostic matrix
for (int i = 0; i < rowCountPrognostic; i++)
{
for (int j = 0; j < colCountPrognostic; j++)
{
// Also you can use Double.NaN;
double uValue = 100 * (i + j * 10);
prognosticMatrix.Cells[i, j] = new PrognosticCell(uValue, vValue); // TODO: PrognosticCell комментарии к параметрам - размерность, про NaN
//Now we create climate raster class
const int rowCountClim = 3;
const int columnCountClim = 3;
var climateMatrix = new Matrix<ClimateCell>
{
Cells = new ClimateCell[rowCountClim, columnCountClim],
Size = new CellSize(500, 500),// TODO: CellSize названия width/height. DONE
Origin = new Coordinate(3555223.71, 5828444.07),
};
// fill cells of climate matrix
for (int i = 0; i < rowCountClim; i++)
{
for (int j = 0; j < columnCountClim; j++)
{
//add or substruct in range 0 - 27 to change what lines will be broken
climateMatrix.Cells[i, j] = new ClimateCell(5, 10, 15, 20); // TODO: ClimateCell комментарии к параметрам - размерность, про NaN. DONE
var powerlines = new List<Powerline>();
Coordinate first = climateMatrix.Origin;
const int numStations = 5;
for (int i = 0; i < numStations - 1; i++)
// TODO: Powerline и др. детализация сообщения об ошибке (какой параметр вышел за пределы и его значение). DONE
var dummyline = new Powerline(new List<Coordinate>(), 100 + i, 2000, 10, 330, i + 1, i);
var second = new Coordinate(first.X + step, first.Y - step);
dummyline.Coordinates.Add(second);
first = second;
powerlines.Add(dummyline);
}
//create Powerstation list
var powerpoints = new List<PowerStation>();
for (int i = 0; i < numStations; i++)
// TODO: PowerStation и др. соответствие названий полей и параметров конструкторов. DONE
// TODO: PowerStation проверка параметров на допустимый диапазон. DONE
powerpoints.Add(new PowerStation(
new Coordinate(climateMatrix.Origin.X + step * i, climateMatrix.Origin.X - step * i),
i,
String.Format("Station #{0}", i),
330, // TODO: PowerStation - название поля Voltage вместо Power?. DONE
((i == numStations - 1) ? PowerStation.StationType.Endstat : PowerStation.StationType.Pole), // TODO: StationType комментарии к значениям enum. Done
(i == 0)));
//Create a PRM_wind class and add all the properties from above
var prmwind = new StressPowerChecker();
var input = new Input
{
PowerLines = powerlines,
PowerStations = powerpoints,
// TODO: PrognosticCells/ClimateCells - требуется ли совпадение размеров и координат узлов двух данных матриц? Если требуется, то нужна проверка в CheckPower()
// DONE, не требуется.
PrognosticCells = prognosticMatrix,
ClimateCells = climateMatrix,
};
var output = prmwind.CheckPower(input);
foreach (var line in output.DisabledLines)
{
Console.WriteLine("disabled line identifier is {0}", line.Identifier);
foreach (var station in output.DisabledStations)
{
Console.WriteLine("disabled station identifier is {0}", station.Identifier);
foreach (var coordinate in output.SpectificCoordinates) // TODO: Название Output.Spectific -> Specific ?
{
Console.WriteLine("in coordinate ({0}; {1}) 35kV and less could be broken", coordinate.X, coordinate.Y);