Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS will be completely phased out by mid-2025. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit dd0a0156 authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

Merge branch 'develop' into bugfix/VECTO-557-engine-speed-simulated-too-high

parents 84e03f48 262fa464
No related branches found
No related tags found
No related merge requests found
......@@ -29,101 +29,102 @@
* Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology
*/
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.Configuration;
using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine;
namespace TUGraz.VectoCore.Models.SimulationComponent.Data
{
[CustomValidation(typeof(CombustionEngineData), "ValidateData")]
public class CombustionEngineData : SimulationComponentData
{
[Required, SIRange(1000 * 1E-6, 20000 * 1E-6)]
public CubicMeter Displacement { get; internal set; }
[Required, SIRange(400 * Constants.RPMToRad, 1000 * Constants.RPMToRad)]
public PerSecond IdleSpeed { get; internal set; }
[Required, SIRange(0, 10)]
public KilogramSquareMeter Inertia { get; internal set; }
[Required, Range(0.9, 2)]
public double WHTCUrban { get; internal set; }
[Required, Range(0.9, 2)]
public double WHTCRural { get; internal set; }
[Required, Range(0.9, 2)]
public double WHTCMotorway { get; internal set; }
[Required, ValidateObject]
public FuelConsumptionMap ConsumptionMap { get; internal set; }
[Required, ValidateObject]
public Dictionary<uint, EngineFullLoadCurve> FullLoadCurves { get; internal set; }
[Required, Range(double.MinValue, double.MaxValue)]
public double ColdHotCorrectionFactor { get; internal set; }
[Required, Range(double.MinValue, double.MaxValue)]
public double CorrectionFactorRegPer { get; internal set; }
[Required, Range(double.MinValue, double.MaxValue)]
public double CorrectionFactorNCV { get; internal set; }
public double FuelConsumptionCorrectionFactor { get; internal set; }
public PerSecond RatedSpeedDeclared { get; internal set; }
public Watt RatedPowerDeclared { get; internal set; }
public NewtonMeter MaxTorqueDeclared { get; internal set; }
public FuelType FuelType { get; internal set; }
public CombustionEngineData()
{
WHTCUrban = 1;
WHTCMotorway = 1;
WHTCRural = 1;
CorrectionFactorNCV = 1;
CorrectionFactorRegPer = 1;
FuelConsumptionCorrectionFactor = 1;
}
public CombustionEngineData Copy()
{
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.Configuration;
using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine;
namespace TUGraz.VectoCore.Models.SimulationComponent.Data
{
[CustomValidation(typeof(CombustionEngineData), "ValidateData")]
public class CombustionEngineData : SimulationComponentData
{
[Required, SIRange(1000 * 1E-6, 20000 * 1E-6)]
public CubicMeter Displacement { get; internal set; }
[Required, SIRange(400 * Constants.RPMToRad, 1000 * Constants.RPMToRad)]
public PerSecond IdleSpeed { get; internal set; }
[Required, SIRange(0, 10)]
public KilogramSquareMeter Inertia { get; internal set; }
[Required, Range(0.9, 2)]
public double WHTCUrban { get; internal set; }
[Required, Range(0.9, 2)]
public double WHTCRural { get; internal set; }
[Required, Range(0.9, 2)]
public double WHTCMotorway { get; internal set; }
[Required, ValidateObject]
public FuelConsumptionMap ConsumptionMap { get; internal set; }
[Required, ValidateObject]
public Dictionary<uint, EngineFullLoadCurve> FullLoadCurves { get; internal set; }
[Required, Range(double.MinValue, double.MaxValue)]
public double ColdHotCorrectionFactor { get; internal set; }
[Required, Range(double.MinValue, double.MaxValue)]
public double CorrectionFactorRegPer { get; internal set; }
[Required, Range(double.MinValue, double.MaxValue)]
public double CorrectionFactorNCV { get; internal set; }
public double FuelConsumptionCorrectionFactor { get; internal set; }
public PerSecond RatedSpeedDeclared { get; internal set; }
public Watt RatedPowerDeclared { get; internal set; }
public NewtonMeter MaxTorqueDeclared { get; internal set; }
public FuelType FuelType { get; internal set; }
public CombustionEngineData()
{
WHTCUrban = 1;
WHTCMotorway = 1;
WHTCRural = 1;
CorrectionFactorNCV = 1;
CorrectionFactorRegPer = 1;
FuelConsumptionCorrectionFactor = 1;
}
public CombustionEngineData Copy()
{
return new CombustionEngineData {
Manufacturer = Manufacturer,
ModelName = ModelName,
Displacement = Displacement,
IdleSpeed = IdleSpeed,
Inertia = Inertia,
WHTCUrban = WHTCUrban,
WHTCRural = WHTCRural,
WHTCMotorway = WHTCMotorway,
ConsumptionMap = ConsumptionMap,
FullLoadCurves = FullLoadCurves,
CorrectionFactorRegPer = CorrectionFactorRegPer,
CorrectionFactorNCV = CorrectionFactorNCV,
FuelConsumptionCorrectionFactor = FuelConsumptionCorrectionFactor,
RatedPowerDeclared = RatedPowerDeclared,
RatedSpeedDeclared = RatedSpeedDeclared,
MaxTorqueDeclared = MaxTorqueDeclared,
FuelType = FuelType
};
}
// ReSharper disable once UnusedMember.Global -- used in CustomValidation
public static ValidationResult ValidateData(CombustionEngineData data, ValidationContext context)
{
if (data.Inertia.IsEqual(0)) {
LogManager.GetLogger(typeof(CombustionEngineData).FullName).Error("Warning: Engine Inertia is 0!");
}
return ValidationResult.Success;
}
}
}
\ No newline at end of file
ModelName = ModelName,
Displacement = Displacement,
IdleSpeed = IdleSpeed,
Inertia = Inertia,
WHTCUrban = WHTCUrban,
WHTCRural = WHTCRural,
WHTCMotorway = WHTCMotorway,
ConsumptionMap = ConsumptionMap,
FullLoadCurves = FullLoadCurves,
CorrectionFactorRegPer = CorrectionFactorRegPer,
CorrectionFactorNCV = CorrectionFactorNCV,
ColdHotCorrectionFactor = ColdHotCorrectionFactor,
FuelConsumptionCorrectionFactor = FuelConsumptionCorrectionFactor,
RatedPowerDeclared = RatedPowerDeclared,
RatedSpeedDeclared = RatedSpeedDeclared,
MaxTorqueDeclared = MaxTorqueDeclared,
FuelType = FuelType
};
}
// ReSharper disable once UnusedMember.Global -- used in CustomValidation
public static ValidationResult ValidateData(CombustionEngineData data, ValidationContext context)
{
if (data.Inertia.IsEqual(0)) {
LogManager.GetLogger(typeof(CombustionEngineData).FullName).Error("Warning: Engine Inertia is 0!");
}
return ValidationResult.Success;
}
}
}
......@@ -199,6 +199,12 @@ namespace TUGraz.VectoCore.Tests.Reports
Assert.AreEqual(dataProvider.GearboxInputData.Model, sumRow[SummaryDataContainer.GEARBOX_MODEL]);
Assert.AreEqual(dataProvider.AxleGearInputData.Manufacturer, sumRow[SummaryDataContainer.AXLE_MANUFACTURER]);
Assert.AreEqual(dataProvider.AxleGearInputData.Model, sumRow[SummaryDataContainer.AXLE_MODEL]);
Assert.AreEqual(dataProvider.EngineInputData.ColdHotBalancingFactor, sumRow[SummaryDataContainer.ENGINE_BF_COLD_HOT]);
Assert.AreEqual(dataProvider.EngineInputData.CorrectionFactorRegPer, sumRow[SummaryDataContainer.ENGINE_CF_REG_PER]);
Assert.AreEqual(dataProvider.EngineInputData.WHTCRural, sumRow[SummaryDataContainer.ENGINE_WHTC_RURAL]);
Assert.AreEqual(dataProvider.EngineInputData.WHTCUrban, sumRow[SummaryDataContainer.ENGINE_WHTC_URBAN]);
Assert.AreEqual(dataProvider.EngineInputData.WHTCMotorway, sumRow[SummaryDataContainer.ENGINE_WHTC_MOTORWAY]);
}
}
}
\ No newline at end of file
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment