Code development platform for open source projects from the European Union institutions

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

write copy cold-hot balancing factor to engine data instance

parent e32165ad
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;
}
}
}
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