Skip to content
Snippets Groups Projects
Program.cs 5.56 KiB
Newer Older
  • Learn to ignore specific revisions
  • using System;
    using System.Collections.Generic;
    
    
    namespace Mes_Wind_console
    {
        class Program
        {
            static void Main(string[] args)
    
            {
                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);
    
                        double vValue = -(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
    
                // create powerlines layer
    
                var powerlines = new List<Powerline>();
                Coordinate first = climateMatrix.Origin;
                const int numStations = 5;
    
                const double step = 100;
    
                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);
    
                    dummyline.Coordinates.Add(first);
    
                    var second = new Coordinate(first.X + step, first.Y - step);
    
                    dummyline.Coordinates.Add(second);
                    first = second;
                    powerlines.Add(dummyline);
                }
    
                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);
    
                Console.WriteLine("end");