public static CEP operator *(CEP cp1, double d)
{
#region SingleValues
CEP newCEP = new CEP(cp1.HeavyVehicle,
d * cp1._massVehicle,
d * cp1._vehicleLoading,
d * cp1._vehicleMassRot,
d * cp1._crossSectionalArea,
d * cp1._cWValue,
d * cp1._resistanceF0,
d * cp1._resistanceF1,
d * cp1._resistanceF2,
d * cp1._resistanceF3,
d * cp1._resistanceF4,
d * cp1._axleRatio,
d * cp1._auxPower,
d * cp1._ratedPower,
d * cp1._engineIdlingSpeed,
d * cp1._engineRatedSpeed,
d * cp1._effectiveWheelDiameter,
d * cp1._pNormV0,
d * cp1._pNormP0,
d * cp1._pNormV1,
d * cp1._pNormP1);
newCEP._fuelType = cp1.FuelType;
#endregion
#region SpeedRotationalTable
newCEP._speedPatternRotational = new List<double>(cp1._speedPatternRotational);
newCEP._speedCurveRotational = new List<double>(cp1._speedCurveRotational.Select(p => p * d));
newCEP._gearTransmissionCurve = new List<double>(cp1._gearTransmissionCurve.Select(p => p * d));
#endregion
#region NormalizingPower
newCEP._drivingPower = newCEP.CalcPower(Constants.NORMALIZING_SPEED, Constants.NORMALIZING_ACCELARATION, 0);
if (newCEP._heavyVehicle)
{
newCEP._normalizingPower = newCEP._ratedPower;
newCEP._normalizingType = NormalizingType.RatedPower;
}
else
{
newCEP._normalizingPower = newCEP._drivingPower;
newCEP._normalizingType = NormalizingType.DrivingPower;
}
#endregion
#region FC
newCEP._powerPatternFC = new List<double>(cp1._powerPatternFC.Select(p => p * d));
newCEP._normalizedPowerPatternFC = new List<double>(cp1._normalizedPowerPatternFC);
newCEP._cepCurveFC = new List<double>(cp1._cepCurveFC.Select(p => p * d));
newCEP._normedCepCurveFC = new List<double>(cp1._normedCepCurveFC.Select(p => p * d));
#endregion
#region Pollutants
newCEP._powerPatternPollutants = new List<double>(cp1._normailzedPowerPatternPollutants.Select(p => p * newCEP._normalizingPower));
newCEP._normailzedPowerPatternPollutants = new List<double>(cp1._normailzedPowerPatternPollutants);
newCEP._cepCurvePollutants = new Dictionary<string, List<double>>();
newCEP._cepNormalizedCurvePollutants = new Dictionary<string, List<double>>();
foreach (string id in cp1._cepCurvePollutants.Keys)
{
newCEP._cepCurvePollutants.Add(id, new List<double>(cp1._cepCurvePollutants[id].Select(p => p * d)));
newCEP._cepNormalizedCurvePollutants.Add(id, new List<double>(cp1._cepNormalizedCurvePollutants[id].Select(p => p * d)));
}
#endregion
#region IdlingValues
newCEP._idlingValueFC = cp1._idlingValueFC * d;
newCEP._idlingValuesPollutants = new Dictionary<string, double>();
foreach (string id in cp1._idlingValuesPollutants.Keys)
{
newCEP._idlingValuesPollutants.Add(id,
cp1._idlingValuesPollutants[id] * d);
}
#endregion
#region DragTable
newCEP._nNormTable = new List<double>(cp1._nNormTable);
newCEP._dragNormTable = new List<double>(cp1._dragNormTable.Select(p => p * d));
#endregion
return newCEP;
}