/// <summary>
        /// Calculates the single DDA.
        /// </summary>
        /// <param name="waveLength">Length of the wave.</param>
        /// <param name="parameters">The parameters.</param>
        /// <returns>The single simulation result.</returns>
        public SimulationResult CalculateSingleDDA(
            SpectrumUnit waveLength,
            SimulationParameters parameters,
            double[] polarization)
        {
            Console.WriteLine("start wave" + waveLength.ToType(Simulation.Models.Enums.SpectrumUnitType.WaveLength));

            DispersionParameter dispersion =
                this.mediumManager.GetDispersionParameters(
                    waveLength,
                    parameters.WavePropagation);

            ComplexCoordinate[] e = this.getIncidentField(
                parameters.SystemConfig,
                parameters.IncidentMagnitude,
                dispersion);

            IMatrix <IMatrix <Complex> > a = this.buildMatrixA(
                parameters.SystemConfig,
                dispersion);

            ModernKDDAEntryPoint.OpenMPCGMethod(
                polarization.Length,
                CoordinateHelper.ConvertToPlainArrayMatrix(a),
                polarization,
                CoordinateHelper.ConvertToPlainArray(e));

            var result = new SimulationResult
            {
                Polarization  = CoordinateHelper.ConvertFromPlainArray(polarization),
                ElectricField = e
            };

            this.calculateCrossSectionExtinction(
                result,
                parameters,
                dispersion);
            Console.WriteLine("finish wave" + waveLength.ToType(Simulation.Models.Enums.SpectrumUnitType.WaveLength));
            return(result);
        }