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

Set model name and digest value for torque converter data (missing in manufacturer report)

parent 66df1b0f
No related branches found
No related tags found
No related merge requests found
......@@ -29,32 +29,32 @@
* Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology
*/
using TUGraz.IVT.VectoXML;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Resources;
namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
{
public class XMLDeclarationTorqueConverterDataProvider : AbstractDeclarationXMLComponentDataProvider,
ITorqueConverterDeclarationInputData
{
public XMLDeclarationTorqueConverterDataProvider(XMLDeclarationInputDataProvider xmlInputDataProvider)
: base(xmlInputDataProvider)
{
XBasePath = Helper.Query(VehiclePath,
XMLNames.Vehicle_Components,
XMLNames.Component_Gearbox,
XMLNames.Component_TorqueConverter,
XMLNames.ComponentDataWrapper);
}
public TableData TCData
{
get
{
return ReadTableData(AttributeMappings.TorqueConverterDataMapping,
Helper.Query(XMLNames.TorqueConverter_Characteristics, XMLNames.TorqueConverter_Characteristics_Entry));
}
}
}
using TUGraz.IVT.VectoXML;
using TUGraz.VectoCommon.InputData;
using TUGraz.VectoCommon.Resources;
namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration
{
public class XMLDeclarationTorqueConverterDataProvider : AbstractDeclarationXMLComponentDataProvider,
ITorqueConverterDeclarationInputData
{
public XMLDeclarationTorqueConverterDataProvider(XMLDeclarationInputDataProvider xmlInputDataProvider)
: base(xmlInputDataProvider)
{
XBasePath = Helper.Query(VehiclePath,
XMLNames.Vehicle_Components,
XMLNames.Component_Gearbox,
XMLNames.Component_TorqueConverter,
XMLNames.ComponentDataWrapper);
}
public TableData TCData
{
get
{
return ReadTableData(AttributeMappings.TorqueConverterDataMapping,
Helper.Query(XMLNames.TorqueConverter_Characteristics, XMLNames.TorqueConverter_Characteristics_Entry));
}
}
}
}
\ No newline at end of file
......@@ -29,94 +29,94 @@
* Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology
*/
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using TUGraz.VectoCommon.Exceptions;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.Models.Declaration;
using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox;
using TUGraz.VectoCore.Utils;
namespace TUGraz.VectoCore.InputData.Reader.ComponentData
{
public static class TorqueConverterDataReader
{
public static TorqueConverterData ReadFromFile(string filename, PerSecond referenceRpm, PerSecond maxRpm,
ExecutionMode mode, double ratio, MeterPerSquareSecond lcMinAcceleration, MeterPerSquareSecond ccMinAcceleration)
{
return Create(VectoCSVFile.Read(filename), referenceRpm, maxRpm, mode, ratio, lcMinAcceleration, ccMinAcceleration);
}
public static TorqueConverterData ReadFromStream(Stream stream, PerSecond referenceRpm, PerSecond maxRpm,
ExecutionMode mode, double ratio, MeterPerSquareSecond lcMinAcceleration, MeterPerSquareSecond ccMinAcceleration)
{
return Create(VectoCSVFile.ReadStream(stream), referenceRpm, maxRpm, mode, ratio, lcMinAcceleration,
ccMinAcceleration);
}
public static TorqueConverterData Create(DataTable data, PerSecond referenceRpm, PerSecond maxRpm, ExecutionMode mode,
double ratio, MeterPerSquareSecond lcMinAcceleration, MeterPerSquareSecond ccMinAcceleration)
{
if (data == null) {
throw new VectoException("TorqueConverter Characteristics data is missing.");
}
if (data.Columns.Count != 3) {
throw new VectoException("TorqueConverter Characteristics data must consist of 3 columns");
}
if (data.Rows.Count < 2) {
throw new VectoException("TorqueConverter Characteristics data must contain at least 2 lines with numeric values");
}
IEnumerable<TorqueConverterEntry> characteristicTorque;
if (HeaderIsValid(data.Columns)) {
characteristicTorque = (from DataRow row in data.Rows
select
new TorqueConverterEntry() {
SpeedRatio = row.ParseDouble(Fields.SpeedRatio),
Torque = row.ParseDouble(Fields.CharacteristicTorque).SI<NewtonMeter>(),
TorqueRatio = row.ParseDouble(Fields.TorqueRatio)
}).ToArray();
} else {
characteristicTorque = (from DataRow row in data.Rows
select
new TorqueConverterEntry() {
SpeedRatio = row.ParseDouble(0),
Torque = row.ParseDouble(2).SI<NewtonMeter>(),
TorqueRatio = row.ParseDouble(1)
}).ToArray();
}
if (mode == ExecutionMode.Declaration) {
var tcDrag = DeclarationData.TorqueConverter.GetTorqueConverterDragCurve(ratio).Last();
characteristicTorque =
characteristicTorque.Where(x => x.SpeedRatio < tcDrag.SpeedRatio)
.Concat(new[] { tcDrag })
.ToArray();
} else {
if (!characteristicTorque.Any(x => x.SpeedRatio > ratio)) {
characteristicTorque =
characteristicTorque.Where(x => x.SpeedRatio < ratio)
.Concat(DeclarationData.TorqueConverter.GetTorqueConverterDragCurve(ratio))
.ToArray();
}
}
return new TorqueConverterData(characteristicTorque, referenceRpm, maxRpm, lcMinAcceleration, ccMinAcceleration);
}
private static bool HeaderIsValid(DataColumnCollection columns)
{
return columns.Contains(Fields.SpeedRatio) && columns.Contains(Fields.TorqueRatio) &&
columns.Contains(Fields.CharacteristicTorque);
}
public static class Fields
{
public const string SpeedRatio = "Speed Ratio";
public const string TorqueRatio = "Torque Ratio";
public const string CharacteristicTorque = "MP1000";
}
}
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using TUGraz.VectoCommon.Exceptions;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.Models.Declaration;
using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox;
using TUGraz.VectoCore.Utils;
namespace TUGraz.VectoCore.InputData.Reader.ComponentData
{
public static class TorqueConverterDataReader
{
public static TorqueConverterData ReadFromFile(string filename, PerSecond referenceRpm, PerSecond maxRpm,
ExecutionMode mode, double ratio, MeterPerSquareSecond lcMinAcceleration, MeterPerSquareSecond ccMinAcceleration)
{
return Create(VectoCSVFile.Read(filename), referenceRpm, maxRpm, mode, ratio, lcMinAcceleration, ccMinAcceleration);
}
public static TorqueConverterData ReadFromStream(Stream stream, PerSecond referenceRpm, PerSecond maxRpm,
ExecutionMode mode, double ratio, MeterPerSquareSecond lcMinAcceleration, MeterPerSquareSecond ccMinAcceleration)
{
return Create(VectoCSVFile.ReadStream(stream), referenceRpm, maxRpm, mode, ratio, lcMinAcceleration,
ccMinAcceleration);
}
public static TorqueConverterData Create(DataTable data, PerSecond referenceRpm, PerSecond maxRpm, ExecutionMode mode,
double ratio, MeterPerSquareSecond lcMinAcceleration, MeterPerSquareSecond ccMinAcceleration)
{
if (data == null) {
throw new VectoException("TorqueConverter Characteristics data is missing.");
}
if (data.Columns.Count != 3) {
throw new VectoException("TorqueConverter Characteristics data must consist of 3 columns");
}
if (data.Rows.Count < 2) {
throw new VectoException("TorqueConverter Characteristics data must contain at least 2 lines with numeric values");
}
IEnumerable<TorqueConverterEntry> characteristicTorque;
if (HeaderIsValid(data.Columns)) {
characteristicTorque = (from DataRow row in data.Rows
select
new TorqueConverterEntry() {
SpeedRatio = row.ParseDouble(Fields.SpeedRatio),
Torque = row.ParseDouble(Fields.CharacteristicTorque).SI<NewtonMeter>(),
TorqueRatio = row.ParseDouble(Fields.TorqueRatio)
}).ToArray();
} else {
characteristicTorque = (from DataRow row in data.Rows
select
new TorqueConverterEntry() {
SpeedRatio = row.ParseDouble(0),
Torque = row.ParseDouble(2).SI<NewtonMeter>(),
TorqueRatio = row.ParseDouble(1)
}).ToArray();
}
if (mode == ExecutionMode.Declaration) {
var tcDrag = DeclarationData.TorqueConverter.GetTorqueConverterDragCurve(ratio).Last();
characteristicTorque =
characteristicTorque.Where(x => x.SpeedRatio < tcDrag.SpeedRatio)
.Concat(new[] { tcDrag })
.ToArray();
} else {
if (!characteristicTorque.Any(x => x.SpeedRatio > ratio)) {
characteristicTorque =
characteristicTorque.Where(x => x.SpeedRatio < ratio)
.Concat(DeclarationData.TorqueConverter.GetTorqueConverterDragCurve(ratio))
.ToArray();
}
}
return new TorqueConverterData(characteristicTorque, referenceRpm, maxRpm, lcMinAcceleration, ccMinAcceleration);
}
private static bool HeaderIsValid(DataColumnCollection columns)
{
return columns.Contains(Fields.SpeedRatio) && columns.Contains(Fields.TorqueRatio) &&
columns.Contains(Fields.CharacteristicTorque);
}
public static class Fields
{
public const string SpeedRatio = "Speed Ratio";
public const string TorqueRatio = "Torque Ratio";
public const string CharacteristicTorque = "MP1000";
}
}
}
\ No newline at end of file
......@@ -255,6 +255,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter
DeclarationData.TorqueConverter.ReferenceRPM, DeclarationData.TorqueConverter.MaxInputSpeed,
ExecutionMode.Declaration, ratio,
DeclarationData.TorqueConverter.CLUpshiftMinAcceleration, DeclarationData.TorqueConverter.CCUpshiftMinAcceleration);
retVal.TorqueConverterData.ModelName = gearbox.TorqueConverter.Model;
retVal.TorqueConverterData.DigestValueInput = gearbox.TorqueConverter.DigestValue.DigestValue;
}
return retVal;
......
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