private static Cell CreateCell(InitialCell initialCell)
        {
            var cell = new Cell
            {
                Density           = initialCell.Density,
                MolarMass         = initialCell.MolarMass,
                HeatCapacityRatio = initialCell.HeatCapacityRatio,
                Temperature       = initialCell.Temperature,
                Size  = initialCell.Size,
                Speed = 0
            };

            cell.Pressure       = GasDynUtils.GetPressure(cell.Density, cell.MolarMass, cell.Temperature);
            cell.InternalEnergy = GasDynUtils.GetInternalEnergy(cell.Pressure, cell.Density,
                                                                cell.HeatCapacityRatio, cell.Speed);

            return(cell);
        }
        public static Cell CreateNewExternalCell(Cell oldExternalCell, Cell oldCellPrev, double deltaTime)
        {
            var newExternalCell = new Cell
            {
                Density           = oldExternalCell.Density,
                HeatCapacityRatio = oldExternalCell.HeatCapacityRatio,
                MolarMass         = oldExternalCell.MolarMass,
                Size        = oldExternalCell.Size,
                Pressure    = oldExternalCell.Pressure,
                Temperature = oldExternalCell.Temperature,
                Speed       = oldExternalCell.Speed
            };

            newExternalCell.InternalEnergy = GasDynUtils.GetNewInternalEnergy(oldExternalCell.InternalEnergy,
                                                                              oldExternalCell.Pressure, 0, oldCellPrev.Pressure, oldExternalCell.Speed, 0,
                                                                              oldCellPrev.Speed, oldExternalCell.Density, oldExternalCell.Size, deltaTime);

            return(newExternalCell);
        }
        public static Cell CreateNewCell(Cell oldCell, Cell oldCellPrev, Cell oldCellNext, double deltaTime)
        {
            var newCell = new Cell
            {
                Density           = oldCell.Density,
                HeatCapacityRatio = oldCell.HeatCapacityRatio,
                MolarMass         = oldCell.MolarMass,
                Size = oldCell.Size
            };

            newCell.Speed = GasDynUtils.GetNewSpeed(oldCell.Speed, oldCell.Pressure, oldCellNext.Pressure,
                                                    oldCellPrev.Pressure, oldCell.Density, oldCell.Size, deltaTime);

            newCell.InternalEnergy = GasDynUtils.GetNewInternalEnergy(oldCell.InternalEnergy, oldCell.Pressure,
                                                                      oldCellNext.Pressure, oldCellPrev.Pressure, oldCell.Speed, oldCellNext.Speed,
                                                                      oldCellPrev.Speed, oldCell.Density, oldCell.Size, deltaTime);

            newCell.Pressure = GasDynUtils.GetPressure(newCell.Density, newCell.InternalEnergy, newCell.Speed,
                                                       newCell.HeatCapacityRatio);

            newCell.Temperature = GasDynUtils.GetTemperature(newCell.MolarMass, newCell.Pressure, newCell.Density);

            return(newCell);
        }