public static void DistributeEnergy(this Grid grid, EnergySpreadType energySpreadType) { switch (energySpreadType) { case EnergySpreadType.Homogeniczna: { for (int i = 0; i < grid.Width; i++) { for (int j = 0; j < grid.Height; j++) { grid.Energy[i, j] = 5; } } break; } case EnergySpreadType.Heterogoniczna: { var borderCellsHelper = new BorderCellsHelpers(); var borderCells = borderCellsHelper.GetBorderCells(grid); Parallel.ForEach(borderCells, (cell) => { grid.Energy[cell.X, cell.Y] = 7; }); Parallel.ForEach(grid.CellsWhereBorderId, (cell) => { if (grid.Energy[cell.X, cell.Y] != 7) { grid.Energy[cell.X, cell.Y] = 2; } }); break; } } }
public static void DistributeEnergy(this Matrix matrix, EnergyDistributionType energyDistributionType) { switch (energyDistributionType) { case EnergyDistributionType.Homogenous: { for (int i = 0; i < matrix.Width; i++) { for (int j = 0; j < matrix.Height; j++) { matrix.Energy[i, j] = 5; } } break; } case EnergyDistributionType.Heterogenous: { var borderCellsHelper = new BorderCellsHelpers(); var borderCells = borderCellsHelper.GetBorderCells(matrix); Parallel.ForEach(borderCells, (cell) => { matrix.Energy[cell.X, cell.Y] = 7; }); Parallel.ForEach(matrix.CellsWOId, (cell) => { if (matrix.Energy[cell.X, cell.Y] != 7) { matrix.Energy[cell.X, cell.Y] = 2; } }); break; } } }
public static void AddInclusions(this Grid grid, int amount, int size, Inclusions type) { var borderCellsHelper = new BorderCellsHelpers(); var inclusionsHelper = new InclusionsHelper(); var borderCells = borderCellsHelper.GetBorderCells(grid); inclusionsHelper.AddInclusions(grid, amount, size, type, borderCells); }