From e5e902f3b658c2b54010a21c470427b5e5caee09 Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Tue, 27 Sep 2016 16:03:08 +0200 Subject: [PATCH] more clear implementation of wheels class (confusion about dynamic tyre radius and wheel diameter), extending testcase --- .../DataObjectAdapter/DeclarationDataAdapter.cs | 2 +- .../VectoCore/Models/Declaration/DeclarationData.cs | 6 ------ VectoCore/VectoCore/Models/Declaration/Wheels.cs | 10 ++++++++-- .../Models/Declaration/DeclarationDataTest.cs | 11 ++++++----- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs index 783e7af47f..a4820e35cd 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapter.cs @@ -97,7 +97,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter retVal.CurbWeight += mission.BodyCurbWeight + mission.TrailerCurbWeight; retVal.Loading = loading; retVal.DynamicTyreRadius = - DeclarationData.DynamicTyreRadius(data.Axles[DeclarationData.PoweredAxle()].Wheels); // TODO! + DeclarationData.Wheels.Lookup(data.Axles[DeclarationData.PoweredAxle()].Wheels).DynamicTyreRadius; // TODO! var aerodynamicDragArea = data.AirDragArea + mission.DeltaCdA; diff --git a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs index 1fd9e7bbf9..a43efdd042 100644 --- a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs +++ b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs @@ -89,12 +89,6 @@ namespace TUGraz.VectoCore.Models.Declaration get { return Instance()._electricSystem ?? (Instance()._electricSystem = new ElectricSystem()); } } - public static Meter DynamicTyreRadius(string wheels) - { - var wheelsEntry = Wheels.Lookup(wheels.RemoveWhitespace()); - return wheelsEntry.DynamicTyreRadius * wheelsEntry.CircumferenceFactor / (2 * Math.PI); - } - /// <summary> /// Formula for calculating the payload for a given gross vehicle weight. /// (so called "pc-formula", Whitebook Apr 2016, Part 1, p.187) diff --git a/VectoCore/VectoCore/Models/Declaration/Wheels.cs b/VectoCore/VectoCore/Models/Declaration/Wheels.cs index d6d82850b5..8ca627c872 100644 --- a/VectoCore/VectoCore/Models/Declaration/Wheels.cs +++ b/VectoCore/VectoCore/Models/Declaration/Wheels.cs @@ -29,6 +29,7 @@ * Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology */ +using System; using System.Collections.Generic; using System.Data; using System.Linq; @@ -62,7 +63,7 @@ namespace TUGraz.VectoCore.Models.Declaration .Select(row => new Entry { WheelType = row.Field<string>(0).RemoveWhitespace(), Inertia = row.ParseDouble("inertia").SI<KilogramSquareMeter>(), - DynamicTyreRadius = row.ParseDouble("d").SI().Milli.Meter.Cast<Meter>(), + WheelsDiameter = row.ParseDouble("d").SI().Milli.Meter.Cast<Meter>(), CircumferenceFactor = row.ParseDouble("f") }).ToDictionary(e => e.WheelType); _dimensions = table.Rows.Cast<DataRow>().Select(row => row.Field<string>(0)).ToArray(); @@ -72,8 +73,13 @@ namespace TUGraz.VectoCore.Models.Declaration { public string WheelType; public KilogramSquareMeter Inertia; - public Meter DynamicTyreRadius; + public Meter WheelsDiameter; public double CircumferenceFactor; + + public Meter DynamicTyreRadius + { + get { return WheelsDiameter * CircumferenceFactor / (2 * Math.PI); } + } } public string[] GetWheelsDimensions() diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs index 8b6df9fe57..0bdaec17b2 100644 --- a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs +++ b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs @@ -60,16 +60,17 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration MissionType.Construction, }; - [TestCase("285/60 R22.5", 10.6, 0.914, 3.03), - TestCase("285/70 R19.5", 7.9, 0.895, 3.05), - TestCase("395/85 R20", 27.9, 1.18, 3.05)] - public void WheelDataTest(string wheels, double inertia, double dynamicRadius, double circumferenceFactor) + [TestCase("285/60 R22.5", 10.6, 0.914, 3.03, 0.440766), + TestCase("285/70 R19.5", 7.9, 0.895, 3.05, 0.434453), + TestCase("395/85 R20", 27.9, 1.18, 3.05, 0.572798)] + public void WheelDataTest(string wheels, double inertia, double wheelsDiameter, double circumferenceFactor, double expectedDynamicRadius) { var tmp = DeclarationData.Wheels.Lookup(wheels); AssertHelper.AreRelativeEqual(inertia, tmp.Inertia); - AssertHelper.AreRelativeEqual(dynamicRadius, tmp.DynamicTyreRadius); + AssertHelper.AreRelativeEqual(wheelsDiameter, tmp.WheelsDiameter); AssertHelper.AreRelativeEqual(circumferenceFactor, tmp.CircumferenceFactor); + Assert.AreEqual(expectedDynamicRadius, tmp.DynamicTyreRadius.Value(), 1e-6); } [ -- GitLab