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 156c756c authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

adding reference rpm value for torque converter data

parent a13c0e2e
No related branches found
No related tags found
No related merge requests found
......@@ -11,17 +11,17 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData
{
public class TorqueConverterDataReader
{
public static TorqueConverterData ReadFromFile(string filename)
public static TorqueConverterData ReadFromFile(string filename, PerSecond referenceRpm)
{
return Create(VectoCSVFile.Read(filename));
return Create(VectoCSVFile.Read(filename), referenceRpm);
}
public static TorqueConverterData ReadFromStream(Stream stream)
public static TorqueConverterData ReadFromStream(Stream stream, PerSecond referenceRpm)
{
return Create(VectoCSVFile.ReadStream(stream));
return Create(VectoCSVFile.ReadStream(stream), referenceRpm);
}
public static TorqueConverterData Create(DataTable data)
public static TorqueConverterData Create(DataTable data, PerSecond referenceRpm)
{
if (data.Columns.Count != 3) {
throw new VectoException("TorqueConverter Characteristics data must consist of 3 columns");
......@@ -48,7 +48,7 @@ namespace TUGraz.VectoCore.InputData.Reader.ComponentData
TorqueRatio = row.ParseDouble(1)
}).ToList();
}
return new TorqueConverterData(characteristicTorque);
return new TorqueConverterData(characteristicTorque, referenceRpm);
}
private static bool HeaderIsValid(DataColumnCollection columns)
......
......@@ -31,30 +31,30 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using iTextSharp.text.pdf.codec;
using TUGraz.VectoCommon.Exceptions;
using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.Utils;
namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox
{
public class TorqueConverterData
{
public List<TorqueConverterEntry> TorqueConverterEntries;
protected List<TorqueConverterEntry> TorqueConverterEntries;
protected internal TorqueConverterData(List<TorqueConverterEntry> torqueConverterEntries)
protected PerSecond ReferenceSpeed;
protected internal TorqueConverterData(List<TorqueConverterEntry> torqueConverterEntries, PerSecond referenceSpeed)
{
TorqueConverterEntries = torqueConverterEntries;
ReferenceSpeed = referenceSpeed;
}
public void GetInputTorqueAndAngularSpeed(NewtonMeter torqueOut, PerSecond angularSpeedOut, out NewtonMeter torqueIn,
out PerSecond angularSpeedIn)
{
var solutions = new List<double>();
var mpNorm = 1000.RPMtoRad().Value();
var mpNorm = ReferenceSpeed.Value();
// Find analytic solution for torque converter operating point
// mu = f(nu) = f(n_out / n_in) = T_out / T_in
......@@ -82,7 +82,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox
solutions.AddRange(selected);
}
if (solutions.Count == 0) {
throw new VectoException("No solution for input torque/input speed found! n_out: {0}, tq_out: {1}", angularSpeedOut, torqueOut);
throw new VectoException("No solution for input torque/input speed found! n_out: {0}, tq_out: {1}", angularSpeedOut,
torqueOut);
}
angularSpeedIn = solutions.Min().SI<PerSecond>();
......@@ -94,8 +95,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox
{
int index;
TorqueConverterEntries.GetSection(x => x.SpeedRatio > nu, out index);
var muEdge = Edge.Create(new Point(TorqueConverterEntries[index].SpeedRatio, TorqueConverterEntries[index].TorqueRatio),
new Point(TorqueConverterEntries[index + 1].SpeedRatio, TorqueConverterEntries[index + 1].TorqueRatio));
var muEdge =
Edge.Create(new Point(TorqueConverterEntries[index].SpeedRatio, TorqueConverterEntries[index].TorqueRatio),
new Point(TorqueConverterEntries[index + 1].SpeedRatio, TorqueConverterEntries[index + 1].TorqueRatio));
return muEdge.SlopeXY * nu + muEdge.OffsetXY;
}
}
......
......@@ -150,7 +150,6 @@
<Compile Include="Models\Declaration\Segments.cs" />
<Compile Include="Models\Declaration\StandardBodies.cs" />
<Compile Include="Models\Declaration\SteeringPump.cs" />
<Compile Include="Models\Declaration\TorqueConverter.cs" />
<Compile Include="Models\Declaration\VehicleClass.cs" />
<Compile Include="Models\Declaration\Wheels.cs" />
<Compile Include="Models\Declaration\WHTCCorrection.cs" />
......@@ -313,7 +312,6 @@
<EmbeddedResource Include="Resources\Declaration\VAUX\PS-Table.csv" />
<EmbeddedResource Include="Resources\Declaration\VAUX\SP-Table.csv" />
<EmbeddedResource Include="Resources\Declaration\VAUX\SP-Tech.csv" />
<EmbeddedResource Include="Resources\Declaration\DefaultTC.vtcc" />
<EmbeddedResource Include="Resources\Declaration\VCDV\parameters.csv" />
<EmbeddedResource Include="Resources\Declaration\WHTC-Weighting-Factors.csv" />
<EmbeddedResource Include="Resources\Declaration\VAUX\ALT-Tech.csv" />
......
......@@ -42,7 +42,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
var tqData =
TorqueConverterDataReader.ReadFromStream(InputDataHelper.InputDataAsStream("Speed Ratio, Torque Ratio,MP1000",
tqInput));
tqInput), 1000.RPMtoRad());
PerSecond inAngularSpeed;
NewtonMeter inTorque;
......@@ -91,7 +91,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData
var tqData =
TorqueConverterDataReader.ReadFromStream(InputDataHelper.InputDataAsStream("Speed Ratio, Torque Ratio,MP1000",
tqInput));
tqInput), 1000.RPMtoRad());
PerSecond inAngularSpeed;
NewtonMeter inTorque;
......
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