public void Initialize(double dt)
        {
            Data.Clear();
            ControlSystemDataSample dataSample;

            if (mode == ControlSystemMode.OpenLoop)
            {
                dataSample = ControlSystemDataSample.FromOpenSample(openScheme.Initialize(0d, dt));
                Data.Add(dataSample);
            }
            else
            {
                dataSample = ControlSystemDataSample.FromCloseSample(closeScheme.Initialize(0d, dt));
                Data.Add(dataSample);
            }
        }
        public void NextIteration(double input, double time, double dt)
        {
            ControlSystemDataSample dataSample;

            if (mode == ControlSystemMode.OpenLoop)
            {
                var openData = openScheme.NextIteration(input, time, dt);
                dataSample = ControlSystemDataSample.FromOpenSample(openData);
            }
            else
            {
                double previousSystemOutput = Data.Last().systemOutput;
                var    closeData            = closeScheme.NextIteration(input, previousSystemOutput, time, dt);
                dataSample = ControlSystemDataSample.FromCloseSample(closeData);
            }
            Data.Add(dataSample);
        }