PHEMlightdll.CEP.GetNormedEmission C# (CSharp) Method

GetNormedEmission() public method

public GetNormedEmission ( string pollutant, double power, double speed, System.Helpers VehicleClass ) : double
pollutant string
power double
speed double
VehicleClass System.Helpers
return double
        public double GetNormedEmission(string pollutant, double power, double speed, Helpers VehicleClass)
        {
            //Declaration
            List<double> emissionCurve;
            List<double> powerPattern;

            // bisection search to find correct position in power pattern	
            int upperIndex;
            int lowerIndex;

            if (pollutant == "FC")
            {
                emissionCurve = _normedCepCurveFC;
                powerPattern = _normalizedPowerPatternFC;
            }
            else
            {
                if (!_cepCurvePollutants.ContainsKey(pollutant))
                {
                    VehicleClass.ErrMsg = "Emission pollutant " + pollutant + " not found!";
                    return 0;
                }
                emissionCurve = _cepNormalizedCurvePollutants[pollutant];
                powerPattern = _normailzedPowerPatternPollutants;
            }

            if (emissionCurve.Count == 0)
            {
                VehicleClass.ErrMsg = "Empty emission curve for " + pollutant + " found!";
                return 0;
            }
            if (emissionCurve.Count == 1)
            {
                return emissionCurve[0];
            }
            // in case that the demanded power is smaller than the first entry (smallest) in the power pattern the first is returned (should never happen)
            if (power <= powerPattern.First())
            {
                return emissionCurve[0];
            }

            // if power bigger than all entries in power pattern the last is returned (should never happen)
            if (power >= powerPattern.Last())
            {
                return emissionCurve.Last();
            }

            FindLowerUpperInPattern(out lowerIndex, out upperIndex, powerPattern, power);
            return Interpolate(power, powerPattern[lowerIndex], powerPattern[upperIndex], emissionCurve[lowerIndex], emissionCurve[upperIndex]);
        }
        #endregion