diff --git a/VECTO/GUI/BatteryForm.vb b/VECTO/GUI/BatteryForm.vb index a09bde5f59111a5162cb83fb323881e61a4b619d..cf30bcab3743857266e033e96a92aaf45f4a4996 100644 --- a/VECTO/GUI/BatteryForm.vb +++ b/VECTO/GUI/BatteryForm.vb @@ -162,7 +162,7 @@ Public Class BatteryForm Dim inputData As IEngineeringInputDataProvider = TryCast(JSONInputDataFactory.ReadComponentData(file), IEngineeringInputDataProvider) - Dim reess as IREESSPackInputData = inputData.JobInputData.Vehicle.Components.ElectricStorage.REESSPack + Dim reess as IREESSPackInputData = inputData.JobInputData.Vehicle.Components.ElectricStorage.ElectricStorageElements.FirstOrDefault().REESSPack If Cfg.DeclMode <> reess.SavedInDeclarationMode Then Select Case WrongMode() @@ -266,10 +266,10 @@ Public Class BatteryForm End Select If AutoSendTo Then - If VehicleForm.Visible Then - If UCase(FileRepl(VehicleForm.tbBattery.Text, JobDir)) <> UCase(file) Then _ - VehicleForm.tbBattery.Text = GetFilenameWithoutDirectory(file, JobDir) - VectoJobForm.UpdatePic() + If REESSPAckDialog.Visible Then + If UCase(FileRepl(REESSPAckDialog.tbBattery.Text, JobDir)) <> UCase(file) Then _ + REESSPAckDialog.tbBattery.Text = GetFilenameWithoutDirectory(file, JobDir) + 'VectoJobForm.UpdatePic() End If End If diff --git a/VECTO/GUI/VehicleForm.Designer.vb b/VECTO/GUI/VehicleForm.Designer.vb index 2f4bd75b086a39b5eac27c9e362fb37b146b6380..c3b5b1058a7e9f77fcc2e6ab1b8351bcade4e5e5 100644 --- a/VECTO/GUI/VehicleForm.Designer.vb +++ b/VECTO/GUI/VehicleForm.Designer.vb @@ -138,23 +138,24 @@ Partial Class VehicleForm Me.Label23 = New System.Windows.Forms.Label() Me.tpElectricComponents = New System.Windows.Forms.TabPage() Me.gbBattery = New System.Windows.Forms.GroupBox() + Me.lvREESSPacks = New System.Windows.Forms.ListView() + Me.chReessPackPack = CType(New System.Windows.Forms.ColumnHeader(),System.Windows.Forms.ColumnHeader) + Me.chReessPackCount = CType(New System.Windows.Forms.ColumnHeader(),System.Windows.Forms.ColumnHeader) + Me.chReessPackStringId = CType(New System.Windows.Forms.ColumnHeader(),System.Windows.Forms.ColumnHeader) + Me.btnAddReessPack = New System.Windows.Forms.Button() + Me.lblEditReessPack = New System.Windows.Forms.Label() + Me.btnRemoveReessPack = New System.Windows.Forms.Button() Me.lblInitialSoCUnit = New System.Windows.Forms.Label() Me.tbInitialSoC = New System.Windows.Forms.TextBox() Me.lblInitialSoC = New System.Windows.Forms.Label() - Me.tbBatteryPackCnt = New System.Windows.Forms.TextBox() - Me.lblBatteryPackCnt = New System.Windows.Forms.Label() - Me.Panel2 = New System.Windows.Forms.Panel() - Me.btnOpenBattery = New System.Windows.Forms.Button() - Me.btnBrowseBattery = New System.Windows.Forms.Button() - Me.tbBattery = New System.Windows.Forms.TextBox() Me.gpElectricMotor = New System.Windows.Forms.GroupBox() Me.gbRatiosPerGear = New System.Windows.Forms.GroupBox() Me.lvRatioPerGear = New System.Windows.Forms.ListView() Me.ColumnHeader11 = CType(New System.Windows.Forms.ColumnHeader(),System.Windows.Forms.ColumnHeader) Me.ColumnHeader12 = CType(New System.Windows.Forms.ColumnHeader(),System.Windows.Forms.ColumnHeader) - Me.Button1 = New System.Windows.Forms.Button() + Me.btnAddEMRatio = New System.Windows.Forms.Button() Me.Label29 = New System.Windows.Forms.Label() - Me.Button2 = New System.Windows.Forms.Button() + Me.btnRemoveEMRatio = New System.Windows.Forms.Button() Me.btnEmADCLossMap = New System.Windows.Forms.Button() Me.tbEmADCLossMap = New System.Windows.Forms.TextBox() Me.lblEmADCLossmap = New System.Windows.Forms.Label() @@ -234,7 +235,6 @@ Partial Class VehicleForm Me.GroupBox9.SuspendLayout Me.tpElectricComponents.SuspendLayout Me.gbBattery.SuspendLayout - Me.Panel2.SuspendLayout Me.gpElectricMotor.SuspendLayout Me.gbRatiosPerGear.SuspendLayout Me.pnElectricMotor.SuspendLayout @@ -317,7 +317,7 @@ Partial Class VehicleForm 'ButOK ' Me.ButOK.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles) - Me.ButOK.Location = New System.Drawing.Point(498, 560) + Me.ButOK.Location = New System.Drawing.Point(498, 577) Me.ButOK.Name = "ButOK" Me.ButOK.Size = New System.Drawing.Size(75, 23) Me.ButOK.TabIndex = 5 @@ -328,7 +328,7 @@ Partial Class VehicleForm ' Me.ButCancel.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles) Me.ButCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel - Me.ButCancel.Location = New System.Drawing.Point(579, 560) + Me.ButCancel.Location = New System.Drawing.Point(579, 577) Me.ButCancel.Name = "ButCancel" Me.ButCancel.Size = New System.Drawing.Size(75, 23) Me.ButCancel.TabIndex = 6 @@ -779,7 +779,7 @@ Partial Class VehicleForm ' Me.StatusStrip1.ImageScalingSize = New System.Drawing.Size(24, 24) Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.LbStatus}) - Me.StatusStrip1.Location = New System.Drawing.Point(0, 586) + Me.StatusStrip1.Location = New System.Drawing.Point(0, 603) Me.StatusStrip1.Name = "StatusStrip1" Me.StatusStrip1.Size = New System.Drawing.Size(666, 22) Me.StatusStrip1.SizingGrip = false @@ -1077,7 +1077,7 @@ Partial Class VehicleForm Me.tcVehicleComponents.Location = New System.Drawing.Point(6, 173) Me.tcVehicleComponents.Name = "tcVehicleComponents" Me.tcVehicleComponents.SelectedIndex = 0 - Me.tcVehicleComponents.Size = New System.Drawing.Size(656, 381) + Me.tcVehicleComponents.Size = New System.Drawing.Size(656, 400) Me.tcVehicleComponents.TabIndex = 40 ' 'tpGeneral @@ -1090,7 +1090,7 @@ Partial Class VehicleForm Me.tpGeneral.Location = New System.Drawing.Point(4, 22) Me.tpGeneral.Name = "tpGeneral" Me.tpGeneral.Padding = New System.Windows.Forms.Padding(3) - Me.tpGeneral.Size = New System.Drawing.Size(648, 355) + Me.tpGeneral.Size = New System.Drawing.Size(648, 374) Me.tpGeneral.TabIndex = 0 Me.tpGeneral.Text = "General" Me.tpGeneral.UseVisualStyleBackColor = true @@ -1104,7 +1104,7 @@ Partial Class VehicleForm Me.tpPowertrain.Location = New System.Drawing.Point(4, 22) Me.tpPowertrain.Name = "tpPowertrain" Me.tpPowertrain.Padding = New System.Windows.Forms.Padding(3) - Me.tpPowertrain.Size = New System.Drawing.Size(648, 355) + Me.tpPowertrain.Size = New System.Drawing.Size(648, 374) Me.tpPowertrain.TabIndex = 1 Me.tpPowertrain.Text = "Powertrain" Me.tpPowertrain.UseVisualStyleBackColor = true @@ -1191,30 +1191,90 @@ Partial Class VehicleForm Me.tpElectricComponents.Location = New System.Drawing.Point(4, 22) Me.tpElectricComponents.Name = "tpElectricComponents" Me.tpElectricComponents.Padding = New System.Windows.Forms.Padding(3) - Me.tpElectricComponents.Size = New System.Drawing.Size(648, 355) + Me.tpElectricComponents.Size = New System.Drawing.Size(648, 374) Me.tpElectricComponents.TabIndex = 4 Me.tpElectricComponents.Text = "Electric Components" Me.tpElectricComponents.UseVisualStyleBackColor = true ' 'gbBattery ' + Me.gbBattery.Controls.Add(Me.lvREESSPacks) + Me.gbBattery.Controls.Add(Me.btnAddReessPack) + Me.gbBattery.Controls.Add(Me.lblEditReessPack) + Me.gbBattery.Controls.Add(Me.btnRemoveReessPack) Me.gbBattery.Controls.Add(Me.lblInitialSoCUnit) Me.gbBattery.Controls.Add(Me.tbInitialSoC) Me.gbBattery.Controls.Add(Me.lblInitialSoC) - Me.gbBattery.Controls.Add(Me.tbBatteryPackCnt) - Me.gbBattery.Controls.Add(Me.lblBatteryPackCnt) - Me.gbBattery.Controls.Add(Me.Panel2) Me.gbBattery.Location = New System.Drawing.Point(6, 175) Me.gbBattery.Name = "gbBattery" - Me.gbBattery.Size = New System.Drawing.Size(633, 118) + Me.gbBattery.Size = New System.Drawing.Size(633, 187) Me.gbBattery.TabIndex = 27 Me.gbBattery.TabStop = false Me.gbBattery.Text = "Electric Energy Storage system" ' + 'lvREESSPacks + ' + Me.lvREESSPacks.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles) + Me.lvREESSPacks.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.chReessPackPack, Me.chReessPackCount, Me.chReessPackStringId}) + Me.lvREESSPacks.FullRowSelect = true + Me.lvREESSPacks.GridLines = true + Me.lvREESSPacks.HideSelection = false + Me.lvREESSPacks.Location = New System.Drawing.Point(6, 45) + Me.lvREESSPacks.MultiSelect = false + Me.lvREESSPacks.Name = "lvREESSPacks" + Me.lvREESSPacks.Size = New System.Drawing.Size(553, 102) + Me.lvREESSPacks.TabIndex = 31 + Me.lvREESSPacks.TabStop = false + Me.lvREESSPacks.UseCompatibleStateImageBehavior = false + Me.lvREESSPacks.View = System.Windows.Forms.View.Details + ' + 'chReessPackPack + ' + Me.chReessPackPack.Text = "REESS Pack" + Me.chReessPackPack.Width = 350 + ' + 'chReessPackCount + ' + Me.chReessPackCount.Text = "Count" + Me.chReessPackCount.TextAlign = System.Windows.Forms.HorizontalAlignment.Center + ' + 'chReessPackStringId + ' + Me.chReessPackStringId.Text = "String #" + Me.chReessPackStringId.TextAlign = System.Windows.Forms.HorizontalAlignment.Center + ' + 'btnAddReessPack + ' + Me.btnAddReessPack.Image = Global.TUGraz.VECTO.My.Resources.Resources.plus_circle_icon + Me.btnAddReessPack.Location = New System.Drawing.Point(6, 153) + Me.btnAddReessPack.Name = "btnAddReessPack" + Me.btnAddReessPack.Size = New System.Drawing.Size(24, 24) + Me.btnAddReessPack.TabIndex = 28 + Me.btnAddReessPack.UseVisualStyleBackColor = true + ' + 'lblEditReessPack + ' + Me.lblEditReessPack.AutoSize = true + Me.lblEditReessPack.Location = New System.Drawing.Point(451, 159) + Me.lblEditReessPack.Name = "lblEditReessPack" + Me.lblEditReessPack.Size = New System.Drawing.Size(106, 13) + Me.lblEditReessPack.TabIndex = 30 + Me.lblEditReessPack.Text = "(Double-Click to Edit)" + ' + 'btnRemoveReessPack + ' + Me.btnRemoveReessPack.Image = Global.TUGraz.VECTO.My.Resources.Resources.minus_circle_icon + Me.btnRemoveReessPack.Location = New System.Drawing.Point(33, 153) + Me.btnRemoveReessPack.Name = "btnRemoveReessPack" + Me.btnRemoveReessPack.Size = New System.Drawing.Size(24, 24) + Me.btnRemoveReessPack.TabIndex = 29 + Me.btnRemoveReessPack.UseVisualStyleBackColor = true + ' 'lblInitialSoCUnit ' Me.lblInitialSoCUnit.AutoSize = true - Me.lblInitialSoCUnit.Location = New System.Drawing.Point(269, 81) + Me.lblInitialSoCUnit.Location = New System.Drawing.Point(269, 22) Me.lblInitialSoCUnit.Name = "lblInitialSoCUnit" Me.lblInitialSoCUnit.Size = New System.Drawing.Size(21, 13) Me.lblInitialSoCUnit.TabIndex = 27 @@ -1222,7 +1282,7 @@ Partial Class VehicleForm ' 'tbInitialSoC ' - Me.tbInitialSoC.Location = New System.Drawing.Point(204, 78) + Me.tbInitialSoC.Location = New System.Drawing.Point(204, 19) Me.tbInitialSoC.Name = "tbInitialSoC" Me.tbInitialSoC.Size = New System.Drawing.Size(59, 20) Me.tbInitialSoC.TabIndex = 26 @@ -1230,69 +1290,13 @@ Partial Class VehicleForm 'lblInitialSoC ' Me.lblInitialSoC.AutoSize = true - Me.lblInitialSoC.Location = New System.Drawing.Point(7, 81) + Me.lblInitialSoC.Location = New System.Drawing.Point(7, 22) Me.lblInitialSoC.Name = "lblInitialSoC" Me.lblInitialSoC.RightToLeft = System.Windows.Forms.RightToLeft.Yes Me.lblInitialSoC.Size = New System.Drawing.Size(54, 13) Me.lblInitialSoC.TabIndex = 25 Me.lblInitialSoC.Text = "Initial SoC" ' - 'tbBatteryPackCnt - ' - Me.tbBatteryPackCnt.Location = New System.Drawing.Point(204, 52) - Me.tbBatteryPackCnt.Name = "tbBatteryPackCnt" - Me.tbBatteryPackCnt.Size = New System.Drawing.Size(59, 20) - Me.tbBatteryPackCnt.TabIndex = 24 - ' - 'lblBatteryPackCnt - ' - Me.lblBatteryPackCnt.AutoSize = true - Me.lblBatteryPackCnt.Location = New System.Drawing.Point(7, 55) - Me.lblBatteryPackCnt.Name = "lblBatteryPackCnt" - Me.lblBatteryPackCnt.Size = New System.Drawing.Size(124, 13) - Me.lblBatteryPackCnt.TabIndex = 23 - Me.lblBatteryPackCnt.Text = "Number of RESS Packs:" - ' - 'Panel2 - ' - Me.Panel2.Controls.Add(Me.btnOpenBattery) - Me.Panel2.Controls.Add(Me.btnBrowseBattery) - Me.Panel2.Controls.Add(Me.tbBattery) - Me.Panel2.Location = New System.Drawing.Point(6, 19) - Me.Panel2.Name = "Panel2" - Me.Panel2.Size = New System.Drawing.Size(553, 27) - Me.Panel2.TabIndex = 19 - ' - 'btnOpenBattery - ' - Me.btnOpenBattery.Location = New System.Drawing.Point(4, 3) - Me.btnOpenBattery.Name = "btnOpenBattery" - Me.btnOpenBattery.Size = New System.Drawing.Size(94, 21) - Me.btnOpenBattery.TabIndex = 0 - Me.btnOpenBattery.TabStop = false - Me.btnOpenBattery.Text = "REESS Pack" - Me.btnOpenBattery.UseVisualStyleBackColor = true - ' - 'btnBrowseBattery - ' - Me.btnBrowseBattery.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles) - Me.btnBrowseBattery.Image = CType(resources.GetObject("btnBrowseBattery.Image"),System.Drawing.Image) - Me.btnBrowseBattery.Location = New System.Drawing.Point(527, 2) - Me.btnBrowseBattery.Name = "btnBrowseBattery" - Me.btnBrowseBattery.Size = New System.Drawing.Size(24, 24) - Me.btnBrowseBattery.TabIndex = 2 - Me.btnBrowseBattery.TabStop = false - Me.btnBrowseBattery.UseVisualStyleBackColor = true - ' - 'tbBattery - ' - Me.tbBattery.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ - Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles) - Me.tbBattery.Location = New System.Drawing.Point(104, 4) - Me.tbBattery.Name = "tbBattery" - Me.tbBattery.Size = New System.Drawing.Size(417, 20) - Me.tbBattery.TabIndex = 1 - ' 'gpElectricMotor ' Me.gpElectricMotor.Controls.Add(Me.gbRatiosPerGear) @@ -1316,9 +1320,9 @@ Partial Class VehicleForm 'gbRatiosPerGear ' Me.gbRatiosPerGear.Controls.Add(Me.lvRatioPerGear) - Me.gbRatiosPerGear.Controls.Add(Me.Button1) + Me.gbRatiosPerGear.Controls.Add(Me.btnAddEMRatio) Me.gbRatiosPerGear.Controls.Add(Me.Label29) - Me.gbRatiosPerGear.Controls.Add(Me.Button2) + Me.gbRatiosPerGear.Controls.Add(Me.btnRemoveEMRatio) Me.gbRatiosPerGear.Location = New System.Drawing.Point(444, 12) Me.gbRatiosPerGear.Name = "gbRatiosPerGear" Me.gbRatiosPerGear.Size = New System.Drawing.Size(181, 145) @@ -1353,14 +1357,14 @@ Partial Class VehicleForm Me.ColumnHeader12.Text = "Ratio" Me.ColumnHeader12.Width = 172 ' - 'Button1 + 'btnAddEMRatio ' - Me.Button1.Image = Global.TUGraz.VECTO.My.Resources.Resources.plus_circle_icon - Me.Button1.Location = New System.Drawing.Point(6, 116) - Me.Button1.Name = "Button1" - Me.Button1.Size = New System.Drawing.Size(24, 24) - Me.Button1.TabIndex = 4 - Me.Button1.UseVisualStyleBackColor = true + Me.btnAddEMRatio.Image = Global.TUGraz.VECTO.My.Resources.Resources.plus_circle_icon + Me.btnAddEMRatio.Location = New System.Drawing.Point(6, 116) + Me.btnAddEMRatio.Name = "btnAddEMRatio" + Me.btnAddEMRatio.Size = New System.Drawing.Size(24, 24) + Me.btnAddEMRatio.TabIndex = 4 + Me.btnAddEMRatio.UseVisualStyleBackColor = true ' 'Label29 ' @@ -1371,14 +1375,14 @@ Partial Class VehicleForm Me.Label29.TabIndex = 6 Me.Label29.Text = "(Double-Click to Edit)" ' - 'Button2 + 'btnRemoveEMRatio ' - Me.Button2.Image = Global.TUGraz.VECTO.My.Resources.Resources.minus_circle_icon - Me.Button2.Location = New System.Drawing.Point(33, 116) - Me.Button2.Name = "Button2" - Me.Button2.Size = New System.Drawing.Size(24, 24) - Me.Button2.TabIndex = 5 - Me.Button2.UseVisualStyleBackColor = true + Me.btnRemoveEMRatio.Image = Global.TUGraz.VECTO.My.Resources.Resources.minus_circle_icon + Me.btnRemoveEMRatio.Location = New System.Drawing.Point(33, 116) + Me.btnRemoveEMRatio.Name = "btnRemoveEMRatio" + Me.btnRemoveEMRatio.Size = New System.Drawing.Size(24, 24) + Me.btnRemoveEMRatio.TabIndex = 5 + Me.btnRemoveEMRatio.UseVisualStyleBackColor = true ' 'btnEmADCLossMap ' @@ -1502,7 +1506,7 @@ Partial Class VehicleForm Me.tpTorqueLimits.Controls.Add(Me.bgVehicleTorqueLimits) Me.tpTorqueLimits.Location = New System.Drawing.Point(4, 22) Me.tpTorqueLimits.Name = "tpTorqueLimits" - Me.tpTorqueLimits.Size = New System.Drawing.Size(648, 355) + Me.tpTorqueLimits.Size = New System.Drawing.Size(648, 655) Me.tpTorqueLimits.TabIndex = 2 Me.tpTorqueLimits.Text = "Torque Limits" Me.tpTorqueLimits.UseVisualStyleBackColor = true @@ -1634,7 +1638,7 @@ Partial Class VehicleForm Me.tpADAS.Location = New System.Drawing.Point(4, 22) Me.tpADAS.Name = "tpADAS" Me.tpADAS.Padding = New System.Windows.Forms.Padding(3) - Me.tpADAS.Size = New System.Drawing.Size(648, 355) + Me.tpADAS.Size = New System.Drawing.Size(648, 655) Me.tpADAS.TabIndex = 3 Me.tpADAS.Text = "ADAS" Me.tpADAS.UseVisualStyleBackColor = true @@ -1715,7 +1719,7 @@ Partial Class VehicleForm Me.tpRoadSweeper.Controls.Add(Me.gbPTO) Me.tpRoadSweeper.Location = New System.Drawing.Point(4, 22) Me.tpRoadSweeper.Name = "tpRoadSweeper" - Me.tpRoadSweeper.Size = New System.Drawing.Size(648, 355) + Me.tpRoadSweeper.Size = New System.Drawing.Size(648, 655) Me.tpRoadSweeper.TabIndex = 4 Me.tpRoadSweeper.Text = "PTO" Me.tpRoadSweeper.UseVisualStyleBackColor = true @@ -1902,7 +1906,7 @@ Partial Class VehicleForm Me.AutoScaleDimensions = New System.Drawing.SizeF(6!, 13!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.CancelButton = Me.ButCancel - Me.ClientSize = New System.Drawing.Size(666, 608) + Me.ClientSize = New System.Drawing.Size(666, 625) Me.Controls.Add(Me.lblTitle) Me.Controls.Add(Me.Label21) Me.Controls.Add(Me.cbLegislativeClass) @@ -1964,8 +1968,6 @@ Partial Class VehicleForm Me.tpElectricComponents.ResumeLayout(false) Me.gbBattery.ResumeLayout(false) Me.gbBattery.PerformLayout - Me.Panel2.ResumeLayout(false) - Me.Panel2.PerformLayout Me.gpElectricMotor.ResumeLayout(false) Me.gpElectricMotor.PerformLayout Me.gbRatiosPerGear.ResumeLayout(false) @@ -2134,12 +2136,6 @@ End Sub Friend WithEvents btnOpenElectricMotor As Button Friend WithEvents btnBrowseElectricMotor As Button Friend WithEvents tbElectricMotor As TextBox - Friend WithEvents tbBatteryPackCnt As TextBox - Friend WithEvents lblBatteryPackCnt As Label - Friend WithEvents Panel2 As Panel - Friend WithEvents btnOpenBattery As Button - Friend WithEvents btnBrowseBattery As Button - Friend WithEvents tbBattery As TextBox Friend WithEvents lblTitle As Label Friend WithEvents GroupBox4 As GroupBox Friend WithEvents Panel1 As Panel @@ -2182,8 +2178,15 @@ End Sub Friend WithEvents lvRatioPerGear As ListView Friend WithEvents ColumnHeader11 As ColumnHeader Friend WithEvents ColumnHeader12 As ColumnHeader - Friend WithEvents Button1 As Button + Friend WithEvents btnAddEMRatio As Button Friend WithEvents Label29 As Label - Friend WithEvents Button2 As Button + Friend WithEvents btnRemoveEMRatio As Button + Friend WithEvents lvREESSPacks As ListView + Friend WithEvents chReessPackPack As ColumnHeader + Friend WithEvents chReessPackCount As ColumnHeader + Friend WithEvents chReessPackStringId As ColumnHeader + Friend WithEvents btnAddReessPack As Button + Friend WithEvents lblEditReessPack As Label + Friend WithEvents btnRemoveReessPack As Button '>>>>>>> VECTO_CERT/master End Class diff --git a/VECTO/GUI/VehicleForm.resx b/VECTO/GUI/VehicleForm.resx index 5e567b01ea761ca564e4363b220e171c4f43893a..21bc7df44d5386f57f7760ba29fcb84cca3113b2 100644 --- a/VECTO/GUI/VehicleForm.resx +++ b/VECTO/GUI/VehicleForm.resx @@ -130,24 +130,6 @@ <value>376, 21</value> </metadata> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> - <data name="btnBrowseBattery.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> - <value> - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAAtVJREFUOE+FkmtIk2EYhhc6zU1zyjyAlZn5Q0QS6k/EMDDSQiuzkmxM5wpEA00S - zTzbsozQEDUyVKjQbejUPGQSyyjUmofysFRKU/M859J5qORu77s1KX/0wPXju7/vvp4X3o/RVsHv7pDy - 0VklwIfaCPTXCzHQEPkXn5pEUDWJNH31kRGMf4eUocvF7GAShlqjQZ6H3qZjYUICQGliVfscvc+EGmNt - c0hhY/kONpYMrC/cwowqiYowchcYNaKRoa7mDDyfcuFRYpdnrBsEv7S3KT8XCTkUkq/3xGOj9xrQn0Cp - qQrGvnJ7uJTuwK58G4VJ8GMhh25eV29Ccp0yDmvd8SZBV7UA7sW2R5wfWsO+0ApO2ewMKlibE2N11siM - GCt6SL7YEQtdZxxUShECq7wQ9MQLZKnTfbbcqpQJuwxLDRWsTN+EbiobuslsLBsh+eybK3j/WgBfmQeq - 1RKcqPalAgexlYIIrNMtQAVLE1lYGs/Cd8JYJrR6SK5ovoCzjTzI1VLE9gjgVsiBYza7jJvHAhGwkpkG - gfZrJhZHM6D5QtBf4ed0yKSnENLEg0L3AlHKIBxq2Ik9BRy4FNrA4bFBYJlgbhCQgno4DeqhNMwPpuFb - TyICan3waqUF0coAHGtxpwJvuSPcJBwqYBUzwby8TUEF84OpmFOlYnYghR69XcLHUdl+RLX7I6TVc4uA - W8aCZZy5hhnO8KECUpzuu4Gpj8lU0FgShuIHgeAVucK/0d0k8KzgwjGXje0xZiPMS/oyGVIgxcme65jo - MvyBNUWhqMw/j7ryi+Dlu+KwfDcVcNNYEOfx6E2Ypq0iVKN6GYNxZRLG3iVSQXnOcRSk+EGadxK1j4Jx - IMsZPhXOsE+2QnPZOcPmP9MtD+d0SMPkXTVCDLdeRadciPjIg7H6V3sNXzAYtrEMjmW0udxCZFZmjLZO - eyX/NDkNOcG9FD9vY/yfYTB+A9kMOLKC3dXwAAAAAElFTkSuQmCC -</value> - </data> <data name="btnBrowseElectricMotor.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value> iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO diff --git a/VECTO/GUI/VehicleForm.vb b/VECTO/GUI/VehicleForm.vb index 800a4f30475892f273c28ae7ba8b0b10ba5f20af..17faa44e86d2b64f9a2babeaa29eaabb9763e9ba 100644 --- a/VECTO/GUI/VehicleForm.vb +++ b/VECTO/GUI/VehicleForm.vb @@ -45,6 +45,12 @@ Public Class VehicleForm Ratio = 1 End Enum + private Enum REESPackTbl + ReessFile = 0 + Count = 1 + StringId = 2 + End Enum + Private _axlDlog As VehicleAxleDialog Private _hdVclass As VehicleClass @@ -56,6 +62,7 @@ Public Class VehicleForm Public JobDir As String = "" Private _torqueLimitDlog As VehicleTorqueLimitDialog private _emRatioPerGearDlog as EMGearRatioDialog + private _reessPackDlg as REESSPackDialog Friend VehicleType As VectoSimulationJobType 'Close - Check for unsaved changes @@ -132,6 +139,7 @@ Public Class VehicleForm _axlDlog = New VehicleAxleDialog _torqueLimitDlog = New VehicleTorqueLimitDialog() _emRatioPerGearDlog = new EMGearRatioDialog() + _reessPackDlg = New REESSPAckDialog() cbPTOType.ValueMember = "Value" cbPTOType.DisplayMember = "Label" @@ -473,9 +481,11 @@ Public Class VehicleForm If(angledrive.LossMap Is Nothing, "", GetRelativePath(angledrive.LossMap.Source, basePath)) If (vehicle.VehicleType = VectoSimulationJobType.BatteryElectricVehicle OrElse vehicle.VehicleType = VectoSimulationJobType.ParallelHybridVehicle) Then - tbBattery.Text = GetRelativePath(vehicle.Components.ElectricStorage.REESSPack.DataSource.SourceFile, basePath) - tbBatteryPackCnt.Text = vehicle.Components.ElectricStorage.Count.ToGUIFormat() - tbInitialSoC.Text = (vehicle.InitialSOC * 100).ToGUIFormat() + lvREESSPacks.Items.Clear() + For Each entry As IElectricStorageEngineeringInputData In vehicle.Components.ElectricStorage.ElectricStorageElements.OrderBy(function(x) x.StringId) + lvREESSPacks.Items.Add(CreateREESSPackListViewItem(GetRelativePath(entry.REESSPack.DataSource.SourceFile, basePath), entry.Count, entry.StringId)) + Next + tbInitialSoC.Text = (vehicle.InitialSOC * 100).ToGUIFormat() Dim em As ElectricMachineEntry(Of IElectricMotorEngineeringInputData) = vehicle.Components.ElectricMachines.Entries.First() tbElectricMotor.Text = GetRelativePath(em.ElectricMachine.DataSource.SourceFile, basePath) @@ -520,6 +530,14 @@ Public Class VehicleForm return retval End Function + Private Function CreateREESSPackListViewItem(batFile As String, count As Integer, stringid As Integer) As ListViewItem + dim retval as new ListViewItem + retVal.SubItems(0).Text = GetRelativePath(batFile, Path.GetDirectoryName(_vehFile)) + retVal.SubItems.Add(count.ToGUIFormat()) + retval.SubItems.Add(stringid.ToGUIFormat()) + return retval + End Function + Private Sub UpdateForm(vehType As VectoSimulationJobType) VehicleType = vehType Select Case vehType @@ -637,8 +655,9 @@ Public Class VehicleForm End If If (VehicleType = VectoSimulationJobType.ParallelHybridVehicle OrElse VehicleType = VectoSimulationJobType.BatteryElectricVehicle) Then - veh.BatteryFile.Init(GetPath(file), tbBattery.Text) - veh.NumBatteryPacks = tbBatteryPackCnt.Text.ToInt(0) + For Each reess As ListViewItem In lvREESSPacks.Items + veh.ReessPacks.Add(tuple.Create(reess.SubItems(REESPackTbl.ReessFile).Text, reess.SubItems(REESPackTbl.Count).Text.ToInt(), reess.SubItems(REESPackTbl.StringId).Text.ToInt())) + Next veh.InitialSOC = tbInitialSoC.Text.ToDouble() / 100.0 veh.ElectricMotorFile.Init(GetPath(file), tbElectricMotor.Text) @@ -1105,11 +1124,6 @@ Public Class VehicleForm End Sub - Private Sub btnBrowseBattery_Click(sender As Object, e As EventArgs) Handles btnBrowseBattery.Click - If REESSFileBrowser.OpenDialog(FileRepl(tbBattery.Text, GetPath(_vehFile))) Then - tbBattery.Text = GetFilenameWithoutDirectory(REESSFileBrowser.Files(0), GetPath(_vehFile)) - End If - End Sub Private Sub btnOpenElectricMotor_Click(sender As Object, e As EventArgs) Handles btnOpenElectricMotor.Click Dim f As String @@ -1142,37 +1156,6 @@ Public Class VehicleForm End If End Sub - Private Sub btnOpenBattery_Click(sender As Object, e As EventArgs) Handles btnOpenBattery.Click - Dim f As String - f = FileRepl(tbBattery.Text, GetPath(_vehFile)) - - 'Thus Veh-file is returned - BatteryForm.JobDir = GetPath(_vehFile) - BatteryForm.AutoSendTo = True - - If Not Trim(f) = "" Then - If Not File.Exists(f) Then - MsgBox("File not found!") - Exit Sub - End If - End If - - If Not BatteryForm.Visible Then - BatteryForm.Show() - Else - If BatteryForm.WindowState = FormWindowState.Minimized Then BatteryForm.WindowState = FormWindowState.Normal - BatteryForm.BringToFront() - End If - - If Not Trim(f) = "" Then - Try - BatteryForm.OpenBatteryFile(f) - Catch ex As Exception - MsgBox(ex.Message, MsgBoxStyle.OkOnly, "Error loading Vehicle File") - End Try - End If - End Sub - Private Sub btnEmTorqueLimits_Click(sender As Object, e As EventArgs) Handles btnEmTorqueLimits.Click If ElectricMachineMaxTorqueFileBrowser.OpenDialog(FileRepl(tbEmTorqueLimits.Text, GetPath(_vehFile))) Then _ tbEmTorqueLimits.Text = GetFilenameWithoutDirectory(ElectricMachineMaxTorqueFileBrowser.Files(0), GetPath(_vehFile)) @@ -1203,7 +1186,7 @@ Public Class VehicleForm gbRatiosPerGear.Enabled = cbEmPos.SelectedValue.Equals(PowertrainPosition.HybridP2_5) End Sub - Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click + Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnAddEMRatio.Click _emRatioPerGearDlog.Clear() If _emRatioPerGearDlog.ShowDialog() = DialogResult.OK Then Dim gear As Integer = _emRatioPerGearDlog.tbGear.Text.ToInt(0) @@ -1222,7 +1205,7 @@ Public Class VehicleForm End If End Sub - Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click + Private Sub Button2_Click(sender As Object, e As EventArgs) Handles btnRemoveEMRatio.Click If lvRatioPerGear.SelectedItems.Count = 0 Then If lvRatioPerGear.Items.Count = 0 Then Exit Sub @@ -1251,5 +1234,43 @@ Public Class VehicleForm Private Sub lvRatioPerGear_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lvRatioPerGear.SelectedIndexChanged End Sub + + Private Sub lvREESSPacks_DoubleClick(sender As Object, e As EventArgs) Handles lvREESSPacks.DoubleClick + If lvREESSPacks.SelectedItems.Count = 0 Then Exit Sub + + Dim entry As ListViewItem = lvREESSPacks.SelectedItems(0) + _reessPackDlg.tbBattery.Text = entry.SubItems(REESPackTbl.ReessFile).Text + _reessPackDlg.tbBatteryPackCnt.Text = entry.SubItems(REESPackTbl.Count).Text + _reessPackDlg.tbStreamId.Text = entry.SubItems(REESPackTbl.StringId).Text + _reessPackDlg.tbBattery.Focus() + If (_reessPackDlg.ShowDialog() = DialogResult.OK) Then + entry.SubItems(REESPackTbl.ReessFile).Text = _reessPackDlg.tbBattery.Text + entry.SubItems(REESPackTbl.Count).Text = _reessPackDlg.tbBatteryPackCnt.Text + entry.SubItems(REESPackTbl.StringId).Text = _reessPackDlg.tbStreamId.Text + End If + End Sub + + Private Sub btnAddReessPack_Click(sender As Object, e As EventArgs) Handles btnAddReessPack.Click + _reessPackDlg.Clear() + If _reessPackDlg.ShowDialog() = DialogResult.OK Then + + lvREESSPacks.Items.Add(CreateREESSPackListViewItem(_reessPackDlg.tbBattery.Text, _reessPackDlg.tbBatteryPackCnt.Text.ToInt(0), _reessPackDlg.tbStreamId.Text.ToInt(0))) + + Change() + + End If + End Sub + + Private Sub btnRemoveReessPack_Click(sender As Object, e As EventArgs) Handles btnRemoveReessPack.Click + If lvREESSPacks.SelectedItems.Count = 0 Then + If lvREESSPacks.Items.Count = 0 Then + Exit Sub + Else + lvREESSPacks.Items(lvREESSPacks.Items.Count - 1).Selected = True + End If + End If + + lvREESSPacks.SelectedItems(0).Remove() + End Sub End Class diff --git a/VECTO/Input Files/Engine.vb b/VECTO/Input Files/Engine.vb index a1889be48b4db0e46774c0b1ef743315f8871187..c3cb756085aae22d74f6710eceeb62f3f472ab0b 100644 --- a/VECTO/Input Files/Engine.vb +++ b/VECTO/Input Files/Engine.vb @@ -702,9 +702,9 @@ Public Class DummyVehicle Public Property PTOTransmissionInputData As IPTOTransmissionInputData Implements IVehicleComponentsDeclaration.PTOTransmissionInputData Public Property IVehicleComponentsEngineering_AxleWheels As IAxlesEngineeringInputData Implements IVehicleComponentsEngineering.AxleWheels Public Property AxleWheels As IAxlesDeclarationInputData Implements IVehicleComponentsDeclaration.AxleWheels - Public ReadOnly Property IVehicleComponentsEngineering_ElectricStorage As IElectricStorageEngineeringInputData Implements IVehicleComponentsEngineering.ElectricStorage + Public ReadOnly Property IVehicleComponentsEngineering_ElectricStorage As IElectricStorageSystemEngineeringInputData Implements IVehicleComponentsEngineering.ElectricStorage Public ReadOnly Property BusAuxiliaries As IBusAuxiliariesDeclarationData Implements IVehicleComponentsDeclaration.BusAuxiliaries - Public ReadOnly Property ElectricStorage As IElectricStorageDeclarationInputData Implements IVehicleComponentsDeclaration.ElectricStorage + Public ReadOnly Property ElectricStorage As IElectricStorageSystemDeclarationInputData Implements IVehicleComponentsDeclaration.ElectricStorage Public ReadOnly Property IVehicleComponentsEngineering_ElectricMachines As IElectricMachinesEngineeringInputData Implements IVehicleComponentsEngineering.ElectricMachines Public ReadOnly Property ElectricMachines As IElectricMachinesDeclarationInputData Implements IVehicleComponentsDeclaration.ElectricMachines End Class diff --git a/VECTO/Input Files/Gearbox.vb b/VECTO/Input Files/Gearbox.vb index 5d67c96eac0c5e2efa7d677d9404039da90e9dd2..69701bdf91a841f78e471d65b78c1d82e3d33b07 100644 --- a/VECTO/Input Files/Gearbox.vb +++ b/VECTO/Input Files/Gearbox.vb @@ -889,7 +889,7 @@ Public Class MockEngineeringVehicle Implements IVehicleComponentsEngineering.PTOTransmissionInputData Public Property AxleWheels As IAxlesEngineeringInputData Implements IVehicleComponentsEngineering.AxleWheels - Public ReadOnly Property ElectricStorage As IElectricStorageEngineeringInputData Implements IVehicleComponentsEngineering.ElectricStorage + Public ReadOnly Property ElectricStorage As IElectricStorageSystemEngineeringInputData Implements IVehicleComponentsEngineering.ElectricStorage Public ReadOnly Property ElectricMachines As IElectricMachinesEngineeringInputData Implements IVehicleComponentsEngineering.ElectricMachines End Class diff --git a/VECTO/Input Files/MockComponents.vb b/VECTO/Input Files/MockComponents.vb index 19e33a2e44f548e4fe122d9abd85525ba3f0837e..b64e23b2ef2d895947bf0b01a9c9140146fa99e3 100644 --- a/VECTO/Input Files/MockComponents.vb +++ b/VECTO/Input Files/MockComponents.vb @@ -30,6 +30,6 @@ Public Class MockComponents Public Property AxleWheels As IAxlesDeclarationInputData Implements IVehicleComponentsDeclaration.AxleWheels Public ReadOnly Property BusAuxiliaries As IBusAuxiliariesDeclarationData Implements IVehicleComponentsDeclaration.BusAuxiliaries - Public ReadOnly Property ElectricStorage As IElectricStorageDeclarationInputData Implements IVehicleComponentsDeclaration.ElectricStorage + Public ReadOnly Property ElectricStorage As IElectricStorageSystemDeclarationInputData Implements IVehicleComponentsDeclaration.ElectricStorage Public ReadOnly Property ElectricMachines As IElectricMachinesDeclarationInputData Implements IVehicleComponentsDeclaration.ElectricMachines End Class \ No newline at end of file diff --git a/VECTO/Input Files/Vehicle.vb b/VECTO/Input Files/Vehicle.vb index e96c5022ac11800dc0754f5aad367fadbc93f899..4bbc2859e6f8104e27f21ada8ab2bb6fe404addd 100644 --- a/VECTO/Input Files/Vehicle.vb +++ b/VECTO/Input Files/Vehicle.vb @@ -14,6 +14,7 @@ Imports System.Collections.Generic Imports System.ComponentModel.DataAnnotations Imports System.IO Imports System.Linq +Imports System.Runtime.Remoting.Messaging Imports System.Xml Imports TUGraz.VECTO.Input_Files Imports TUGraz.VectoCommon.BusAuxiliaries @@ -79,11 +80,11 @@ Public Class Vehicle Public VehicleTankSystem As TankSystem? - Public ReadOnly BatteryFile As SubPath Public ReadOnly ElectricMotorFile As SubPath - Public NumBatteryPacks As Integer - Public ElectricMotorPosition As PowertrainPosition + public ReadOnly ReessPacks As List(Of Tuple(Of String, Integer, Integer)) + + Public ElectricMotorPosition As PowertrainPosition Public ElectricMotorCount As Integer Public ElectricMotorRatio As Double 'Public ElectricMotorMechEff As Double @@ -105,10 +106,10 @@ Public Class Vehicle Axles = New List(Of AxleInputData) torqueLimitsList = New List(Of ITorqueLimitInputData) - PtoLossMap = New SubPath() + ReessPacks = new List(Of Tuple(Of String,Integer,Integer)) + PtoLossMap = New SubPath() PtoCycleStandstill = New SubPath() PtoCycleDriving = new SubPath() - BatteryFile = New SubPath() ElectricMotorFile = New SubPath() ElectricMotorMechLossMap = new SubPath() @@ -760,15 +761,15 @@ Public Class Vehicle End Get End Property - Public ReadOnly Property ElectricStorage As IElectricStorageEngineeringInputData Implements IVehicleComponentsEngineering.ElectricStorage + Public ReadOnly Property ElectricStorage As IElectricStorageSystemEngineeringInputData Implements IVehicleComponentsEngineering.ElectricStorage Get - Return New ElectricStorageWrapper(Me) + Return New ElectricStorageSystemWrapper(Me) End Get End Property Public ReadOnly Property IVehicleComponentsDeclaration_ElectricMachines As IElectricMachinesDeclarationInputData Implements IVehicleComponentsDeclaration.ElectricMachines - Public ReadOnly Property IVehicleComponentsDeclaration_ElectricStorage As IElectricStorageDeclarationInputData Implements IVehicleComponentsDeclaration.ElectricStorage + Public ReadOnly Property IVehicleComponentsDeclaration_ElectricStorage As IElectricStorageSystemDeclarationInputData Implements IVehicleComponentsDeclaration.ElectricStorage Public ReadOnly Property ElectricMachines As IElectricMachinesEngineeringInputData Implements IVehicleComponentsEngineering.ElectricMachines Get Return New ElectricMachineWrapper(Me) @@ -917,33 +918,57 @@ end Property Public ReadOnly Property IAxlesDeclarationInputData_XMLSource As XmlNode Implements IAxlesDeclarationInputData.XMLSource End Class +Public Class ElectricStorageSystemWrapper + Implements IElectricStorageSystemEngineeringInputData + + Private _vehicle As Vehicle + + Public Sub New(vehicle As Vehicle) + _vehicle = vehicle + End Sub + + Public ReadOnly Property ElectricStorageElements As IList(Of IElectricStorageDeclarationInputData) Implements IElectricStorageSystemDeclarationInputData.ElectricStorageElements + get + return _vehicle.ReessPacks.Select(Function(x) new ElectricStorageWrapper(x, GetPath(_vehicle.FilePath))).Cast(of IElectricStorageDeclarationInputData) .toList() + End Get + End Property + Public ReadOnly Property IElectricStorageSystemEngineeringInputData_ElectricStorageElements As IList(Of IElectricStorageEngineeringInputData) Implements IElectricStorageSystemEngineeringInputData.ElectricStorageElements + get + return _vehicle.ReessPacks.Select(Function(x) new ElectricStorageWrapper(x, GetPath(_vehicle.FilePath))).cast(of IElectricStorageEngineeringInputData).toList() + End Get + End Property +End Class + Public Class ElectricStorageWrapper Implements IElectricStorageEngineeringInputData, IBatteryPackEngineeringInputData - Protected Vehicle As Vehicle + Public Property BatteryFile As SubPath - Public Sub New(veh As Vehicle) - Vehicle = veh + Public Sub New(veh As Tuple(Of String,Integer,Integer), filePath As String) + count = veh.Item2 + StringId = veh.Item3 + BatteryFile = New SubPath + BatteryFile.Init(filePath, veh.Item1) End Sub - Public ReadOnly Property REESSPack As IREESSPackInputData Implements IElectricStorageEngineeringInputData.REESSPack + + Public ReadOnly Property REESSPack As IREESSPackInputData Implements IElectricStorageEngineeringInputData.REESSPack Get Return Me End Get End Property Public ReadOnly Property Count As Integer Implements IElectricStorageEngineeringInputData.Count - Get - Return Vehicle.NumBatteryPacks - End Get - End Property + - Public ReadOnly Property DataSource As DataSource Implements IComponentInputData.DataSource + Public ReadOnly Property StringId As Integer Implements IElectricStorageDeclarationInputData.StringId + + Public ReadOnly Property DataSource As DataSource Implements IComponentInputData.DataSource Get Dim retVal As DataSource = New DataSource() retVal.SourceType = DataSourceType.JSONFile - retVal.SourceFile = Vehicle.BatteryFile.FullPath + retVal.SourceFile = BatteryFile.FullPath Return retVal End Get End Property diff --git a/VECTO/VECTO.vbproj b/VECTO/VECTO.vbproj index faf3ae545a3c20bee5659db95439daacf88e1980..f4fe99ebc684f2d66cb50f47c6942e3c74dc47ec 100644 --- a/VECTO/VECTO.vbproj +++ b/VECTO/VECTO.vbproj @@ -229,6 +229,12 @@ <Compile Include="GUI\BusAuxiliariesEngParametersForm.vb"> <SubType>Form</SubType> </Compile> + <Compile Include="GUI\REESSPackDialog.Designer.vb"> + <DependentUpon>REESSPackDialog.vb</DependentUpon> + </Compile> + <Compile Include="GUI\REESSPackDialog.vb"> + <SubType>Form</SubType> + </Compile> <Compile Include="GUI\HybridStrategyParamsForm.Designer.vb"> <DependentUpon>HybridStrategyParamsForm.vb</DependentUpon> </Compile> @@ -431,6 +437,9 @@ <EmbeddedResource Include="GUI\BusAuxiliariesEngParametersForm.resx"> <DependentUpon>BusAuxiliariesEngParametersForm.vb</DependentUpon> </EmbeddedResource> + <EmbeddedResource Include="GUI\REESSPackDialog.resx"> + <DependentUpon>REESSPackDialog.vb</DependentUpon> + </EmbeddedResource> <EmbeddedResource Include="GUI\HybridStrategyParamsForm.resx"> <DependentUpon>HybridStrategyParamsForm.vb</DependentUpon> </EmbeddedResource> diff --git a/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/ComponentsViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/ComponentsViewModel.cs index 3fd5661df9df2f919ad69f821b36dacca1df5d2c..87d56480bdc97dd5606d9392a9888f88e28cae00 100644 --- a/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/ComponentsViewModel.cs +++ b/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/ComponentsViewModel.cs @@ -143,7 +143,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components set => throw new NotImplementedException(); } - public IElectricStorageDeclarationInputData ElectricStorage => throw new NotImplementedException(); + public IElectricStorageSystemDeclarationInputData ElectricStorage => throw new NotImplementedException(); public IElectricMachinesDeclarationInputData ElectricMachines => throw new NotImplementedException(); diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs index 6acdf1436719dc0f725bed27144a42c983a09446..7cf379e0a0e613e99dfe177628aa15defb0c31ba 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs @@ -762,7 +762,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public IAxlesDeclarationInputData AxleWheels => throw new NotImplementedException(); - public IElectricStorageDeclarationInputData ElectricStorage => throw new NotImplementedException(); + public IElectricStorageSystemDeclarationInputData ElectricStorage => throw new NotImplementedException(); public IElectricMachinesDeclarationInputData ElectricMachines => throw new NotImplementedException(); diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs index 304adf995ee575b75e94da795247fcc5904d2dc9..3c485c752f789e8e704a82246fd4bd72137779f8 100644 --- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs +++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs @@ -226,8 +226,8 @@ namespace TUGraz.VectoCommon.InputData IAxlesDeclarationInputData AxleWheels { get; } IBusAuxiliariesDeclarationData BusAuxiliaries { get; } - - IElectricStorageDeclarationInputData ElectricStorage { get; } + + IElectricStorageSystemDeclarationInputData ElectricStorage { get; } IElectricMachinesDeclarationInputData ElectricMachines { get; } } @@ -761,11 +761,20 @@ namespace TUGraz.VectoCommon.InputData public TableData MechanicalTransmissionLossMap { get; set; } } + + + public interface IElectricStorageSystemDeclarationInputData + { + IList<IElectricStorageDeclarationInputData> ElectricStorageElements { get; } + } + public interface IElectricStorageDeclarationInputData { IREESSPackInputData REESSPack { get; } int Count { get; } + + int StringId { get; } } public enum REESSType @@ -777,6 +786,7 @@ namespace TUGraz.VectoCommon.InputData public interface IREESSPackInputData : IComponentInputData { REESSType StorageType { get; } + } public interface IBatteryPackDeclarationInputData : IREESSPackInputData diff --git a/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs b/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs index c9f01a8b1cf9e3d933fcf8ce795a0fc264fbdf41..8bead1e34001aca34fcbae46b53fed09fe4df9d8 100644 --- a/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs +++ b/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs @@ -161,7 +161,7 @@ namespace TUGraz.VectoCommon.InputData //IBusAuxiliariesEngineeringData BusAuxiliaries { get; } - IElectricStorageEngineeringInputData ElectricStorage { get; } + IElectricStorageSystemEngineeringInputData ElectricStorage { get; } IElectricMachinesEngineeringInputData ElectricMachines { get; } } @@ -485,6 +485,11 @@ namespace TUGraz.VectoCommon.InputData } + public interface IElectricStorageSystemEngineeringInputData : IElectricStorageSystemDeclarationInputData + { + new IList<IElectricStorageEngineeringInputData> ElectricStorageElements { get; } + } + public interface IBatteryPackEngineeringInputData : IBatteryPackDeclarationInputData { } diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONBattery.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONBattery.cs index 4b1703719e38f3fcf8f989f0e7ed8782a513fea0..41fa5ce3b234e2a74c548c10422bf7dbbf1bcbb8 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONBattery.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONBattery.cs @@ -102,5 +102,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON public REESSType StorageType => Body["REESSType"] == null ? REESSType.Battery : Body.GetEx<string>("REESSType").ParseEnum<REESSType>(); + //public int StreamNumber { get; } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs index 7ef86cb640e3889dbfd72a22719e52084bc7a3f2..b81a8918294544b9e8c92466fb9aa0b310a680d5 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs @@ -201,11 +201,14 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON public IBusAuxiliariesDeclarationData BusAuxiliaries => null; - public IElectricStorageEngineeringInputData ElectricStorage => - new JSONElectricStorageEngineeringInputData { - REESSPack = Battery, - Count = 1 - }; + public IElectricStorageSystemEngineeringInputData ElectricStorage => + new JSONElectricStorageSystemEngineeringInputData(new List<IElectricStorageEngineeringInputData>() { + new JSONElectricStorageEngineeringInputData { + REESSPack = Battery, + Count = 1, + StringId = 0, + } + }); public IElectricMachinesEngineeringInputData ElectricMachines { get { @@ -218,7 +221,14 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON }); } } - IElectricStorageDeclarationInputData IVehicleComponentsDeclaration.ElectricStorage => ElectricStorage; + IElectricStorageSystemDeclarationInputData IVehicleComponentsDeclaration.ElectricStorage => + new JSONElectricStorageSystemEngineeringInputData(new List<IElectricStorageEngineeringInputData>() { + new JSONElectricStorageEngineeringInputData { + REESSPack = Battery, + Count = 1, + StringId = 0, + } + }); IElectricMachinesDeclarationInputData IVehicleComponentsDeclaration.ElectricMachines => ElectricMachines; diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs index 592b5b345969242f525accddfd16a8365d490540..c9bb727f7934148ccae6d662147c7868ac0e95b0 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs @@ -615,6 +615,27 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON public int Count { get; internal set; } + public int StringId { get; internal set; } } + public class JSONElectricStorageSystemEngineeringInputData : IElectricStorageSystemEngineeringInputData + { + private IList<IElectricStorageEngineeringInputData> _electricStorageElements; + + + public JSONElectricStorageSystemEngineeringInputData(IList<IElectricStorageEngineeringInputData> entries) + { + _electricStorageElements = entries; + } + + public IList<IElectricStorageEngineeringInputData> ElectricStorageElements => _electricStorageElements; + + #region Implementation of IElectricStorageSystemDeclarationInputData + + IList<IElectricStorageDeclarationInputData> IElectricStorageSystemDeclarationInputData.ElectricStorageElements => _electricStorageElements.Cast<IElectricStorageDeclarationInputData>().ToList(); + + #endregion + } + + } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs index 1469c5ea0b797ab07df2326946dec0c69452ad8e..e99c766fe29ccc20d7e20d632c27b3ee0fd45cd0 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs @@ -52,7 +52,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON { public class JSONVehicleDataV10_HEV_BEV : JSONVehicleDataV9 { - private JSONElectricStorageEngineeringInputData _batteries; + private JSONElectricStorageSystemEngineeringInputData _batteries; private JSONElectricMotors _electricMotors; public JSONVehicleDataV10_HEV_BEV(JObject data, string fileName, IJSONVehicleComponents job, bool tolerateMissing = false) : @@ -69,7 +69,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON return _electricMotors ?? (_electricMotors = ReadMotors()); } - protected override IElectricStorageEngineeringInputData GetElectricStorage() + protected override IElectricStorageSystemEngineeringInputData GetElectricStorage() { return _batteries ?? (_batteries = ReadBatteries()); } @@ -122,12 +122,27 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } - protected virtual JSONElectricStorageEngineeringInputData ReadBatteries() + protected virtual JSONElectricStorageSystemEngineeringInputData ReadBatteries() { - return new JSONElectricStorageEngineeringInputData() { - Count = Body["Battery"].GetEx<int>("NumPacks"), - REESSPack = JSONInputDataFactory.ReadREESSData(Path.Combine(BasePath, Body["Battery"].GetEx<string>("BatteryFile")), false) - }; + var entries = new List<IElectricStorageEngineeringInputData>(); + if (Body["Batteries"] != null) { + foreach (var entry in Body["Batteries"]) { + entries.Add(new JSONElectricStorageEngineeringInputData() { + Count = entry.GetEx<int>("NumPacks"), + StringId = entry.GetEx<int>("StreamId"), + REESSPack = JSONInputDataFactory.ReadREESSData( + Path.Combine(BasePath, entry.GetEx<string>("BatteryFile")), false) + }); + } + } else { + entries.Add(new JSONElectricStorageEngineeringInputData() { + Count = Body["Battery"].GetEx<int>("NumPacks"), + StringId = 0, + REESSPack = JSONInputDataFactory.ReadREESSData(Path.Combine(BasePath, Body["Battery"].GetEx<string>("BatteryFile")), false) + }); + } + + return new JSONElectricStorageSystemEngineeringInputData(entries); } public override TableData ElectricMotorTorqueLimits => @@ -381,9 +396,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON IAxlesEngineeringInputData IVehicleComponentsEngineering.AxleWheels => this; - IElectricStorageEngineeringInputData IVehicleComponentsEngineering.ElectricStorage => GetElectricStorage(); + IElectricStorageSystemEngineeringInputData IVehicleComponentsEngineering.ElectricStorage => GetElectricStorage(); - protected virtual IElectricStorageEngineeringInputData GetElectricStorage() + protected virtual IElectricStorageSystemEngineeringInputData GetElectricStorage() { return null; } @@ -397,7 +412,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON public virtual IBusAuxiliariesDeclarationData BusAuxiliaries => null; - IElectricStorageDeclarationInputData IVehicleComponentsDeclaration.ElectricStorage => GetElectricStorage(); + IElectricStorageSystemDeclarationInputData IVehicleComponentsDeclaration.ElectricStorage => GetElectricStorage(); IElectricMachinesDeclarationInputData IVehicleComponentsDeclaration.ElectricMachines => GetElectricMachines(); diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs index 3e651e48dbb667f38d36cc06ff709344e81b514a..f22381ccb63ee31edd3db59215627562f8dad042 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs @@ -93,7 +93,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public virtual IAxlesDeclarationInputData AxleWheels => _axleWheels ?? (_axleWheels = ComponentReader.AxlesDeclarationInputData); public virtual IBusAuxiliariesDeclarationData BusAuxiliaries => null; - public virtual IElectricStorageDeclarationInputData ElectricStorage => null; + public virtual IElectricStorageSystemDeclarationInputData ElectricStorage => null; public virtual IElectricMachinesDeclarationInputData ElectricMachines => null; #endregion diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs index 2aa24cd7ccf787f928c97ba2e8c4eeeb8196dda4..cea6b6469d69043bef63ad7cdb295b9bbb45c04d 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs @@ -703,7 +703,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl } - public IElectricStorageDeclarationInputData ElectricStorage => null; + public IElectricStorageSystemDeclarationInputData ElectricStorage => null; public IElectricMachinesDeclarationInputData ElectricMachines => null; diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleComponentsDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleComponentsDataProvider.cs index 9f1de3fc1d4d04e85d8e8a9f20c1008b3f86ec7a..382c34b66996136bcfaae75b8e546dcefd723eaa 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleComponentsDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleComponentsDataProvider.cs @@ -91,7 +91,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider public IAxlesEngineeringInputData AxleWheels => _axleWheels ?? (_axleWheels = ComponentReader.AxlesEngineeringInputData); - public virtual IElectricStorageEngineeringInputData ElectricStorage => null; + public virtual IElectricStorageSystemEngineeringInputData ElectricStorage => null; public virtual IElectricMachinesEngineeringInputData ElectricMachines => null; #endregion diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs index e17f347199f088fdf63eda203ba30f2aa8448014..2eba5fc0ba3ea5eec5f05bcdead7067bafe1b68e 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs @@ -694,38 +694,57 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter return retVal; } - public BatteryData CreateBatteryData(IElectricStorageEngineeringInputData batteryInputData, double initialSOC) + public BatterySystemData CreateBatteryData(IElectricStorageSystemEngineeringInputData batteryInputData, double initialSOC) { - if (batteryInputData == null || batteryInputData.REESSPack.StorageType != REESSType.Battery) { + if (batteryInputData == null) { return null; } - var bat = batteryInputData.REESSPack as IBatteryPackEngineeringInputData; + var bat = batteryInputData.ElectricStorageElements.Where(x => x.REESSPack.StorageType == REESSType.Battery).ToArray(); + + var retVal = new BatterySystemData(); + foreach (var entry in bat) { + var b = entry.REESSPack as IBatteryPackDeclarationInputData; + if (b == null) { + continue; + } + + for (var i = 0; i < entry.Count; i++) { + retVal.Batteries.Add(Tuple.Create(entry.StringId, new BatteryData() { + MinSOC = b.MinSOC, + MaxSOC = b.MaxSOC, + MaxCurrent = BatteryMaxCurrentReader.Create(b.MaxCurrentMap, entry.Count), + Capacity = b.Capacity, + InternalResistance = + BatteryInternalResistanceReader.Create(b.InternalResistanceCurve, 1), + SOCMap = BatterySOCReader.Create(b.VoltageCurve), + })); + } + } - return new BatteryData() { - MinSOC = bat.MinSOC, - MaxSOC = bat.MaxSOC, - MaxCurrent = BatteryMaxCurrentReader.Create(bat.MaxCurrentMap, batteryInputData.Count), - Capacity = batteryInputData.Count * bat.Capacity, - InternalResistance = BatteryInternalResistanceReader.Create(bat.InternalResistanceCurve, batteryInputData.Count), - SOCMap = BatterySOCReader.Create(bat.VoltageCurve), - InitialSoC = initialSOC - }; + retVal.InitialSoC = initialSOC; + return retVal; } - public SuperCapData CreateSuperCapData(IElectricStorageEngineeringInputData reessInputData, double initialSOC) + public SuperCapData CreateSuperCapData(IElectricStorageSystemEngineeringInputData reessInputData, double initialSOC) { - if (reessInputData == null || reessInputData.REESSPack.StorageType != REESSType.SuperCap) + if (reessInputData == null) { return null; } - var superCap = reessInputData.REESSPack as ISuperCapEngineeringInputData; + var superCaps = reessInputData.ElectricStorageElements.Where(x => x.REESSPack.StorageType == REESSType.SuperCap).ToArray(); + + var superCap = superCaps.FirstOrDefault()?.REESSPack as ISuperCapDeclarationInputData; + + if (superCap == null) { + return null; + } return new SuperCapData() { - Capacity = reessInputData.Count * superCap.Capacity, - InternalResistance = superCap.InternalResistance / reessInputData.Count, + Capacity = superCaps.First().Count * superCap.Capacity, + InternalResistance = superCap.InternalResistance / superCaps.First().Count, MinVoltage = superCap.MinVoltage, MaxVoltage = superCap.MaxVoltage, MaxCurrentCharge = superCap.MaxCurrentCharge, diff --git a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs index 5fb3957afde3f7de69342f8ecac93a867df7a643..97196d0176432e95f7fa761bf06de24b2fce5991 100644 --- a/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs +++ b/VectoCore/VectoCore/Models/Simulation/Data/VectoRunData.cs @@ -129,7 +129,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Data public List<Tuple<PowertrainPosition, ElectricMotorData>> ElectricMachinesData { get; internal set; } - public BatteryData BatteryData { get; internal set; } + public BatterySystemData BatteryData { get; internal set; } public SuperCapData SuperCapData { get; internal set; } diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs index 2d345091b64cb893ea30f4dbcd2fd1cf2435d73b..ef134d2fa9851424a1d4273a6388dbc652336ed9 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs @@ -382,10 +382,10 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl var es = new ElectricSystem(container); if (data.BatteryData != null) { - if (data.BatteryData.InitialSoC < data.BatteryData.MinSOC) { + if (data.BatteryData.InitialSoC < data.BatteryData.Batteries.Min(x => x.Item2.MinSOC)) { throw new VectoException("Battery: Initial SoC has to be higher than min SoC"); } - var battery = new Battery(container, data.BatteryData); + var battery = new BatterySystem(container, data.BatteryData); battery.Initialize(data.BatteryData.InitialSoC); es.Connect(battery); } @@ -505,7 +505,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl var es = new ElectricSystem(container); if (data.BatteryData != null) { - var battery = new Battery(container, data.BatteryData); + var battery = new BatterySystem(container, data.BatteryData); battery.Initialize(data.BatteryData.InitialSoC); es.Connect(battery); } @@ -654,7 +654,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl var es = new ElectricSystem(container); if (data.BatteryData != null) { - var battery = new Battery(container, data.BatteryData); + var battery = new BatterySystem(container, data.BatteryData); battery.Initialize(data.BatteryData.InitialSoC); es.Connect(battery); } @@ -768,7 +768,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl var es = new ElectricSystem(container); if (data.BatteryData != null) { - var battery = new Battery(container, data.BatteryData); + var battery = new BatterySystem(container, data.BatteryData); battery.Initialize(data.BatteryData.InitialSoC); es.Connect(battery); } diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/Battery/BatteryData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/Battery/BatteryData.cs index e673b69d8febfefccfa217e327a3dfd8ba661027..52ba4b9dbf2213fc9b2fcba8d1b0c987b657f813 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Data/Battery/BatteryData.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/Battery/BatteryData.cs @@ -1,10 +1,32 @@ -using System.ComponentModel.DataAnnotations; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Linq; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.Utils; namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Battery { + public class BatterySystemData + { + public BatterySystemData() + { + Batteries = new List<Tuple<int, BatteryData>>(); + } + + public List<Tuple<int, BatteryData>> Batteries { get; internal set; } + + public double InitialSoC { get; internal set; } + public AmpereSecond Capacity + { + get + { + return Batteries.Select(x => x.Item1).Distinct().OrderBy(x => x).Aggregate(0.SI<AmpereSecond>(), + (current, s) => current + Batteries.Where(x => x.Item1 == s).Min(x => x.Item2.Capacity)); + } + } + } + public class BatteryData { [ValidateObject] @@ -23,9 +45,6 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data.Battery { public MaxCurrentMap MaxCurrent { get; internal set; } - public double InitialSoC { get; internal set; } - - //public double TargetSoC { get; internal set; } } public class SuperCapData diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs index 56c6427664645008da69dcf4e3747c01e9422e58..9c178e89ba6f0d0d2bf7723c0de443f67d821b88 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs @@ -61,7 +61,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data public NewtonMeter LookupDragTorque(Volt voltage, PerSecond avgSpeed) { - var tuple = VoltageLevels.GetSection(x => voltage > x.Voltage); + var tuple = GetSection(voltage); return VectoMath.Interpolate(tuple.Item1.Voltage, tuple.Item2.Voltage, tuple.Item1.DragCurve.Lookup(avgSpeed), @@ -73,7 +73,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data if (avgSpeed.IsGreaterOrEqual(MaxSpeed)) { return 0.SI<NewtonMeter>(); } - var tuple = VoltageLevels.GetSection(x => voltage > x.Voltage); + var tuple = GetSection(voltage); var r1 = tuple.Item1.EfficiencyMap.LookupTorque(electricPower, avgSpeed, maxEmTorque); var r2 = tuple.Item2.EfficiencyMap.LookupTorque(electricPower, avgSpeed, maxEmTorque); @@ -102,7 +102,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data public EfficiencyMap.EfficiencyResult LookupElectricPower(Volt voltage, PerSecond avgSpeed, NewtonMeter torque, bool allowExtrapolation = false) { - var tuple = VoltageLevels.GetSection(x => voltage > x.Voltage); + var tuple = GetSection(voltage); var r1 = tuple.Item1.EfficiencyMap.LookupElectricPower(avgSpeed, torque, allowExtrapolation); var r2 = tuple.Item2.EfficiencyMap.LookupElectricPower(avgSpeed, torque, allowExtrapolation); @@ -128,7 +128,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data public NewtonMeter FullGenerationTorque(Volt voltage, PerSecond avgSpeed) { - var tuple = VoltageLevels.GetSection(x => voltage > x.Voltage); + var tuple = GetSection(voltage); return VectoMath.Interpolate(tuple.Item1.Voltage, tuple.Item2.Voltage, tuple.Item1.FullLoadCurve.FullGenerationTorque(avgSpeed), @@ -137,12 +137,24 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data public NewtonMeter FullLoadDriveTorque(Volt voltage, PerSecond avgSpeed) { - var tuple = VoltageLevels.GetSection(x => voltage > x.Voltage); + var tuple = GetSection(voltage); return VectoMath.Interpolate(tuple.Item1.Voltage, tuple.Item2.Voltage, tuple.Item1.FullLoadCurve.FullLoadDriveTorque(avgSpeed), tuple.Item2.FullLoadCurve.FullLoadDriveTorque(avgSpeed), voltage); } + + protected Tuple<ElectricMotorVoltageLevelData, ElectricMotorVoltageLevelData> GetSection(Volt voltage) + { + if (voltage < VoltageLevels.First().Voltage) { + return Tuple.Create(VoltageLevels.First(), VoltageLevels.First()); + } + + if (voltage > VoltageLevels.Last().Voltage) { + return Tuple.Create(VoltageLevels.Last(), VoltageLevels.Last()); + } + return VoltageLevels.GetSection(x => voltage > x.Voltage); + } } public class ElectricMotorVoltageLevelData diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Battery.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Battery.cs index 89effcf3c48116088aabb54eba241bc335e05328..7d01943df6670e6774b2ef8f1e3ba72f727c1845 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/Battery.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/Battery.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using TUGraz.VectoCommon.BusAuxiliaries; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; @@ -17,9 +18,12 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl { protected readonly BatteryData ModelData; - public Battery(IVehicleContainer container, BatteryData modelData) : base(container) + public Battery(IVehicleContainer container, BatteryData modelData, int idx = -1) : base(container) { ModelData = modelData; + if (idx >= 0) { + BatteryId = idx; + } } #region Implementation of IBatteryProvider @@ -142,20 +146,22 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl protected override void DoWriteModalResults(Second absTime, Second dt, IModalDataContainer container) { var cellVoltage = ModelData.SOCMap.Lookup(PreviousState.StateOfCharge); - container[ModalResultField.U0_reess] = cellVoltage; - container[ModalResultField.U_reess_terminal] = + container[ModalResultField.U0_reess, BatteryId] = cellVoltage; + container[ModalResultField.U_reess_terminal, BatteryId] = cellVoltage + CurrentState.TotalCurrent * ModelData.InternalResistance.Lookup(PreviousState.StateOfCharge); // adding both terms because pos. current charges the battery! - container[ModalResultField.I_reess] = CurrentState.TotalCurrent; - container[ModalResultField.REESSStateOfCharge] = CurrentState.StateOfCharge.SI(); - container[ModalResultField.P_reess_terminal] = CurrentState.PowerDemand; - container[ModalResultField.P_reess_int] = cellVoltage * CurrentState.TotalCurrent; - container[ModalResultField.P_reess_loss] = CurrentState.BatteryLoss; - container[ModalResultField.P_reess_charge_max] = CurrentState.MaxChargePower; - container[ModalResultField.P_reess_discharge_max] = CurrentState.MaxDischargePower; + container[ModalResultField.I_reess, BatteryId] = CurrentState.TotalCurrent; + container[ModalResultField.REESSStateOfCharge, BatteryId] = CurrentState.StateOfCharge.SI(); + container[ModalResultField.P_reess_terminal, BatteryId] = CurrentState.PowerDemand; + container[ModalResultField.P_reess_int, BatteryId] = cellVoltage * CurrentState.TotalCurrent; + container[ModalResultField.P_reess_loss, BatteryId] = CurrentState.BatteryLoss; + container[ModalResultField.P_reess_charge_max, BatteryId] = CurrentState.MaxChargePower; + container[ModalResultField.P_reess_discharge_max, BatteryId] = CurrentState.MaxDischargePower; } + public int? BatteryId { get; } + protected override void DoCommitSimulationStep(Second time, Second simulationInterval) { AdvanceState(); @@ -175,21 +181,25 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl public Watt MaxChargePower(Second dt) { - var maxChargeCurrent = VectoMath.Min((ModelData.MaxSOC - PreviousState.StateOfCharge) * ModelData.Capacity / dt, - ModelData.MaxCurrent.LookupMaxChargeCurrent(PreviousState.StateOfCharge)); + //var maxChargeCurrent = VectoMath.Min((ModelData.MaxSOC - PreviousState.StateOfCharge) * ModelData.Capacity / dt, + // ModelData.MaxCurrent.LookupMaxChargeCurrent(PreviousState.StateOfCharge)); + var maxChargeCurrent = MaxChargeCurrent(dt); return InternalVoltage * maxChargeCurrent + - maxChargeCurrent * ModelData.InternalResistance.Lookup(PreviousState.StateOfCharge) * maxChargeCurrent; + maxChargeCurrent * InternalResistance * maxChargeCurrent; } + + public Watt MaxDischargePower(Second dt) { - var maxDischargeCurrent = VectoMath.Max( - ((ModelData.MinSOC - PreviousState.StateOfCharge) * ModelData.Capacity / dt).LimitTo(ModelData.MaxCurrent.LookupMaxDischargeCurrent(PreviousState.StateOfCharge), - 0.SI<Ampere>()), ModelData.MaxCurrent.LookupMaxDischargeCurrent(PreviousState.StateOfCharge)); + //var maxDischargeCurrent = VectoMath.Max( + // ((ModelData.MinSOC - PreviousState.StateOfCharge) * ModelData.Capacity / dt).LimitTo(ModelData.MaxCurrent.LookupMaxDischargeCurrent(PreviousState.StateOfCharge), + // 0.SI<Ampere>()), ModelData.MaxCurrent.LookupMaxDischargeCurrent(PreviousState.StateOfCharge)); + var maxDischargeCurrent = MaxDischargeCurrent(dt); var cellVoltage = InternalVoltage; var maxDischargePower = InternalVoltage * maxDischargeCurrent + - maxDischargeCurrent * ModelData.InternalResistance.Lookup(PreviousState.StateOfCharge) * maxDischargeCurrent; - var maxPower = -cellVoltage / (4 * ModelData.InternalResistance.Lookup(PreviousState.StateOfCharge)) * cellVoltage; + maxDischargeCurrent * InternalResistance * maxDischargeCurrent; + var maxPower = -cellVoltage / (4 * InternalResistance) * cellVoltage; return VectoMath.Max(maxDischargePower, maxPower); } @@ -197,6 +207,22 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl public double MaxSoC => ModelData.MaxSOC; + public Ohm InternalResistance => ModelData.InternalResistance.Lookup(PreviousState.StateOfCharge); + public AmpereSecond Capacity => ModelData.Capacity; + + public Ampere MaxChargeCurrent(Second dt) + { + return VectoMath.Min( + (ModelData.MaxSOC - PreviousState.StateOfCharge) * ModelData.Capacity / dt, + ModelData.MaxCurrent.LookupMaxChargeCurrent(PreviousState.StateOfCharge)); + } + + public Ampere MaxDischargeCurrent(Second dt) + { + return VectoMath.Max( + ((ModelData.MinSOC - PreviousState.StateOfCharge) * ModelData.Capacity / dt).LimitTo(ModelData.MaxCurrent.LookupMaxDischargeCurrent(PreviousState.StateOfCharge), + 0.SI<Ampere>()), ModelData.MaxCurrent.LookupMaxDischargeCurrent(PreviousState.StateOfCharge)); + } //public Ampere MaxCurrent //{ // get @@ -222,5 +248,6 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl public Watt BatteryLoss; } + } } \ No newline at end of file diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/BatterySystem.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/BatterySystem.cs new file mode 100644 index 0000000000000000000000000000000000000000..0d75b8ebf543e1e5d0960a801648da83651a7bb2 --- /dev/null +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/BatterySystem.cs @@ -0,0 +1,337 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using TUGraz.VectoCommon.Exceptions; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.Configuration; +using TUGraz.VectoCore.Models.Connector.Ports.Impl; +using TUGraz.VectoCore.Models.Simulation; +using TUGraz.VectoCore.Models.Simulation.Data; +using TUGraz.VectoCore.Models.SimulationComponent.Data.Battery; +using TUGraz.VectoCore.OutputData; + +namespace TUGraz.VectoCore.Models.SimulationComponent.Impl +{ + public class BatterySystem : StatefulVectoSimulationComponent<BatterySystem.State>, IElectricEnergyStorage, IElectricEnergyStoragePort + { + public class BatteryString + { + protected readonly List<Battery> _batteries; + + private AmpereSecond _capacity; + + public BatteryString() + { + _batteries = new List<Battery>(); + } + + public IReadOnlyList<Battery> Batteries => _batteries; + + public void AddBattery(Battery bat) + { + _batteries.Add(bat); + // Todo: update some properties? + _capacity = null; + } + + public Volt OpenCircuitVoltage => _batteries.Sum(x => x.InternalVoltage); + + public Ohm InternalResistance => _batteries.Sum(x => x.InternalResistance); + + public AmpereSecond Capacity => _capacity ?? (_capacity = _batteries.Min(x => x.Capacity)); + + public double SoC => _batteries.Min(x => x.StateOfCharge * x.Capacity) / Capacity; + public WattSecond StoredEnergy => _batteries.Min(x => x.StateOfCharge * x.Capacity) * OpenCircuitVoltage; + + public Watt MaxDischargePower(Second dt) + { + var maxDischargeCurrent = MaxDischargeCurrent(dt); + var maxDischargePower = OpenCircuitVoltage * maxDischargeCurrent + + maxDischargeCurrent * InternalResistance * maxDischargeCurrent; + var maxPower = -OpenCircuitVoltage / (4 * InternalResistance) * OpenCircuitVoltage; + return VectoMath.Max(maxDischargePower, maxPower); + + } + + public Ampere MaxChargeCurrent(Second dt) + { + return _batteries.Min(x => x.MaxChargeCurrent(dt)); + } + + public Ampere MaxDischargeCurrent(Second dt) + { + return _batteries.Max(x => x.MaxDischargeCurrent(dt)); + } + + public Watt MaxChargePower(Second dt) + { + var maxCurrent = MaxChargeCurrent(dt); + return OpenCircuitVoltage * maxCurrent + + maxCurrent * InternalResistance * maxCurrent; + } + + public IList<IRESSResponse> Request(Second absTime, Second dt, Watt powerDemand, bool dryRun) + { + var current = 0.SI<Ampere>(); + if (!powerDemand.IsEqual(0)) { + var solutions = VectoMath.QuadraticEquationSolver(InternalResistance.Value(), OpenCircuitVoltage.Value(), + -powerDemand.Value()); + current = SelectSolution(solutions, powerDemand.Value(), dt); + } + + if (!dryRun) { + Current = current; + } + + return _batteries.Select(x => { + var demand = (x.InternalVoltage + x.InternalResistance * current) * current; + return x.Request(absTime, dt, demand, dryRun); + }).ToList(); + } + + public Ampere Current { get; set; } + + private Ampere SelectSolution(double[] solutions, double sign, Second dt) + { + var maxCurrent = Math.Sign(sign) < 0 + ? MaxDischargeCurrent(dt) + : MaxChargeCurrent(dt); + return solutions.Where(x => Math.Sign(sign) == Math.Sign(x) && Math.Abs(x).IsSmallerOrEqual(Math.Abs(maxCurrent.Value()), 1e-3)).Min().SI<Ampere>(); + } + } + + protected internal readonly Dictionary<int, BatteryString> Batteries = new Dictionary<int, BatteryString>(); + + private AmpereSecond _totalCapacity; + + public BatterySystem(IVehicleContainer dataBus, BatterySystemData batterySystemData) : base(dataBus) + { + var idx = 0; + foreach (var entry in batterySystemData.Batteries) { + var bat = new Battery(null, entry.Item2, idx++); + if (!Batteries.ContainsKey(entry.Item1)) { + Batteries[entry.Item1] = new BatteryString(); + } + Batteries[entry.Item1].AddBattery(bat); + } + } + + #region Overrides of VectoSimulationComponent + + public override void CommitSimulationStep(Second time, Second simulationInterval, IModalDataContainer container) + { + base.CommitSimulationStep(time, simulationInterval, container); + foreach (var battery in Batteries) { + foreach (var b in battery.Value.Batteries) { + b.CommitSimulationStep(time, simulationInterval, container); + } + } + // write battery system average SoC after all battery components - then the SoC property changes from current to + // previous state and thus the average matches the individual batteries + if (container != null) { + container[ModalResultField.REESSStateOfCharge] = StateOfCharge.SI(); + } + } + + protected override void DoWriteModalResults(Second time, Second simulationInterval, IModalDataContainer container) + { + var cellVoltage = InternalVoltage; + container[ModalResultField.U0_reess] = cellVoltage; + container[ModalResultField.U_reess_terminal] = + cellVoltage + + CurrentState.TotalCurrent * + InternalResistance; // adding both terms because pos. current charges the battery! + container[ModalResultField.I_reess] = CurrentState.TotalCurrent; + //container[ModalResultField.REESSStateOfCharge] = CurrentState.StateOfCharge.SI(); + container[ModalResultField.P_reess_terminal] = CurrentState.PowerDemand; + container[ModalResultField.P_reess_int] = cellVoltage * CurrentState.TotalCurrent; + container[ModalResultField.P_reess_loss] = CurrentState.BatteryLoss; + container[ModalResultField.P_reess_charge_max] = CurrentState.MaxChargePower; + container[ModalResultField.P_reess_discharge_max] = CurrentState.MaxDischargePower; + } + + public Ohm InternalResistance => (1 / Batteries.Sum(bs => 1 / bs.Value.InternalResistance.Value())).SI<Ohm>(); + + protected override void DoCommitSimulationStep(Second time, Second simulationInterval) + { + + } + + + #endregion + + #region Implementation of IBatteryProvider + + public IElectricEnergyStoragePort MainBatteryPort => this; + + #endregion + + #region Implementation of IRESSInfo + + public Volt InternalVoltage => Batteries.Values.Select(x => x.OpenCircuitVoltage).Average(); + + public double StateOfCharge => Batteries.Values.Sum(bs => bs.SoC * bs.Capacity) / TotalCapacity; + + public AmpereSecond TotalCapacity => + _totalCapacity ?? (_totalCapacity = Batteries.Values.Sum(bs => bs.Capacity)); + + public WattSecond StoredEnergy => Batteries.Values.Sum(bs => bs.StoredEnergy); + + public Watt MaxChargePower(Second dt) + { + return Batteries.Values.Sum(bs => bs.MaxChargePower(dt)); + + } + + public Watt MaxDischargePower(Second dt) + { + return Batteries.Values.Sum(bs => bs.MaxDischargePower(dt)); + } + + public double MinSoC { get; } + public double MaxSoC { get; } + + #endregion + + #region Implementation of IElectricEnergyStoragePort + + public void Initialize(double initialSoC) + { + foreach (var b in Batteries.Values.SelectMany(bs => bs.Batteries)) { + b.Initialize(initialSoC); + } + } + + public IRESSResponse Request(Second absTime, Second dt, Watt powerDemand, bool dryRun) + { + var maxChargePower = MaxChargePower(dt); + var maxDischargePower = MaxDischargePower(dt); + + if (powerDemand.IsGreater(maxChargePower, Constants.SimulationSettings.InterpolateSearchTolerance) || + powerDemand.IsSmaller(maxDischargePower, Constants.SimulationSettings.InterpolateSearchTolerance)) { + return PowerDemandExceeded(absTime, dt, powerDemand, maxDischargePower, maxChargePower, dryRun); + } + + + var powerDemands = new Dictionary<int, Watt>(); + var limitBB = new Dictionary<int, Watt>(); + var distributedPower = 0.SI<Watt>(); + do { + distributedPower = 0.SI<Watt>(); + var remainingPower = powerDemand - (limitBB.Sum(x => x.Value) ?? 0.SI<Watt>()); + powerDemands.Clear(); + var totalCapacity = (Batteries.Where(x => !limitBB.ContainsKey(x.Key)).Sum(x => x.Value.Capacity) ?? 0.SI<AmpereSecond>()); + var averageSoC = (Batteries.Where(x => !limitBB.ContainsKey(x.Key)).Sum(x => x.Value.SoC * x.Value.Capacity) / totalCapacity).Value(); + foreach (var bs in Batteries) { + if (limitBB.ContainsKey(bs.Key)) { + continue; + } + var delta = 1 - Math.Sign(remainingPower.Value()) * (bs.Value.SoC - averageSoC) / averageSoC; + var power = bs.Value.Capacity / totalCapacity * delta * remainingPower; + if (!power.IsBetween(bs.Value.MaxDischargePower(dt), bs.Value.MaxChargePower(dt))) { + limitBB[bs.Key] = power.LimitTo(bs.Value.MaxDischargePower(dt), bs.Value.MaxChargePower(dt)); + } else { + powerDemands[bs.Key] = power; + distributedPower += power; + } + } + + if (limitBB.Count > 0) { + Log.Debug($"BB ${string.Join(", ", limitBB.Keys)} are at max - recalculating power distribution"); + } + } while (!(distributedPower + (limitBB.Sum(x => x.Value) ?? 0.SI<Watt>())) .IsEqual(powerDemand, 1e-3.SI<Watt>())); + + powerDemands = powerDemands.Concat(limitBB).ToDictionary(x => x.Key, x=> x.Value); + + var responses = new Dictionary<int, IList<IRESSResponse>>(); + foreach (var entry in powerDemands) { + responses[entry.Key] = Batteries[entry.Key].Request(absTime, dt, entry.Value, dryRun); + } + + if (dryRun) { + return new RESSDryRunResponse(this) { + AbsTime = absTime, + SimulationInterval = dt, + MaxChargePower = maxChargePower, + MaxDischargePower = maxDischargePower, + PowerDemand = powerDemand, + LossPower = responses.Sum(x => x.Value.Sum(b => b.LossPower)), + //StateOfCharge = (currentCharge + current * dt) / ModelData.Capacity + }; + } + + var current = Batteries.Values.Sum(x => x.Current); + + CurrentState.StateOfCharge = StateOfCharge; + CurrentState.PowerDemand = powerDemand; + CurrentState.MaxChargePower = maxChargePower; + CurrentState.MaxDischargePower = maxDischargePower; + CurrentState.TotalCurrent = current; + CurrentState.BatteryLoss = current * InternalResistance * current; + + if (responses.All(bb => bb.Value.All(b => b is RESSResponseSuccess))) { + return new RESSResponseSuccess(this) { + AbsTime = absTime, + SimulationInterval = dt, + MaxChargePower = maxChargePower, + MaxDischargePower = maxDischargePower, + PowerDemand = powerDemand, + LossPower = responses.Sum(x => x.Value.Sum(b => b.LossPower)), + //StateOfCharge = (currentCharge + current * dt) / ModelData.Capacity + }; + } + throw new NotImplementedException("batterypack no success"); + } + + + private IRESSResponse PowerDemandExceeded(Second absTime, Second dt, Watt powerDemand, Watt maxDischargePower, + Watt maxChargePower, bool dryRun) + { + var maxPower = powerDemand < 0 ? maxDischargePower : maxChargePower; + + var maxChargeCurrent = Batteries.Values.Sum(bs => bs.MaxChargeCurrent(dt)); + var maxDischargeCurrent = Batteries.Values.Sum(bs => bs.MaxDischargeCurrent(dt)); + var current = powerDemand < 0 ? maxDischargeCurrent : maxChargeCurrent; + var internalResistance = (1 / Batteries.Values.Sum(bs => 1 / bs.InternalResistance.Value())).SI<Ohm>(); + + var batteryLoss = current * internalResistance * current; + + AbstractRESSResponse response; + if (dryRun) { + response = new RESSDryRunResponse(this); + } else { + if (powerDemand > maxPower) { + response = new RESSOverloadResponse(this); + } else { + response = new RESSUnderloadResponse(this); + } + } + response.AbsTime = absTime; + response.SimulationInterval = dt; + response.MaxChargePower = maxChargePower; + response.MaxDischargePower = maxDischargePower; + response.PowerDemand = powerDemand; + response.LossPower = batteryLoss; + + return response; + } + + #endregion + + public class State + { + public double StateOfCharge; + + public Second SimulationInterval; + + public Watt PowerDemand; + + public Ampere TotalCurrent; + public Watt MaxChargePower; + public Watt MaxDischargePower; + public Watt BatteryLoss; + } + } +} \ No newline at end of file diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs index 26e22fad12d1430648f6ceeaeb57092ba37b9cf5..8e80bc6cca386628b43598c4d9f09fdd6d4d56c2 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/HybridStrategy.cs @@ -57,6 +57,15 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies TestPowertrain.HybridController.Initialize(Controller.PreviousState.OutTorque, Controller.PreviousState.OutAngularVelocity); TestPowertrain.Clutch.Initialize(DataBus.ClutchInfo.ClutchLosses); TestPowertrain.Battery?.Initialize(DataBus.BatteryInfo.StateOfCharge); + if (TestPowertrain.BatterySystem != null) { + var batSystem = DataBus.BatteryInfo as BatterySystem; + foreach (var bsKey in batSystem.Batteries.Keys) { + for (var i = 0; i < batSystem.Batteries[bsKey].Batteries.Count; i++) { + TestPowertrain.BatterySystem.Batteries[bsKey].Batteries[i] + .Initialize(batSystem.Batteries[bsKey].Batteries[i].StateOfCharge); + } + } + } TestPowertrain.SuperCap?.Initialize(DataBus.BatteryInfo.StateOfCharge); TestPowertrain.Brakes.BrakePower = DataBus.Brakes.BrakePower; @@ -557,16 +566,17 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies shiftStrategyParameters.AllowedGearRangeFC = shiftStrategyParameters.AllowedGearRangeFC.LimitTo(1, 2); } - var auxEnergyReserve = ModelData.ElectricAuxDemand * StrategyParameters.AuxReserveTime; - BatteryDischargeEnergyThreshold = 0.SI<WattSecond>(); - if (auxEnergyReserve > 0) { - var minSoc = Math.Max(ModelData.BatteryData?.MinSOC ?? ModelData.SuperCapData.MinVoltage / ModelData.SuperCapData.MaxVoltage, - StrategyParameters.MinSoC); - BatteryDischargeEnergyThreshold = - ModelData.BatteryData.Capacity * minSoc * ModelData.BatteryData.SOCMap.Lookup(minSoc) + - auxEnergyReserve; - } - AllowEmergencyShift = false; + // TODO: MQ 20210712 how to handle with batterysystem + //var auxEnergyReserve = ModelData.ElectricAuxDemand * StrategyParameters.AuxReserveTime; + BatteryDischargeEnergyThreshold = 0.SI<WattSecond>(); + //if (auxEnergyReserve > 0) { + // var minSoc = Math.Max(ModelData.BatteryData?.MinSOC ?? ModelData.SuperCapData.MinVoltage / ModelData.SuperCapData.MaxVoltage, + // StrategyParameters.MinSoC); + // BatteryDischargeEnergyThreshold = + // ModelData.BatteryData.Capacity * minSoc * ModelData.BatteryData.SOCMap.Lookup(minSoc) + + // auxEnergyReserve; + //} + AllowEmergencyShift = false; } public virtual IHybridController Controller { protected get; set; } @@ -2230,6 +2240,16 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies retVal.MechanicalAssistPower[em.Item1] = null; } + // TODO: MQ 20210712 how to handle with batterysystem + //var auxEnergyReserve = ModelData.ElectricAuxDemand * StrategyParameters.AuxReserveTime; + //if (auxEnergyReserve > 0) { + // var minSoc = Math.Max(ModelData.BatteryData?.MinSOC ?? ModelData.SuperCapData.MinVoltage / ModelData.SuperCapData.MaxVoltage, + // StrategyParameters.MinSoC); + // BatteryDischargeEnergyThreshold = + // ModelData.BatteryData.Capacity * minSoc * ModelData.BatteryData.SOCMap.Lookup(minSoc) + + // auxEnergyReserve; + //} + PreviousState.AngularVelocity = outAngularVelocity; PreviousState.GearboxEngaged = true; PreviousState.GearshiftTriggerTstmp = -double.MaxValue.SI<Second>(); diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/TestPowertrain.cs b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/TestPowertrain.cs index 1d1126314a53aee8b65f1a756a0b50b55c8bd8b3..17ad336cd017cd6c8f2f9f64f08d4155fd505716 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Strategies/TestPowertrain.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Strategies/TestPowertrain.cs @@ -19,6 +19,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies { public SimpleHybridController HybridController; public Battery Battery; + public BatterySystem BatterySystem; public SuperCap SuperCap; public Clutch Clutch; public IBrakes Brakes; @@ -36,6 +37,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Strategies { HybridController = Container.HybridController as SimpleHybridController; Battery = Container.BatteryInfo as Battery; + BatterySystem = container.BatteryInfo as BatterySystem; + SuperCap = Container.BatteryInfo as SuperCap; Clutch = Container.ClutchInfo as Clutch; CombustionEngine = Container.EngineInfo as StopStartCombustionEngine; diff --git a/VectoCore/VectoCore/Models/SimulationComponent/VectoSimulationComponent.cs b/VectoCore/VectoCore/Models/SimulationComponent/VectoSimulationComponent.cs index e80e108aaa48741a5dc570488c03ec2a2f2267d7..6034fcc178a0acbfad280038e40008ae0210f9ea 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/VectoSimulationComponent.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/VectoSimulationComponent.cs @@ -59,7 +59,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent dataBus.AddComponent(this); } - public void CommitSimulationStep(Second time, Second simulationInterval, IModalDataContainer container) + public virtual void CommitSimulationStep(Second time, Second simulationInterval, IModalDataContainer container) { if (container != null) { DoWriteModalResults(time, simulationInterval, container); diff --git a/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs b/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs index 5aafdf197f86c6067bfe16fee68c1ae1ac21f389..0eb4d17f6f631712255f56ce05b34e6616627227 100644 --- a/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs +++ b/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs @@ -520,7 +520,7 @@ public class JSONFileWriter : IOutputFileWriter body.Add("InitialSoC", vehicle.InitialSOC * 100); body.Add("PowertrainConfiguration", "ParallelHybrid"); body.Add("ElectricMotors", electricMotorsOut); - body.Add("Battery", battery); + body.Add("Batteries", battery); WriteFile(header, body, filename); } @@ -551,7 +551,7 @@ public class JSONFileWriter : IOutputFileWriter body.Add("InitialSoC", vehicle.InitialSOC * 100); body.Add("PowertrainConfiguration", "BatteryElectric"); body.Add("ElectricMotors", electricMotorsOut); - body.Add("Battery", battery); + body.Add("Batteries", battery); //body.Add("IdlingSpeed", vehicle.EngineIdleSpeed.AsRPM); //body.Add("Retarder", retarderOut); @@ -567,14 +567,19 @@ public class JSONFileWriter : IOutputFileWriter WriteFile(header, body, filename); } - private Dictionary<string, object> GetBattery(IVehicleEngineeringInputData vehicle, string basePath) + private Dictionary<string, object>[] GetBattery(IVehicleEngineeringInputData vehicle, string basePath) { - var retVal = new Dictionary<string, object>() - { - {"NumPacks", vehicle.Components.ElectricStorage.Count}, - {"BatteryFile", GetRelativePath(vehicle.Components.ElectricStorage.REESSPack.DataSource.SourceFile, basePath)} + + var retVal = new List<Dictionary<string, object>>(); + foreach (var entry in vehicle.Components.ElectricStorage.ElectricStorageElements) { + + retVal.Add(new Dictionary<string, object>() { + { "NumPacks", entry.Count }, + { "BatteryFile", GetRelativePath(entry.REESSPack.DataSource.SourceFile, basePath) }, + { "StreamId", entry.StringId} + }); }; - return retVal; + return retVal.ToArray(); } private Array GetElectricMotors(IVehicleEngineeringInputData vehicle, string basePath) diff --git a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs index 78de9f4350c6d6124971679b730f8b90ff04bb44..e6c5818d404b537e0f017917ec5b5feec15238f0 100644 --- a/VectoCore/VectoCore/OutputData/IModalDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/IModalDataContainer.cs @@ -63,6 +63,8 @@ namespace TUGraz.VectoCore.OutputData object this[ModalResultField key, PowertrainPosition pos] { get; set; } + object this[ModalResultField key, int? pos] { get; set; } + /// <summary> /// Indexer for auxiliary fields of the DataWriter. /// </summary> diff --git a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs index 43c458c508f3f0fb7d0178d0d65bdf2b125997d8..0fa117b265497b9b15f8e9b5e4319ec796591d02 100644 --- a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs @@ -93,6 +93,21 @@ namespace TUGraz.VectoCore.OutputData ModalResultField.EM_Off_, }; + private readonly ModalResultField[] _batterySignals = new[] { + ModalResultField.U0_reess, + ModalResultField.U_reess_terminal, + ModalResultField.I_reess, + ModalResultField.REESSStateOfCharge, + ModalResultField.P_reess_terminal, + ModalResultField.P_reess_int, + ModalResultField.P_reess_loss, + ModalResultField.P_reess_charge_max, + ModalResultField.P_reess_discharge_max + }; + + protected Dictionary<int, Dictionary<ModalResultField, DataColumn>> BatteryColumns = + new Dictionary<int, Dictionary<ModalResultField, DataColumn>>(); + public static readonly IList<ModalResultField> FuelConsumptionSignals = new[] { ModalResultField.FCMap, ModalResultField.FCNCVc, ModalResultField.FCWHTCc, // ModalResultField.FCAAUX, ModalResultField.FCICEStopStart, ModalResultField.FCFinal @@ -109,6 +124,7 @@ namespace TUGraz.VectoCore.OutputData protected VectoRunData _runData; private ICorrectedModalData _correctedModalData; + public IModalDataPostProcessor PostProcessingCorrection { set; protected get; } @@ -615,6 +631,11 @@ namespace TUGraz.VectoCore.OutputData strCols = strCols.Concat(_additionalColumns); strCols = strCols.Concat(new[] { ModalResultField.ICEOn }.Select(x => x.GetName())); //dataColumns.Add(ModalResultField.altitude); + + foreach (var batKey in BatteryColumns.Keys) { + strCols = strCols.Concat(BatteryColumns[batKey].Keys.Where(x => _batterySignals.Contains(x)) + .Select(x => $"{x.GetName()}_{batKey}")); + } //#endif var fileSuffix = RunSuffix; if (WriteModalResults) { @@ -869,6 +890,40 @@ namespace TUGraz.VectoCore.OutputData set => CurrentRow[string.Format(key.GetCaption(), pos.GetName())] = value; } + public object this[ModalResultField key, int? idx] { + get { + if (!_batterySignals.Contains(key)) { + throw new VectoException("ModalResult with index is only supported for REESS fields"); + } + + return idx.HasValue ? CurrentRow[$"{key.GetCaption()}_{idx.Value}"] : CurrentRow[key.GetName()]; + } + set + { + if (idx == null) { + CurrentRow[key.GetName()] = value; + } else { + if (!_batterySignals.Contains(key)) { + throw new VectoException("ModalResult with index is only supported for REESS fields"); + } + if (!BatteryColumns.ContainsKey(idx.Value)) { + BatteryColumns[idx.Value] = new Dictionary<ModalResultField, DataColumn>(); + } + + var entry = BatteryColumns[idx.Value]; + if (!entry.ContainsKey(key)) { + var col = Data.Columns.Add($"{key.GetName()}_{idx.Value}", typeof(SI)); + col.ExtendedProperties[ModalResults.ExtendedPropertyNames.Decimals] = key.GetAttribute().Decimals; + col.ExtendedProperties[ModalResults.ExtendedPropertyNames.OutputFactor] = key.GetAttribute().OutputFactor; + col.ExtendedProperties[ModalResults.ExtendedPropertyNames.ShowUnit] = key.GetAttribute().ShowUnit; + entry[key] = col; + } + + CurrentRow[entry[key]] = value; + } + } + } + public object this[string auxId] { get => CurrentRow[Auxiliaries[auxId]]; diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj index dcaca9ee12393ca50aed32d71e7b6bd424e2507a..ec72baab2cb4291565438bdda9f654a01dfb5ed4 100644 --- a/VectoCore/VectoCore/VectoCore.csproj +++ b/VectoCore/VectoCore/VectoCore.csproj @@ -284,6 +284,7 @@ <Compile Include="InputData\FileIO\XML\XMLInputDataNinjectModule.cs" /> <Compile Include="InputData\Reader\ComponentData\BatteryInternalResistanceReader.cs" /> <Compile Include="InputData\Reader\ComponentData\BatteryMaxCurrentReader.cs" /> + <Compile Include="Models\SimulationComponent\Impl\BatterySystem.cs" /> <Compile Include="Models\SimulationComponent\Impl\PTODriveAuxiliary.cs" /> <Compile Include="Models\SimulationComponent\Impl\RoadSweeperAuxiliary.cs" /> <Compile Include="InputData\Reader\ComponentData\ElectricMotorMapReader.cs" /> diff --git a/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs b/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs index 48e4e1fdebad6adb5364581f5ef0f9f34ff9bd6e..47d5286c5f133309e0c9ce38f5495657ec7f9a0e 100644 --- a/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs +++ b/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs @@ -210,12 +210,12 @@ namespace TUGraz.VectoCore.Tests.FileIO Assert.NotNull(engineering); Assert.AreEqual(0.8, engineering.JobInputData.Vehicle.InitialSOC); - var bat = engineering.JobInputData.Vehicle.Components.ElectricStorage.REESSPack as IBatteryPackEngineeringInputData; + var bat = engineering.JobInputData.Vehicle.Components.ElectricStorage.ElectricStorageElements.First().REESSPack as IBatteryPackEngineeringInputData; var ri = BatteryInternalResistanceReader.Create(bat.InternalResistanceCurve, 1); var imax = BatteryMaxCurrentReader.Create(bat.MaxCurrentMap, 1); Assert.NotNull(bat); - Assert.AreEqual(2, engineering.JobInputData.Vehicle.Components.ElectricStorage.Count); + Assert.AreEqual(2, engineering.JobInputData.Vehicle.Components.ElectricStorage.ElectricStorageElements.First().Count); Assert.AreEqual("50", bat.MaxCurrentMap.Rows[1][BatteryMaxCurrentReader.Fields.StateOfCharge]); Assert.AreEqual("375", bat.MaxCurrentMap.Rows[1][BatteryMaxCurrentReader.Fields.MaxDischargeCurrent]); Assert.AreEqual("375", bat.MaxCurrentMap.Rows[1][BatteryMaxCurrentReader.Fields.MaxDischargeCurrent]); diff --git a/VectoCore/VectoCoreTest/Integration/BatteryElectric/BatteryElectricTest.cs b/VectoCore/VectoCoreTest/Integration/BatteryElectric/BatteryElectricTest.cs index 7b5662db24142577f4b24522333e5aa65867cb60..48f05dd1521e1bb4a46fd43ab8ae54bb9e92a2dd 100644 --- a/VectoCore/VectoCoreTest/Integration/BatteryElectric/BatteryElectricTest.cs +++ b/VectoCore/VectoCoreTest/Integration/BatteryElectric/BatteryElectricTest.cs @@ -688,7 +688,7 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric var es = new ElectricSystem(container); - var battery = new Battery(container, batteryData); + var battery = new BatterySystem(container, batteryData); battery.Initialize(initialBatCharge); var ctl = new BatteryElectricMotorController(container, es); diff --git a/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs b/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs index 6c5a0982414a57295c6b8389a9e3db22413e7235..e462b54c99d4f2170b0ed1108941c0200f8bbbce 100644 --- a/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs +++ b/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs @@ -552,6 +552,10 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid public const string Group5TestJob = @"TestData\Hybrids\GenericVehicle_Group5_P2\P2 Group 5.vecto"; + public const string Group5TestJob_BatterySystem = @"TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\P2 Group 5.vecto"; + + public const string Group5TestJob_BatterySystem2 = @"TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\P2 Group 5_2.vecto"; + [ TestCase(Group5TestJob, 0, TestName = "P2 Hybrid Group 5 DriveCycle LongHaul"), TestCase(Group5TestJob, 1, TestName = "P2 Hybrid Group 5 DriveCycle Coach"), @@ -567,6 +571,33 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid public void P2HybridGroup5DriveCycle(string jobFile, int cycleIdx) { RunHybridJob(jobFile, cycleIdx); } + [ + TestCase(Group5TestJob_BatterySystem, 0, TestName = "P2 Hybrid Group 5 BatterySystem DriveCycle LongHaul"), + TestCase(Group5TestJob_BatterySystem, 1, TestName = "P2 Hybrid Group 5 BatterySystem DriveCycle Coach"), + TestCase(Group5TestJob_BatterySystem, 2, TestName = "P2 Hybrid Group 5 BatterySystem DriveCycle Construction"), + TestCase(Group5TestJob_BatterySystem, 3, TestName = "P2 Hybrid Group 5 BatterySystem DriveCycle HeavyUrban"), + TestCase(Group5TestJob_BatterySystem, 4, TestName = "P2 Hybrid Group 5 BatterySystem DriveCycle Interurban"), + TestCase(Group5TestJob_BatterySystem, 5, TestName = "P2 Hybrid Group 5 BatterySystem DriveCycle MunicipalUtility"), + TestCase(Group5TestJob_BatterySystem, 6, TestName = "P2 Hybrid Group 5 BatterySystem DriveCycle RegionalDelivery"), + TestCase(Group5TestJob_BatterySystem, 7, TestName = "P2 Hybrid Group 5 BatterySystem DriveCycle Suburban"), + TestCase(Group5TestJob_BatterySystem, 8, TestName = "P2 Hybrid Group 5 BatterySystem DriveCycle Urban"), + TestCase(Group5TestJob_BatterySystem, 9, TestName = "P2 Hybrid Group 5 BatterySystem DriveCycle UrbanDelivery"), + + TestCase(Group5TestJob_BatterySystem2, 0, TestName = "P2 Hybrid Group 5 BatterySystem 2 DriveCycle LongHaul"), + TestCase(Group5TestJob_BatterySystem2, 1, TestName = "P2 Hybrid Group 5 BatterySystem 2 DriveCycle Coach"), + TestCase(Group5TestJob_BatterySystem2, 2, TestName = "P2 Hybrid Group 5 BatterySystem 2 DriveCycle Construction"), + TestCase(Group5TestJob_BatterySystem2, 3, TestName = "P2 Hybrid Group 5 BatterySystem 2 DriveCycle HeavyUrban"), + TestCase(Group5TestJob_BatterySystem2, 4, TestName = "P2 Hybrid Group 5 BatterySystem 2 DriveCycle Interurban"), + TestCase(Group5TestJob_BatterySystem2, 5, TestName = "P2 Hybrid Group 5 BatterySystem 2 DriveCycle MunicipalUtility"), + TestCase(Group5TestJob_BatterySystem2, 6, TestName = "P2 Hybrid Group 5 BatterySystem 2 DriveCycle RegionalDelivery"), + TestCase(Group5TestJob_BatterySystem2, 7, TestName = "P2 Hybrid Group 5 BatterySystem 2 DriveCycle Suburban"), + TestCase(Group5TestJob_BatterySystem2, 8, TestName = "P2 Hybrid Group 5 BatterySystem 2 DriveCycle Urban"), + TestCase(Group5TestJob_BatterySystem2, 9, TestName = "P2 Hybrid Group 5 BatterySystem 2 DriveCycle UrbanDelivery"), + + ] + public void P2HybridGroup5DriveCycle_BatterySystem(string jobFile, int cycleIdx) + { RunHybridJob(jobFile, cycleIdx); } + public const string Group5TestJob325kW = @"TestData\Hybrids\GenericVehicle_Group5_P2\P2 Group 5_325kW.vecto"; @@ -602,6 +633,8 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid { RunHybridJob(jobFile, cycleIdx); } + + public const string Group5_80kWh_TestJob = @"TestData\Hybrids\Hyb_P2_Group5\Hyb_P2_Group5_80kWh.vecto"; [ @@ -1458,7 +1491,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid ? (IHybridControlStrategy) new HybridStrategyAT(runData, container) : new HybridStrategy(runData, container); var es = new ElectricSystem(container); - var battery = new Battery(container, batteryData); + var battery = new BatterySystem(container, batteryData); battery.Initialize(initialBatCharge); var clutch = gearboxType.AutomaticTransmission() ? null : new SwitchableClutch(container, runData.EngineData); diff --git a/VectoCore/VectoCoreTest/Models/EngineeringMode/EngineeringModeBusAuxTest.cs b/VectoCore/VectoCoreTest/Models/EngineeringMode/EngineeringModeBusAuxTest.cs index cd395c0ccd67c36d7264e2f548d2c3da56ec2729..5f1214d614bfb02f30d3f3e5fd877d59327d5943 100644 --- a/VectoCore/VectoCoreTest/Models/EngineeringMode/EngineeringModeBusAuxTest.cs +++ b/VectoCore/VectoCoreTest/Models/EngineeringMode/EngineeringModeBusAuxTest.cs @@ -892,17 +892,23 @@ namespace TUGraz.VectoCore.Tests.Models.EngineeringMode if (reessSoC.HasValue) { // hybrid powertrain var packCount = 2; - runData.BatteryData = new BatteryData() { - Capacity = REESS_Capacity.SI(Unit.SI.Ampere.Hour).Cast<AmpereSecond>(), - MinSOC = REESS_MinSoC, - MaxSOC = REESS_MaxSoC, - SOCMap = BatterySOCReader.Create("SOC,V\n0,590\n100,658".ToStream()), - InternalResistance = BatteryInternalResistanceReader.Create("SoC, Ri\n0,0.02\n100,0.02".ToStream(), packCount), - MaxCurrent = BatteryMaxCurrentReader.Create("SOC, I_charge, I_discharge\n0, 375, 573\n100, 375, 375".ToStream(), packCount), - InitialSoC = reessSoC.Value + runData.BatteryData = new BatterySystemData() { + Batteries = new List<Tuple<int, BatteryData>>() { + Tuple.Create(0, new BatteryData() { + Capacity = REESS_Capacity.SI(Unit.SI.Ampere.Hour).Cast<AmpereSecond>(), + MinSOC = REESS_MinSoC, + MaxSOC = REESS_MaxSoC, + SOCMap = BatterySOCReader.Create("SOC,V\n0,590\n100,658".ToStream()), + InternalResistance = + BatteryInternalResistanceReader.Create("SoC, Ri\n0,0.02\n100,0.02".ToStream(), + packCount), + MaxCurrent = BatteryMaxCurrentReader.Create( + "SOC, I_charge, I_discharge\n0, 375, 573\n100, 375, 375".ToStream(), packCount), + }) + } }; var es = new ElectricSystem(container); - var battery = new Battery(container, runData.BatteryData); + var battery = new BatterySystem(container, runData.BatteryData); battery.Initialize(runData.BatteryData.InitialSoC); container.BatteryInfo = battery; es.Connect(battery); diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/BatterySystemTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/BatterySystemTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..f76e893e27b2605a47f2889cc1853896a52d28e3 --- /dev/null +++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/BatterySystemTest.cs @@ -0,0 +1,372 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using NUnit.Framework; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.FileIO.JSON; +using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter; +using TUGraz.VectoCore.Models.Connector.Ports.Impl; +using TUGraz.VectoCore.Models.Simulation.Data; +using TUGraz.VectoCore.Models.SimulationComponent.Impl; +using TUGraz.VectoCore.Tests.Utils; +using TUGraz.VectoCore.Utils; + +namespace TUGraz.VectoCore.Tests.Models.SimulationComponent +{ + [TestFixture] + public class BatterySystemTest + { + public const string componentFile = @"TestData\Hybrids\Battery\GenericBattery.vbat"; + + [OneTimeSetUp] + public void RunBeforeAnyTests() + { + Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory); + } + + [TestCase(0.5, 1, 7000, new[] { 0.50020169, 0.50020169, 0.50020169 }), + TestCase(0.35, 1, 14000, new[] { 0.350404181979, 0.350404181979, 0.350404181979 }), + TestCase(0.75, 1, -14500, new[] { 0.7495793463, 0.7495793463, 0.7495793463 }) + + ] + public void TestBatterySystemRequest_2Serial(double initialSoC, double simInterval, double powerDemand, double[] expectedSoC) + { + var inputData = JSONInputDataFactory.ReadREESSData(componentFile, false); + Assert.NotNull(inputData); + + var dao = new EngineeringDataAdapter(); + var tmp = new MockBatteryInputData() { + _electricStorageElements = new List<IElectricStorageDeclarationInputData>() { + new MockBatteryInputData.MockElectricStorageInputWrapper() { + REESSPack = inputData, + StringId = 0, + Count = 2 + } + } + }; + var batteryData = dao.CreateBatteryData(tmp, 0.8); + + var container = new MockVehicleContainer(); + var bat = new BatterySystem(container, batteryData); + var modData = new MockModalDataContainer(); + bat.Initialize(initialSoC); + + var absTime = 0.SI<Second>(); + var dt = simInterval.SI<Second>(); + var response = bat.Request(absTime, dt, powerDemand.SI<Watt>(), false); + Assert.IsInstanceOf<RESSResponseSuccess>(response); + bat.CommitSimulationStep(absTime, dt, modData); + + var socs = bat.Batteries.SelectMany(x => x.Value.Batteries.Select(y => y.StateOfCharge)).ToArray(); + for (var i = 0; i < socs.Length; i++) { + Assert.AreEqual(expectedSoC[i], socs[i], 1e-9, $"Bat_{i} SoC"); + } + + Assert.AreEqual(expectedSoC.Last(), bat.StateOfCharge, 1e-9); + } + + [TestCase(0.5, 1, 7000, new[] { 0.50020169, 0.50020169, 0.50020169 }), + TestCase(0.35, 1, 14000, new[] { 0.350404181979, 0.350404181979, 0.350404181979 }), + TestCase(0.75, 1, -14500, new[] { 0.7495793463, 0.7495793463, 0.7495793463 }) + + ] + public void TestBatterySystemRequest_2Parallel(double initialSoC, double simInterval, double powerDemand, double[] expectedSoC) + { + var inputData = JSONInputDataFactory.ReadREESSData(componentFile, false); + Assert.NotNull(inputData); + + var dao = new EngineeringDataAdapter(); + var tmp = new MockBatteryInputData() { + _electricStorageElements = new List<IElectricStorageDeclarationInputData>() { + new MockBatteryInputData.MockElectricStorageInputWrapper() { + REESSPack = inputData, + StringId = 0, + Count = 1 + }, + new MockBatteryInputData.MockElectricStorageInputWrapper() { + REESSPack = inputData, + StringId = 1, + Count = 1 + } + } + }; + var batteryData = dao.CreateBatteryData(tmp, 0.8); + + var container = new MockVehicleContainer(); + var bat = new BatterySystem(container, batteryData); + var modData = new MockModalDataContainer(); + bat.Initialize(initialSoC); + + var absTime = 0.SI<Second>(); + var dt = simInterval.SI<Second>(); + var response = bat.Request(absTime, dt, powerDemand.SI<Watt>(), false); + Assert.IsInstanceOf<RESSResponseSuccess>(response); + bat.CommitSimulationStep(absTime, dt, modData); + + var socs = bat.Batteries.SelectMany(x => x.Value.Batteries.Select(y => y.StateOfCharge)).ToArray(); + for (var i = 0; i < socs.Length; i++) { + Assert.AreEqual(expectedSoC[i], socs[i], 1e-9, $"Bat_{i} SoC"); + } + + Assert.AreEqual(expectedSoC.Last(), bat.StateOfCharge, 1e-9); + } + + [TestCase(0.5, 1, 60000, new[] {10.0, 20, 30}, new[] { 0.500693147221155, 0.500692716960012, 0.500693147221155, 0.5006930038 }), + TestCase(0.35, 1, 14000, new[] { 2.33333333, 4.666666666, 7 }, new[] { 0.350161966207795, 0.350161942625547, 0.350161966207795, 0.3501619583470 }), + TestCase(0.75, 1, -14500, new[] { -2.4166666666, -4.833333333, -7.25 }, new[] { 0.749832099811648, 0.749832074409512, 0.749832099811648, 0.74983209134426 }) + ] + public void TestBatterySystemRequest_3Strings_1_Balanced(double initialSoC, double simInterval, double powerDemand, double[] expectedPowerDemand, double[] expectedSoC) + { + var inputData = JSONInputDataFactory.ReadREESSData(componentFile, false); + Assert.NotNull(inputData); + + var dao = new EngineeringDataAdapter(); + var tmp = new MockBatteryInputData() { + _electricStorageElements = new List<IElectricStorageDeclarationInputData>() { + new MockBatteryInputData.MockElectricStorageInputWrapper() { + REESSPack = new MockREESSInputData(10.SI(Unit.SI.Ampere.Hour).Cast<AmpereSecond>(), + 400.SI<Volt>(), 500.SI<Ampere>(), 0.03.SI<Ohm>()), + StringId = 0, + Count = 1 + }, + new MockBatteryInputData.MockElectricStorageInputWrapper() { + REESSPack = new MockREESSInputData(20.SI(Unit.SI.Ampere.Hour).Cast<AmpereSecond>(), + 400.SI<Volt>(), 500.SI<Ampere>(), 0.02.SI<Ohm>()), + StringId = 1, + Count = 1 + }, + new MockBatteryInputData.MockElectricStorageInputWrapper() { + REESSPack = new MockREESSInputData(30.SI(Unit.SI.Ampere.Hour).Cast<AmpereSecond>(), + 400.SI<Volt>(), 500.SI<Ampere>(), 0.01.SI<Ohm>()), + StringId = 2, + Count = 1 + } + + } + }; + var batteryData = dao.CreateBatteryData(tmp, 0.8); + + var container = new MockVehicleContainer(); + var bat = new BatterySystem(container, batteryData); + var modData = new MockModalDataContainer(); + bat.Initialize(initialSoC); + + var absTime = 0.SI<Second>(); + var dt = simInterval.SI<Second>(); + var response = bat.Request(absTime, dt, powerDemand.SI<Watt>(), false); + Assert.IsInstanceOf<RESSResponseSuccess>(response); + bat.CommitSimulationStep(absTime, dt, modData); + + for (var i = 0; i < 3; i++) { + Assert.AreEqual(expectedPowerDemand[i] * 1e3, ((SI)modData[ModalResultField.P_reess_terminal, i]).Value(), 1e-3); + } + + var socs = bat.Batteries.SelectMany(x => x.Value.Batteries.Select(y => y.StateOfCharge)).ToArray(); + Console.WriteLine(string.Join(", ", socs)); + for (var i = 0; i < socs.Length; i++) { + Assert.AreEqual(expectedSoC[i], socs[i], 1e-9, $"Bat_{i} SoC"); + } + + Assert.AreEqual(expectedSoC.Last(), bat.StateOfCharge, 1e-9); + } + + [ + TestCase(new[] {0.48, 0.52, 0.5}, 1, 60000, new[] { 10.463576, 19.337748, 30.198675 }, new[] { 0.480725217195313, 0.520669834354267, 0.500697728984787, 0.5040263454 }), + TestCase(new[] { 0.48, 0.52, 0.5 }, 1, -60000, new[] { -9.536424, -20.662252, -29.801325 }, new[] { 0.479336559932017, 0.519280698083512, 0.499308864822235, 0.502637425094291 }), + TestCase(new[] { 0.48, 0.52, 0.5 }, 10, 60000, new[] { 10.463576, 19.337748, 30.198675 }, new[] { 0.487252171953127, 0.526698343542669, 0.506977289847874, 0.510263454763681 }), + TestCase(new[] { 0.48, 0.52, 0.5 }, 10, -60000, new[] { -9.536424, -20.662252, -29.801325 }, new[] { 0.473365599320166, 0.512806980835123, 0.493088648222347, 0.496374250942909 }), + //TestCase(0.35, 1, 14000, new[] { 2.33333333, 4.666666666, 7 }, new[] { 0.350161966207795, 0.350161942625547, 0.350161966207795, 0.3501619583470 }), + //TestCase(0.75, 1, -14500, new[] { -2.4166666666, -4.833333333, -7.25 }, new[] { 0.749832099811648, 0.749832074409512, 0.749832099811648, 0.74983209134426 }) + ] + public void TestBatterySystemRequest_3Strings_1_Unbalanced(double[] initialSoC, double simInterval, double powerDemand, double[] expectedPowerDemand, double[] expectedSoC) + { + var inputData = JSONInputDataFactory.ReadREESSData(componentFile, false); + Assert.NotNull(inputData); + + var dao = new EngineeringDataAdapter(); + var tmp = new MockBatteryInputData() { + _electricStorageElements = new List<IElectricStorageDeclarationInputData>() { + new MockBatteryInputData.MockElectricStorageInputWrapper() { + REESSPack = new MockREESSInputData(10.SI(Unit.SI.Ampere.Hour).Cast<AmpereSecond>(), + 400.SI<Volt>(), 500.SI<Ampere>(), 0.03.SI<Ohm>()), + StringId = 0, + Count = 1 + }, + new MockBatteryInputData.MockElectricStorageInputWrapper() { + REESSPack = new MockREESSInputData(20.SI(Unit.SI.Ampere.Hour).Cast<AmpereSecond>(), + 400.SI<Volt>(), 500.SI<Ampere>(), 0.02.SI<Ohm>()), + StringId = 1, + Count = 1 + }, + new MockBatteryInputData.MockElectricStorageInputWrapper() { + REESSPack = new MockREESSInputData(30.SI(Unit.SI.Ampere.Hour).Cast<AmpereSecond>(), + 400.SI<Volt>(), 500.SI<Ampere>(), 0.01.SI<Ohm>()), + StringId = 2, + Count = 1 + } + + } + }; + var batteryData = dao.CreateBatteryData(tmp, 0.8); + + var container = new MockVehicleContainer(); + var bat = new BatterySystem(container, batteryData); + var modData = new MockModalDataContainer(); + for (var i = 0; i < bat.Batteries.Count; i++) { + foreach (var b in bat.Batteries[i].Batteries) { + b.Initialize(initialSoC[i]); + } + } + //bat.Initialize(initialSoC); + + var absTime = 0.SI<Second>(); + var dt = simInterval.SI<Second>(); + var response = bat.Request(absTime, dt, powerDemand.SI<Watt>(), false); + Assert.IsInstanceOf<RESSResponseSuccess>(response); + bat.CommitSimulationStep(absTime, dt, modData); + + for (var i = 0; i < 3; i++) { + Assert.AreEqual(expectedPowerDemand[i] * 1e3, ((SI)modData[ModalResultField.P_reess_terminal, i]).Value(), 1e-3); + } + + var socs = bat.Batteries.SelectMany(x => x.Value.Batteries.Select(y => y.StateOfCharge)).ToArray(); + Console.WriteLine(string.Join(", ", socs)); + Console.WriteLine(bat.StateOfCharge); + for (var i = 0; i < socs.Length; i++) { + Assert.AreEqual(expectedSoC[i], socs[i], 1e-9, $"Bat_{i} SoC"); + } + + Assert.AreEqual(expectedSoC.Last(), bat.StateOfCharge, 1e-9); + } + + + [ + TestCase(0.5, 1, 60000, new[] { 3.74922167, 6.25077833, 20, 30 }, new[] { 0.500693147221155, 0.500462098147437, 0.500692716960012, 0.500693147221155, 0.5006930038 }), + TestCase(0.5, 1, -60000, new[] { -3.75078419, -6.24921581, -20, -30 }, new[] { 0.499304248566401, 0.499536165710934, 0.499303810709253, 0.499304248566401, 0.499304102614018 }), + //TestCase(0.35, 1, 14000, new[] { 2.33333333, 4.666666666, 7 }, new[] { 0.350161966207795, 0.350161942625547, 0.350161966207795, 0.3501619583470 }), + //TestCase(0.75, 1, -14500, new[] { -2.4166666666, -4.833333333, -7.25 }, new[] { 0.749832099811648, 0.749832074409512, 0.749832099811648, 0.74983209134426 }) + ] + public void TestBatterySystemRequest_3Strings_2_Balanced(double initialSoC, double simInterval, double powerDemand, double[] expectedPowerDemand, double[] expectedSoC) + { + var inputData = JSONInputDataFactory.ReadREESSData(componentFile, false); + Assert.NotNull(inputData); + + var dao = new EngineeringDataAdapter(); + var tmp = new MockBatteryInputData() { + _electricStorageElements = new List<IElectricStorageDeclarationInputData>() { + new MockBatteryInputData.MockElectricStorageInputWrapper() { + REESSPack = new MockREESSInputData(10.SI(Unit.SI.Ampere.Hour).Cast<AmpereSecond>(), + 150.SI<Volt>(), 200.SI<Ampere>(), 0.01.SI<Ohm>()), + StringId = 0, + Count = 1 + }, + new MockBatteryInputData.MockElectricStorageInputWrapper() { + REESSPack = new MockREESSInputData(15.SI(Unit.SI.Ampere.Hour).Cast<AmpereSecond>(), + 250.SI<Volt>(), 300.SI<Ampere>(), 0.02.SI<Ohm>()), + StringId = 0, + Count = 1 + }, + new MockBatteryInputData.MockElectricStorageInputWrapper() { + REESSPack = new MockREESSInputData(20.SI(Unit.SI.Ampere.Hour).Cast<AmpereSecond>(), + 400.SI<Volt>(), 500.SI<Ampere>(), 0.02.SI<Ohm>()), + StringId = 1, + Count = 1 + }, + new MockBatteryInputData.MockElectricStorageInputWrapper() { + REESSPack = new MockREESSInputData(30.SI(Unit.SI.Ampere.Hour).Cast<AmpereSecond>(), + 400.SI<Volt>(), 500.SI<Ampere>(), 0.01.SI<Ohm>()), + StringId = 2, + Count = 1 + } + + } + }; + var batteryData = dao.CreateBatteryData(tmp, 0.8); + + var container = new MockVehicleContainer(); + var bat = new BatterySystem(container, batteryData); + var modData = new MockModalDataContainer(); + bat.Initialize(initialSoC); + + var absTime = 0.SI<Second>(); + var dt = simInterval.SI<Second>(); + var response = bat.Request(absTime, dt, powerDemand.SI<Watt>(), false); + Assert.IsInstanceOf<RESSResponseSuccess>(response); + bat.CommitSimulationStep(absTime, dt, modData); + + for (var i = 0; i < 3; i++) { + Assert.AreEqual(expectedPowerDemand[i] * 1e3, ((SI)modData[ModalResultField.P_reess_terminal, i]).Value(), 1e-3); + } + + var socs = bat.Batteries.SelectMany(x => x.Value.Batteries.Select(y => y.StateOfCharge)).ToArray(); + Console.WriteLine(string.Join(", ", socs)); + Console.WriteLine(bat.StateOfCharge); + for (var i = 0; i < socs.Length; i++) { + Assert.AreEqual(expectedSoC[i], socs[i], 1e-9, $"Bat_{i} SoC"); + } + + Assert.AreEqual(expectedSoC.Last(), bat.StateOfCharge, 1e-9); + } + } + + public class MockREESSInputData : IBatteryPackEngineeringInputData + { + private Volt _voltage; + private Ampere _maxCurrent; + private Ohm _internalResistance; + + public MockREESSInputData(AmpereSecond capacity, Volt ocv, Ampere maxCurrent, Ohm internalResistance) + { + Capacity = capacity; + _voltage = ocv; + _maxCurrent = maxCurrent; + _internalResistance = internalResistance; + } + + #region Implementation of IComponentInputData + + public DataSource DataSource { get; } + public bool SavedInDeclarationMode { get; } + public string Manufacturer { get; } + public string Model { get; } + public DateTime Date { get; } + public string AppVersion { get; } + public CertificationMethod CertificationMethod { get; } + public string CertificationNumber { get; } + public DigestData DigestValue { get; } + + #endregion + + #region Implementation of IREESSPackInputData + + public REESSType StorageType => REESSType.Battery; + + #endregion + + #region Implementation of IBatteryPackDeclarationInputData + + public double MinSOC => 0.2; + public double MaxSOC => 0.8; + public AmpereSecond Capacity { get; } + + public TableData InternalResistanceCurve => VectoCSVFile.ReadStream( + InputDataHelper.InputDataAsStream("SoC, Ri", + new[] { $"0, {_internalResistance.Value()}", $"100, {_internalResistance.Value()}" })); + + public TableData VoltageCurve => VectoCSVFile.ReadStream( + InputDataHelper.InputDataAsStream("SOC, V", + new[] { $"0, {_voltage.Value()}", $"100, {_voltage.Value()}" })); + + public TableData MaxCurrentMap => VectoCSVFile.ReadStream( + InputDataHelper.InputDataAsStream("SOC, I_charge, I_discharge", + new[] { + $"0, {_maxCurrent.Value()}, {_maxCurrent.Value()}", + $"100, {_maxCurrent.Value()}, {_maxCurrent.Value()}" + })); + + #endregion + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/BatteryTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/BatteryTest.cs index e4c7ea4929c722538a8adaaba711925f3f1c7ff0..a2a7a12d74cfe47cd2abc0427077d0210b3f8620 100644 --- a/VectoCore/VectoCoreTest/Models/SimulationComponent/BatteryTest.cs +++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/BatteryTest.cs @@ -1,13 +1,15 @@ using System.IO; +using System.Linq; using NUnit.Framework; +using TUGraz.VECTO; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter; using TUGraz.VectoCore.Models.Connector.Ports.Impl; using TUGraz.VectoCore.Models.SimulationComponent; -using TUGraz.VectoCore.Models.SimulationComponent.Impl; using TUGraz.VectoCore.Tests.Utils; +using Battery = TUGraz.VectoCore.Models.SimulationComponent.Impl.Battery; namespace TUGraz.VectoCore.Tests.Models.SimulationComponent { @@ -41,12 +43,11 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var tmp = new MockBatteryInputData() { REESSPack = inputData, - Count = 1 }; var batteryData = dao.CreateBatteryData(tmp, 0.8); var container = new MockVehicleContainer(); - var bat = new Battery(container, batteryData); + var bat = new Battery(container, batteryData.Batteries.First().Item2); var modData = new MockModalDataContainer(); bat.Initialize(initialSoC); @@ -77,12 +78,11 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var tmp = new MockBatteryInputData() { REESSPack = inputData, - Count = 1 }; var batteryData = dao.CreateBatteryData(tmp, 0.8); var container = new MockVehicleContainer(); - var bat = new Battery(container, batteryData); + var bat = new Battery(container, batteryData.Batteries.First().Item2); bat.Initialize(initialSoC); @@ -110,13 +110,12 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var tmp = new MockBatteryInputData() { REESSPack = inputData, - Count = 1 }; var batteryData = dao.CreateBatteryData(tmp, 0.8); var container = new MockVehicleContainer(); var es = new ElectricSystem(container); - var bat = new Battery(container, batteryData); + var bat = new Battery(container, batteryData.Batteries.First().Item2); es.Connect(bat); es.Connect(new MockElectricConsumer(auxPower.SI<Watt>())); bat.Initialize(initialSoC); @@ -147,12 +146,11 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var tmp = new MockBatteryInputData() { REESSPack = inputData, - Count = 1 }; var batteryData = dao.CreateBatteryData(tmp, 0.8); var container = new MockVehicleContainer(); - var bat = new Battery(container, batteryData); + var bat = new Battery(container, batteryData.Batteries.First().Item2); bat.Initialize(initialSoC); @@ -181,12 +179,11 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var tmp = new MockBatteryInputData() { REESSPack = inputData, - Count = 1 }; var batteryData = dao.CreateBatteryData(tmp, 0.8); var container = new MockVehicleContainer(); - var bat = new Battery(container, batteryData); + var bat = new Battery(container, batteryData.Batteries.First().Item2); var es = new ElectricSystem(container); es.Connect(bat); es.Connect(new MockElectricConsumer(auxPower.SI<Watt>())); diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/ElectricMotorTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/ElectricMotorTest.cs index f2f55a77788e1f88e3b6a5d197125d9ceeb435d5..1af5d540f2b0fae28eae9f33ba5cc9a605441f5f 100644 --- a/VectoCore/VectoCoreTest/Models/SimulationComponent/ElectricMotorTest.cs +++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/ElectricMotorTest.cs @@ -253,10 +253,9 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var batInput = JSONInputDataFactory.ReadREESSData(BatFile, false); var tmp = new MockBatteryInputData() { REESSPack = batInput, - Count = 1 }; var batteryData = dao.CreateBatteryData(tmp, 0.8); - var battery = new Battery(container, batteryData); + var battery = new Battery(container, batteryData.Batteries.First().Item2); var es = new ElectricSystem(container); es.Connect(battery); @@ -318,10 +317,9 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var tmp = new MockBatteryInputData() { REESSPack = batInput, - Count = 1 }; var batteryData = dao.CreateBatteryData(tmp, 0.8); - var battery = new Battery(container, batteryData); + var battery = new Battery(container, batteryData.Batteries.First().Item2); container.BatteryInfo = battery; var es = new ElectricSystem(container); es.Connect(battery); @@ -374,7 +372,6 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var tmp = new MockBatteryInputData() { REESSPack = batInput, - Count = 1 }; var batteryData = dao.CreateBatteryData(tmp, 0.8); @@ -388,7 +385,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent var container = new VehicleContainer(ExecutionMode.Engineering, modData); new EngineOnlyGearboxInfo(container); - var battery = new Battery(container, batteryData); + var battery = new Battery(container, batteryData.Batteries.First().Item2); var es = new ElectricSystem(container); es.Connect(battery); battery.Initialize(initialSoc); diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/325kW.vfld b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/325kW.vfld new file mode 100644 index 0000000000000000000000000000000000000000..750d4048ef2da521d3c51bd0a8af39b6373c8575 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/325kW.vfld @@ -0,0 +1,202 @@ +engine speed [1/min], full load torque [Nm], motoring torque [Nm] +600,1188,-138 +608,1206.92,-138.2 +616,1225.84,-138.4 +624,1244.76,-138.6 +632,1263.68,-138.8 +640,1282.6,-139 +648,1301.52,-139.2 +656,1320.44,-139.4 +664,1339.36,-139.6 +672,1358.28,-139.8 +680,1377.2,-140 +688,1396.12,-140.2 +696,1415.04,-140.4 +704,1433.96,-140.6 +712,1452.88,-140.8 +720,1471.8,-141 +728,1490.72,-141.2 +736,1509.64,-141.4 +744,1528.56,-141.6 +752,1547.48,-141.8 +760,1566.4,-142 +768,1585.32,-142.2 +776,1604.24,-142.4 +784,1623.16,-142.6 +792,1642.08,-142.8 +800,1661,-143 +808,1679.92,-143.36 +816,1698.84,-143.72 +824,1717.76,-144.08 +832,1736.68,-144.44 +840,1755.6,-144.8 +848,1774.52,-145.16 +856,1793.44,-145.52 +864,1812.36,-145.88 +872,1831.28,-146.24 +880,1850.2,-146.6 +888,1869.12,-146.96 +896,1888.04,-147.32 +904,1906.96,-147.68 +912,1925.88,-148.04 +920,1944.8,-148.4 +928,1963.72,-148.76 +936,1982.64,-149.12 +944,2001.56,-149.48 +952,2020.48,-149.84 +960,2039.4,-150.2 +968,2058.32,-150.56 +976,2077.24,-150.92 +984,2096.16,-151.28 +992,2115.08,-151.64 +1000,2134,-152 +1008,2134,-152.52 +1016,2134,-153.04 +1024,2134,-153.56 +1032,2134,-154.08 +1040,2134,-154.6 +1048,2134,-155.12 +1056,2134,-155.64 +1064,2134,-156.16 +1072,2134,-156.68 +1080,2134,-157.2 +1088,2134,-157.72 +1096,2134,-158.24 +1104,2134,-158.76 +1112,2134,-159.28 +1120,2134,-159.8 +1128,2134,-160.32 +1136,2134,-160.84 +1144,2134,-161.36 +1152,2134,-161.88 +1160,2134,-162.4 +1168,2134,-162.92 +1176,2134,-163.44 +1184,2134,-163.96 +1192,2134,-164.48 +1200,2134,-165 +1208,2134,-165.88 +1216,2134,-166.76 +1224,2134,-167.64 +1232,2134,-168.52 +1240,2134,-169.4 +1248,2134,-170.28 +1256,2134,-171.16 +1264,2134,-172.04 +1272,2134,-172.92 +1280,2134,-173.8 +1288,2134,-174.68 +1296,2134,-175.56 +1304,2134,-176.44 +1312,2134,-177.32 +1320,2134,-178.2 +1328,2134,-179.08 +1336,2134,-179.96 +1344,2134,-180.84 +1352,2134,-181.72 +1360,2134,-182.6 +1368,2134,-183.48 +1376,2134,-184.36 +1384,2134,-185.24 +1392,2134,-186.12 +1400,2134,-187 +1408,2125.76,-188.2 +1416,2117.52,-189.4 +1424,2109.28,-190.6 +1432,2101.04,-191.8 +1440,2092.8,-193 +1448,2084.56,-194.2 +1456,2076.32,-195.4 +1464,2068.08,-196.6 +1472,2059.84,-197.8 +1480,2051.6,-199 +1488,2043.36,-200.2 +1496,2035.12,-201.3911 +1504,2026.88,-202.5793 +1512,2018.64,-203.7675 +1520,2010.4,-204.9557 +1528,2002.16,-206.1439 +1536,1993.92,-207.3321 +1544,1985.68,-208.5203 +1552,1977.44,-209.7085 +1560,1969.2,-210.8967 +1568,1960.96,-212.0849 +1576,1952.72,-213.2731 +1584,1944.48,-214.4613 +1592,1936.24,-215.6495 +1600,1928,-216.8377 +1608,1919.76,-218.0259 +1616,1911.52,-219.16 +1624,1903.28,-220.24 +1632,1895.04,-221.32 +1640,1886.8,-222.4 +1648,1878.56,-223.48 +1656,1870.32,-224.56 +1664,1862.08,-225.64 +1672,1853.84,-226.72 +1680,1845.6,-227.8 +1688,1837.36,-228.88 +1696,1829.12,-229.96 +1704,1820.88,-231.04 +1712,1812.64,-232.12 +1720,1804.4,-233.2 +1728,1796.16,-234.28 +1736,1787.92,-235.36 +1744,1779.68,-236.44 +1752,1771.44,-237.52 +1760,1763.2,-238.6 +1768,1754.96,-239.68 +1776,1746.72,-240.76 +1784,1738.48,-241.84 +1792,1730.24,-242.92 +1800,1722,-244 +1808,1703.24,-245.36 +1816,1684.48,-246.72 +1824,1665.72,-248.08 +1832,1646.96,-249.44 +1840,1628.2,-250.8 +1848,1609.44,-252.16 +1856,1590.68,-253.52 +1864,1571.92,-254.88 +1872,1553.16,-256.24 +1880,1534.4,-257.6 +1888,1515.64,-258.96 +1896,1496.88,-260.32 +1904,1478.12,-261.68 +1912,1459.36,-263.04 +1920,1440.6,-264.4 +1928,1421.84,-265.76 +1936,1403.08,-267.12 +1944,1384.32,-268.48 +1952,1365.56,-269.84 +1960,1346.8,-271.2 +1968,1328.04,-272.56 +1976,1309.28,-273.92 +1984,1290.52,-275.28 +1992,1271.76,-276.64 +2000,1253,-278 +2008,1234.28,-279.36 +2016,1215.56,-280.72 +2024,1196.84,-282.08 +2032,1178.12,-283.44 +2040,1159.4,-284.8 +2048,1140.68,-286.16 +2056,1121.96,-287.52 +2064,1103.24,-288.88 +2072,1084.52,-290.24 +2080,1065.8,-291.6 +2088,1047.08,-292.96 +2096,1028.36,-294.32 +2104,978.24,-295.68 +2112,896.72,-297.04 +2120,815.2,-298.4 +2128,733.68,-299.76 +2136,652.16,-301.12 +2144,570.64,-302.48 +2152,489.12,-303.84 +2160,407.6,-305.2 +2168,326.08,-306.56 +2176,244.56,-307.92 +2184,163.04,-309.28 +2192,81.52,-310.64 +2200,0,-312 diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/325kW.vmap b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/325kW.vmap new file mode 100644 index 0000000000000000000000000000000000000000..eea08f963f4b23b49f15d030db630b52edc1d4e3 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/325kW.vmap @@ -0,0 +1,140 @@ +engine speed [rpm], torque [Nm], fuel consumption [g/h] +500,-135.5,0 +500,0,1355 +500,213.4,3412.291 +500,426.8,5830.1 +500,640.2,8316.426 +500,853.6,10439.87 +500,1067,12823.69 +500,1188,14228.79 +500,1401.4,16628.66 +600,-138,0 +600,0,1355 +600,213.4,3412.291 +600,426.8,5830.1 +600,640.2,8316.426 +600,853.6,10439.87 +600,1067,12823.69 +600,1188,14228.79 +600,1401.4,16628.66 +751,-141.775,0 +750.9,0,1649.255 +750.9,213.4,4157.795 +750.9,426.8,7149.494 +750.9,640.2,10037.08 +750.9,853.6,12957.07 +750.9,1067,16055.22 +750.9,1280.4,19231.36 +750.9,1493.8,22400.17 +750.9,1544.879,23213.92 +751,1758.279,26392.93 +902,-147.59,0 +901.8,0,2210.735 +901.8,213.4,5204.867 +901.8,426.8,8515.462 +901.8,640.2,11804.75 +901.8,853.6,15410.55 +901.8,1067,19081.7 +901.8,1280.4,22742.96 +901.8,1493.8,26543.87 +901.8,1707.2,30534.68 +901.8,1901.757,34352.75 +902,2115.157,38403.27 +1053,-155.445,0 +1052.7,0,2768.035 +1052.7,213.4,6228.407 +1052.7,426.8,9836.041 +1052.7,640.2,13624.5 +1052.7,853.6,17854.95 +1052.7,1067,22072.71 +1052.7,1280.4,26161.13 +1052.7,1493.8,30525.55 +1052.7,1707.2,35019.18 +1052.7,1920.6,39913.3 +1052.7,2134,45438.16 +1053,2347.4,50542.53 +1204,-165.44,0 +1203.6,0,3086.704 +1203.6,213.4,6943.027 +1203.6,426.8,11040.37 +1203.6,640.2,15504.65 +1203.6,853.6,20335.89 +1203.6,1067,25176.6 +1203.6,1280.4,29782.22 +1203.6,1493.8,34642.24 +1203.6,1707.2,39786.14 +1203.6,1920.6,45254.8 +1203.6,2134,51129.03 +1204,2347.4,56732.88 +1367,-183.37,0 +1367.1,0,3845.344 +1367.1,213.4,7981.742 +1367.1,426.8,12796.69 +1367.1,640.2,17789.2 +1367.1,853.6,22854.21 +1367.1,1067,28302.84 +1367.1,1280.4,33739.91 +1367.1,1493.8,39393.87 +1367.1,1707.2,45836.33 +1367.1,1920.6,52078.71 +1367.1,2134,58296.41 +1367,2347.4,64530.56 +1490,-200.5,0 +1489.6,0,4373.424 +1489.6,213.4,8861.484 +1489.6,426.8,14090.86 +1489.6,640.2,19518.29 +1489.6,853.6,25092.8 +1489.6,1067,30873.69 +1489.6,1280.4,36865.42 +1489.6,1493.8,43095.57 +1489.6,1707.2,50249.81 +1489.6,1920.6,57035.25 +1489.6,2041.712,60609.5 +1490,2255.112,67311.83 +1612,-218.62,0 +1612.2,0,4904.015 +1612.2,213.4,9810.482 +1612.2,426.8,15403.9 +1612.2,640.2,21301.35 +1612.2,853.6,27492.32 +1612.2,1067,33580.96 +1612.2,1280.4,40114.61 +1612.2,1493.8,46914.77 +1612.2,1707.2,54666.14 +1612.2,1915.434,61862.91 +1612,2128.834,69491.99 +1735,-235.225,0 +1734.7,0,5586.953 +1734.7,213.4,11041.15 +1734.7,426.8,16949.24 +1734.7,640.2,23500.23 +1734.7,853.6,30159.59 +1734.7,1067,36741.18 +1734.7,1280.4,43923.85 +1734.7,1493.8,51295.21 +1734.7,1707.2,59469.31 +1734.7,1789.259,62731.31 +1735,2002.659,70935.23 +1857,-253.69,0 +1857.3,0,6673.839 +1857.3,213.4,12518.56 +1857.3,426.8,18687.88 +1857.3,640.2,25652.39 +1857.3,853.6,33003.08 +1857.3,1067,40438.09 +1857.3,1280.4,48117.52 +1857.3,1493.8,55848.59 +1857.3,1587.631,59434.17 +1857,1801.031,67215.39 +1957,-270.69,0 +1957.3,0,6673.839 +1957.3,213.4,12518.56 +1957.3,426.8,18687.88 +1957.3,640.2,25652.39 +1957.3,853.6,33003.08 +1957.3,1067,40438.09 +1957.3,1280.4,48117.52 +1957.3,1493.8,55848.59 +1957.3,1587.631,59434.17 +1957,1801.031,67215.39 diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/AMT_12.vgbx b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/AMT_12.vgbx new file mode 100644 index 0000000000000000000000000000000000000000..6a66c1bccbbea0b3185663e41217f32df21ee1df --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/AMT_12.vgbx @@ -0,0 +1,117 @@ +{ + "Header": { + "CreatedBy": "", + "Date": "2020-09-07T15:26:44.5653903Z", + "AppVersion": "3", + "FileVersion": 6 + }, + "Body": { + "SavedInDeclMode": false, + "ModelName": "tractor_12gear_example", + "Inertia": 0.0, + "TracInt": 1.0, + "Gears": [ + { + "Ratio": 2.64, + "LossMap": "Axle_4x2_Tractor.vtlm" + }, + { + "Ratio": 14.93, + "LossMap": "Gear_1.vtlm", + "ShiftPolygon": "", + "MaxTorque": "", + "MaxSpeed": "" + }, + { + "Ratio": 11.64, + "LossMap": "Gear_2.vtlm", + "ShiftPolygon": "", + "MaxTorque": "", + "MaxSpeed": "" + }, + { + "Ratio": 9.02, + "LossMap": "Gear_3.vtlm", + "ShiftPolygon": "", + "MaxTorque": "", + "MaxSpeed": "" + }, + { + "Ratio": 7.04, + "LossMap": "Gear_4.vtlm", + "ShiftPolygon": "", + "MaxTorque": "", + "MaxSpeed": "" + }, + { + "Ratio": 5.64, + "LossMap": "Gear_5.vtlm", + "ShiftPolygon": "", + "MaxTorque": "", + "MaxSpeed": "" + }, + { + "Ratio": 4.4, + "LossMap": "Gear_6.vtlm", + "ShiftPolygon": "", + "MaxTorque": "", + "MaxSpeed": "" + }, + { + "Ratio": 3.39, + "LossMap": "Gear_7.vtlm", + "ShiftPolygon": "", + "MaxTorque": "", + "MaxSpeed": "" + }, + { + "Ratio": 2.65, + "LossMap": "Gear_8.vtlm", + "ShiftPolygon": "", + "MaxTorque": "", + "MaxSpeed": "" + }, + { + "Ratio": 2.05, + "LossMap": "Gear_9.vtlm", + "ShiftPolygon": "", + "MaxTorque": "", + "MaxSpeed": "" + }, + { + "Ratio": 1.6, + "LossMap": "Gear_10.vtlm", + "ShiftPolygon": "", + "MaxTorque": "", + "MaxSpeed": "" + }, + { + "Ratio": 1.28, + "LossMap": "Gear_11.vtlm", + "ShiftPolygon": "", + "MaxTorque": "", + "MaxSpeed": "" + }, + { + "Ratio": 1.0, + "LossMap": "Gear_12.vtlm", + "ShiftPolygon": "", + "MaxTorque": "", + "MaxSpeed": "" + } + ], + "TqReserve": 20.0, + "ShiftTime": 2.0, + "StartTqReserve": 20.0, + "StartSpeed": 2.0, + "StartAcc": 0.6, + "GearboxType": "AMT", + "TorqueConverter": { + "Enabled": false + }, + "DownshiftAfterUpshiftDelay": 6.0, + "UpshiftAfterDownshiftDelay": 6.0, + "UpshiftMinAcceleration": 0.1, + "PowershiftShiftTime": 0.8 + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Axle_4x2_Tractor.vtlm b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Axle_4x2_Tractor.vtlm new file mode 100644 index 0000000000000000000000000000000000000000..e11cbf7cdde175e06ab8f6a0b79d46b84b3e0c1a --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Axle_4x2_Tractor.vtlm @@ -0,0 +1,317 @@ +Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm] +0,-5478,220 +0,-176,28 +0,0,8 +0,116,14 +0,220,17 +0,326,21 +0,432,24 +0,641,31 +0,853,38 +0,1274,53 +0,1696,67 +0,2117,82 +0,2538,96 +0,2959,110 +0,3376,119 +0,3785,123 +0,4200,130 +0,6309,204 +0,8409,268 +0,10507,332 +0,12606,396 +0,16804,523 +0,21002,651 +0,25199,778 +0,29397,905 +0,33594,1032 +0,37792,1160 +0,41990,1288 +0,46187,1415 +0,50385,1542 +143,-5482,216 +143,-174,28 +143,0,9 +143,116,14 +143,222,17 +143,326,21 +143,432,24 +143,641,31 +143,853,38 +143,1273,52 +143,1694,66 +143,2115,80 +143,2536,94 +143,2957,108 +143,3372,116 +143,3786,123 +143,4200,130 +143,6323,218 +143,8427,287 +143,10532,356 +143,12635,425 +143,16843,563 +143,21052,701 +143,25260,839 +143,29467,977 +143,33676,1115 +143,37884,1253 +143,42092,1391 +143,46300,1529 +143,50509,1667 +285,-5496,202 +285,-172,32 +285,0,10 +285,118,16 +285,223,19 +285,327,22 +285,432,24 +285,641,31 +285,851,37 +285,1271,50 +285,1690,63 +285,2110,75 +285,2530,88 +285,2950,101 +285,3369,113 +285,3780,117 +285,4195,124 +285,6305,200 +285,8402,262 +285,10499,324 +285,12596,386 +285,16791,510 +285,20987,636 +285,25181,760 +285,29376,884 +285,33570,1009 +285,37765,1133 +285,41960,1259 +285,46154,1383 +285,50350,1507 +428,-5501,200 +428,-167,35 +428,0,12 +428,119,17 +428,224,21 +428,328,23 +428,433,26 +428,643,31 +428,851,37 +428,1270,49 +428,1689,61 +428,2109,74 +428,2529,87 +428,2949,100 +428,3365,109 +428,3778,115 +428,4191,121 +428,6296,191 +428,8390,251 +428,10485,310 +428,12579,369 +428,16767,486 +428,20955,604 +428,25143,723 +428,29332,841 +428,33521,958 +428,37708,1076 +428,41897,1195 +428,46084,1313 +428,50273,1430 +570,-5512,188 +570,-167,37 +570,0,13 +570,121,19 +570,224,21 +570,328,23 +570,433,26 +570,641,31 +570,850,36 +570,1268,46 +570,1685,58 +570,2104,70 +570,2523,81 +570,2943,94 +570,3363,107 +570,3776,113 +570,4189,118 +570,6281,175 +570,8369,230 +570,10459,283 +570,12547,336 +570,16724,443 +570,20901,550 +570,25078,658 +570,29255,764 +570,33432,871 +570,37611,979 +570,41788,1086 +570,45965,1192 +570,50142,1299 +713,-5517,181 +713,-165,39 +713,0,14 +713,122,20 +713,225,22 +713,329,24 +713,433,27 +713,641,30 +713,850,36 +713,1267,45 +713,1684,56 +713,2102,67 +713,2521,79 +713,2939,90 +713,3358,102 +713,3775,111 +713,4188,118 +713,6272,166 +713,8357,217 +713,10442,267 +713,12527,317 +713,16697,416 +713,20867,517 +713,25039,617 +713,29209,717 +713,33379,818 +713,37549,918 +713,41719,1017 +713,45890,1117 +713,50060,1218 +855,-5524,174 +855,-162,42 +855,0,15 +855,122,21 +855,226,22 +855,329,24 +855,434,27 +855,641,31 +855,849,35 +855,1266,45 +855,1683,55 +855,2100,65 +855,2518,77 +855,2937,87 +855,3355,99 +855,3775,111 +855,4188,117 +855,6264,158 +855,8346,205 +855,10427,252 +855,12509,299 +855,16674,393 +855,20838,487 +855,25003,581 +855,29167,675 +855,33330,769 +855,37495,863 +855,41659,957 +855,45823,1051 +855,49988,1145 +998,-5526,172 +998,-160,44 +998,0,16 +998,123,22 +998,227,23 +998,331,26 +998,435,28 +998,641,31 +998,850,36 +998,1266,45 +998,1682,55 +998,2100,64 +998,2517,74 +998,2935,86 +998,3354,97 +998,3772,109 +998,4185,115 +998,6258,153 +998,8338,197 +998,10418,242 +998,12498,288 +998,16658,377 +998,20817,466 +998,24977,556 +998,29137,645 +998,33297,735 +998,37456,825 +998,41616,914 +998,45776,1003 +998,49936,1093 +1140,-5529,169 +1140,-158,46 +1140,0,18 +1140,125,23 +1140,229,24 +1140,332,27 +1140,436,29 +1140,643,32 +1140,851,37 +1140,1267,45 +1140,1683,55 +1140,2100,64 +1140,2516,74 +1140,2934,85 +1140,3352,96 +1140,3771,108 +1140,4183,114 +1283,-5529,169 +1283,-155,49 +1283,0,19 +1283,126,24 +1283,230,26 +1283,333,28 +1283,437,30 +1283,644,34 +1283,853,38 +1283,1267,46 +1283,1683,55 +1283,2098,64 +1283,2516,74 +1283,2934,85 +1283,3351,95 +1283,3764,101 +1425,-5531,167 +1425,-153,51 +1425,0,20 +1425,128,26 +1425,231,27 +1425,336,30 +1425,436,29 +1425,646,36 +1425,853,38 +1425,1268,46 +1425,1683,55 +1425,2098,63 +1425,2516,73 +1425,2932,84 +1425,3345,89 +1568,-5538,160 +1568,-148,56 +1568,0,21 +1568,129,28 +1568,232,29 +1568,336,31 +1568,440,32 +1568,647,37 +1568,854,41 +1568,1269,48 +1568,1684,57 +1568,2101,65 +1568,2517,74 +1568,2929,80 +1853,-5540,158 +1853,-144,60 +1853,0,24 +1853,132,30 +1853,234,31 +1853,340,34 +1853,442,35 +1853,650,38 +1853,856,42 +1853,1269,49 +1853,1684,57 +1853,2098,64 +1853,2515,73 +1853,2928,79 diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Default.vrlm b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Default.vrlm new file mode 100644 index 0000000000000000000000000000000000000000..eb575b99973291e5414c4826da086c1f03a7f179 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Default.vrlm @@ -0,0 +1,32 @@ +Retarder Speed [1/min],Torque Loss [Nm] +0,10 +100,10 +200,10.1 +300,10.2 +400,10.3 +500,10.5 +600,10.7 +700,11 +800,11.3 +900,11.6 +1000,12 +1100,12.4 +1200,12.9 +1300,13.4 +1400,13.9 +1500,14.5 +1600,15.1 +1700,15.8 +1800,16.5 +1900,17.2 +2000,18 +2100,18.8 +2200,19.7 +2300,20.6 +2400,21.5 +2500,22.5 +2600,23.5 +2700,24.6 +2800,25.7 +2900,26.8 +3000,28 diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Engine_325kW_12.7l.veng b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Engine_325kW_12.7l.veng new file mode 100644 index 0000000000000000000000000000000000000000..084062afccf57ee58c485634cb158fdf05647b86 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Engine_325kW_12.7l.veng @@ -0,0 +1,35 @@ +{ + "Header": { + "CreatedBy": "", + "Date": "2020-08-21T09:24:04.0725494Z", + "AppVersion": "3", + "FileVersion": 5 + }, + "Body": { + "SavedInDeclMode": false, + "ModelName": "325kW 12.7l Engine", + "Displacement": "12740", + "IdlingSpeed": 600.0, + "Inertia": 5.1498, + "Fuels": [ + { + "WHTC-Urban": 0.0, + "WHTC-Rural": 0.0, + "WHTC-Motorway": 0.0, + "WHTC-Engineering": 1.0, + "ColdHotBalancingFactor": 0.0, + "CFRegPer": 1.0, + "FuelMap": "325kW.vmap", + "FuelType": "DieselCI" + } + ], + "RatedPower": 0.0, + "RatedSpeed": 0.0, + "MaxTorque": 0.0, + "FullLoadCurve": "325kW.vfld", + "WHRType": [ + "None" + ], + "WHRCorrectionFactors": {} + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_1.vtlm b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_1.vtlm new file mode 100644 index 0000000000000000000000000000000000000000..ea00afe57cd1fa0d4f058cced560bd1bd482dd1a --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_1.vtlm @@ -0,0 +1,233 @@ +Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm] +0,-5500.0,239.2 +0,-5000.0,219.2 +0,-4500.0,179.2 +0,-4000.0,179.2 +0,-3500.0,159.2 +0,-3000.0,139.2 +0,-2500.0,119.2 +0,-2000.0,99.2 +0,-1600.0,83.2 +0,-1200.0,67.2 +0,-900.0,55.2 +0,-600.0,43.2 +0,-400.0,35.2 +0,-200.0,27.2 +0,0.0,27.2 +0,200.0,27.2 +0,400.0,35.2 +0,600.0,43.2 +0,900.0,55.2 +0,1200.0,67.2 +0,1600.0,83.2 +0,2000.0,99.2 +0,2500.0,119.2 +0,3000.0,139.2 +0,3500.0,159.2 +0,4000.0,179.2 +0,4500.0,199.2 +0,5000.0,219.2 +0,5500.0,239.2 +600,-5500.0,239.2 +600,-5000.0,219.2 +600,-4500.0,179.2 +600,-4000.0,179.2 +600,-3500.0,159.2 +600,-3000.0,139.2 +600,-2500.0,119.2 +600,-2000.0,99.2 +600,-1600.0,83.2 +600,-1200.0,67.2 +600,-900.0,55.2 +600,-600.0,43.2 +600,-400.0,35.2 +600,-200.0,27.2 +600,0.0,27.2 +600,200.0,27.2 +600,400.0,35.2 +600,600.0,43.2 +600,900.0,55.2 +600,1200.0,67.2 +600,1600.0,83.2 +600,2000.0,99.2 +600,2500.0,119.2 +600,3000.0,139.2 +600,3500.0,159.2 +600,4000.0,179.2 +600,4500.0,199.2 +600,5000.0,219.2 +600,5500.0,239.2 +900,-5500.0,242.8 +900,-5000.0,222.8 +900,-4500.0,182.8 +900,-4000.0,182.8 +900,-3500.0,162.8 +900,-3000.0,142.8 +900,-2500.0,122.8 +900,-2000.0,102.8 +900,-1600.0,86.8 +900,-1200.0,70.8 +900,-900.0,58.8 +900,-600.0,46.8 +900,-400.0,38.8 +900,-200.0,30.8 +900,0.0,30.8 +900,200.0,30.8 +900,400.0,38.8 +900,600.0,46.8 +900,900.0,58.8 +900,1200.0,70.8 +900,1600.0,86.8 +900,2000.0,102.8 +900,2500.0,122.8 +900,3000.0,142.8 +900,3500.0,162.8 +900,4000.0,182.8 +900,4500.0,202.8 +900,5000.0,222.8 +900,5500.0,242.8 +1200,-5500.0,246.4 +1200,-5000.0,226.4 +1200,-4500.0,186.4 +1200,-4000.0,186.4 +1200,-3500.0,166.4 +1200,-3000.0,146.4 +1200,-2500.0,126.4 +1200,-2000.0,106.4 +1200,-1600.0,90.4 +1200,-1200.0,74.4 +1200,-900.0,62.4 +1200,-600.0,50.4 +1200,-400.0,42.4 +1200,-200.0,34.4 +1200,0.0,34.4 +1200,200.0,34.4 +1200,400.0,42.4 +1200,600.0,50.4 +1200,900.0,62.4 +1200,1200.0,74.4 +1200,1600.0,90.4 +1200,2000.0,106.4 +1200,2500.0,126.4 +1200,3000.0,146.4 +1200,3500.0,166.4 +1200,4000.0,186.4 +1200,4500.0,206.4 +1200,5000.0,226.4 +1200,5500.0,246.4 +1600,-5500.0,251.2 +1600,-5000.0,231.2 +1600,-4500.0,191.2 +1600,-4000.0,191.2 +1600,-3500.0,171.2 +1600,-3000.0,151.2 +1600,-2500.0,131.2 +1600,-2000.0,111.2 +1600,-1600.0,95.2 +1600,-1200.0,79.2 +1600,-900.0,67.2 +1600,-600.0,55.2 +1600,-400.0,47.2 +1600,-200.0,39.2 +1600,0.0,39.2 +1600,200.0,39.2 +1600,400.0,47.2 +1600,600.0,55.2 +1600,900.0,67.2 +1600,1200.0,79.2 +1600,1600.0,95.2 +1600,2000.0,111.2 +1600,2500.0,131.2 +1600,3000.0,151.2 +1600,3500.0,171.2 +1600,4000.0,191.2 +1600,4500.0,211.2 +1600,5000.0,231.2 +1600,5500.0,251.2 +2000,-5500.0,256.0 +2000,-5000.0,236.0 +2000,-4500.0,196.0 +2000,-4000.0,196.0 +2000,-3500.0,176.0 +2000,-3000.0,156.0 +2000,-2500.0,136.0 +2000,-2000.0,116.0 +2000,-1600.0,100.0 +2000,-1200.0,84.0 +2000,-900.0,72.0 +2000,-600.0,60.0 +2000,-400.0,52.0 +2000,-200.0,44.0 +2000,0.0,44.0 +2000,200.0,44.0 +2000,400.0,52.0 +2000,600.0,60.0 +2000,900.0,72.0 +2000,1200.0,84.0 +2000,1600.0,100.0 +2000,2000.0,116.0 +2000,2500.0,136.0 +2000,3000.0,156.0 +2000,3500.0,176.0 +2000,4000.0,196.0 +2000,4500.0,216.0 +2000,5000.0,236.0 +2000,5500.0,256.0 +2500,-5500.0,262.0 +2500,-5000.0,242.0 +2500,-4500.0,202.0 +2500,-4000.0,202.0 +2500,-3500.0,182.0 +2500,-3000.0,162.0 +2500,-2500.0,142.0 +2500,-2000.0,122.0 +2500,-1600.0,106.0 +2500,-1200.0,90.0 +2500,-900.0,78.0 +2500,-600.0,66.0 +2500,-400.0,58.0 +2500,-200.0,50.0 +2500,0.0,50.0 +2500,200.0,50.0 +2500,400.0,58.0 +2500,600.0,66.0 +2500,900.0,78.0 +2500,1200.0,90.0 +2500,1600.0,106.0 +2500,2000.0,122.0 +2500,2500.0,142.0 +2500,3000.0,162.0 +2500,3500.0,182.0 +2500,4000.0,202.0 +2500,4500.0,222.0 +2500,5000.0,242.0 +2500,5500.0,262.0 +3000,-5500.0,268.0 +3000,-5000.0,248.0 +3000,-4500.0,208.0 +3000,-4000.0,208.0 +3000,-3500.0,188.0 +3000,-3000.0,168.0 +3000,-2500.0,148.0 +3000,-2000.0,128.0 +3000,-1600.0,112.0 +3000,-1200.0,96.0 +3000,-900.0,84.0 +3000,-600.0,72.0 +3000,-400.0,64.0 +3000,-200.0,56.0 +3000,0.0,56.0 +3000,200.0,56.0 +3000,400.0,64.0 +3000,600.0,72.0 +3000,900.0,84.0 +3000,1200.0,96.0 +3000,1600.0,112.0 +3000,2000.0,128.0 +3000,2500.0,148.0 +3000,3000.0,168.0 +3000,3500.0,188.0 +3000,4000.0,208.0 +3000,4500.0,228.0 +3000,5000.0,248.0 +3000,5500.0,268.0 \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_10.vtlm b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_10.vtlm new file mode 100644 index 0000000000000000000000000000000000000000..ea00afe57cd1fa0d4f058cced560bd1bd482dd1a --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_10.vtlm @@ -0,0 +1,233 @@ +Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm] +0,-5500.0,239.2 +0,-5000.0,219.2 +0,-4500.0,179.2 +0,-4000.0,179.2 +0,-3500.0,159.2 +0,-3000.0,139.2 +0,-2500.0,119.2 +0,-2000.0,99.2 +0,-1600.0,83.2 +0,-1200.0,67.2 +0,-900.0,55.2 +0,-600.0,43.2 +0,-400.0,35.2 +0,-200.0,27.2 +0,0.0,27.2 +0,200.0,27.2 +0,400.0,35.2 +0,600.0,43.2 +0,900.0,55.2 +0,1200.0,67.2 +0,1600.0,83.2 +0,2000.0,99.2 +0,2500.0,119.2 +0,3000.0,139.2 +0,3500.0,159.2 +0,4000.0,179.2 +0,4500.0,199.2 +0,5000.0,219.2 +0,5500.0,239.2 +600,-5500.0,239.2 +600,-5000.0,219.2 +600,-4500.0,179.2 +600,-4000.0,179.2 +600,-3500.0,159.2 +600,-3000.0,139.2 +600,-2500.0,119.2 +600,-2000.0,99.2 +600,-1600.0,83.2 +600,-1200.0,67.2 +600,-900.0,55.2 +600,-600.0,43.2 +600,-400.0,35.2 +600,-200.0,27.2 +600,0.0,27.2 +600,200.0,27.2 +600,400.0,35.2 +600,600.0,43.2 +600,900.0,55.2 +600,1200.0,67.2 +600,1600.0,83.2 +600,2000.0,99.2 +600,2500.0,119.2 +600,3000.0,139.2 +600,3500.0,159.2 +600,4000.0,179.2 +600,4500.0,199.2 +600,5000.0,219.2 +600,5500.0,239.2 +900,-5500.0,242.8 +900,-5000.0,222.8 +900,-4500.0,182.8 +900,-4000.0,182.8 +900,-3500.0,162.8 +900,-3000.0,142.8 +900,-2500.0,122.8 +900,-2000.0,102.8 +900,-1600.0,86.8 +900,-1200.0,70.8 +900,-900.0,58.8 +900,-600.0,46.8 +900,-400.0,38.8 +900,-200.0,30.8 +900,0.0,30.8 +900,200.0,30.8 +900,400.0,38.8 +900,600.0,46.8 +900,900.0,58.8 +900,1200.0,70.8 +900,1600.0,86.8 +900,2000.0,102.8 +900,2500.0,122.8 +900,3000.0,142.8 +900,3500.0,162.8 +900,4000.0,182.8 +900,4500.0,202.8 +900,5000.0,222.8 +900,5500.0,242.8 +1200,-5500.0,246.4 +1200,-5000.0,226.4 +1200,-4500.0,186.4 +1200,-4000.0,186.4 +1200,-3500.0,166.4 +1200,-3000.0,146.4 +1200,-2500.0,126.4 +1200,-2000.0,106.4 +1200,-1600.0,90.4 +1200,-1200.0,74.4 +1200,-900.0,62.4 +1200,-600.0,50.4 +1200,-400.0,42.4 +1200,-200.0,34.4 +1200,0.0,34.4 +1200,200.0,34.4 +1200,400.0,42.4 +1200,600.0,50.4 +1200,900.0,62.4 +1200,1200.0,74.4 +1200,1600.0,90.4 +1200,2000.0,106.4 +1200,2500.0,126.4 +1200,3000.0,146.4 +1200,3500.0,166.4 +1200,4000.0,186.4 +1200,4500.0,206.4 +1200,5000.0,226.4 +1200,5500.0,246.4 +1600,-5500.0,251.2 +1600,-5000.0,231.2 +1600,-4500.0,191.2 +1600,-4000.0,191.2 +1600,-3500.0,171.2 +1600,-3000.0,151.2 +1600,-2500.0,131.2 +1600,-2000.0,111.2 +1600,-1600.0,95.2 +1600,-1200.0,79.2 +1600,-900.0,67.2 +1600,-600.0,55.2 +1600,-400.0,47.2 +1600,-200.0,39.2 +1600,0.0,39.2 +1600,200.0,39.2 +1600,400.0,47.2 +1600,600.0,55.2 +1600,900.0,67.2 +1600,1200.0,79.2 +1600,1600.0,95.2 +1600,2000.0,111.2 +1600,2500.0,131.2 +1600,3000.0,151.2 +1600,3500.0,171.2 +1600,4000.0,191.2 +1600,4500.0,211.2 +1600,5000.0,231.2 +1600,5500.0,251.2 +2000,-5500.0,256.0 +2000,-5000.0,236.0 +2000,-4500.0,196.0 +2000,-4000.0,196.0 +2000,-3500.0,176.0 +2000,-3000.0,156.0 +2000,-2500.0,136.0 +2000,-2000.0,116.0 +2000,-1600.0,100.0 +2000,-1200.0,84.0 +2000,-900.0,72.0 +2000,-600.0,60.0 +2000,-400.0,52.0 +2000,-200.0,44.0 +2000,0.0,44.0 +2000,200.0,44.0 +2000,400.0,52.0 +2000,600.0,60.0 +2000,900.0,72.0 +2000,1200.0,84.0 +2000,1600.0,100.0 +2000,2000.0,116.0 +2000,2500.0,136.0 +2000,3000.0,156.0 +2000,3500.0,176.0 +2000,4000.0,196.0 +2000,4500.0,216.0 +2000,5000.0,236.0 +2000,5500.0,256.0 +2500,-5500.0,262.0 +2500,-5000.0,242.0 +2500,-4500.0,202.0 +2500,-4000.0,202.0 +2500,-3500.0,182.0 +2500,-3000.0,162.0 +2500,-2500.0,142.0 +2500,-2000.0,122.0 +2500,-1600.0,106.0 +2500,-1200.0,90.0 +2500,-900.0,78.0 +2500,-600.0,66.0 +2500,-400.0,58.0 +2500,-200.0,50.0 +2500,0.0,50.0 +2500,200.0,50.0 +2500,400.0,58.0 +2500,600.0,66.0 +2500,900.0,78.0 +2500,1200.0,90.0 +2500,1600.0,106.0 +2500,2000.0,122.0 +2500,2500.0,142.0 +2500,3000.0,162.0 +2500,3500.0,182.0 +2500,4000.0,202.0 +2500,4500.0,222.0 +2500,5000.0,242.0 +2500,5500.0,262.0 +3000,-5500.0,268.0 +3000,-5000.0,248.0 +3000,-4500.0,208.0 +3000,-4000.0,208.0 +3000,-3500.0,188.0 +3000,-3000.0,168.0 +3000,-2500.0,148.0 +3000,-2000.0,128.0 +3000,-1600.0,112.0 +3000,-1200.0,96.0 +3000,-900.0,84.0 +3000,-600.0,72.0 +3000,-400.0,64.0 +3000,-200.0,56.0 +3000,0.0,56.0 +3000,200.0,56.0 +3000,400.0,64.0 +3000,600.0,72.0 +3000,900.0,84.0 +3000,1200.0,96.0 +3000,1600.0,112.0 +3000,2000.0,128.0 +3000,2500.0,148.0 +3000,3000.0,168.0 +3000,3500.0,188.0 +3000,4000.0,208.0 +3000,4500.0,228.0 +3000,5000.0,248.0 +3000,5500.0,268.0 \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_11.vtlm b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_11.vtlm new file mode 100644 index 0000000000000000000000000000000000000000..ea00afe57cd1fa0d4f058cced560bd1bd482dd1a --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_11.vtlm @@ -0,0 +1,233 @@ +Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm] +0,-5500.0,239.2 +0,-5000.0,219.2 +0,-4500.0,179.2 +0,-4000.0,179.2 +0,-3500.0,159.2 +0,-3000.0,139.2 +0,-2500.0,119.2 +0,-2000.0,99.2 +0,-1600.0,83.2 +0,-1200.0,67.2 +0,-900.0,55.2 +0,-600.0,43.2 +0,-400.0,35.2 +0,-200.0,27.2 +0,0.0,27.2 +0,200.0,27.2 +0,400.0,35.2 +0,600.0,43.2 +0,900.0,55.2 +0,1200.0,67.2 +0,1600.0,83.2 +0,2000.0,99.2 +0,2500.0,119.2 +0,3000.0,139.2 +0,3500.0,159.2 +0,4000.0,179.2 +0,4500.0,199.2 +0,5000.0,219.2 +0,5500.0,239.2 +600,-5500.0,239.2 +600,-5000.0,219.2 +600,-4500.0,179.2 +600,-4000.0,179.2 +600,-3500.0,159.2 +600,-3000.0,139.2 +600,-2500.0,119.2 +600,-2000.0,99.2 +600,-1600.0,83.2 +600,-1200.0,67.2 +600,-900.0,55.2 +600,-600.0,43.2 +600,-400.0,35.2 +600,-200.0,27.2 +600,0.0,27.2 +600,200.0,27.2 +600,400.0,35.2 +600,600.0,43.2 +600,900.0,55.2 +600,1200.0,67.2 +600,1600.0,83.2 +600,2000.0,99.2 +600,2500.0,119.2 +600,3000.0,139.2 +600,3500.0,159.2 +600,4000.0,179.2 +600,4500.0,199.2 +600,5000.0,219.2 +600,5500.0,239.2 +900,-5500.0,242.8 +900,-5000.0,222.8 +900,-4500.0,182.8 +900,-4000.0,182.8 +900,-3500.0,162.8 +900,-3000.0,142.8 +900,-2500.0,122.8 +900,-2000.0,102.8 +900,-1600.0,86.8 +900,-1200.0,70.8 +900,-900.0,58.8 +900,-600.0,46.8 +900,-400.0,38.8 +900,-200.0,30.8 +900,0.0,30.8 +900,200.0,30.8 +900,400.0,38.8 +900,600.0,46.8 +900,900.0,58.8 +900,1200.0,70.8 +900,1600.0,86.8 +900,2000.0,102.8 +900,2500.0,122.8 +900,3000.0,142.8 +900,3500.0,162.8 +900,4000.0,182.8 +900,4500.0,202.8 +900,5000.0,222.8 +900,5500.0,242.8 +1200,-5500.0,246.4 +1200,-5000.0,226.4 +1200,-4500.0,186.4 +1200,-4000.0,186.4 +1200,-3500.0,166.4 +1200,-3000.0,146.4 +1200,-2500.0,126.4 +1200,-2000.0,106.4 +1200,-1600.0,90.4 +1200,-1200.0,74.4 +1200,-900.0,62.4 +1200,-600.0,50.4 +1200,-400.0,42.4 +1200,-200.0,34.4 +1200,0.0,34.4 +1200,200.0,34.4 +1200,400.0,42.4 +1200,600.0,50.4 +1200,900.0,62.4 +1200,1200.0,74.4 +1200,1600.0,90.4 +1200,2000.0,106.4 +1200,2500.0,126.4 +1200,3000.0,146.4 +1200,3500.0,166.4 +1200,4000.0,186.4 +1200,4500.0,206.4 +1200,5000.0,226.4 +1200,5500.0,246.4 +1600,-5500.0,251.2 +1600,-5000.0,231.2 +1600,-4500.0,191.2 +1600,-4000.0,191.2 +1600,-3500.0,171.2 +1600,-3000.0,151.2 +1600,-2500.0,131.2 +1600,-2000.0,111.2 +1600,-1600.0,95.2 +1600,-1200.0,79.2 +1600,-900.0,67.2 +1600,-600.0,55.2 +1600,-400.0,47.2 +1600,-200.0,39.2 +1600,0.0,39.2 +1600,200.0,39.2 +1600,400.0,47.2 +1600,600.0,55.2 +1600,900.0,67.2 +1600,1200.0,79.2 +1600,1600.0,95.2 +1600,2000.0,111.2 +1600,2500.0,131.2 +1600,3000.0,151.2 +1600,3500.0,171.2 +1600,4000.0,191.2 +1600,4500.0,211.2 +1600,5000.0,231.2 +1600,5500.0,251.2 +2000,-5500.0,256.0 +2000,-5000.0,236.0 +2000,-4500.0,196.0 +2000,-4000.0,196.0 +2000,-3500.0,176.0 +2000,-3000.0,156.0 +2000,-2500.0,136.0 +2000,-2000.0,116.0 +2000,-1600.0,100.0 +2000,-1200.0,84.0 +2000,-900.0,72.0 +2000,-600.0,60.0 +2000,-400.0,52.0 +2000,-200.0,44.0 +2000,0.0,44.0 +2000,200.0,44.0 +2000,400.0,52.0 +2000,600.0,60.0 +2000,900.0,72.0 +2000,1200.0,84.0 +2000,1600.0,100.0 +2000,2000.0,116.0 +2000,2500.0,136.0 +2000,3000.0,156.0 +2000,3500.0,176.0 +2000,4000.0,196.0 +2000,4500.0,216.0 +2000,5000.0,236.0 +2000,5500.0,256.0 +2500,-5500.0,262.0 +2500,-5000.0,242.0 +2500,-4500.0,202.0 +2500,-4000.0,202.0 +2500,-3500.0,182.0 +2500,-3000.0,162.0 +2500,-2500.0,142.0 +2500,-2000.0,122.0 +2500,-1600.0,106.0 +2500,-1200.0,90.0 +2500,-900.0,78.0 +2500,-600.0,66.0 +2500,-400.0,58.0 +2500,-200.0,50.0 +2500,0.0,50.0 +2500,200.0,50.0 +2500,400.0,58.0 +2500,600.0,66.0 +2500,900.0,78.0 +2500,1200.0,90.0 +2500,1600.0,106.0 +2500,2000.0,122.0 +2500,2500.0,142.0 +2500,3000.0,162.0 +2500,3500.0,182.0 +2500,4000.0,202.0 +2500,4500.0,222.0 +2500,5000.0,242.0 +2500,5500.0,262.0 +3000,-5500.0,268.0 +3000,-5000.0,248.0 +3000,-4500.0,208.0 +3000,-4000.0,208.0 +3000,-3500.0,188.0 +3000,-3000.0,168.0 +3000,-2500.0,148.0 +3000,-2000.0,128.0 +3000,-1600.0,112.0 +3000,-1200.0,96.0 +3000,-900.0,84.0 +3000,-600.0,72.0 +3000,-400.0,64.0 +3000,-200.0,56.0 +3000,0.0,56.0 +3000,200.0,56.0 +3000,400.0,64.0 +3000,600.0,72.0 +3000,900.0,84.0 +3000,1200.0,96.0 +3000,1600.0,112.0 +3000,2000.0,128.0 +3000,2500.0,148.0 +3000,3000.0,168.0 +3000,3500.0,188.0 +3000,4000.0,208.0 +3000,4500.0,228.0 +3000,5000.0,248.0 +3000,5500.0,268.0 \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_12.vtlm b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_12.vtlm new file mode 100644 index 0000000000000000000000000000000000000000..d30c0dbb042ca6d2235b4febe01b31292e5593c0 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_12.vtlm @@ -0,0 +1,233 @@ +Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm] +0,-5500.0,74.2 +0,-5000.0,69.2 +0,-4500.0,59.2 +0,-4000.0,59.2 +0,-3500.0,54.2 +0,-3000.0,49.2 +0,-2500.0,44.2 +0,-2000.0,39.2 +0,-1600.0,35.2 +0,-1200.0,31.2 +0,-900.0,28.2 +0,-600.0,25.2 +0,-400.0,23.2 +0,-200.0,21.2 +0,0.0,21.2 +0,200.0,21.2 +0,400.0,23.2 +0,600.0,25.2 +0,900.0,28.2 +0,1200.0,31.2 +0,1600.0,35.2 +0,2000.0,39.2 +0,2500.0,44.2 +0,3000.0,49.2 +0,3500.0,54.2 +0,4000.0,59.2 +0,4500.0,64.2 +0,5000.0,69.2 +0,5500.0,74.2 +600,-5500.0,74.2 +600,-5000.0,69.2 +600,-4500.0,59.2 +600,-4000.0,59.2 +600,-3500.0,54.2 +600,-3000.0,49.2 +600,-2500.0,44.2 +600,-2000.0,39.2 +600,-1600.0,35.2 +600,-1200.0,31.2 +600,-900.0,28.2 +600,-600.0,25.2 +600,-400.0,23.2 +600,-200.0,21.2 +600,0.0,21.2 +600,200.0,21.2 +600,400.0,23.2 +600,600.0,25.2 +600,900.0,28.2 +600,1200.0,31.2 +600,1600.0,35.2 +600,2000.0,39.2 +600,2500.0,44.2 +600,3000.0,49.2 +600,3500.0,54.2 +600,4000.0,59.2 +600,4500.0,64.2 +600,5000.0,69.2 +600,5500.0,74.2 +900,-5500.0,77.8 +900,-5000.0,72.8 +900,-4500.0,62.8 +900,-4000.0,62.8 +900,-3500.0,57.8 +900,-3000.0,52.8 +900,-2500.0,47.8 +900,-2000.0,42.8 +900,-1600.0,38.8 +900,-1200.0,34.8 +900,-900.0,31.8 +900,-600.0,28.8 +900,-400.0,26.8 +900,-200.0,24.8 +900,0.0,24.8 +900,200.0,24.8 +900,400.0,26.8 +900,600.0,28.8 +900,900.0,31.8 +900,1200.0,34.8 +900,1600.0,38.8 +900,2000.0,42.8 +900,2500.0,47.8 +900,3000.0,52.8 +900,3500.0,57.8 +900,4000.0,62.8 +900,4500.0,67.8 +900,5000.0,72.8 +900,5500.0,77.8 +1200,-5500.0,81.4 +1200,-5000.0,76.4 +1200,-4500.0,66.4 +1200,-4000.0,66.4 +1200,-3500.0,61.4 +1200,-3000.0,56.4 +1200,-2500.0,51.4 +1200,-2000.0,46.4 +1200,-1600.0,42.4 +1200,-1200.0,38.4 +1200,-900.0,35.4 +1200,-600.0,32.4 +1200,-400.0,30.4 +1200,-200.0,28.4 +1200,0.0,28.4 +1200,200.0,28.4 +1200,400.0,30.4 +1200,600.0,32.4 +1200,900.0,35.4 +1200,1200.0,38.4 +1200,1600.0,42.4 +1200,2000.0,46.4 +1200,2500.0,51.4 +1200,3000.0,56.4 +1200,3500.0,61.4 +1200,4000.0,66.4 +1200,4500.0,71.4 +1200,5000.0,76.4 +1200,5500.0,81.4 +1600,-5500.0,86.2 +1600,-5000.0,81.2 +1600,-4500.0,71.2 +1600,-4000.0,71.2 +1600,-3500.0,66.2 +1600,-3000.0,61.2 +1600,-2500.0,56.2 +1600,-2000.0,51.2 +1600,-1600.0,47.2 +1600,-1200.0,43.2 +1600,-900.0,40.2 +1600,-600.0,37.2 +1600,-400.0,35.2 +1600,-200.0,33.2 +1600,0.0,33.2 +1600,200.0,33.2 +1600,400.0,35.2 +1600,600.0,37.2 +1600,900.0,40.2 +1600,1200.0,43.2 +1600,1600.0,47.2 +1600,2000.0,51.2 +1600,2500.0,56.2 +1600,3000.0,61.2 +1600,3500.0,66.2 +1600,4000.0,71.2 +1600,4500.0,76.2 +1600,5000.0,81.2 +1600,5500.0,86.2 +2000,-5500.0,91.0 +2000,-5000.0,86.0 +2000,-4500.0,76.0 +2000,-4000.0,76.0 +2000,-3500.0,71.0 +2000,-3000.0,66.0 +2000,-2500.0,61.0 +2000,-2000.0,56.0 +2000,-1600.0,52.0 +2000,-1200.0,48.0 +2000,-900.0,45.0 +2000,-600.0,42.0 +2000,-400.0,40.0 +2000,-200.0,38.0 +2000,0.0,38.0 +2000,200.0,38.0 +2000,400.0,40.0 +2000,600.0,42.0 +2000,900.0,45.0 +2000,1200.0,48.0 +2000,1600.0,52.0 +2000,2000.0,56.0 +2000,2500.0,61.0 +2000,3000.0,66.0 +2000,3500.0,71.0 +2000,4000.0,76.0 +2000,4500.0,81.0 +2000,5000.0,86.0 +2000,5500.0,91.0 +2500,-5500.0,97.0 +2500,-5000.0,92.0 +2500,-4500.0,82.0 +2500,-4000.0,82.0 +2500,-3500.0,77.0 +2500,-3000.0,72.0 +2500,-2500.0,67.0 +2500,-2000.0,62.0 +2500,-1600.0,58.0 +2500,-1200.0,54.0 +2500,-900.0,51.0 +2500,-600.0,48.0 +2500,-400.0,46.0 +2500,-200.0,44.0 +2500,0.0,44.0 +2500,200.0,44.0 +2500,400.0,46.0 +2500,600.0,48.0 +2500,900.0,51.0 +2500,1200.0,54.0 +2500,1600.0,58.0 +2500,2000.0,62.0 +2500,2500.0,67.0 +2500,3000.0,72.0 +2500,3500.0,77.0 +2500,4000.0,82.0 +2500,4500.0,87.0 +2500,5000.0,92.0 +2500,5500.0,97.0 +3000,-5500.0,103.0 +3000,-5000.0,98.0 +3000,-4500.0,88.0 +3000,-4000.0,88.0 +3000,-3500.0,83.0 +3000,-3000.0,78.0 +3000,-2500.0,73.0 +3000,-2000.0,68.0 +3000,-1600.0,64.0 +3000,-1200.0,60.0 +3000,-900.0,57.0 +3000,-600.0,54.0 +3000,-400.0,52.0 +3000,-200.0,50.0 +3000,0.0,50.0 +3000,200.0,50.0 +3000,400.0,52.0 +3000,600.0,54.0 +3000,900.0,57.0 +3000,1200.0,60.0 +3000,1600.0,64.0 +3000,2000.0,68.0 +3000,2500.0,73.0 +3000,3000.0,78.0 +3000,3500.0,83.0 +3000,4000.0,88.0 +3000,4500.0,93.0 +3000,5000.0,98.0 +3000,5500.0,103.0 \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_2.vtlm b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_2.vtlm new file mode 100644 index 0000000000000000000000000000000000000000..ea00afe57cd1fa0d4f058cced560bd1bd482dd1a --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_2.vtlm @@ -0,0 +1,233 @@ +Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm] +0,-5500.0,239.2 +0,-5000.0,219.2 +0,-4500.0,179.2 +0,-4000.0,179.2 +0,-3500.0,159.2 +0,-3000.0,139.2 +0,-2500.0,119.2 +0,-2000.0,99.2 +0,-1600.0,83.2 +0,-1200.0,67.2 +0,-900.0,55.2 +0,-600.0,43.2 +0,-400.0,35.2 +0,-200.0,27.2 +0,0.0,27.2 +0,200.0,27.2 +0,400.0,35.2 +0,600.0,43.2 +0,900.0,55.2 +0,1200.0,67.2 +0,1600.0,83.2 +0,2000.0,99.2 +0,2500.0,119.2 +0,3000.0,139.2 +0,3500.0,159.2 +0,4000.0,179.2 +0,4500.0,199.2 +0,5000.0,219.2 +0,5500.0,239.2 +600,-5500.0,239.2 +600,-5000.0,219.2 +600,-4500.0,179.2 +600,-4000.0,179.2 +600,-3500.0,159.2 +600,-3000.0,139.2 +600,-2500.0,119.2 +600,-2000.0,99.2 +600,-1600.0,83.2 +600,-1200.0,67.2 +600,-900.0,55.2 +600,-600.0,43.2 +600,-400.0,35.2 +600,-200.0,27.2 +600,0.0,27.2 +600,200.0,27.2 +600,400.0,35.2 +600,600.0,43.2 +600,900.0,55.2 +600,1200.0,67.2 +600,1600.0,83.2 +600,2000.0,99.2 +600,2500.0,119.2 +600,3000.0,139.2 +600,3500.0,159.2 +600,4000.0,179.2 +600,4500.0,199.2 +600,5000.0,219.2 +600,5500.0,239.2 +900,-5500.0,242.8 +900,-5000.0,222.8 +900,-4500.0,182.8 +900,-4000.0,182.8 +900,-3500.0,162.8 +900,-3000.0,142.8 +900,-2500.0,122.8 +900,-2000.0,102.8 +900,-1600.0,86.8 +900,-1200.0,70.8 +900,-900.0,58.8 +900,-600.0,46.8 +900,-400.0,38.8 +900,-200.0,30.8 +900,0.0,30.8 +900,200.0,30.8 +900,400.0,38.8 +900,600.0,46.8 +900,900.0,58.8 +900,1200.0,70.8 +900,1600.0,86.8 +900,2000.0,102.8 +900,2500.0,122.8 +900,3000.0,142.8 +900,3500.0,162.8 +900,4000.0,182.8 +900,4500.0,202.8 +900,5000.0,222.8 +900,5500.0,242.8 +1200,-5500.0,246.4 +1200,-5000.0,226.4 +1200,-4500.0,186.4 +1200,-4000.0,186.4 +1200,-3500.0,166.4 +1200,-3000.0,146.4 +1200,-2500.0,126.4 +1200,-2000.0,106.4 +1200,-1600.0,90.4 +1200,-1200.0,74.4 +1200,-900.0,62.4 +1200,-600.0,50.4 +1200,-400.0,42.4 +1200,-200.0,34.4 +1200,0.0,34.4 +1200,200.0,34.4 +1200,400.0,42.4 +1200,600.0,50.4 +1200,900.0,62.4 +1200,1200.0,74.4 +1200,1600.0,90.4 +1200,2000.0,106.4 +1200,2500.0,126.4 +1200,3000.0,146.4 +1200,3500.0,166.4 +1200,4000.0,186.4 +1200,4500.0,206.4 +1200,5000.0,226.4 +1200,5500.0,246.4 +1600,-5500.0,251.2 +1600,-5000.0,231.2 +1600,-4500.0,191.2 +1600,-4000.0,191.2 +1600,-3500.0,171.2 +1600,-3000.0,151.2 +1600,-2500.0,131.2 +1600,-2000.0,111.2 +1600,-1600.0,95.2 +1600,-1200.0,79.2 +1600,-900.0,67.2 +1600,-600.0,55.2 +1600,-400.0,47.2 +1600,-200.0,39.2 +1600,0.0,39.2 +1600,200.0,39.2 +1600,400.0,47.2 +1600,600.0,55.2 +1600,900.0,67.2 +1600,1200.0,79.2 +1600,1600.0,95.2 +1600,2000.0,111.2 +1600,2500.0,131.2 +1600,3000.0,151.2 +1600,3500.0,171.2 +1600,4000.0,191.2 +1600,4500.0,211.2 +1600,5000.0,231.2 +1600,5500.0,251.2 +2000,-5500.0,256.0 +2000,-5000.0,236.0 +2000,-4500.0,196.0 +2000,-4000.0,196.0 +2000,-3500.0,176.0 +2000,-3000.0,156.0 +2000,-2500.0,136.0 +2000,-2000.0,116.0 +2000,-1600.0,100.0 +2000,-1200.0,84.0 +2000,-900.0,72.0 +2000,-600.0,60.0 +2000,-400.0,52.0 +2000,-200.0,44.0 +2000,0.0,44.0 +2000,200.0,44.0 +2000,400.0,52.0 +2000,600.0,60.0 +2000,900.0,72.0 +2000,1200.0,84.0 +2000,1600.0,100.0 +2000,2000.0,116.0 +2000,2500.0,136.0 +2000,3000.0,156.0 +2000,3500.0,176.0 +2000,4000.0,196.0 +2000,4500.0,216.0 +2000,5000.0,236.0 +2000,5500.0,256.0 +2500,-5500.0,262.0 +2500,-5000.0,242.0 +2500,-4500.0,202.0 +2500,-4000.0,202.0 +2500,-3500.0,182.0 +2500,-3000.0,162.0 +2500,-2500.0,142.0 +2500,-2000.0,122.0 +2500,-1600.0,106.0 +2500,-1200.0,90.0 +2500,-900.0,78.0 +2500,-600.0,66.0 +2500,-400.0,58.0 +2500,-200.0,50.0 +2500,0.0,50.0 +2500,200.0,50.0 +2500,400.0,58.0 +2500,600.0,66.0 +2500,900.0,78.0 +2500,1200.0,90.0 +2500,1600.0,106.0 +2500,2000.0,122.0 +2500,2500.0,142.0 +2500,3000.0,162.0 +2500,3500.0,182.0 +2500,4000.0,202.0 +2500,4500.0,222.0 +2500,5000.0,242.0 +2500,5500.0,262.0 +3000,-5500.0,268.0 +3000,-5000.0,248.0 +3000,-4500.0,208.0 +3000,-4000.0,208.0 +3000,-3500.0,188.0 +3000,-3000.0,168.0 +3000,-2500.0,148.0 +3000,-2000.0,128.0 +3000,-1600.0,112.0 +3000,-1200.0,96.0 +3000,-900.0,84.0 +3000,-600.0,72.0 +3000,-400.0,64.0 +3000,-200.0,56.0 +3000,0.0,56.0 +3000,200.0,56.0 +3000,400.0,64.0 +3000,600.0,72.0 +3000,900.0,84.0 +3000,1200.0,96.0 +3000,1600.0,112.0 +3000,2000.0,128.0 +3000,2500.0,148.0 +3000,3000.0,168.0 +3000,3500.0,188.0 +3000,4000.0,208.0 +3000,4500.0,228.0 +3000,5000.0,248.0 +3000,5500.0,268.0 \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_3.vtlm b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_3.vtlm new file mode 100644 index 0000000000000000000000000000000000000000..ea00afe57cd1fa0d4f058cced560bd1bd482dd1a --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_3.vtlm @@ -0,0 +1,233 @@ +Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm] +0,-5500.0,239.2 +0,-5000.0,219.2 +0,-4500.0,179.2 +0,-4000.0,179.2 +0,-3500.0,159.2 +0,-3000.0,139.2 +0,-2500.0,119.2 +0,-2000.0,99.2 +0,-1600.0,83.2 +0,-1200.0,67.2 +0,-900.0,55.2 +0,-600.0,43.2 +0,-400.0,35.2 +0,-200.0,27.2 +0,0.0,27.2 +0,200.0,27.2 +0,400.0,35.2 +0,600.0,43.2 +0,900.0,55.2 +0,1200.0,67.2 +0,1600.0,83.2 +0,2000.0,99.2 +0,2500.0,119.2 +0,3000.0,139.2 +0,3500.0,159.2 +0,4000.0,179.2 +0,4500.0,199.2 +0,5000.0,219.2 +0,5500.0,239.2 +600,-5500.0,239.2 +600,-5000.0,219.2 +600,-4500.0,179.2 +600,-4000.0,179.2 +600,-3500.0,159.2 +600,-3000.0,139.2 +600,-2500.0,119.2 +600,-2000.0,99.2 +600,-1600.0,83.2 +600,-1200.0,67.2 +600,-900.0,55.2 +600,-600.0,43.2 +600,-400.0,35.2 +600,-200.0,27.2 +600,0.0,27.2 +600,200.0,27.2 +600,400.0,35.2 +600,600.0,43.2 +600,900.0,55.2 +600,1200.0,67.2 +600,1600.0,83.2 +600,2000.0,99.2 +600,2500.0,119.2 +600,3000.0,139.2 +600,3500.0,159.2 +600,4000.0,179.2 +600,4500.0,199.2 +600,5000.0,219.2 +600,5500.0,239.2 +900,-5500.0,242.8 +900,-5000.0,222.8 +900,-4500.0,182.8 +900,-4000.0,182.8 +900,-3500.0,162.8 +900,-3000.0,142.8 +900,-2500.0,122.8 +900,-2000.0,102.8 +900,-1600.0,86.8 +900,-1200.0,70.8 +900,-900.0,58.8 +900,-600.0,46.8 +900,-400.0,38.8 +900,-200.0,30.8 +900,0.0,30.8 +900,200.0,30.8 +900,400.0,38.8 +900,600.0,46.8 +900,900.0,58.8 +900,1200.0,70.8 +900,1600.0,86.8 +900,2000.0,102.8 +900,2500.0,122.8 +900,3000.0,142.8 +900,3500.0,162.8 +900,4000.0,182.8 +900,4500.0,202.8 +900,5000.0,222.8 +900,5500.0,242.8 +1200,-5500.0,246.4 +1200,-5000.0,226.4 +1200,-4500.0,186.4 +1200,-4000.0,186.4 +1200,-3500.0,166.4 +1200,-3000.0,146.4 +1200,-2500.0,126.4 +1200,-2000.0,106.4 +1200,-1600.0,90.4 +1200,-1200.0,74.4 +1200,-900.0,62.4 +1200,-600.0,50.4 +1200,-400.0,42.4 +1200,-200.0,34.4 +1200,0.0,34.4 +1200,200.0,34.4 +1200,400.0,42.4 +1200,600.0,50.4 +1200,900.0,62.4 +1200,1200.0,74.4 +1200,1600.0,90.4 +1200,2000.0,106.4 +1200,2500.0,126.4 +1200,3000.0,146.4 +1200,3500.0,166.4 +1200,4000.0,186.4 +1200,4500.0,206.4 +1200,5000.0,226.4 +1200,5500.0,246.4 +1600,-5500.0,251.2 +1600,-5000.0,231.2 +1600,-4500.0,191.2 +1600,-4000.0,191.2 +1600,-3500.0,171.2 +1600,-3000.0,151.2 +1600,-2500.0,131.2 +1600,-2000.0,111.2 +1600,-1600.0,95.2 +1600,-1200.0,79.2 +1600,-900.0,67.2 +1600,-600.0,55.2 +1600,-400.0,47.2 +1600,-200.0,39.2 +1600,0.0,39.2 +1600,200.0,39.2 +1600,400.0,47.2 +1600,600.0,55.2 +1600,900.0,67.2 +1600,1200.0,79.2 +1600,1600.0,95.2 +1600,2000.0,111.2 +1600,2500.0,131.2 +1600,3000.0,151.2 +1600,3500.0,171.2 +1600,4000.0,191.2 +1600,4500.0,211.2 +1600,5000.0,231.2 +1600,5500.0,251.2 +2000,-5500.0,256.0 +2000,-5000.0,236.0 +2000,-4500.0,196.0 +2000,-4000.0,196.0 +2000,-3500.0,176.0 +2000,-3000.0,156.0 +2000,-2500.0,136.0 +2000,-2000.0,116.0 +2000,-1600.0,100.0 +2000,-1200.0,84.0 +2000,-900.0,72.0 +2000,-600.0,60.0 +2000,-400.0,52.0 +2000,-200.0,44.0 +2000,0.0,44.0 +2000,200.0,44.0 +2000,400.0,52.0 +2000,600.0,60.0 +2000,900.0,72.0 +2000,1200.0,84.0 +2000,1600.0,100.0 +2000,2000.0,116.0 +2000,2500.0,136.0 +2000,3000.0,156.0 +2000,3500.0,176.0 +2000,4000.0,196.0 +2000,4500.0,216.0 +2000,5000.0,236.0 +2000,5500.0,256.0 +2500,-5500.0,262.0 +2500,-5000.0,242.0 +2500,-4500.0,202.0 +2500,-4000.0,202.0 +2500,-3500.0,182.0 +2500,-3000.0,162.0 +2500,-2500.0,142.0 +2500,-2000.0,122.0 +2500,-1600.0,106.0 +2500,-1200.0,90.0 +2500,-900.0,78.0 +2500,-600.0,66.0 +2500,-400.0,58.0 +2500,-200.0,50.0 +2500,0.0,50.0 +2500,200.0,50.0 +2500,400.0,58.0 +2500,600.0,66.0 +2500,900.0,78.0 +2500,1200.0,90.0 +2500,1600.0,106.0 +2500,2000.0,122.0 +2500,2500.0,142.0 +2500,3000.0,162.0 +2500,3500.0,182.0 +2500,4000.0,202.0 +2500,4500.0,222.0 +2500,5000.0,242.0 +2500,5500.0,262.0 +3000,-5500.0,268.0 +3000,-5000.0,248.0 +3000,-4500.0,208.0 +3000,-4000.0,208.0 +3000,-3500.0,188.0 +3000,-3000.0,168.0 +3000,-2500.0,148.0 +3000,-2000.0,128.0 +3000,-1600.0,112.0 +3000,-1200.0,96.0 +3000,-900.0,84.0 +3000,-600.0,72.0 +3000,-400.0,64.0 +3000,-200.0,56.0 +3000,0.0,56.0 +3000,200.0,56.0 +3000,400.0,64.0 +3000,600.0,72.0 +3000,900.0,84.0 +3000,1200.0,96.0 +3000,1600.0,112.0 +3000,2000.0,128.0 +3000,2500.0,148.0 +3000,3000.0,168.0 +3000,3500.0,188.0 +3000,4000.0,208.0 +3000,4500.0,228.0 +3000,5000.0,248.0 +3000,5500.0,268.0 \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_4.vtlm b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_4.vtlm new file mode 100644 index 0000000000000000000000000000000000000000..ea00afe57cd1fa0d4f058cced560bd1bd482dd1a --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_4.vtlm @@ -0,0 +1,233 @@ +Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm] +0,-5500.0,239.2 +0,-5000.0,219.2 +0,-4500.0,179.2 +0,-4000.0,179.2 +0,-3500.0,159.2 +0,-3000.0,139.2 +0,-2500.0,119.2 +0,-2000.0,99.2 +0,-1600.0,83.2 +0,-1200.0,67.2 +0,-900.0,55.2 +0,-600.0,43.2 +0,-400.0,35.2 +0,-200.0,27.2 +0,0.0,27.2 +0,200.0,27.2 +0,400.0,35.2 +0,600.0,43.2 +0,900.0,55.2 +0,1200.0,67.2 +0,1600.0,83.2 +0,2000.0,99.2 +0,2500.0,119.2 +0,3000.0,139.2 +0,3500.0,159.2 +0,4000.0,179.2 +0,4500.0,199.2 +0,5000.0,219.2 +0,5500.0,239.2 +600,-5500.0,239.2 +600,-5000.0,219.2 +600,-4500.0,179.2 +600,-4000.0,179.2 +600,-3500.0,159.2 +600,-3000.0,139.2 +600,-2500.0,119.2 +600,-2000.0,99.2 +600,-1600.0,83.2 +600,-1200.0,67.2 +600,-900.0,55.2 +600,-600.0,43.2 +600,-400.0,35.2 +600,-200.0,27.2 +600,0.0,27.2 +600,200.0,27.2 +600,400.0,35.2 +600,600.0,43.2 +600,900.0,55.2 +600,1200.0,67.2 +600,1600.0,83.2 +600,2000.0,99.2 +600,2500.0,119.2 +600,3000.0,139.2 +600,3500.0,159.2 +600,4000.0,179.2 +600,4500.0,199.2 +600,5000.0,219.2 +600,5500.0,239.2 +900,-5500.0,242.8 +900,-5000.0,222.8 +900,-4500.0,182.8 +900,-4000.0,182.8 +900,-3500.0,162.8 +900,-3000.0,142.8 +900,-2500.0,122.8 +900,-2000.0,102.8 +900,-1600.0,86.8 +900,-1200.0,70.8 +900,-900.0,58.8 +900,-600.0,46.8 +900,-400.0,38.8 +900,-200.0,30.8 +900,0.0,30.8 +900,200.0,30.8 +900,400.0,38.8 +900,600.0,46.8 +900,900.0,58.8 +900,1200.0,70.8 +900,1600.0,86.8 +900,2000.0,102.8 +900,2500.0,122.8 +900,3000.0,142.8 +900,3500.0,162.8 +900,4000.0,182.8 +900,4500.0,202.8 +900,5000.0,222.8 +900,5500.0,242.8 +1200,-5500.0,246.4 +1200,-5000.0,226.4 +1200,-4500.0,186.4 +1200,-4000.0,186.4 +1200,-3500.0,166.4 +1200,-3000.0,146.4 +1200,-2500.0,126.4 +1200,-2000.0,106.4 +1200,-1600.0,90.4 +1200,-1200.0,74.4 +1200,-900.0,62.4 +1200,-600.0,50.4 +1200,-400.0,42.4 +1200,-200.0,34.4 +1200,0.0,34.4 +1200,200.0,34.4 +1200,400.0,42.4 +1200,600.0,50.4 +1200,900.0,62.4 +1200,1200.0,74.4 +1200,1600.0,90.4 +1200,2000.0,106.4 +1200,2500.0,126.4 +1200,3000.0,146.4 +1200,3500.0,166.4 +1200,4000.0,186.4 +1200,4500.0,206.4 +1200,5000.0,226.4 +1200,5500.0,246.4 +1600,-5500.0,251.2 +1600,-5000.0,231.2 +1600,-4500.0,191.2 +1600,-4000.0,191.2 +1600,-3500.0,171.2 +1600,-3000.0,151.2 +1600,-2500.0,131.2 +1600,-2000.0,111.2 +1600,-1600.0,95.2 +1600,-1200.0,79.2 +1600,-900.0,67.2 +1600,-600.0,55.2 +1600,-400.0,47.2 +1600,-200.0,39.2 +1600,0.0,39.2 +1600,200.0,39.2 +1600,400.0,47.2 +1600,600.0,55.2 +1600,900.0,67.2 +1600,1200.0,79.2 +1600,1600.0,95.2 +1600,2000.0,111.2 +1600,2500.0,131.2 +1600,3000.0,151.2 +1600,3500.0,171.2 +1600,4000.0,191.2 +1600,4500.0,211.2 +1600,5000.0,231.2 +1600,5500.0,251.2 +2000,-5500.0,256.0 +2000,-5000.0,236.0 +2000,-4500.0,196.0 +2000,-4000.0,196.0 +2000,-3500.0,176.0 +2000,-3000.0,156.0 +2000,-2500.0,136.0 +2000,-2000.0,116.0 +2000,-1600.0,100.0 +2000,-1200.0,84.0 +2000,-900.0,72.0 +2000,-600.0,60.0 +2000,-400.0,52.0 +2000,-200.0,44.0 +2000,0.0,44.0 +2000,200.0,44.0 +2000,400.0,52.0 +2000,600.0,60.0 +2000,900.0,72.0 +2000,1200.0,84.0 +2000,1600.0,100.0 +2000,2000.0,116.0 +2000,2500.0,136.0 +2000,3000.0,156.0 +2000,3500.0,176.0 +2000,4000.0,196.0 +2000,4500.0,216.0 +2000,5000.0,236.0 +2000,5500.0,256.0 +2500,-5500.0,262.0 +2500,-5000.0,242.0 +2500,-4500.0,202.0 +2500,-4000.0,202.0 +2500,-3500.0,182.0 +2500,-3000.0,162.0 +2500,-2500.0,142.0 +2500,-2000.0,122.0 +2500,-1600.0,106.0 +2500,-1200.0,90.0 +2500,-900.0,78.0 +2500,-600.0,66.0 +2500,-400.0,58.0 +2500,-200.0,50.0 +2500,0.0,50.0 +2500,200.0,50.0 +2500,400.0,58.0 +2500,600.0,66.0 +2500,900.0,78.0 +2500,1200.0,90.0 +2500,1600.0,106.0 +2500,2000.0,122.0 +2500,2500.0,142.0 +2500,3000.0,162.0 +2500,3500.0,182.0 +2500,4000.0,202.0 +2500,4500.0,222.0 +2500,5000.0,242.0 +2500,5500.0,262.0 +3000,-5500.0,268.0 +3000,-5000.0,248.0 +3000,-4500.0,208.0 +3000,-4000.0,208.0 +3000,-3500.0,188.0 +3000,-3000.0,168.0 +3000,-2500.0,148.0 +3000,-2000.0,128.0 +3000,-1600.0,112.0 +3000,-1200.0,96.0 +3000,-900.0,84.0 +3000,-600.0,72.0 +3000,-400.0,64.0 +3000,-200.0,56.0 +3000,0.0,56.0 +3000,200.0,56.0 +3000,400.0,64.0 +3000,600.0,72.0 +3000,900.0,84.0 +3000,1200.0,96.0 +3000,1600.0,112.0 +3000,2000.0,128.0 +3000,2500.0,148.0 +3000,3000.0,168.0 +3000,3500.0,188.0 +3000,4000.0,208.0 +3000,4500.0,228.0 +3000,5000.0,248.0 +3000,5500.0,268.0 \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_5.vtlm b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_5.vtlm new file mode 100644 index 0000000000000000000000000000000000000000..ea00afe57cd1fa0d4f058cced560bd1bd482dd1a --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_5.vtlm @@ -0,0 +1,233 @@ +Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm] +0,-5500.0,239.2 +0,-5000.0,219.2 +0,-4500.0,179.2 +0,-4000.0,179.2 +0,-3500.0,159.2 +0,-3000.0,139.2 +0,-2500.0,119.2 +0,-2000.0,99.2 +0,-1600.0,83.2 +0,-1200.0,67.2 +0,-900.0,55.2 +0,-600.0,43.2 +0,-400.0,35.2 +0,-200.0,27.2 +0,0.0,27.2 +0,200.0,27.2 +0,400.0,35.2 +0,600.0,43.2 +0,900.0,55.2 +0,1200.0,67.2 +0,1600.0,83.2 +0,2000.0,99.2 +0,2500.0,119.2 +0,3000.0,139.2 +0,3500.0,159.2 +0,4000.0,179.2 +0,4500.0,199.2 +0,5000.0,219.2 +0,5500.0,239.2 +600,-5500.0,239.2 +600,-5000.0,219.2 +600,-4500.0,179.2 +600,-4000.0,179.2 +600,-3500.0,159.2 +600,-3000.0,139.2 +600,-2500.0,119.2 +600,-2000.0,99.2 +600,-1600.0,83.2 +600,-1200.0,67.2 +600,-900.0,55.2 +600,-600.0,43.2 +600,-400.0,35.2 +600,-200.0,27.2 +600,0.0,27.2 +600,200.0,27.2 +600,400.0,35.2 +600,600.0,43.2 +600,900.0,55.2 +600,1200.0,67.2 +600,1600.0,83.2 +600,2000.0,99.2 +600,2500.0,119.2 +600,3000.0,139.2 +600,3500.0,159.2 +600,4000.0,179.2 +600,4500.0,199.2 +600,5000.0,219.2 +600,5500.0,239.2 +900,-5500.0,242.8 +900,-5000.0,222.8 +900,-4500.0,182.8 +900,-4000.0,182.8 +900,-3500.0,162.8 +900,-3000.0,142.8 +900,-2500.0,122.8 +900,-2000.0,102.8 +900,-1600.0,86.8 +900,-1200.0,70.8 +900,-900.0,58.8 +900,-600.0,46.8 +900,-400.0,38.8 +900,-200.0,30.8 +900,0.0,30.8 +900,200.0,30.8 +900,400.0,38.8 +900,600.0,46.8 +900,900.0,58.8 +900,1200.0,70.8 +900,1600.0,86.8 +900,2000.0,102.8 +900,2500.0,122.8 +900,3000.0,142.8 +900,3500.0,162.8 +900,4000.0,182.8 +900,4500.0,202.8 +900,5000.0,222.8 +900,5500.0,242.8 +1200,-5500.0,246.4 +1200,-5000.0,226.4 +1200,-4500.0,186.4 +1200,-4000.0,186.4 +1200,-3500.0,166.4 +1200,-3000.0,146.4 +1200,-2500.0,126.4 +1200,-2000.0,106.4 +1200,-1600.0,90.4 +1200,-1200.0,74.4 +1200,-900.0,62.4 +1200,-600.0,50.4 +1200,-400.0,42.4 +1200,-200.0,34.4 +1200,0.0,34.4 +1200,200.0,34.4 +1200,400.0,42.4 +1200,600.0,50.4 +1200,900.0,62.4 +1200,1200.0,74.4 +1200,1600.0,90.4 +1200,2000.0,106.4 +1200,2500.0,126.4 +1200,3000.0,146.4 +1200,3500.0,166.4 +1200,4000.0,186.4 +1200,4500.0,206.4 +1200,5000.0,226.4 +1200,5500.0,246.4 +1600,-5500.0,251.2 +1600,-5000.0,231.2 +1600,-4500.0,191.2 +1600,-4000.0,191.2 +1600,-3500.0,171.2 +1600,-3000.0,151.2 +1600,-2500.0,131.2 +1600,-2000.0,111.2 +1600,-1600.0,95.2 +1600,-1200.0,79.2 +1600,-900.0,67.2 +1600,-600.0,55.2 +1600,-400.0,47.2 +1600,-200.0,39.2 +1600,0.0,39.2 +1600,200.0,39.2 +1600,400.0,47.2 +1600,600.0,55.2 +1600,900.0,67.2 +1600,1200.0,79.2 +1600,1600.0,95.2 +1600,2000.0,111.2 +1600,2500.0,131.2 +1600,3000.0,151.2 +1600,3500.0,171.2 +1600,4000.0,191.2 +1600,4500.0,211.2 +1600,5000.0,231.2 +1600,5500.0,251.2 +2000,-5500.0,256.0 +2000,-5000.0,236.0 +2000,-4500.0,196.0 +2000,-4000.0,196.0 +2000,-3500.0,176.0 +2000,-3000.0,156.0 +2000,-2500.0,136.0 +2000,-2000.0,116.0 +2000,-1600.0,100.0 +2000,-1200.0,84.0 +2000,-900.0,72.0 +2000,-600.0,60.0 +2000,-400.0,52.0 +2000,-200.0,44.0 +2000,0.0,44.0 +2000,200.0,44.0 +2000,400.0,52.0 +2000,600.0,60.0 +2000,900.0,72.0 +2000,1200.0,84.0 +2000,1600.0,100.0 +2000,2000.0,116.0 +2000,2500.0,136.0 +2000,3000.0,156.0 +2000,3500.0,176.0 +2000,4000.0,196.0 +2000,4500.0,216.0 +2000,5000.0,236.0 +2000,5500.0,256.0 +2500,-5500.0,262.0 +2500,-5000.0,242.0 +2500,-4500.0,202.0 +2500,-4000.0,202.0 +2500,-3500.0,182.0 +2500,-3000.0,162.0 +2500,-2500.0,142.0 +2500,-2000.0,122.0 +2500,-1600.0,106.0 +2500,-1200.0,90.0 +2500,-900.0,78.0 +2500,-600.0,66.0 +2500,-400.0,58.0 +2500,-200.0,50.0 +2500,0.0,50.0 +2500,200.0,50.0 +2500,400.0,58.0 +2500,600.0,66.0 +2500,900.0,78.0 +2500,1200.0,90.0 +2500,1600.0,106.0 +2500,2000.0,122.0 +2500,2500.0,142.0 +2500,3000.0,162.0 +2500,3500.0,182.0 +2500,4000.0,202.0 +2500,4500.0,222.0 +2500,5000.0,242.0 +2500,5500.0,262.0 +3000,-5500.0,268.0 +3000,-5000.0,248.0 +3000,-4500.0,208.0 +3000,-4000.0,208.0 +3000,-3500.0,188.0 +3000,-3000.0,168.0 +3000,-2500.0,148.0 +3000,-2000.0,128.0 +3000,-1600.0,112.0 +3000,-1200.0,96.0 +3000,-900.0,84.0 +3000,-600.0,72.0 +3000,-400.0,64.0 +3000,-200.0,56.0 +3000,0.0,56.0 +3000,200.0,56.0 +3000,400.0,64.0 +3000,600.0,72.0 +3000,900.0,84.0 +3000,1200.0,96.0 +3000,1600.0,112.0 +3000,2000.0,128.0 +3000,2500.0,148.0 +3000,3000.0,168.0 +3000,3500.0,188.0 +3000,4000.0,208.0 +3000,4500.0,228.0 +3000,5000.0,248.0 +3000,5500.0,268.0 \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_6.vtlm b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_6.vtlm new file mode 100644 index 0000000000000000000000000000000000000000..ea00afe57cd1fa0d4f058cced560bd1bd482dd1a --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_6.vtlm @@ -0,0 +1,233 @@ +Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm] +0,-5500.0,239.2 +0,-5000.0,219.2 +0,-4500.0,179.2 +0,-4000.0,179.2 +0,-3500.0,159.2 +0,-3000.0,139.2 +0,-2500.0,119.2 +0,-2000.0,99.2 +0,-1600.0,83.2 +0,-1200.0,67.2 +0,-900.0,55.2 +0,-600.0,43.2 +0,-400.0,35.2 +0,-200.0,27.2 +0,0.0,27.2 +0,200.0,27.2 +0,400.0,35.2 +0,600.0,43.2 +0,900.0,55.2 +0,1200.0,67.2 +0,1600.0,83.2 +0,2000.0,99.2 +0,2500.0,119.2 +0,3000.0,139.2 +0,3500.0,159.2 +0,4000.0,179.2 +0,4500.0,199.2 +0,5000.0,219.2 +0,5500.0,239.2 +600,-5500.0,239.2 +600,-5000.0,219.2 +600,-4500.0,179.2 +600,-4000.0,179.2 +600,-3500.0,159.2 +600,-3000.0,139.2 +600,-2500.0,119.2 +600,-2000.0,99.2 +600,-1600.0,83.2 +600,-1200.0,67.2 +600,-900.0,55.2 +600,-600.0,43.2 +600,-400.0,35.2 +600,-200.0,27.2 +600,0.0,27.2 +600,200.0,27.2 +600,400.0,35.2 +600,600.0,43.2 +600,900.0,55.2 +600,1200.0,67.2 +600,1600.0,83.2 +600,2000.0,99.2 +600,2500.0,119.2 +600,3000.0,139.2 +600,3500.0,159.2 +600,4000.0,179.2 +600,4500.0,199.2 +600,5000.0,219.2 +600,5500.0,239.2 +900,-5500.0,242.8 +900,-5000.0,222.8 +900,-4500.0,182.8 +900,-4000.0,182.8 +900,-3500.0,162.8 +900,-3000.0,142.8 +900,-2500.0,122.8 +900,-2000.0,102.8 +900,-1600.0,86.8 +900,-1200.0,70.8 +900,-900.0,58.8 +900,-600.0,46.8 +900,-400.0,38.8 +900,-200.0,30.8 +900,0.0,30.8 +900,200.0,30.8 +900,400.0,38.8 +900,600.0,46.8 +900,900.0,58.8 +900,1200.0,70.8 +900,1600.0,86.8 +900,2000.0,102.8 +900,2500.0,122.8 +900,3000.0,142.8 +900,3500.0,162.8 +900,4000.0,182.8 +900,4500.0,202.8 +900,5000.0,222.8 +900,5500.0,242.8 +1200,-5500.0,246.4 +1200,-5000.0,226.4 +1200,-4500.0,186.4 +1200,-4000.0,186.4 +1200,-3500.0,166.4 +1200,-3000.0,146.4 +1200,-2500.0,126.4 +1200,-2000.0,106.4 +1200,-1600.0,90.4 +1200,-1200.0,74.4 +1200,-900.0,62.4 +1200,-600.0,50.4 +1200,-400.0,42.4 +1200,-200.0,34.4 +1200,0.0,34.4 +1200,200.0,34.4 +1200,400.0,42.4 +1200,600.0,50.4 +1200,900.0,62.4 +1200,1200.0,74.4 +1200,1600.0,90.4 +1200,2000.0,106.4 +1200,2500.0,126.4 +1200,3000.0,146.4 +1200,3500.0,166.4 +1200,4000.0,186.4 +1200,4500.0,206.4 +1200,5000.0,226.4 +1200,5500.0,246.4 +1600,-5500.0,251.2 +1600,-5000.0,231.2 +1600,-4500.0,191.2 +1600,-4000.0,191.2 +1600,-3500.0,171.2 +1600,-3000.0,151.2 +1600,-2500.0,131.2 +1600,-2000.0,111.2 +1600,-1600.0,95.2 +1600,-1200.0,79.2 +1600,-900.0,67.2 +1600,-600.0,55.2 +1600,-400.0,47.2 +1600,-200.0,39.2 +1600,0.0,39.2 +1600,200.0,39.2 +1600,400.0,47.2 +1600,600.0,55.2 +1600,900.0,67.2 +1600,1200.0,79.2 +1600,1600.0,95.2 +1600,2000.0,111.2 +1600,2500.0,131.2 +1600,3000.0,151.2 +1600,3500.0,171.2 +1600,4000.0,191.2 +1600,4500.0,211.2 +1600,5000.0,231.2 +1600,5500.0,251.2 +2000,-5500.0,256.0 +2000,-5000.0,236.0 +2000,-4500.0,196.0 +2000,-4000.0,196.0 +2000,-3500.0,176.0 +2000,-3000.0,156.0 +2000,-2500.0,136.0 +2000,-2000.0,116.0 +2000,-1600.0,100.0 +2000,-1200.0,84.0 +2000,-900.0,72.0 +2000,-600.0,60.0 +2000,-400.0,52.0 +2000,-200.0,44.0 +2000,0.0,44.0 +2000,200.0,44.0 +2000,400.0,52.0 +2000,600.0,60.0 +2000,900.0,72.0 +2000,1200.0,84.0 +2000,1600.0,100.0 +2000,2000.0,116.0 +2000,2500.0,136.0 +2000,3000.0,156.0 +2000,3500.0,176.0 +2000,4000.0,196.0 +2000,4500.0,216.0 +2000,5000.0,236.0 +2000,5500.0,256.0 +2500,-5500.0,262.0 +2500,-5000.0,242.0 +2500,-4500.0,202.0 +2500,-4000.0,202.0 +2500,-3500.0,182.0 +2500,-3000.0,162.0 +2500,-2500.0,142.0 +2500,-2000.0,122.0 +2500,-1600.0,106.0 +2500,-1200.0,90.0 +2500,-900.0,78.0 +2500,-600.0,66.0 +2500,-400.0,58.0 +2500,-200.0,50.0 +2500,0.0,50.0 +2500,200.0,50.0 +2500,400.0,58.0 +2500,600.0,66.0 +2500,900.0,78.0 +2500,1200.0,90.0 +2500,1600.0,106.0 +2500,2000.0,122.0 +2500,2500.0,142.0 +2500,3000.0,162.0 +2500,3500.0,182.0 +2500,4000.0,202.0 +2500,4500.0,222.0 +2500,5000.0,242.0 +2500,5500.0,262.0 +3000,-5500.0,268.0 +3000,-5000.0,248.0 +3000,-4500.0,208.0 +3000,-4000.0,208.0 +3000,-3500.0,188.0 +3000,-3000.0,168.0 +3000,-2500.0,148.0 +3000,-2000.0,128.0 +3000,-1600.0,112.0 +3000,-1200.0,96.0 +3000,-900.0,84.0 +3000,-600.0,72.0 +3000,-400.0,64.0 +3000,-200.0,56.0 +3000,0.0,56.0 +3000,200.0,56.0 +3000,400.0,64.0 +3000,600.0,72.0 +3000,900.0,84.0 +3000,1200.0,96.0 +3000,1600.0,112.0 +3000,2000.0,128.0 +3000,2500.0,148.0 +3000,3000.0,168.0 +3000,3500.0,188.0 +3000,4000.0,208.0 +3000,4500.0,228.0 +3000,5000.0,248.0 +3000,5500.0,268.0 \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_7.vtlm b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_7.vtlm new file mode 100644 index 0000000000000000000000000000000000000000..ea00afe57cd1fa0d4f058cced560bd1bd482dd1a --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_7.vtlm @@ -0,0 +1,233 @@ +Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm] +0,-5500.0,239.2 +0,-5000.0,219.2 +0,-4500.0,179.2 +0,-4000.0,179.2 +0,-3500.0,159.2 +0,-3000.0,139.2 +0,-2500.0,119.2 +0,-2000.0,99.2 +0,-1600.0,83.2 +0,-1200.0,67.2 +0,-900.0,55.2 +0,-600.0,43.2 +0,-400.0,35.2 +0,-200.0,27.2 +0,0.0,27.2 +0,200.0,27.2 +0,400.0,35.2 +0,600.0,43.2 +0,900.0,55.2 +0,1200.0,67.2 +0,1600.0,83.2 +0,2000.0,99.2 +0,2500.0,119.2 +0,3000.0,139.2 +0,3500.0,159.2 +0,4000.0,179.2 +0,4500.0,199.2 +0,5000.0,219.2 +0,5500.0,239.2 +600,-5500.0,239.2 +600,-5000.0,219.2 +600,-4500.0,179.2 +600,-4000.0,179.2 +600,-3500.0,159.2 +600,-3000.0,139.2 +600,-2500.0,119.2 +600,-2000.0,99.2 +600,-1600.0,83.2 +600,-1200.0,67.2 +600,-900.0,55.2 +600,-600.0,43.2 +600,-400.0,35.2 +600,-200.0,27.2 +600,0.0,27.2 +600,200.0,27.2 +600,400.0,35.2 +600,600.0,43.2 +600,900.0,55.2 +600,1200.0,67.2 +600,1600.0,83.2 +600,2000.0,99.2 +600,2500.0,119.2 +600,3000.0,139.2 +600,3500.0,159.2 +600,4000.0,179.2 +600,4500.0,199.2 +600,5000.0,219.2 +600,5500.0,239.2 +900,-5500.0,242.8 +900,-5000.0,222.8 +900,-4500.0,182.8 +900,-4000.0,182.8 +900,-3500.0,162.8 +900,-3000.0,142.8 +900,-2500.0,122.8 +900,-2000.0,102.8 +900,-1600.0,86.8 +900,-1200.0,70.8 +900,-900.0,58.8 +900,-600.0,46.8 +900,-400.0,38.8 +900,-200.0,30.8 +900,0.0,30.8 +900,200.0,30.8 +900,400.0,38.8 +900,600.0,46.8 +900,900.0,58.8 +900,1200.0,70.8 +900,1600.0,86.8 +900,2000.0,102.8 +900,2500.0,122.8 +900,3000.0,142.8 +900,3500.0,162.8 +900,4000.0,182.8 +900,4500.0,202.8 +900,5000.0,222.8 +900,5500.0,242.8 +1200,-5500.0,246.4 +1200,-5000.0,226.4 +1200,-4500.0,186.4 +1200,-4000.0,186.4 +1200,-3500.0,166.4 +1200,-3000.0,146.4 +1200,-2500.0,126.4 +1200,-2000.0,106.4 +1200,-1600.0,90.4 +1200,-1200.0,74.4 +1200,-900.0,62.4 +1200,-600.0,50.4 +1200,-400.0,42.4 +1200,-200.0,34.4 +1200,0.0,34.4 +1200,200.0,34.4 +1200,400.0,42.4 +1200,600.0,50.4 +1200,900.0,62.4 +1200,1200.0,74.4 +1200,1600.0,90.4 +1200,2000.0,106.4 +1200,2500.0,126.4 +1200,3000.0,146.4 +1200,3500.0,166.4 +1200,4000.0,186.4 +1200,4500.0,206.4 +1200,5000.0,226.4 +1200,5500.0,246.4 +1600,-5500.0,251.2 +1600,-5000.0,231.2 +1600,-4500.0,191.2 +1600,-4000.0,191.2 +1600,-3500.0,171.2 +1600,-3000.0,151.2 +1600,-2500.0,131.2 +1600,-2000.0,111.2 +1600,-1600.0,95.2 +1600,-1200.0,79.2 +1600,-900.0,67.2 +1600,-600.0,55.2 +1600,-400.0,47.2 +1600,-200.0,39.2 +1600,0.0,39.2 +1600,200.0,39.2 +1600,400.0,47.2 +1600,600.0,55.2 +1600,900.0,67.2 +1600,1200.0,79.2 +1600,1600.0,95.2 +1600,2000.0,111.2 +1600,2500.0,131.2 +1600,3000.0,151.2 +1600,3500.0,171.2 +1600,4000.0,191.2 +1600,4500.0,211.2 +1600,5000.0,231.2 +1600,5500.0,251.2 +2000,-5500.0,256.0 +2000,-5000.0,236.0 +2000,-4500.0,196.0 +2000,-4000.0,196.0 +2000,-3500.0,176.0 +2000,-3000.0,156.0 +2000,-2500.0,136.0 +2000,-2000.0,116.0 +2000,-1600.0,100.0 +2000,-1200.0,84.0 +2000,-900.0,72.0 +2000,-600.0,60.0 +2000,-400.0,52.0 +2000,-200.0,44.0 +2000,0.0,44.0 +2000,200.0,44.0 +2000,400.0,52.0 +2000,600.0,60.0 +2000,900.0,72.0 +2000,1200.0,84.0 +2000,1600.0,100.0 +2000,2000.0,116.0 +2000,2500.0,136.0 +2000,3000.0,156.0 +2000,3500.0,176.0 +2000,4000.0,196.0 +2000,4500.0,216.0 +2000,5000.0,236.0 +2000,5500.0,256.0 +2500,-5500.0,262.0 +2500,-5000.0,242.0 +2500,-4500.0,202.0 +2500,-4000.0,202.0 +2500,-3500.0,182.0 +2500,-3000.0,162.0 +2500,-2500.0,142.0 +2500,-2000.0,122.0 +2500,-1600.0,106.0 +2500,-1200.0,90.0 +2500,-900.0,78.0 +2500,-600.0,66.0 +2500,-400.0,58.0 +2500,-200.0,50.0 +2500,0.0,50.0 +2500,200.0,50.0 +2500,400.0,58.0 +2500,600.0,66.0 +2500,900.0,78.0 +2500,1200.0,90.0 +2500,1600.0,106.0 +2500,2000.0,122.0 +2500,2500.0,142.0 +2500,3000.0,162.0 +2500,3500.0,182.0 +2500,4000.0,202.0 +2500,4500.0,222.0 +2500,5000.0,242.0 +2500,5500.0,262.0 +3000,-5500.0,268.0 +3000,-5000.0,248.0 +3000,-4500.0,208.0 +3000,-4000.0,208.0 +3000,-3500.0,188.0 +3000,-3000.0,168.0 +3000,-2500.0,148.0 +3000,-2000.0,128.0 +3000,-1600.0,112.0 +3000,-1200.0,96.0 +3000,-900.0,84.0 +3000,-600.0,72.0 +3000,-400.0,64.0 +3000,-200.0,56.0 +3000,0.0,56.0 +3000,200.0,56.0 +3000,400.0,64.0 +3000,600.0,72.0 +3000,900.0,84.0 +3000,1200.0,96.0 +3000,1600.0,112.0 +3000,2000.0,128.0 +3000,2500.0,148.0 +3000,3000.0,168.0 +3000,3500.0,188.0 +3000,4000.0,208.0 +3000,4500.0,228.0 +3000,5000.0,248.0 +3000,5500.0,268.0 \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_8.vtlm b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_8.vtlm new file mode 100644 index 0000000000000000000000000000000000000000..ea00afe57cd1fa0d4f058cced560bd1bd482dd1a --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_8.vtlm @@ -0,0 +1,233 @@ +Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm] +0,-5500.0,239.2 +0,-5000.0,219.2 +0,-4500.0,179.2 +0,-4000.0,179.2 +0,-3500.0,159.2 +0,-3000.0,139.2 +0,-2500.0,119.2 +0,-2000.0,99.2 +0,-1600.0,83.2 +0,-1200.0,67.2 +0,-900.0,55.2 +0,-600.0,43.2 +0,-400.0,35.2 +0,-200.0,27.2 +0,0.0,27.2 +0,200.0,27.2 +0,400.0,35.2 +0,600.0,43.2 +0,900.0,55.2 +0,1200.0,67.2 +0,1600.0,83.2 +0,2000.0,99.2 +0,2500.0,119.2 +0,3000.0,139.2 +0,3500.0,159.2 +0,4000.0,179.2 +0,4500.0,199.2 +0,5000.0,219.2 +0,5500.0,239.2 +600,-5500.0,239.2 +600,-5000.0,219.2 +600,-4500.0,179.2 +600,-4000.0,179.2 +600,-3500.0,159.2 +600,-3000.0,139.2 +600,-2500.0,119.2 +600,-2000.0,99.2 +600,-1600.0,83.2 +600,-1200.0,67.2 +600,-900.0,55.2 +600,-600.0,43.2 +600,-400.0,35.2 +600,-200.0,27.2 +600,0.0,27.2 +600,200.0,27.2 +600,400.0,35.2 +600,600.0,43.2 +600,900.0,55.2 +600,1200.0,67.2 +600,1600.0,83.2 +600,2000.0,99.2 +600,2500.0,119.2 +600,3000.0,139.2 +600,3500.0,159.2 +600,4000.0,179.2 +600,4500.0,199.2 +600,5000.0,219.2 +600,5500.0,239.2 +900,-5500.0,242.8 +900,-5000.0,222.8 +900,-4500.0,182.8 +900,-4000.0,182.8 +900,-3500.0,162.8 +900,-3000.0,142.8 +900,-2500.0,122.8 +900,-2000.0,102.8 +900,-1600.0,86.8 +900,-1200.0,70.8 +900,-900.0,58.8 +900,-600.0,46.8 +900,-400.0,38.8 +900,-200.0,30.8 +900,0.0,30.8 +900,200.0,30.8 +900,400.0,38.8 +900,600.0,46.8 +900,900.0,58.8 +900,1200.0,70.8 +900,1600.0,86.8 +900,2000.0,102.8 +900,2500.0,122.8 +900,3000.0,142.8 +900,3500.0,162.8 +900,4000.0,182.8 +900,4500.0,202.8 +900,5000.0,222.8 +900,5500.0,242.8 +1200,-5500.0,246.4 +1200,-5000.0,226.4 +1200,-4500.0,186.4 +1200,-4000.0,186.4 +1200,-3500.0,166.4 +1200,-3000.0,146.4 +1200,-2500.0,126.4 +1200,-2000.0,106.4 +1200,-1600.0,90.4 +1200,-1200.0,74.4 +1200,-900.0,62.4 +1200,-600.0,50.4 +1200,-400.0,42.4 +1200,-200.0,34.4 +1200,0.0,34.4 +1200,200.0,34.4 +1200,400.0,42.4 +1200,600.0,50.4 +1200,900.0,62.4 +1200,1200.0,74.4 +1200,1600.0,90.4 +1200,2000.0,106.4 +1200,2500.0,126.4 +1200,3000.0,146.4 +1200,3500.0,166.4 +1200,4000.0,186.4 +1200,4500.0,206.4 +1200,5000.0,226.4 +1200,5500.0,246.4 +1600,-5500.0,251.2 +1600,-5000.0,231.2 +1600,-4500.0,191.2 +1600,-4000.0,191.2 +1600,-3500.0,171.2 +1600,-3000.0,151.2 +1600,-2500.0,131.2 +1600,-2000.0,111.2 +1600,-1600.0,95.2 +1600,-1200.0,79.2 +1600,-900.0,67.2 +1600,-600.0,55.2 +1600,-400.0,47.2 +1600,-200.0,39.2 +1600,0.0,39.2 +1600,200.0,39.2 +1600,400.0,47.2 +1600,600.0,55.2 +1600,900.0,67.2 +1600,1200.0,79.2 +1600,1600.0,95.2 +1600,2000.0,111.2 +1600,2500.0,131.2 +1600,3000.0,151.2 +1600,3500.0,171.2 +1600,4000.0,191.2 +1600,4500.0,211.2 +1600,5000.0,231.2 +1600,5500.0,251.2 +2000,-5500.0,256.0 +2000,-5000.0,236.0 +2000,-4500.0,196.0 +2000,-4000.0,196.0 +2000,-3500.0,176.0 +2000,-3000.0,156.0 +2000,-2500.0,136.0 +2000,-2000.0,116.0 +2000,-1600.0,100.0 +2000,-1200.0,84.0 +2000,-900.0,72.0 +2000,-600.0,60.0 +2000,-400.0,52.0 +2000,-200.0,44.0 +2000,0.0,44.0 +2000,200.0,44.0 +2000,400.0,52.0 +2000,600.0,60.0 +2000,900.0,72.0 +2000,1200.0,84.0 +2000,1600.0,100.0 +2000,2000.0,116.0 +2000,2500.0,136.0 +2000,3000.0,156.0 +2000,3500.0,176.0 +2000,4000.0,196.0 +2000,4500.0,216.0 +2000,5000.0,236.0 +2000,5500.0,256.0 +2500,-5500.0,262.0 +2500,-5000.0,242.0 +2500,-4500.0,202.0 +2500,-4000.0,202.0 +2500,-3500.0,182.0 +2500,-3000.0,162.0 +2500,-2500.0,142.0 +2500,-2000.0,122.0 +2500,-1600.0,106.0 +2500,-1200.0,90.0 +2500,-900.0,78.0 +2500,-600.0,66.0 +2500,-400.0,58.0 +2500,-200.0,50.0 +2500,0.0,50.0 +2500,200.0,50.0 +2500,400.0,58.0 +2500,600.0,66.0 +2500,900.0,78.0 +2500,1200.0,90.0 +2500,1600.0,106.0 +2500,2000.0,122.0 +2500,2500.0,142.0 +2500,3000.0,162.0 +2500,3500.0,182.0 +2500,4000.0,202.0 +2500,4500.0,222.0 +2500,5000.0,242.0 +2500,5500.0,262.0 +3000,-5500.0,268.0 +3000,-5000.0,248.0 +3000,-4500.0,208.0 +3000,-4000.0,208.0 +3000,-3500.0,188.0 +3000,-3000.0,168.0 +3000,-2500.0,148.0 +3000,-2000.0,128.0 +3000,-1600.0,112.0 +3000,-1200.0,96.0 +3000,-900.0,84.0 +3000,-600.0,72.0 +3000,-400.0,64.0 +3000,-200.0,56.0 +3000,0.0,56.0 +3000,200.0,56.0 +3000,400.0,64.0 +3000,600.0,72.0 +3000,900.0,84.0 +3000,1200.0,96.0 +3000,1600.0,112.0 +3000,2000.0,128.0 +3000,2500.0,148.0 +3000,3000.0,168.0 +3000,3500.0,188.0 +3000,4000.0,208.0 +3000,4500.0,228.0 +3000,5000.0,248.0 +3000,5500.0,268.0 \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_9.vtlm b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_9.vtlm new file mode 100644 index 0000000000000000000000000000000000000000..ea00afe57cd1fa0d4f058cced560bd1bd482dd1a --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Gear_9.vtlm @@ -0,0 +1,233 @@ +Input Speed [rpm],Input Torque [Nm],Torque Loss [Nm] +0,-5500.0,239.2 +0,-5000.0,219.2 +0,-4500.0,179.2 +0,-4000.0,179.2 +0,-3500.0,159.2 +0,-3000.0,139.2 +0,-2500.0,119.2 +0,-2000.0,99.2 +0,-1600.0,83.2 +0,-1200.0,67.2 +0,-900.0,55.2 +0,-600.0,43.2 +0,-400.0,35.2 +0,-200.0,27.2 +0,0.0,27.2 +0,200.0,27.2 +0,400.0,35.2 +0,600.0,43.2 +0,900.0,55.2 +0,1200.0,67.2 +0,1600.0,83.2 +0,2000.0,99.2 +0,2500.0,119.2 +0,3000.0,139.2 +0,3500.0,159.2 +0,4000.0,179.2 +0,4500.0,199.2 +0,5000.0,219.2 +0,5500.0,239.2 +600,-5500.0,239.2 +600,-5000.0,219.2 +600,-4500.0,179.2 +600,-4000.0,179.2 +600,-3500.0,159.2 +600,-3000.0,139.2 +600,-2500.0,119.2 +600,-2000.0,99.2 +600,-1600.0,83.2 +600,-1200.0,67.2 +600,-900.0,55.2 +600,-600.0,43.2 +600,-400.0,35.2 +600,-200.0,27.2 +600,0.0,27.2 +600,200.0,27.2 +600,400.0,35.2 +600,600.0,43.2 +600,900.0,55.2 +600,1200.0,67.2 +600,1600.0,83.2 +600,2000.0,99.2 +600,2500.0,119.2 +600,3000.0,139.2 +600,3500.0,159.2 +600,4000.0,179.2 +600,4500.0,199.2 +600,5000.0,219.2 +600,5500.0,239.2 +900,-5500.0,242.8 +900,-5000.0,222.8 +900,-4500.0,182.8 +900,-4000.0,182.8 +900,-3500.0,162.8 +900,-3000.0,142.8 +900,-2500.0,122.8 +900,-2000.0,102.8 +900,-1600.0,86.8 +900,-1200.0,70.8 +900,-900.0,58.8 +900,-600.0,46.8 +900,-400.0,38.8 +900,-200.0,30.8 +900,0.0,30.8 +900,200.0,30.8 +900,400.0,38.8 +900,600.0,46.8 +900,900.0,58.8 +900,1200.0,70.8 +900,1600.0,86.8 +900,2000.0,102.8 +900,2500.0,122.8 +900,3000.0,142.8 +900,3500.0,162.8 +900,4000.0,182.8 +900,4500.0,202.8 +900,5000.0,222.8 +900,5500.0,242.8 +1200,-5500.0,246.4 +1200,-5000.0,226.4 +1200,-4500.0,186.4 +1200,-4000.0,186.4 +1200,-3500.0,166.4 +1200,-3000.0,146.4 +1200,-2500.0,126.4 +1200,-2000.0,106.4 +1200,-1600.0,90.4 +1200,-1200.0,74.4 +1200,-900.0,62.4 +1200,-600.0,50.4 +1200,-400.0,42.4 +1200,-200.0,34.4 +1200,0.0,34.4 +1200,200.0,34.4 +1200,400.0,42.4 +1200,600.0,50.4 +1200,900.0,62.4 +1200,1200.0,74.4 +1200,1600.0,90.4 +1200,2000.0,106.4 +1200,2500.0,126.4 +1200,3000.0,146.4 +1200,3500.0,166.4 +1200,4000.0,186.4 +1200,4500.0,206.4 +1200,5000.0,226.4 +1200,5500.0,246.4 +1600,-5500.0,251.2 +1600,-5000.0,231.2 +1600,-4500.0,191.2 +1600,-4000.0,191.2 +1600,-3500.0,171.2 +1600,-3000.0,151.2 +1600,-2500.0,131.2 +1600,-2000.0,111.2 +1600,-1600.0,95.2 +1600,-1200.0,79.2 +1600,-900.0,67.2 +1600,-600.0,55.2 +1600,-400.0,47.2 +1600,-200.0,39.2 +1600,0.0,39.2 +1600,200.0,39.2 +1600,400.0,47.2 +1600,600.0,55.2 +1600,900.0,67.2 +1600,1200.0,79.2 +1600,1600.0,95.2 +1600,2000.0,111.2 +1600,2500.0,131.2 +1600,3000.0,151.2 +1600,3500.0,171.2 +1600,4000.0,191.2 +1600,4500.0,211.2 +1600,5000.0,231.2 +1600,5500.0,251.2 +2000,-5500.0,256.0 +2000,-5000.0,236.0 +2000,-4500.0,196.0 +2000,-4000.0,196.0 +2000,-3500.0,176.0 +2000,-3000.0,156.0 +2000,-2500.0,136.0 +2000,-2000.0,116.0 +2000,-1600.0,100.0 +2000,-1200.0,84.0 +2000,-900.0,72.0 +2000,-600.0,60.0 +2000,-400.0,52.0 +2000,-200.0,44.0 +2000,0.0,44.0 +2000,200.0,44.0 +2000,400.0,52.0 +2000,600.0,60.0 +2000,900.0,72.0 +2000,1200.0,84.0 +2000,1600.0,100.0 +2000,2000.0,116.0 +2000,2500.0,136.0 +2000,3000.0,156.0 +2000,3500.0,176.0 +2000,4000.0,196.0 +2000,4500.0,216.0 +2000,5000.0,236.0 +2000,5500.0,256.0 +2500,-5500.0,262.0 +2500,-5000.0,242.0 +2500,-4500.0,202.0 +2500,-4000.0,202.0 +2500,-3500.0,182.0 +2500,-3000.0,162.0 +2500,-2500.0,142.0 +2500,-2000.0,122.0 +2500,-1600.0,106.0 +2500,-1200.0,90.0 +2500,-900.0,78.0 +2500,-600.0,66.0 +2500,-400.0,58.0 +2500,-200.0,50.0 +2500,0.0,50.0 +2500,200.0,50.0 +2500,400.0,58.0 +2500,600.0,66.0 +2500,900.0,78.0 +2500,1200.0,90.0 +2500,1600.0,106.0 +2500,2000.0,122.0 +2500,2500.0,142.0 +2500,3000.0,162.0 +2500,3500.0,182.0 +2500,4000.0,202.0 +2500,4500.0,222.0 +2500,5000.0,242.0 +2500,5500.0,262.0 +3000,-5500.0,268.0 +3000,-5000.0,248.0 +3000,-4500.0,208.0 +3000,-4000.0,208.0 +3000,-3500.0,188.0 +3000,-3000.0,168.0 +3000,-2500.0,148.0 +3000,-2000.0,128.0 +3000,-1600.0,112.0 +3000,-1200.0,96.0 +3000,-900.0,84.0 +3000,-600.0,72.0 +3000,-400.0,64.0 +3000,-200.0,56.0 +3000,0.0,56.0 +3000,200.0,56.0 +3000,400.0,64.0 +3000,600.0,72.0 +3000,900.0,84.0 +3000,1200.0,96.0 +3000,1600.0,112.0 +3000,2000.0,128.0 +3000,2500.0,148.0 +3000,3000.0,168.0 +3000,3500.0,188.0 +3000,4000.0,208.0 +3000,4500.0,228.0 +3000,5000.0,248.0 +3000,5500.0,268.0 \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericBattery_10kWh_658V.vbat b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericBattery_10kWh_658V.vbat new file mode 100644 index 0000000000000000000000000000000000000000..b63cc3aad2ae9a38a3f3d17146b5db01390e99ac --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericBattery_10kWh_658V.vbat @@ -0,0 +1,18 @@ +{ + "Header": { + "CreatedBy": "", + "Date": "2020-09-07T15:28:30.2818342Z", + "AppVersion": "3", + "FileVersion": 1 + }, + "Body": { + "SavedInDeclMode": false, + "Model": "Generic Battery", + "Capacity": 14.0, + "SOC_min": 20.0, + "SOC_max": 80.0, + "MaxCurrentMap": "MaxCurrent.vimax", + "InternalResistanceCurve": "GenericBattery_10kWh_658V.vbatr", + "SoCCurve": "GenericBattery_10kWh_658V.vbatv" + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericBattery_10kWh_658V.vbatr b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericBattery_10kWh_658V.vbatr new file mode 100644 index 0000000000000000000000000000000000000000..09c936221ae38d84265ae27ba5542834d407026a --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericBattery_10kWh_658V.vbatr @@ -0,0 +1,3 @@ +SoC, Ri +0, 0.12 +100, 0.12 \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericBattery_10kWh_658V.vbatv b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericBattery_10kWh_658V.vbatv new file mode 100644 index 0000000000000000000000000000000000000000..8063e04c9379cce6870b2d71c99807f0ee73c3fa --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericBattery_10kWh_658V.vbatv @@ -0,0 +1,12 @@ +SOC, V +0, 590 +10, 614 +20, 626 +30, 632 +40, 638 +50, 640 +60, 640 +70, 642 +80, 646 +90, 650 +100, 658 \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericBattery_5kWh_320V.vbat b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericBattery_5kWh_320V.vbat new file mode 100644 index 0000000000000000000000000000000000000000..2cd362149563bf8adf308f1f65321a72b71ad565 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericBattery_5kWh_320V.vbat @@ -0,0 +1,18 @@ +{ + "Header": { + "CreatedBy": "", + "Date": "2020-09-07T15:28:30.2818342Z", + "AppVersion": "3", + "FileVersion": 1 + }, + "Body": { + "SavedInDeclMode": false, + "Model": "Generic Battery", + "Capacity": 8.0, + "SOC_min": 20.0, + "SOC_max": 80.0, + "MaxCurrentMap": "MaxCurrent_2.vimax", + "InternalResistanceCurve": "GenericBattery_5kWh_320V.vbatr", + "SoCCurve": "GenericBattery_5kWh_320V.vbatv" + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericBattery_5kWh_320V.vbatr b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericBattery_5kWh_320V.vbatr new file mode 100644 index 0000000000000000000000000000000000000000..8bdb86c501e286e56667bdd17a81029d46c49086 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericBattery_5kWh_320V.vbatr @@ -0,0 +1,3 @@ +SoC, Ri +0, 0.08 +100, 0.08 \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericBattery_5kWh_320V.vbatv b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericBattery_5kWh_320V.vbatv new file mode 100644 index 0000000000000000000000000000000000000000..8d44a882d924ad6f5b3ff62567819b019ad214af --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericBattery_5kWh_320V.vbatv @@ -0,0 +1,12 @@ +SOC, V +0,288 +10,299 +20,306 +30,308 +40,309 +50,311 +60,312 +70,311 +80,313 +90,318 +100,321 diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericDrag_140kW_936Nm.vemd b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericDrag_140kW_936Nm.vemd new file mode 100644 index 0000000000000000000000000000000000000000..67d7db9f1b514dba9fc3fa4ec5650b00b9020faf --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericDrag_140kW_936Nm.vemd @@ -0,0 +1,3 @@ +n [rpm] , T_drag [Nm] +0 , -11.70 +4268.63 , -58.50 \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericEMotor_140kW_900Nm.vemp b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericEMotor_140kW_900Nm.vemp new file mode 100644 index 0000000000000000000000000000000000000000..dc507a3de87525ae3ff0d10ae580fd845bc3763f --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericEMotor_140kW_900Nm.vemp @@ -0,0 +1,74 @@ +n [rpm] , T_drive [Nm] , T_drag [Nm] +0,900,-900 +1485.446136,900,-900 +1480,900,-900 +1488.888889,897.93,-897.93 +1497.777778,892.5975,-892.5975 +1506.666667,887.3325,-887.3325 +1511.111111,884.7225,-884.7225 +1555.555556,859.4325,-859.4325 +1600,835.56,-835.56 +1644.444444,812.97,-812.97 +1688.888889,791.595,-791.595 +1733.333333,771.3,-771.3 +1777.777778,752.0175,-752.0175 +1822.222222,733.6575,-733.6575 +1866.666667,716.1975,-716.1975 +1911.111111,699.5475,-699.5475 +1955.555556,683.64,-683.64 +2000,668.4525,-668.4525 +2044.444444,653.9175,-653.9175 +2088.888889,640.0125,-640.0125 +2133.333333,626.67,-626.67 +2177.777778,613.89,-613.89 +2222.222222,601.605,-601.605 +2266.666667,589.815,-589.815 +2311.111111,578.475,-578.475 +2355.555556,567.5625,-567.5625 +2400,557.0325,-557.0325 +2444.444444,546.9075,-546.9075 +2488.888889,537.1425,-537.1425 +2533.333333,527.715,-527.715 +2577.777778,518.625,-518.625 +2622.222222,509.8275,-509.8275 +2666.666667,501.345,-501.345 +2711.111111,493.11,-493.11 +2755.555556,485.1675,-485.1675 +2800,477.4725,-477.4725 +2844.444444,470.0025,-470.0025 +2888.888889,462.78,-462.78 +2933.333333,455.76,-455.76 +2977.777778,448.965,-448.965 +3022.222222,442.35,-442.35 +3066.666667,435.9375,-435.9375 +3111.111111,429.7275,-429.7275 +3155.555556,423.675,-423.675 +3200,417.78,-417.78 +3244.444444,412.065,-412.065 +3288.888889,406.485,-406.485 +3333.333333,401.0625,-401.0625 +3377.777778,395.7975,-395.7975 +3422.222222,390.645,-390.645 +3466.666667,385.65,-385.65 +3511.111111,380.7675,-380.7675 +3555.555556,375.9975,-375.9975 +3600,371.3625,-371.3625 +3644.444444,366.84,-366.84 +3688.888889,362.4075,-362.4075 +3733.333333,358.0875,-358.0875 +3777.777778,353.88,-353.88 +3822.222222,349.7625,-349.7625 +3866.666667,345.7575,-345.7575 +3911.111111,341.82,-341.82 +3955.555556,337.9725,-337.9725 +4000,334.215,-334.215 +4044.444444,330.5475,-330.5475 +4088.888889,326.97,-326.97 +4133.333333,323.4375,-323.4375 +4177.777778,319.995,-319.995 +4222.222222,316.6425,-316.6425 +4266.666667,313.335,-313.335 +4311.111111,310.095,-310.095 +4355.555556,306.945,-306.945 +4400,303.84,-303.84 +4444.444444,300.8025,-300.8025 diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericEMotor_140kW_936Nm.vem b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericEMotor_140kW_936Nm.vem new file mode 100644 index 0000000000000000000000000000000000000000..1825d547d27687c462ee0e1b78d4ec2fae74d51c --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericEMotor_140kW_936Nm.vem @@ -0,0 +1,20 @@ +{ + "Header": { + "CreatedBy": "", + "Date": "2020-10-09T08:18:42.8238326Z", + "AppVersion": "3", + "FileVersion": 1 + }, + "Body": { + "SavedInDeclMode": false, + "Model": "Generic Electric Motor", + "FullLoadCurve": "GenericEMotor_140kW_900Nm.vemp", + "DragCurve": "GenericDrag_140kW_936Nm.vemd", + "EfficiencyMap": "GenericMap_140kW_936Nm.vemo", + "Inertia": 0.5, + "ContinuousPower": 500000.0, + "ContinuousPowerSpeed": 1500.0, + "OverloadTime": 30.0, + "ThermalOverloadRecoveryFactor": 0.9 + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericMap_140kW_936Nm.vemo b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericMap_140kW_936Nm.vemo new file mode 100644 index 0000000000000000000000000000000000000000..aaf978890c6fd20d74a852e50541bbc48c2933fb --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/GenericMap_140kW_936Nm.vemo @@ -0,0 +1,2016 @@ +n [rpm] , T [Nm] , P_el [kW] +0,-936,9.8449 +0,-906.75,9.2719 +0,-877.5,8.7161 +0,-848.25,8.1773 +0,-819,7.6558 +0,-789.75,7.1514 +0,-760.5,6.6641 +0,-731.25,6.194 +0,-702,5.741 +0,-672.75,5.3052 +0,-643.5,4.8866 +0,-614.25,4.4851 +0,-585,4.1007 +0,-555.75,3.7335 +0,-526.5,3.3834 +0,-497.25,3.0505 +0,-468,2.7348 +0,-438.75,2.4362 +0,-409.5,2.1547 +0,-380.25,1.8904 +0,-351,1.6433 +0,-321.75,1.4133 +0,-292.5,1.2004 +0,-263.25,1.0047 +0,-234,0.82617 +0,-204.75,0.66478 +0,-175.5,0.52053 +0,-146.25,0.39344 +0,-117,0.28349 +0,-87.75,0.1907 +0,-58.5,0.11506 +0,-29.25,0.056566 +0,0,0.0361 +0,29.25,0.086979 +0,58.5,0.15501 +0,87.75,0.24019 +0,117,0.34252 +0,146.25,0.462 +0,175.5,0.59864 +0,204.75,0.75242 +0,234,0.92335 +0,263.25,1.1114 +0,292.5,1.3167 +0,321.75,1.5391 +0,351,1.7786 +0,380.25,2.0353 +0,409.5,2.3091 +0,438.75,2.6001 +0,468,2.9083 +0,497.25,3.2336 +0,526.5,3.576 +0,555.75,3.9356 +0,585,4.3123 +0,614.25,4.7062 +0,643.5,5.1173 +0,672.75,5.5455 +0,702,5.9908 +0,731.25,6.4533 +0,760.5,6.933 +0,789.75,7.4298 +0,819,7.9437 +0,848.25,8.4748 +0,877.5,9.0231 +0,906.75,9.5885 +0,936,10.171 +40.80854701,-936,5.8367 +40.80854701,-906.75,5.3901 +40.80854701,-877.5,4.9606 +40.80854701,-848.25,4.5482 +40.80854701,-819,4.153 +40.80854701,-789.75,3.775 +40.80854701,-760.5,3.4141 +40.80854701,-731.25,3.0704 +40.80854701,-702,2.7438 +40.80854701,-672.75,2.4344 +40.80854701,-643.5,2.1421 +40.80854701,-614.25,1.8669 +40.80854701,-585,1.609 +40.80854701,-555.75,1.3681 +40.80854701,-526.5,1.1445 +40.80854701,-497.25,0.93793 +40.80854701,-468,0.74855 +40.80854701,-438.75,0.57729 +40.80854701,-409.5,0.4236 +40.80854701,-380.25,0.28766 +40.80854701,-351,0.16853 +40.80854701,-321.75,0.066217 +40.80854701,-292.5,-0.019286 +40.80854701,-263.25,-0.087979 +40.80854701,-234,-0.13986 +40.80854701,-204.75,-0.17493 +40.80854701,-175.5,-0.19319 +40.80854701,-146.25,-0.19464 +40.80854701,-117,-0.17927 +40.80854701,-87.75,-0.1471 +40.80854701,-58.5,-0.09811 +40.80854701,-29.25,-0.032313 +40.80854701,0,0.07245 +40.80854701,29.25,0.24971 +40.80854701,58.5,0.44411 +40.80854701,87.75,0.65567 +40.80854701,117,0.88437 +40.80854701,146.25,1.1302 +40.80854701,175.5,1.3932 +40.80854701,204.75,1.6734 +40.80854701,234,1.9707 +40.80854701,263.25,2.2852 +40.80854701,292.5,2.6168 +40.80854701,321.75,2.9655 +40.80854701,351,3.3315 +40.80854701,380.25,3.7145 +40.80854701,409.5,4.1147 +40.80854701,438.75,4.5321 +40.80854701,468,4.9666 +40.80854701,497.25,5.4183 +40.80854701,526.5,5.8871 +40.80854701,555.75,6.3731 +40.80854701,585,6.8762 +40.80854701,614.25,7.3965 +40.80854701,643.5,7.9339 +40.80854701,672.75,8.4885 +40.80854701,702,9.0602 +40.80854701,731.25,9.6491 +40.80854701,760.5,10.255 +40.80854701,789.75,10.878 +40.80854701,819,11.519 +40.80854701,848.25,12.176 +40.80854701,877.5,12.851 +40.80854701,906.75,13.542 +40.80854701,936,14.251 +81.61794872,-936,1.8303 +81.61794872,-906.75,1.5101 +81.61794872,-877.5,1.2075 +81.61794872,-848.25,0.92457 +81.61794872,-819,0.66034 +81.61794872,-789.75,0.41292 +81.61794872,-760.5,0.18231 +81.61794872,-731.25,-0.031493 +81.61794872,-702,-0.22848 +81.61794872,-672.75,-0.40866 +81.61794872,-643.5,-0.57202 +81.61794872,-614.25,-0.71858 +81.61794872,-585,-0.84832 +81.61794872,-555.75,-0.96125 +81.61794872,-526.5,-1.0574 +81.61794872,-497.25,-1.1367 +81.61794872,-468,-1.1992 +81.61794872,-438.75,-1.2449 +81.61794872,-409.5,-1.2737 +81.61794872,-380.25,-1.2858 +81.61794872,-351,-1.2811 +81.61794872,-321.75,-1.2595 +81.61794872,-292.5,-1.2211 +81.61794872,-263.25,-1.1659 +81.61794872,-234,-1.0939 +81.61794872,-204.75,-1.0051 +81.61794872,-175.5,-0.89953 +81.61794872,-146.25,-0.7771 +81.61794872,-117,-0.63787 +81.61794872,-87.75,-0.48182 +81.61794872,-58.5,-0.30896 +81.61794872,-29.25,-0.11929 +81.61794872,0,0.11065 +81.61794872,29.25,0.41428 +81.61794872,58.5,0.73507 +81.61794872,87.75,1.073 +81.61794872,117,1.4281 +81.61794872,146.25,1.8003 +81.61794872,175.5,2.1897 +81.61794872,204.75,2.5962 +81.61794872,234,3.0199 +81.61794872,263.25,3.4608 +81.61794872,292.5,3.9188 +81.61794872,321.75,4.3939 +81.61794872,351,4.8862 +81.61794872,380.25,5.3956 +81.61794872,409.5,5.9222 +81.61794872,438.75,6.466 +81.61794872,468,7.0269 +81.61794872,497.25,7.6049 +81.61794872,526.5,8.2001 +81.61794872,555.75,8.8124 +81.61794872,585,9.4419 +81.61794872,614.25,10.089 +81.61794872,643.5,10.752 +81.61794872,672.75,11.433 +81.61794872,702,12.131 +81.61794872,731.25,12.847 +81.61794872,760.5,13.579 +81.61794872,789.75,14.329 +81.61794872,819,15.095 +81.61794872,848.25,15.879 +81.61794872,877.5,16.68 +81.61794872,906.75,17.498 +81.61794872,936,18.334 +122.4273504,-936,-2.1071 +122.4273504,-906.75,-2.2979 +122.4273504,-877.5,-2.4719 +122.4273504,-848.25,-2.629 +122.4273504,-819,-2.7694 +122.4273504,-789.75,-2.8929 +122.4273504,-760.5,-2.9997 +122.4273504,-731.25,-3.0896 +122.4273504,-702,-3.1627 +122.4273504,-672.75,-3.219 +122.4273504,-643.5,-3.2585 +122.4273504,-614.25,-3.2812 +122.4273504,-585,-3.2871 +122.4273504,-555.75,-3.2761 +122.4273504,-526.5,-3.2484 +122.4273504,-497.25,-3.2038 +122.4273504,-468,-3.1424 +122.4273504,-438.75,-3.0642 +122.4273504,-409.5,-2.9692 +122.4273504,-380.25,-2.8574 +122.4273504,-351,-2.7288 +122.4273504,-321.75,-2.5834 +122.4273504,-292.5,-2.4211 +122.4273504,-263.25,-2.2421 +122.4273504,-234,-2.0462 +122.4273504,-204.75,-1.8335 +122.4273504,-175.5,-1.604 +122.4273504,-146.25,-1.3577 +122.4273504,-117,-1.0946 +122.4273504,-87.75,-0.81471 +122.4273504,-58.5,-0.51798 +122.4273504,-29.25,-0.20444 +122.4273504,0,0.15072 +122.4273504,29.25,0.58072 +122.4273504,58.5,1.0279 +122.4273504,87.75,1.4922 +122.4273504,117,1.9737 +122.4273504,146.25,2.4723 +122.4273504,175.5,2.988 +122.4273504,204.75,3.5209 +122.4273504,234,4.071 +122.4273504,263.25,4.6382 +122.4273504,292.5,5.2226 +122.4273504,321.75,5.8241 +122.4273504,351,6.4428 +122.4273504,380.25,7.0786 +122.4273504,409.5,7.7315 +122.4273504,438.75,8.4017 +122.4273504,468,9.0889 +122.4273504,497.25,9.7934 +122.4273504,526.5,10.515 +122.4273504,555.75,11.254 +122.4273504,585,12.01 +122.4273504,614.25,12.783 +122.4273504,643.5,13.573 +122.4273504,672.75,14.38 +122.4273504,702,15.205 +122.4273504,731.25,16.046 +122.4273504,760.5,16.905 +122.4273504,789.75,17.781 +122.4273504,819,18.674 +122.4273504,848.25,19.584 +122.4273504,877.5,20.512 +122.4273504,906.75,21.456 +122.4273504,936,22.418 +163.2393162,-936,-6.0305 +163.2393162,-906.75,-6.0974 +163.2393162,-877.5,-6.1475 +163.2393162,-848.25,-6.1808 +163.2393162,-819,-6.1973 +163.2393162,-789.75,-6.197 +163.2393162,-760.5,-6.1799 +163.2393162,-731.25,-6.1459 +163.2393162,-702,-6.0951 +163.2393162,-672.75,-6.0276 +163.2393162,-643.5,-5.9432 +163.2393162,-614.25,-5.842 +163.2393162,-585,-5.724 +163.2393162,-555.75,-5.5892 +163.2393162,-526.5,-5.4376 +163.2393162,-497.25,-5.2691 +163.2393162,-468,-5.0839 +163.2393162,-438.75,-4.8818 +163.2393162,-409.5,-4.6629 +163.2393162,-380.25,-4.4272 +163.2393162,-351,-4.1748 +163.2393162,-321.75,-3.9054 +163.2393162,-292.5,-3.6193 +163.2393162,-263.25,-3.3164 +163.2393162,-234,-2.9967 +163.2393162,-204.75,-2.6601 +163.2393162,-175.5,-2.3067 +163.2393162,-146.25,-1.9366 +163.2393162,-117,-1.5496 +163.2393162,-87.75,-1.1458 +163.2393162,-58.5,-0.72519 +163.2393162,-29.25,-0.28777 +163.2393162,0,0.19264 +163.2393162,29.25,0.74902 +163.2393162,58.5,1.3226 +163.2393162,87.75,1.9132 +163.2393162,117,2.5211 +163.2393162,146.25,3.1461 +163.2393162,175.5,3.7882 +163.2393162,204.75,4.4475 +163.2393162,234,5.1239 +163.2393162,263.25,5.8175 +163.2393162,292.5,6.5283 +163.2393162,321.75,7.2561 +163.2393162,351,8.0012 +163.2393162,380.25,8.7634 +163.2393162,409.5,9.5427 +163.2393162,438.75,10.339 +163.2393162,468,11.153 +163.2393162,497.25,11.984 +163.2393162,526.5,12.832 +163.2393162,555.75,13.697 +163.2393162,585,14.579 +163.2393162,614.25,15.478 +163.2393162,643.5,16.395 +163.2393162,672.75,17.329 +163.2393162,702,18.279 +163.2393162,731.25,19.247 +163.2393162,760.5,20.233 +163.2393162,789.75,21.235 +163.2393162,819,22.254 +163.2393162,848.25,23.291 +163.2393162,877.5,24.345 +163.2393162,906.75,25.416 +163.2393162,936,26.504 +204.042735,-936,-9.9521 +204.042735,-906.75,-9.8951 +204.042735,-877.5,-9.8214 +204.042735,-848.25,-9.7308 +204.042735,-819,-9.6234 +204.042735,-789.75,-9.4992 +204.042735,-760.5,-9.3582 +204.042735,-731.25,-9.2004 +204.042735,-702,-9.0258 +204.042735,-672.75,-8.8343 +204.042735,-643.5,-8.626 +204.042735,-614.25,-8.401 +204.042735,-585,-8.1591 +204.042735,-555.75,-7.9004 +204.042735,-526.5,-7.6249 +204.042735,-497.25,-7.3326 +204.042735,-468,-7.0235 +204.042735,-438.75,-6.6975 +204.042735,-409.5,-6.3548 +204.042735,-380.25,-5.9952 +204.042735,-351,-5.6189 +204.042735,-321.75,-5.2257 +204.042735,-292.5,-4.8157 +204.042735,-263.25,-4.3889 +204.042735,-234,-3.9453 +204.042735,-204.75,-3.4849 +204.042735,-175.5,-3.0076 +204.042735,-146.25,-2.5136 +204.042735,-117,-2.0027 +204.042735,-87.75,-1.475 +204.042735,-58.5,-0.93057 +204.042735,-29.25,-0.36928 +204.042735,0,0.23641 +204.042735,29.25,0.91917 +204.042735,58.5,1.6191 +204.042735,87.75,2.3361 +204.042735,117,3.0704 +204.042735,146.25,3.8217 +204.042735,175.5,4.5902 +204.042735,204.75,5.3759 +204.042735,234,6.1787 +204.042735,263.25,6.9987 +204.042735,292.5,7.8358 +204.042735,321.75,8.6901 +204.042735,351,9.5615 +204.042735,380.25,10.45 +204.042735,409.5,11.356 +204.042735,438.75,12.279 +204.042735,468,13.219 +204.042735,497.25,14.176 +204.042735,526.5,15.15 +204.042735,555.75,16.142 +204.042735,585,17.15 +204.042735,614.25,18.176 +204.042735,643.5,19.219 +204.042735,672.75,20.279 +204.042735,702,21.356 +204.042735,731.25,22.451 +204.042735,760.5,23.562 +204.042735,789.75,24.691 +204.042735,819,25.837 +204.042735,848.25,27 +204.042735,877.5,28.18 +204.042735,906.75,29.377 +204.042735,936,30.592 +244.8547009,-936,-13.872 +244.8547009,-906.75,-13.691 +244.8547009,-877.5,-13.493 +244.8547009,-848.25,-13.279 +244.8547009,-819,-13.048 +244.8547009,-789.75,-12.8 +244.8547009,-760.5,-12.535 +244.8547009,-731.25,-12.253 +244.8547009,-702,-11.955 +244.8547009,-672.75,-11.639 +244.8547009,-643.5,-11.307 +244.8547009,-614.25,-10.958 +244.8547009,-585,-10.592 +244.8547009,-555.75,-10.21 +244.8547009,-526.5,-9.8105 +244.8547009,-497.25,-9.3943 +244.8547009,-468,-8.9613 +244.8547009,-438.75,-8.5115 +244.8547009,-409.5,-8.0448 +244.8547009,-380.25,-7.5614 +244.8547009,-351,-7.0612 +244.8547009,-321.75,-6.5441 +244.8547009,-292.5,-6.0103 +244.8547009,-263.25,-5.4596 +244.8547009,-234,-4.8921 +244.8547009,-204.75,-4.3078 +244.8547009,-175.5,-3.7067 +244.8547009,-146.25,-3.0888 +244.8547009,-117,-2.454 +244.8547009,-87.75,-1.8025 +244.8547009,-58.5,-1.1341 +244.8547009,-29.25,-0.44896 +244.8547009,0,0.28205 +244.8547009,29.25,1.0912 +244.8547009,58.5,1.9175 +244.8547009,87.75,2.7609 +244.8547009,117,3.6215 +244.8547009,146.25,4.4992 +244.8547009,175.5,5.3941 +244.8547009,204.75,6.3062 +244.8547009,234,7.2354 +244.8547009,263.25,8.1817 +244.8547009,292.5,9.1452 +244.8547009,321.75,10.126 +244.8547009,351,11.124 +244.8547009,380.25,12.139 +244.8547009,409.5,13.171 +244.8547009,438.75,14.22 +244.8547009,468,15.286 +244.8547009,497.25,16.37 +244.8547009,526.5,17.471 +244.8547009,555.75,18.588 +244.8547009,585,19.723 +244.8547009,614.25,20.876 +244.8547009,643.5,22.045 +244.8547009,672.75,23.231 +244.8547009,702,24.435 +244.8547009,731.25,25.656 +244.8547009,760.5,26.894 +244.8547009,789.75,28.149 +244.8547009,819,29.421 +244.8547009,848.25,30.71 +244.8547009,877.5,32.017 +244.8547009,906.75,33.34 +244.8547009,936,34.681 +285.6666667,-936,-17.79 +285.6666667,-906.75,-17.485 +285.6666667,-877.5,-17.164 +285.6666667,-848.25,-16.825 +285.6666667,-819,-16.47 +285.6666667,-789.75,-16.098 +285.6666667,-760.5,-15.709 +285.6666667,-731.25,-15.304 +285.6666667,-702,-14.881 +285.6666667,-672.75,-14.442 +285.6666667,-643.5,-13.986 +285.6666667,-614.25,-13.513 +285.6666667,-585,-13.024 +285.6666667,-555.75,-12.517 +285.6666667,-526.5,-11.994 +285.6666667,-497.25,-11.454 +285.6666667,-468,-10.897 +285.6666667,-438.75,-10.324 +285.6666667,-409.5,-9.7331 +285.6666667,-380.25,-9.1258 +285.6666667,-351,-8.5016 +285.6666667,-321.75,-7.8607 +285.6666667,-292.5,-7.203 +285.6666667,-263.25,-6.5284 +285.6666667,-234,-5.8371 +285.6666667,-204.75,-5.1289 +285.6666667,-175.5,-4.4039 +285.6666667,-146.25,-3.6621 +285.6666667,-117,-2.9035 +285.6666667,-87.75,-2.1281 +285.6666667,-58.5,-1.3359 +285.6666667,-29.25,-0.52683 +285.6666667,0,0.32954 +285.6666667,29.25,1.2651 +285.6666667,58.5,2.2177 +285.6666667,87.75,3.1875 +285.6666667,117,4.1745 +285.6666667,146.25,5.1786 +285.6666667,175.5,6.1999 +285.6666667,204.75,7.2383 +285.6666667,234,8.2939 +285.6666667,263.25,9.3666 +285.6666667,292.5,10.456 +285.6666667,321.75,11.563 +285.6666667,351,12.688 +285.6666667,380.25,13.829 +285.6666667,409.5,14.987 +285.6666667,438.75,16.163 +285.6666667,468,17.356 +285.6666667,497.25,18.566 +285.6666667,526.5,19.793 +285.6666667,555.75,21.037 +285.6666667,585,22.298 +285.6666667,614.25,23.577 +285.6666667,643.5,24.873 +285.6666667,672.75,26.185 +285.6666667,702,27.515 +285.6666667,731.25,28.863 +285.6666667,760.5,30.227 +285.6666667,789.75,31.608 +285.6666667,819,33.007 +285.6666667,848.25,34.423 +285.6666667,877.5,35.856 +285.6666667,906.75,37.306 +285.6666667,936,38.773 +326.4700855,-936,-21.706 +326.4700855,-906.75,-21.277 +326.4700855,-877.5,-20.832 +326.4700855,-848.25,-20.37 +326.4700855,-819,-19.891 +326.4700855,-789.75,-19.395 +326.4700855,-760.5,-18.882 +326.4700855,-731.25,-18.353 +326.4700855,-702,-17.807 +326.4700855,-672.75,-17.244 +326.4700855,-643.5,-16.664 +326.4700855,-614.25,-16.067 +326.4700855,-585,-15.454 +326.4700855,-555.75,-14.823 +326.4700855,-526.5,-14.176 +326.4700855,-497.25,-13.512 +326.4700855,-468,-12.831 +326.4700855,-438.75,-12.134 +326.4700855,-409.5,-11.419 +326.4700855,-380.25,-10.688 +326.4700855,-351,-9.9403 +326.4700855,-321.75,-9.1755 +326.4700855,-292.5,-8.3939 +326.4700855,-263.25,-7.5955 +326.4700855,-234,-6.7802 +326.4700855,-204.75,-5.9482 +326.4700855,-175.5,-5.0993 +326.4700855,-146.25,-4.2337 +326.4700855,-117,-3.3512 +326.4700855,-87.75,-2.4519 +326.4700855,-58.5,-1.5358 +326.4700855,-29.25,-0.60288 +326.4700855,0,0.37889 +326.4700855,29.25,1.4408 +326.4700855,58.5,2.5198 +326.4700855,87.75,3.616 +326.4700855,117,4.7293 +326.4700855,146.25,5.8598 +326.4700855,175.5,7.0075 +326.4700855,204.75,8.1723 +326.4700855,234,9.3542 +326.4700855,263.25,10.553 +326.4700855,292.5,11.77 +326.4700855,321.75,13.003 +326.4700855,351,14.254 +326.4700855,380.25,15.521 +326.4700855,409.5,16.806 +326.4700855,438.75,18.108 +326.4700855,468,19.427 +326.4700855,497.25,20.764 +326.4700855,526.5,22.117 +326.4700855,555.75,23.488 +326.4700855,585,24.875 +326.4700855,614.25,26.28 +326.4700855,643.5,27.702 +326.4700855,672.75,29.141 +326.4700855,702,30.598 +326.4700855,731.25,32.071 +326.4700855,760.5,33.562 +326.4700855,789.75,35.07 +326.4700855,819,36.595 +326.4700855,848.25,38.137 +326.4700855,877.5,39.696 +326.4700855,906.75,41.273 +326.4700855,936,42.866 +367.2820513,-936,-25.62 +367.2820513,-906.75,-25.068 +367.2820513,-877.5,-24.499 +367.2820513,-848.25,-23.912 +367.2820513,-819,-23.31 +367.2820513,-789.75,-22.69 +367.2820513,-760.5,-22.053 +367.2820513,-731.25,-21.4 +367.2820513,-702,-20.73 +367.2820513,-672.75,-20.043 +367.2820513,-643.5,-19.339 +367.2820513,-614.25,-18.619 +367.2820513,-585,-17.881 +367.2820513,-555.75,-17.127 +367.2820513,-526.5,-16.356 +367.2820513,-497.25,-15.568 +367.2820513,-468,-14.764 +367.2820513,-438.75,-13.942 +367.2820513,-409.5,-13.104 +367.2820513,-380.25,-12.249 +367.2820513,-351,-11.377 +367.2820513,-321.75,-10.488 +367.2820513,-292.5,-9.583 +367.2820513,-263.25,-8.6607 +367.2820513,-234,-7.7216 +367.2820513,-204.75,-6.7657 +367.2820513,-175.5,-5.7929 +367.2820513,-146.25,-4.8034 +367.2820513,-117,-3.797 +367.2820513,-87.75,-2.7739 +367.2820513,-58.5,-1.7339 +367.2820513,-29.25,-0.67711 +367.2820513,0,0.4301 +367.2820513,29.25,1.6184 +367.2820513,58.5,2.8238 +367.2820513,87.75,4.0463 +367.2820513,117,5.2861 +367.2820513,146.25,6.5429 +367.2820513,175.5,7.8169 +367.2820513,204.75,9.1081 +367.2820513,234,10.416 +367.2820513,263.25,11.742 +367.2820513,292.5,13.085 +367.2820513,321.75,14.444 +367.2820513,351,15.821 +367.2820513,380.25,17.215 +367.2820513,409.5,18.627 +367.2820513,438.75,20.055 +367.2820513,468,21.5 +367.2820513,497.25,22.963 +367.2820513,526.5,24.443 +367.2820513,555.75,25.94 +367.2820513,585,27.454 +367.2820513,614.25,28.985 +367.2820513,643.5,30.534 +367.2820513,672.75,32.099 +367.2820513,702,33.682 +367.2820513,731.25,35.282 +367.2820513,760.5,36.899 +367.2820513,789.75,38.533 +367.2820513,819,40.185 +367.2820513,848.25,41.853 +367.2820513,877.5,43.539 +367.2820513,906.75,45.241 +367.2820513,936,46.961 +408.0854701,-936,-29.533 +408.0854701,-906.75,-28.856 +408.0854701,-877.5,-28.163 +408.0854701,-848.25,-27.453 +408.0854701,-819,-26.727 +408.0854701,-789.75,-25.983 +408.0854701,-760.5,-25.223 +408.0854701,-731.25,-24.445 +408.0854701,-702,-23.651 +408.0854701,-672.75,-22.841 +408.0854701,-643.5,-22.013 +408.0854701,-614.25,-21.169 +408.0854701,-585,-20.307 +408.0854701,-555.75,-19.429 +408.0854701,-526.5,-18.534 +408.0854701,-497.25,-17.623 +408.0854701,-468,-16.694 +408.0854701,-438.75,-15.749 +408.0854701,-409.5,-14.787 +408.0854701,-380.25,-13.808 +408.0854701,-351,-12.812 +408.0854701,-321.75,-11.8 +408.0854701,-292.5,-10.77 +408.0854701,-263.25,-9.7241 +408.0854701,-234,-8.6611 +408.0854701,-204.75,-7.5813 +408.0854701,-175.5,-6.4847 +408.0854701,-146.25,-5.3713 +408.0854701,-117,-4.2411 +408.0854701,-87.75,-3.094 +408.0854701,-58.5,-1.9302 +408.0854701,-29.25,-0.74951 +408.0854701,0,0.48317 +408.0854701,29.25,1.7978 +408.0854701,58.5,3.1296 +408.0854701,87.75,4.4785 +408.0854701,117,5.8446 +408.0854701,146.25,7.2279 +408.0854701,175.5,8.6283 +408.0854701,204.75,10.046 +408.0854701,234,11.481 +408.0854701,263.25,12.932 +408.0854701,292.5,14.401 +408.0854701,321.75,15.888 +408.0854701,351,17.391 +408.0854701,380.25,18.911 +408.0854701,409.5,20.449 +408.0854701,438.75,22.004 +408.0854701,468,23.576 +408.0854701,497.25,25.165 +408.0854701,526.5,26.771 +408.0854701,555.75,28.394 +408.0854701,585,30.035 +408.0854701,614.25,31.692 +408.0854701,643.5,33.367 +408.0854701,672.75,35.059 +408.0854701,702,36.768 +408.0854701,731.25,38.494 +408.0854701,760.5,40.238 +408.0854701,789.75,41.998 +408.0854701,819,43.776 +408.0854701,848.25,45.571 +408.0854701,877.5,47.383 +408.0854701,906.75,49.212 +408.0854701,936,51.058 +448.8974359,-936,-33.443 +448.8974359,-906.75,-32.643 +448.8974359,-877.5,-31.826 +448.8974359,-848.25,-30.992 +448.8974359,-819,-30.142 +448.8974359,-789.75,-29.274 +448.8974359,-760.5,-28.39 +448.8974359,-731.25,-27.489 +448.8974359,-702,-26.571 +448.8974359,-672.75,-25.636 +448.8974359,-643.5,-24.685 +448.8974359,-614.25,-23.717 +448.8974359,-585,-22.732 +448.8974359,-555.75,-21.73 +448.8974359,-526.5,-20.711 +448.8974359,-497.25,-19.675 +448.8974359,-468,-18.623 +448.8974359,-438.75,-17.554 +448.8974359,-409.5,-16.468 +448.8974359,-380.25,-15.365 +448.8974359,-351,-14.245 +448.8974359,-321.75,-13.109 +448.8974359,-292.5,-11.956 +448.8974359,-263.25,-10.786 +448.8974359,-234,-9.5988 +448.8974359,-204.75,-8.3951 +448.8974359,-175.5,-7.1747 +448.8974359,-146.25,-5.9374 +448.8974359,-117,-4.6833 +448.8974359,-87.75,-3.4124 +448.8974359,-58.5,-2.1246 +448.8974359,-29.25,-0.82009 +448.8974359,0,0.53809 +448.8974359,29.25,1.9791 +448.8974359,58.5,3.4373 +448.8974359,87.75,4.9126 +448.8974359,117,6.4051 +448.8974359,146.25,7.9147 +448.8974359,175.5,9.4414 +448.8974359,204.75,10.985 +448.8974359,234,12.546 +448.8974359,263.25,14.125 +448.8974359,292.5,15.72 +448.8974359,321.75,17.333 +448.8974359,351,18.962 +448.8974359,380.25,20.609 +448.8974359,409.5,22.273 +448.8974359,438.75,23.954 +448.8974359,468,25.652 +448.8974359,497.25,27.368 +448.8974359,526.5,29.1 +448.8974359,555.75,30.85 +448.8974359,585,32.617 +448.8974359,614.25,34.401 +448.8974359,643.5,36.202 +448.8974359,672.75,38.021 +448.8974359,702,39.856 +448.8974359,731.25,41.709 +448.8974359,760.5,43.579 +448.8974359,789.75,45.465 +448.8974359,819,47.37 +448.8974359,848.25,49.291 +448.8974359,877.5,51.229 +448.8974359,906.75,53.185 +448.8974359,936,55.157 +489.7094017,-936,-37.352 +489.7094017,-906.75,-36.428 +489.7094017,-877.5,-35.487 +489.7094017,-848.25,-34.53 +489.7094017,-819,-33.555 +489.7094017,-789.75,-32.564 +489.7094017,-760.5,-31.556 +489.7094017,-731.25,-30.531 +489.7094017,-702,-29.489 +489.7094017,-672.75,-28.43 +489.7094017,-643.5,-27.355 +489.7094017,-614.25,-26.263 +489.7094017,-585,-25.154 +489.7094017,-555.75,-24.028 +489.7094017,-526.5,-22.885 +489.7094017,-497.25,-21.726 +489.7094017,-468,-20.55 +489.7094017,-438.75,-19.357 +489.7094017,-409.5,-18.147 +489.7094017,-380.25,-16.92 +489.7094017,-351,-15.677 +489.7094017,-321.75,-14.416 +489.7094017,-292.5,-13.139 +489.7094017,-263.25,-11.845 +489.7094017,-234,-10.535 +489.7094017,-204.75,-9.2071 +489.7094017,-175.5,-7.8628 +489.7094017,-146.25,-6.5016 +489.7094017,-117,-5.1236 +489.7094017,-87.75,-3.7289 +489.7094017,-58.5,-2.3173 +489.7094017,-29.25,-0.88886 +489.7094017,0,0.59487 +489.7094017,29.25,2.1623 +489.7094017,58.5,3.7468 +489.7094017,87.75,5.3485 +489.7094017,117,6.9673 +489.7094017,146.25,8.6033 +489.7094017,175.5,10.256 +489.7094017,204.75,11.927 +489.7094017,234,13.614 +489.7094017,263.25,15.319 +489.7094017,292.5,17.041 +489.7094017,321.75,18.779 +489.7094017,351,20.536 +489.7094017,380.25,22.309 +489.7094017,409.5,24.099 +489.7094017,438.75,25.907 +489.7094017,468,27.731 +489.7094017,497.25,29.573 +489.7094017,526.5,31.432 +489.7094017,555.75,33.308 +489.7094017,585,35.201 +489.7094017,614.25,37.112 +489.7094017,643.5,39.039 +489.7094017,672.75,40.984 +489.7094017,702,42.946 +489.7094017,731.25,44.925 +489.7094017,760.5,46.921 +489.7094017,789.75,48.934 +489.7094017,819,50.965 +489.7094017,848.25,53.012 +489.7094017,877.5,55.077 +489.7094017,906.75,57.159 +489.7094017,936,59.258 +816.1794872,-936,-68.557 +816.1794872,-906.75,-66.642 +816.1794872,-877.5,-64.711 +816.1794872,-848.25,-62.762 +816.1794872,-819,-60.796 +816.1794872,-789.75,-58.814 +816.1794872,-760.5,-56.815 +816.1794872,-731.25,-54.799 +816.1794872,-702,-52.766 +816.1794872,-672.75,-50.717 +816.1794872,-643.5,-48.65 +816.1794872,-614.25,-46.567 +816.1794872,-585,-44.467 +816.1794872,-555.75,-42.35 +816.1794872,-526.5,-40.217 +816.1794872,-497.25,-38.066 +816.1794872,-468,-35.899 +816.1794872,-438.75,-33.715 +816.1794872,-409.5,-31.514 +816.1794872,-380.25,-29.297 +816.1794872,-351,-27.062 +816.1794872,-321.75,-24.811 +816.1794872,-292.5,-22.543 +816.1794872,-263.25,-20.258 +816.1794872,-234,-17.956 +816.1794872,-204.75,-15.638 +816.1794872,-175.5,-13.302 +816.1794872,-146.25,-10.95 +816.1794872,-117,-8.5812 +816.1794872,-87.75,-6.1954 +816.1794872,-58.5,-3.7928 +816.1794872,-29.25,-1.3734 +816.1794872,0,1.116 +816.1794872,29.25,3.6944 +816.1794872,58.5,6.29 +816.1794872,87.75,8.9027 +816.1794872,117,11.533 +816.1794872,146.25,14.18 +816.1794872,175.5,16.844 +816.1794872,204.75,19.525 +816.1794872,234,22.223 +816.1794872,263.25,24.939 +816.1794872,292.5,27.672 +816.1794872,321.75,30.422 +816.1794872,351,33.189 +816.1794872,380.25,35.973 +816.1794872,409.5,38.774 +816.1794872,438.75,41.593 +816.1794872,468,44.429 +816.1794872,497.25,47.281 +816.1794872,526.5,50.151 +816.1794872,555.75,53.038 +816.1794872,585,55.943 +816.1794872,614.25,58.864 +816.1794872,643.5,61.803 +816.1794872,672.75,64.758 +816.1794872,702,67.731 +816.1794872,731.25,70.721 +816.1794872,760.5,73.728 +816.1794872,789.75,76.753 +816.1794872,819,79.794 +816.1794872,848.25,82.853 +816.1794872,877.5,85.929 +816.1794872,906.75,89.022 +816.1794872,936,92.132 +1020.25641,-936,-88.002 +1020.25641,-906.75,-85.467 +1020.25641,-877.5,-82.916 +1020.25641,-848.25,-80.348 +1020.25641,-819,-77.763 +1020.25641,-789.75,-75.161 +1020.25641,-760.5,-72.543 +1020.25641,-731.25,-69.908 +1020.25641,-702,-67.255 +1020.25641,-672.75,-64.586 +1020.25641,-643.5,-61.901 +1020.25641,-614.25,-59.198 +1020.25641,-585,-56.479 +1020.25641,-555.75,-53.743 +1020.25641,-526.5,-50.99 +1020.25641,-497.25,-48.22 +1020.25641,-468,-45.433 +1020.25641,-438.75,-42.63 +1020.25641,-409.5,-39.81 +1020.25641,-380.25,-36.973 +1020.25641,-351,-34.119 +1020.25641,-321.75,-31.248 +1020.25641,-292.5,-28.361 +1020.25641,-263.25,-25.456 +1020.25641,-234,-22.535 +1020.25641,-204.75,-19.597 +1020.25641,-175.5,-16.643 +1020.25641,-146.25,-13.671 +1020.25641,-117,-10.683 +1020.25641,-87.75,-7.6778 +1020.25641,-58.5,-4.6558 +1020.25641,-29.25,-1.6171 +1020.25641,0,1.5021 +1020.25641,29.25,4.7124 +1020.25641,58.5,7.9398 +1020.25641,87.75,11.184 +1020.25641,117,14.446 +1020.25641,146.25,17.725 +1020.25641,175.5,21.021 +1020.25641,204.75,24.334 +1020.25641,234,27.665 +1020.25641,263.25,31.012 +1020.25641,292.5,34.377 +1020.25641,321.75,37.758 +1020.25641,351,41.157 +1020.25641,380.25,44.574 +1020.25641,409.5,48.007 +1020.25641,438.75,51.457 +1020.25641,468,54.925 +1020.25641,497.25,58.409 +1020.25641,526.5,61.911 +1020.25641,555.75,65.43 +1020.25641,585,68.966 +1020.25641,614.25,72.52 +1020.25641,643.5,76.09 +1020.25641,672.75,79.678 +1020.25641,702,83.282 +1020.25641,731.25,86.904 +1020.25641,760.5,90.543 +1020.25641,789.75,94.2 +1020.25641,819,97.873 +1020.25641,848.25,101.56 +1020.25641,877.5,105.27 +1020.25641,906.75,109 +1020.25641,936,112.74 +1224.273504,-936,-107.4 +1224.273504,-906.75,-104.25 +1224.273504,-877.5,-101.08 +1224.273504,-848.25,-97.888 +1224.273504,-819,-94.684 +1224.273504,-789.75,-91.463 +1224.273504,-760.5,-88.225 +1224.273504,-731.25,-84.97 +1224.273504,-702,-81.699 +1224.273504,-672.75,-78.411 +1224.273504,-643.5,-75.106 +1224.273504,-614.25,-71.784 +1224.273504,-585,-68.445 +1224.273504,-555.75,-65.089 +1224.273504,-526.5,-61.717 +1224.273504,-497.25,-58.328 +1224.273504,-468,-54.922 +1224.273504,-438.75,-51.499 +1224.273504,-409.5,-48.06 +1224.273504,-380.25,-44.603 +1224.273504,-351,-41.13 +1224.273504,-321.75,-37.64 +1224.273504,-292.5,-34.133 +1224.273504,-263.25,-30.61 +1224.273504,-234,-27.069 +1224.273504,-204.75,-23.512 +1224.273504,-175.5,-19.938 +1224.273504,-146.25,-16.347 +1224.273504,-117,-12.739 +1224.273504,-87.75,-9.1147 +1224.273504,-58.5,-5.4734 +1224.273504,-29.25,-1.8152 +1224.273504,0,1.9346 +1224.273504,29.25,5.7768 +1224.273504,58.5,9.6361 +1224.273504,87.75,13.513 +1224.273504,117,17.406 +1224.273504,146.25,21.317 +1224.273504,175.5,25.245 +1224.273504,204.75,29.19 +1224.273504,234,33.152 +1224.273504,263.25,37.131 +1224.273504,292.5,41.128 +1224.273504,321.75,45.142 +1224.273504,351,49.173 +1224.273504,380.25,53.22 +1224.273504,409.5,57.286 +1224.273504,438.75,61.368 +1224.273504,468,65.467 +1224.273504,497.25,69.584 +1224.273504,526.5,73.718 +1224.273504,555.75,77.868 +1224.273504,585,82.037 +1224.273504,614.25,86.222 +1224.273504,643.5,90.424 +1224.273504,672.75,94.644 +1224.273504,702,98.88 +1224.273504,731.25,103.13 +1224.273504,760.5,107.4 +1224.273504,789.75,111.69 +1224.273504,819,116 +1224.273504,848.25,120.32 +1224.273504,877.5,124.66 +1224.273504,906.75,129.02 +1224.273504,936,133.39 +1428.290598,-936,-126.75 +1428.290598,-906.75,-122.98 +1428.290598,-877.5,-119.19 +1428.290598,-848.25,-115.38 +1428.290598,-819,-111.56 +1428.290598,-789.75,-107.72 +1428.290598,-760.5,-103.86 +1428.290598,-731.25,-99.988 +1428.290598,-702,-96.097 +1428.290598,-672.75,-92.189 +1428.290598,-643.5,-88.265 +1428.290598,-614.25,-84.324 +1428.290598,-585,-80.366 +1428.290598,-555.75,-76.391 +1428.290598,-526.5,-72.399 +1428.290598,-497.25,-68.391 +1428.290598,-468,-64.365 +1428.290598,-438.75,-60.323 +1428.290598,-409.5,-56.264 +1428.290598,-380.25,-52.188 +1428.290598,-351,-48.096 +1428.290598,-321.75,-43.986 +1428.290598,-292.5,-39.86 +1428.290598,-263.25,-35.717 +1428.290598,-234,-31.557 +1428.290598,-204.75,-27.381 +1428.290598,-175.5,-23.187 +1428.290598,-146.25,-18.977 +1428.290598,-117,-14.75 +1428.290598,-87.75,-10.506 +1428.290598,-58.5,-6.2453 +1428.290598,-29.25,-1.9678 +1428.290598,0,2.4136 +1428.290598,29.25,6.8876 +1428.290598,58.5,11.379 +1428.290598,87.75,15.887 +1428.290598,117,20.413 +1428.290598,146.25,24.955 +1428.290598,175.5,29.515 +1428.290598,204.75,34.092 +1428.290598,234,38.686 +1428.290598,263.25,43.297 +1428.290598,292.5,47.926 +1428.290598,321.75,52.571 +1428.290598,351,57.234 +1428.290598,380.25,61.914 +1428.290598,409.5,66.611 +1428.290598,438.75,71.325 +1428.290598,468,76.056 +1428.290598,497.25,80.805 +1428.290598,526.5,85.57 +1428.290598,555.75,90.353 +1428.290598,585,95.153 +1428.290598,614.25,99.97 +1428.290598,643.5,104.8 +1428.290598,672.75,109.66 +1428.290598,702,114.52 +1428.290598,731.25,119.41 +1428.290598,760.5,124.31 +1428.290598,789.75,129.23 +1428.290598,819,134.17 +1428.290598,848.25,139.12 +1428.290598,877.5,144.1 +1428.290598,906.75,149.08 +1428.290598,936,154.09 +1632.393162,-936,-146.06 +1632.393162,-906.75,-141.67 +1632.393162,-877.5,-137.26 +1632.393162,-848.25,-132.83 +1632.393162,-819,-128.39 +1632.393162,-789.75,-123.93 +1632.393162,-760.5,-119.45 +1632.393162,-731.25,-114.96 +1632.393162,-702,-110.45 +1632.393162,-672.75,-105.92 +1632.393162,-643.5,-101.38 +1632.393162,-614.25,-96.818 +1632.393162,-585,-92.241 +1632.393162,-555.75,-87.646 +1632.393162,-526.5,-83.035 +1632.393162,-497.25,-78.407 +1632.393162,-468,-73.763 +1632.393162,-438.75,-69.101 +1632.393162,-409.5,-64.423 +1632.393162,-380.25,-59.728 +1632.393162,-351,-55.016 +1632.393162,-321.75,-50.287 +1632.393162,-292.5,-45.542 +1632.393162,-263.25,-40.779 +1632.393162,-234,-36 +1632.393162,-204.75,-31.204 +1632.393162,-175.5,-26.391 +1632.393162,-146.25,-21.562 +1632.393162,-117,-16.715 +1632.393162,-87.75,-11.852 +1632.393162,-58.5,-6.9718 +1632.393162,-29.25,-2.0749 +1632.393162,0,2.939 +1632.393162,29.25,8.0449 +1632.393162,58.5,13.168 +1632.393162,87.75,18.308 +1632.393162,117,23.466 +1632.393162,146.25,28.64 +1632.393162,175.5,33.832 +1632.393162,204.75,39.041 +1632.393162,234,44.267 +1632.393162,263.25,49.51 +1632.393162,292.5,54.77 +1632.393162,321.75,60.047 +1632.393162,351,65.342 +1632.393162,380.25,70.654 +1632.393162,409.5,75.983 +1632.393162,438.75,81.329 +1632.393162,468,86.692 +1632.393162,497.25,92.072 +1632.393162,526.5,97.47 +1632.393162,555.75,102.88 +1632.393162,585,108.32 +1632.393162,614.25,113.77 +1632.393162,643.5,119.23 +1632.393162,672.75,124.71 +1632.393162,702,130.21 +1632.393162,731.25,135.73 +1632.393162,760.5,141.27 +1632.393162,789.75,146.82 +1632.393162,819,152.39 +1632.393162,848.25,157.97 +1632.393162,877.5,163.58 +1632.393162,906.75,169.2 +1632.393162,936,174.84 +1836.410256,-936,-165.32 +1836.410256,-906.75,-160.31 +1836.410256,-877.5,-155.28 +1836.410256,-848.25,-150.24 +1836.410256,-819,-145.17 +1836.410256,-789.75,-140.1 +1836.410256,-760.5,-135 +1836.410256,-731.25,-129.89 +1836.410256,-702,-124.76 +1836.410256,-672.75,-119.61 +1836.410256,-643.5,-114.45 +1836.410256,-614.25,-109.27 +1836.410256,-585,-104.07 +1836.410256,-555.75,-98.857 +1836.410256,-526.5,-93.626 +1836.410256,-497.25,-88.379 +1836.410256,-468,-83.115 +1836.410256,-438.75,-77.834 +1836.410256,-409.5,-72.536 +1836.410256,-380.25,-67.222 +1836.410256,-351,-61.891 +1836.410256,-321.75,-56.542 +1836.410256,-292.5,-51.177 +1836.410256,-263.25,-45.796 +1836.410256,-234,-40.397 +1836.410256,-204.75,-34.982 +1836.410256,-175.5,-29.55 +1836.410256,-146.25,-24.101 +1836.410256,-117,-18.635 +1836.410256,-87.75,-13.152 +1836.410256,-58.5,-7.6528 +1836.410256,-29.25,-2.1365 +1836.410256,0,3.5108 +1836.410256,29.25,9.2486 +1836.410256,58.5,15.004 +1836.410256,87.75,20.776 +1836.410256,117,26.565 +1836.410256,146.25,32.371 +1836.410256,175.5,38.195 +1836.410256,204.75,44.036 +1836.410256,234,49.893 +1836.410256,263.25,55.768 +1836.410256,292.5,61.661 +1836.410256,321.75,67.57 +1836.410256,351,73.496 +1836.410256,380.25,79.44 +1836.410256,409.5,85.401 +1836.410256,438.75,91.379 +1836.410256,468,97.374 +1836.410256,497.25,103.39 +1836.410256,526.5,109.42 +1836.410256,555.75,115.46 +1836.410256,585,121.53 +1836.410256,614.25,127.61 +1836.410256,643.5,133.7 +1836.410256,672.75,139.82 +1836.410256,702,145.95 +1836.410256,731.25,152.1 +1836.410256,760.5,158.27 +1836.410256,789.75,164.45 +1836.410256,819,170.65 +1836.410256,848.25,176.87 +1836.410256,877.5,183.11 +1836.410256,906.75,189.36 +1836.410256,936,195.63 +2040.42735,-936,-184.54 +2040.42735,-906.75,-178.91 +2040.42735,-877.5,-173.26 +2040.42735,-848.25,-167.59 +2040.42735,-819,-161.91 +2040.42735,-789.75,-156.21 +2040.42735,-760.5,-150.5 +2040.42735,-731.25,-144.77 +2040.42735,-702,-139.02 +2040.42735,-672.75,-133.25 +2040.42735,-643.5,-127.47 +2040.42735,-614.25,-121.67 +2040.42735,-585,-115.85 +2040.42735,-555.75,-110.02 +2040.42735,-526.5,-104.17 +2040.42735,-497.25,-98.305 +2040.42735,-468,-92.421 +2040.42735,-438.75,-86.521 +2040.42735,-409.5,-80.604 +2040.42735,-380.25,-74.67 +2040.42735,-351,-68.72 +2040.42735,-321.75,-62.752 +2040.42735,-292.5,-56.768 +2040.42735,-263.25,-50.767 +2040.42735,-234,-44.749 +2040.42735,-204.75,-38.714 +2040.42735,-175.5,-32.662 +2040.42735,-146.25,-26.594 +2040.42735,-117,-20.509 +2040.42735,-87.75,-14.407 +2040.42735,-58.5,-8.2882 +2040.42735,-29.25,-2.1526 +2040.42735,0,4.1291 +2040.42735,29.25,10.499 +2040.42735,58.5,16.886 +2040.42735,87.75,23.29 +2040.42735,117,29.711 +2040.42735,146.25,36.149 +2040.42735,175.5,42.604 +2040.42735,204.75,49.077 +2040.42735,234,55.567 +2040.42735,263.25,62.074 +2040.42735,292.5,68.598 +2040.42735,321.75,75.139 +2040.42735,351,81.697 +2040.42735,380.25,88.273 +2040.42735,409.5,94.865 +2040.42735,438.75,101.48 +2040.42735,468,108.1 +2040.42735,497.25,114.75 +2040.42735,526.5,121.41 +2040.42735,555.75,128.09 +2040.42735,585,134.78 +2040.42735,614.25,141.49 +2040.42735,643.5,148.22 +2040.42735,672.75,154.97 +2040.42735,702,161.74 +2040.42735,731.25,168.52 +2040.42735,760.5,175.31 +2040.42735,789.75,182.13 +2040.42735,819,188.96 +2040.42735,848.25,195.81 +2040.42735,877.5,202.68 +2040.42735,906.75,209.56 +2040.42735,936,216.47 +2244.529915,-936,-203.71 +2244.529915,-906.75,-197.46 +2244.529915,-877.5,-191.19 +2244.529915,-848.25,-184.91 +2244.529915,-819,-178.61 +2244.529915,-789.75,-172.29 +2244.529915,-760.5,-165.95 +2244.529915,-731.25,-159.6 +2244.529915,-702,-153.23 +2244.529915,-672.75,-146.85 +2244.529915,-643.5,-140.45 +2244.529915,-614.25,-134.03 +2244.529915,-585,-127.59 +2244.529915,-555.75,-121.14 +2244.529915,-526.5,-114.67 +2244.529915,-497.25,-108.19 +2244.529915,-468,-101.68 +2244.529915,-438.75,-95.163 +2244.529915,-409.5,-88.626 +2244.529915,-380.25,-82.073 +2244.529915,-351,-75.503 +2244.529915,-321.75,-68.916 +2244.529915,-292.5,-62.313 +2244.529915,-263.25,-55.692 +2244.529915,-234,-49.055 +2244.529915,-204.75,-42.401 +2244.529915,-175.5,-35.73 +2244.529915,-146.25,-29.042 +2244.529915,-117,-22.338 +2244.529915,-87.75,-15.616 +2244.529915,-58.5,-8.8781 +2244.529915,-29.25,-2.1231 +2244.529915,0,4.7938 +2244.529915,29.25,11.795 +2244.529915,58.5,18.814 +2244.529915,87.75,25.85 +2244.529915,117,32.903 +2244.529915,146.25,39.973 +2244.529915,175.5,47.06 +2244.529915,204.75,54.165 +2244.529915,234,61.287 +2244.529915,263.25,68.425 +2244.529915,292.5,75.581 +2244.529915,321.75,82.754 +2244.529915,351,89.945 +2244.529915,380.25,97.152 +2244.529915,409.5,104.38 +2244.529915,438.75,111.62 +2244.529915,468,118.88 +2244.529915,497.25,126.15 +2244.529915,526.5,133.45 +2244.529915,555.75,140.76 +2244.529915,585,148.08 +2244.529915,614.25,155.43 +2244.529915,643.5,162.79 +2244.529915,672.75,170.17 +2244.529915,702,177.57 +2244.529915,731.25,184.98 +2244.529915,760.5,192.41 +2244.529915,789.75,199.86 +2244.529915,819,207.32 +2244.529915,848.25,214.8 +2244.529915,877.5,222.3 +2244.529915,906.75,229.82 +2244.529915,936,237.35 +2448.547009,-936,-222.84 +2448.547009,-906.75,-215.97 +2448.547009,-877.5,-209.08 +2448.547009,-848.25,-202.18 +2448.547009,-819,-195.25 +2448.547009,-789.75,-188.32 +2448.547009,-760.5,-181.36 +2448.547009,-731.25,-174.39 +2448.547009,-702,-167.4 +2448.547009,-672.75,-160.4 +2448.547009,-643.5,-153.38 +2448.547009,-614.25,-146.34 +2448.547009,-585,-139.29 +2448.547009,-555.75,-132.21 +2448.547009,-526.5,-125.13 +2448.547009,-497.25,-118.02 +2448.547009,-468,-110.9 +2448.547009,-438.75,-103.76 +2448.547009,-409.5,-96.603 +2448.547009,-380.25,-89.431 +2448.547009,-351,-82.241 +2448.547009,-321.75,-75.035 +2448.547009,-292.5,-67.812 +2448.547009,-263.25,-60.572 +2448.547009,-234,-53.315 +2448.547009,-204.75,-46.042 +2448.547009,-175.5,-38.752 +2448.547009,-146.25,-31.445 +2448.547009,-117,-24.121 +2448.547009,-87.75,-16.78 +2448.547009,-58.5,-9.4225 +2448.547009,-29.25,-2.0481 +2448.547009,0,5.505 +2448.547009,29.25,13.138 +2448.547009,58.5,20.789 +2448.547009,87.75,28.457 +2448.547009,117,36.142 +2448.547009,146.25,43.844 +2448.547009,175.5,51.563 +2448.547009,204.75,59.299 +2448.547009,234,67.053 +2448.547009,263.25,74.823 +2448.547009,292.5,82.611 +2448.547009,321.75,90.416 +2448.547009,351,98.238 +2448.547009,380.25,106.08 +2448.547009,409.5,113.93 +2448.547009,438.75,121.81 +2448.547009,468,129.7 +2448.547009,497.25,137.61 +2448.547009,526.5,145.53 +2448.547009,555.75,153.47 +2448.547009,585,161.43 +2448.547009,614.25,169.41 +2448.547009,643.5,177.4 +2448.547009,672.75,185.41 +2448.547009,702,193.44 +2448.547009,731.25,201.49 +2448.547009,760.5,209.55 +2448.547009,789.75,217.63 +2448.547009,819,225.72 +2448.547009,848.25,233.84 +2448.547009,877.5,241.97 +2448.547009,906.75,250.12 +2448.547009,936,258.28 +2652.564103,-936,-241.92 +2652.564103,-906.75,-234.43 +2652.564103,-877.5,-226.92 +2652.564103,-848.25,-219.4 +2652.564103,-819,-211.86 +2652.564103,-789.75,-204.3 +2652.564103,-760.5,-196.73 +2652.564103,-731.25,-189.14 +2652.564103,-702,-181.53 +2652.564103,-672.75,-173.91 +2652.564103,-643.5,-166.27 +2652.564103,-614.25,-158.61 +2652.564103,-585,-150.93 +2652.564103,-555.75,-143.24 +2652.564103,-526.5,-135.53 +2652.564103,-497.25,-127.81 +2652.564103,-468,-120.07 +2652.564103,-438.75,-112.31 +2652.564103,-409.5,-104.53 +2652.564103,-380.25,-96.743 +2652.564103,-351,-88.934 +2652.564103,-321.75,-81.108 +2652.564103,-292.5,-73.266 +2652.564103,-263.25,-65.407 +2652.564103,-234,-57.531 +2652.564103,-204.75,-49.638 +2652.564103,-175.5,-41.728 +2652.564103,-146.25,-33.802 +2652.564103,-117,-25.858 +2652.564103,-87.75,-17.898 +2652.564103,-58.5,-9.9213 +2652.564103,-29.25,-1.9276 +2652.564103,0,6.2626 +2652.564103,29.25,14.528 +2652.564103,58.5,22.81 +2652.564103,87.75,31.11 +2652.564103,117,39.427 +2652.564103,146.25,47.761 +2652.564103,175.5,56.112 +2652.564103,204.75,64.48 +2652.564103,234,72.865 +2652.564103,263.25,81.268 +2652.564103,292.5,89.688 +2652.564103,321.75,98.125 +2652.564103,351,106.58 +2652.564103,380.25,115.05 +2652.564103,409.5,123.54 +2652.564103,438.75,132.04 +2652.564103,468,140.57 +2652.564103,497.25,149.11 +2652.564103,526.5,157.66 +2652.564103,555.75,166.24 +2652.564103,585,174.83 +2652.564103,614.25,183.44 +2652.564103,643.5,192.06 +2652.564103,672.75,200.7 +2652.564103,702,209.36 +2652.564103,731.25,218.04 +2652.564103,760.5,226.74 +2652.564103,789.75,235.45 +2652.564103,819,244.17 +2652.564103,848.25,252.92 +2652.564103,877.5,261.68 +2652.564103,906.75,270.46 +2652.564103,936,279.26 +2856.666667,-936,-260.95 +2856.666667,-906.75,-252.84 +2856.666667,-877.5,-244.72 +2856.666667,-848.25,-236.57 +2856.666667,-819,-228.41 +2856.666667,-789.75,-220.24 +2856.666667,-760.5,-212.05 +2856.666667,-731.25,-203.84 +2856.666667,-702,-195.61 +2856.666667,-672.75,-187.37 +2856.666667,-643.5,-179.11 +2856.666667,-614.25,-170.83 +2856.666667,-585,-162.54 +2856.666667,-555.75,-154.22 +2856.666667,-526.5,-145.9 +2856.666667,-497.25,-137.55 +2856.666667,-468,-129.19 +2856.666667,-438.75,-120.81 +2856.666667,-409.5,-112.42 +2856.666667,-380.25,-104.01 +2856.666667,-351,-95.581 +2856.666667,-321.75,-87.136 +2856.666667,-292.5,-78.674 +2856.666667,-263.25,-70.195 +2856.666667,-234,-61.7 +2856.666667,-204.75,-53.188 +2856.666667,-175.5,-44.659 +2856.666667,-146.25,-36.113 +2856.666667,-117,-27.55 +2856.666667,-87.75,-18.971 +2856.666667,-58.5,-10.375 +2856.666667,-29.25,-1.7616 +2856.666667,0,7.0667 +2856.666667,29.25,15.964 +2856.666667,58.5,24.878 +2856.666667,87.75,33.81 +2856.666667,117,42.758 +2856.666667,146.25,51.724 +2856.666667,175.5,60.707 +2856.666667,204.75,69.707 +2856.666667,234,78.725 +2856.666667,263.25,87.759 +2856.666667,292.5,96.811 +2856.666667,321.75,105.88 +2856.666667,351,114.97 +2856.666667,380.25,124.07 +2856.666667,409.5,133.19 +2856.666667,438.75,142.33 +2856.666667,468,151.48 +2856.666667,497.25,160.65 +2856.666667,526.5,169.84 +2856.666667,555.75,179.05 +2856.666667,585,188.27 +2856.666667,614.25,197.51 +2856.666667,643.5,206.77 +2856.666667,672.75,216.04 +2856.666667,702,225.33 +2856.666667,731.25,234.64 +2856.666667,760.5,243.97 +2856.666667,789.75,253.31 +2856.666667,819,262.67 +2856.666667,848.25,272.05 +2856.666667,877.5,281.44 +2856.666667,906.75,290.86 +2856.666667,936,300.28 +3060.683761,-936,-279.94 +3060.683761,-906.75,-271.21 +3060.683761,-877.5,-262.47 +3060.683761,-848.25,-253.7 +3060.683761,-819,-244.93 +3060.683761,-789.75,-236.13 +3060.683761,-760.5,-227.32 +3060.683761,-731.25,-218.49 +3060.683761,-702,-209.64 +3060.683761,-672.75,-200.78 +3060.683761,-643.5,-191.9 +3060.683761,-614.25,-183 +3060.683761,-585,-174.09 +3060.683761,-555.75,-165.16 +3060.683761,-526.5,-156.22 +3060.683761,-497.25,-147.25 +3060.683761,-468,-138.27 +3060.683761,-438.75,-129.27 +3060.683761,-409.5,-120.26 +3060.683761,-380.25,-111.23 +3060.683761,-351,-102.18 +3060.683761,-321.75,-93.118 +3060.683761,-292.5,-84.037 +3060.683761,-263.25,-74.939 +3060.683761,-234,-65.824 +3060.683761,-204.75,-56.693 +3060.683761,-175.5,-47.544 +3060.683761,-146.25,-38.379 +3060.683761,-117,-29.197 +3060.683761,-87.75,-19.998 +3060.683761,-58.5,-10.782 +3060.683761,-29.25,-1.55 +3060.683761,0,7.9172 +3060.683761,29.25,17.446 +3060.683761,58.5,26.993 +3060.683761,87.75,36.556 +3060.683761,117,46.136 +3060.683761,146.25,55.734 +3060.683761,175.5,65.349 +3060.683761,204.75,74.981 +3060.683761,234,84.63 +3060.683761,263.25,94.296 +3060.683761,292.5,103.98 +3060.683761,321.75,113.68 +3060.683761,351,123.4 +3060.683761,380.25,133.13 +3060.683761,409.5,142.89 +3060.683761,438.75,152.65 +3060.683761,468,162.44 +3060.683761,497.25,172.24 +3060.683761,526.5,182.06 +3060.683761,555.75,191.9 +3060.683761,585,201.76 +3060.683761,614.25,211.63 +3060.683761,643.5,221.52 +3060.683761,672.75,231.43 +3060.683761,702,241.35 +3060.683761,731.25,251.29 +3060.683761,760.5,261.25 +3060.683761,789.75,271.22 +3060.683761,819,281.21 +3060.683761,848.25,291.22 +3060.683761,877.5,301.25 +3060.683761,906.75,311.29 +3060.683761,936,321.35 +3264.700855,-936,-298.88 +3264.700855,-906.75,-289.53 +3264.700855,-877.5,-280.17 +3264.700855,-848.25,-270.79 +3264.700855,-819,-261.39 +3264.700855,-789.75,-251.98 +3264.700855,-760.5,-242.54 +3264.700855,-731.25,-233.1 +3264.700855,-702,-223.63 +3264.700855,-672.75,-214.15 +3264.700855,-643.5,-204.65 +3264.700855,-614.25,-195.14 +3264.700855,-585,-185.6 +3264.700855,-555.75,-176.05 +3264.700855,-526.5,-166.49 +3264.700855,-497.25,-156.9 +3264.700855,-468,-147.3 +3264.700855,-438.75,-137.69 +3264.700855,-409.5,-128.06 +3264.700855,-380.25,-118.41 +3264.700855,-351,-108.74 +3264.700855,-321.75,-99.055 +3264.700855,-292.5,-89.354 +3264.700855,-263.25,-79.637 +3264.700855,-234,-69.903 +3264.700855,-204.75,-60.152 +3264.700855,-175.5,-50.384 +3264.700855,-146.25,-40.599 +3264.700855,-117,-30.798 +3264.700855,-87.75,-20.98 +3264.700855,-58.5,-11.145 +3264.700855,-29.25,-1.2929 +3264.700855,0,8.8141 +3264.700855,29.25,18.975 +3264.700855,58.5,29.153 +3264.700855,87.75,39.348 +3264.700855,117,49.561 +3264.700855,146.25,59.79 +3264.700855,175.5,70.037 +3264.700855,204.75,80.301 +3264.700855,234,90.582 +3264.700855,263.25,100.88 +3264.700855,292.5,111.2 +3264.700855,321.75,121.53 +3264.700855,351,131.88 +3264.700855,380.25,142.24 +3264.700855,409.5,152.63 +3264.700855,438.75,163.03 +3264.700855,468,173.45 +3264.700855,497.25,183.88 +3264.700855,526.5,194.34 +3264.700855,555.75,204.81 +3264.700855,585,215.29 +3264.700855,614.25,225.8 +3264.700855,643.5,236.32 +3264.700855,672.75,246.86 +3264.700855,702,257.41 +3264.700855,731.25,267.98 +3264.700855,760.5,278.57 +3264.700855,789.75,289.18 +3264.700855,819,299.8 +3264.700855,848.25,310.45 +3264.700855,877.5,321.1 +3264.700855,906.75,331.78 +3264.700855,936,342.47 +3468.803419,-936,-317.78 +3468.803419,-906.75,-307.81 +3468.803419,-877.5,-297.83 +3468.803419,-848.25,-287.83 +3468.803419,-819,-277.81 +3468.803419,-789.75,-267.78 +3468.803419,-760.5,-257.73 +3468.803419,-731.25,-247.66 +3468.803419,-702,-237.57 +3468.803419,-672.75,-227.47 +3468.803419,-643.5,-217.35 +3468.803419,-614.25,-207.22 +3468.803419,-585,-197.07 +3468.803419,-555.75,-186.9 +3468.803419,-526.5,-176.71 +3468.803419,-497.25,-166.51 +3468.803419,-468,-156.29 +3468.803419,-438.75,-146.06 +3468.803419,-409.5,-135.8 +3468.803419,-380.25,-125.53 +3468.803419,-351,-115.25 +3468.803419,-321.75,-104.95 +3468.803419,-292.5,-94.626 +3468.803419,-263.25,-84.289 +3468.803419,-234,-73.936 +3468.803419,-204.75,-63.565 +3468.803419,-175.5,-53.178 +3468.803419,-146.25,-42.774 +3468.803419,-117,-32.353 +3468.803419,-87.75,-21.916 +3468.803419,-58.5,-11.462 +3468.803419,-29.25,-0.99032 +3468.803419,0,9.7575 +3468.803419,29.25,20.55 +3468.803419,58.5,31.36 +3468.803419,87.75,42.188 +3468.803419,117,53.032 +3468.803419,146.25,63.893 +3468.803419,175.5,74.772 +3468.803419,204.75,85.668 +3468.803419,234,96.581 +3468.803419,263.25,107.51 +3468.803419,292.5,118.46 +3468.803419,321.75,129.42 +3468.803419,351,140.4 +3468.803419,380.25,151.4 +3468.803419,409.5,162.42 +3468.803419,438.75,173.45 +3468.803419,468,184.5 +3468.803419,497.25,195.57 +3468.803419,526.5,206.65 +3468.803419,555.75,217.75 +3468.803419,585,228.87 +3468.803419,614.25,240.01 +3468.803419,643.5,251.16 +3468.803419,672.75,262.33 +3468.803419,702,273.52 +3468.803419,731.25,284.72 +3468.803419,760.5,295.95 +3468.803419,789.75,307.18 +3468.803419,819,318.44 +3468.803419,848.25,329.71 +3468.803419,877.5,341 +3468.803419,906.75,352.31 +3468.803419,936,363.64 +3672.820513,-936,-336.63 +3672.820513,-906.75,-326.05 +3672.820513,-877.5,-315.44 +3672.820513,-848.25,-304.82 +3672.820513,-819,-294.19 +3672.820513,-789.75,-283.53 +3672.820513,-760.5,-272.86 +3672.820513,-731.25,-262.18 +3672.820513,-702,-251.47 +3672.820513,-672.75,-240.75 +3672.820513,-643.5,-230.01 +3672.820513,-614.25,-219.26 +3672.820513,-585,-208.49 +3672.820513,-555.75,-197.7 +3672.820513,-526.5,-186.9 +3672.820513,-497.25,-176.07 +3672.820513,-468,-165.24 +3672.820513,-438.75,-154.38 +3672.820513,-409.5,-143.51 +3672.820513,-380.25,-132.62 +3672.820513,-351,-121.71 +3672.820513,-321.75,-110.79 +3672.820513,-292.5,-99.852 +3672.820513,-263.25,-88.896 +3672.820513,-234,-77.923 +3672.820513,-204.75,-66.933 +3672.820513,-175.5,-55.927 +3672.820513,-146.25,-44.904 +3672.820513,-117,-33.863 +3672.820513,-87.75,-22.806 +3672.820513,-58.5,-11.733 +3672.820513,-29.25,-0.64219 +3672.820513,0,10.747 +3672.820513,29.25,22.172 +3672.820513,58.5,33.614 +3672.820513,87.75,45.073 +3672.820513,117,56.549 +3672.820513,146.25,68.043 +3672.820513,175.5,79.553 +3672.820513,204.75,91.081 +3672.820513,234,102.63 +3672.820513,263.25,114.19 +3672.820513,292.5,125.77 +3672.820513,321.75,137.36 +3672.820513,351,148.98 +3672.820513,380.25,160.61 +3672.820513,409.5,172.25 +3672.820513,438.75,183.92 +3672.820513,468,195.6 +3672.820513,497.25,207.3 +3672.820513,526.5,219.02 +3672.820513,555.75,230.75 +3672.820513,585,242.5 +3672.820513,614.25,254.27 +3672.820513,643.5,266.05 +3672.820513,672.75,277.86 +3672.820513,702,289.67 +3672.820513,731.25,301.51 +3672.820513,760.5,313.36 +3672.820513,789.75,325.23 +3672.820513,819,337.12 +3672.820513,848.25,349.03 +3672.820513,877.5,360.95 +3672.820513,906.75,372.89 +3672.820513,936,384.85 +3876.837607,-936,-355.44 +3876.837607,-906.75,-344.23 +3876.837607,-877.5,-333.01 +3876.837607,-848.25,-321.77 +3876.837607,-819,-310.52 +3876.837607,-789.75,-299.24 +3876.837607,-760.5,-287.95 +3876.837607,-731.25,-276.65 +3876.837607,-702,-265.32 +3876.837607,-672.75,-253.98 +3876.837607,-643.5,-242.63 +3876.837607,-614.25,-231.25 +3876.837607,-585,-219.86 +3876.837607,-555.75,-208.45 +3876.837607,-526.5,-197.03 +3876.837607,-497.25,-185.59 +3876.837607,-468,-174.13 +3876.837607,-438.75,-162.66 +3876.837607,-409.5,-151.17 +3876.837607,-380.25,-139.66 +3876.837607,-351,-128.13 +3876.837607,-321.75,-116.59 +3876.837607,-292.5,-105.03 +3876.837607,-263.25,-93.457 +3876.837607,-234,-81.865 +3876.837607,-204.75,-70.256 +3876.837607,-175.5,-58.63 +3876.837607,-146.25,-46.987 +3876.837607,-117,-35.328 +3876.837607,-87.75,-23.652 +3876.837607,-58.5,-11.958 +3876.837607,-29.25,-0.24855 +3876.837607,0,11.784 +3876.837607,29.25,23.84 +3876.837607,58.5,35.914 +3876.837607,87.75,48.005 +3876.837607,117,60.113 +3876.837607,146.25,72.238 +3876.837607,175.5,84.381 +3876.837607,204.75,96.54 +3876.837607,234,108.72 +3876.837607,263.25,120.91 +3876.837607,292.5,133.12 +3876.837607,321.75,145.35 +3876.837607,351,157.59 +3876.837607,380.25,169.86 +3876.837607,409.5,182.14 +3876.837607,438.75,194.43 +3876.837607,468,206.75 +3876.837607,497.25,219.08 +3876.837607,526.5,231.43 +3876.837607,555.75,243.79 +3876.837607,585,256.17 +3876.837607,614.25,268.57 +3876.837607,643.5,280.99 +3876.837607,672.75,293.42 +3876.837607,702,305.88 +3876.837607,731.25,318.34 +3876.837607,760.5,330.83 +3876.837607,789.75,343.33 +3876.837607,819,355.85 +3876.837607,848.25,368.39 +3876.837607,877.5,380.94 +3876.837607,906.75,393.51 +3876.837607,936,406.1 +4080.854701,-936,-374.2 +4080.854701,-906.75,-362.38 +4080.854701,-877.5,-350.53 +4080.854701,-848.25,-338.67 +4080.854701,-819,-326.8 +4080.854701,-789.75,-314.91 +4080.854701,-760.5,-303 +4080.854701,-731.25,-291.07 +4080.854701,-702,-279.13 +4080.854701,-672.75,-267.17 +4080.854701,-643.5,-255.19 +4080.854701,-614.25,-243.2 +4080.854701,-585,-231.19 +4080.854701,-555.75,-219.16 +4080.854701,-526.5,-207.12 +4080.854701,-497.25,-195.06 +4080.854701,-468,-182.98 +4080.854701,-438.75,-170.89 +4080.854701,-409.5,-158.78 +4080.854701,-380.25,-146.65 +4080.854701,-351,-134.51 +4080.854701,-321.75,-122.35 +4080.854701,-292.5,-110.17 +4080.854701,-263.25,-97.973 +4080.854701,-234,-85.761 +4080.854701,-204.75,-73.533 +4080.854701,-175.5,-61.288 +4080.854701,-146.25,-49.026 +4080.854701,-117,-36.747 +4080.854701,-87.75,-24.451 +4080.854701,-58.5,-12.139 +4080.854701,-29.25,0.19499 +4080.854701,0,12.866 +4080.854701,29.25,25.555 +4080.854701,58.5,38.26 +4080.854701,87.75,50.983 +4080.854701,117,63.723 +4080.854701,146.25,76.48 +4080.854701,175.5,89.255 +4080.854701,204.75,102.05 +4080.854701,234,114.85 +4080.854701,263.25,127.68 +4080.854701,292.5,140.52 +4080.854701,321.75,153.38 +4080.854701,351,166.26 +4080.854701,380.25,179.15 +4080.854701,409.5,192.07 +4080.854701,438.75,204.99 +4080.854701,468,217.94 +4080.854701,497.25,230.9 +4080.854701,526.5,243.88 +4080.854701,555.75,256.88 +4080.854701,585,269.89 +4080.854701,614.25,282.93 +4080.854701,643.5,295.97 +4080.854701,672.75,309.04 +4080.854701,702,322.12 +4080.854701,731.25,335.22 +4080.854701,760.5,348.34 +4080.854701,789.75,361.48 +4080.854701,819,374.63 +4080.854701,848.25,387.8 +4080.854701,877.5,400.98 +4080.854701,906.75,414.18 +4080.854701,936,427.4 +4268.632479,-936,-391.42 +4268.632479,-906.75,-379.03 +4268.632479,-877.5,-366.61 +4268.632479,-848.25,-354.19 +4268.632479,-819,-341.74 +4268.632479,-789.75,-329.28 +4268.632479,-760.5,-316.8 +4268.632479,-731.25,-304.3 +4268.632479,-702,-291.79 +4268.632479,-672.75,-279.26 +4268.632479,-643.5,-266.72 +4268.632479,-614.25,-254.15 +4268.632479,-585,-241.57 +4268.632479,-555.75,-228.98 +4268.632479,-526.5,-216.36 +4268.632479,-497.25,-203.73 +4268.632479,-468,-191.09 +4268.632479,-438.75,-178.42 +4268.632479,-409.5,-165.74 +4268.632479,-380.25,-153.04 +4268.632479,-351,-140.33 +4268.632479,-321.75,-127.6 +4268.632479,-292.5,-114.85 +4268.632479,-263.25,-102.09 +4268.632479,-234,-89.306 +4268.632479,-204.75,-76.508 +4268.632479,-175.5,-63.693 +4268.632479,-146.25,-50.861 +4268.632479,-117,-38.012 +4268.632479,-87.75,-25.147 +4268.632479,-58.5,-12.264 +4268.632479,-29.25,0.65077 +4268.632479,0,13.903 +4268.632479,29.25,27.173 +4268.632479,58.5,40.46 +4268.632479,87.75,53.764 +4268.632479,117,67.086 +4268.632479,146.25,80.424 +4268.632479,175.5,93.78 +4268.632479,204.75,107.15 +4268.632479,234,120.54 +4268.632479,263.25,133.95 +4268.632479,292.5,147.37 +4268.632479,321.75,160.81 +4268.632479,351,174.27 +4268.632479,380.25,187.75 +4268.632479,409.5,201.24 +4268.632479,438.75,214.75 +4268.632479,468,228.28 +4268.632479,497.25,241.82 +4268.632479,526.5,255.38 +4268.632479,555.75,268.96 +4268.632479,585,282.56 +4268.632479,614.25,296.17 +4268.632479,643.5,309.8 +4268.632479,672.75,323.45 +4268.632479,702,337.11 +4268.632479,731.25,350.79 +4268.632479,760.5,364.49 +4268.632479,789.75,378.21 +4268.632479,819,391.94 +4268.632479,848.25,405.69 +4268.632479,877.5,419.46 +4268.632479,906.75,433.24 +4268.632479,936,447.04 diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Group5_HEV.vveh b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Group5_HEV.vveh new file mode 100644 index 0000000000000000000000000000000000000000..a9621a287dd2a35e8501d1e9dfad06cdc0ad40b5 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Group5_HEV.vveh @@ -0,0 +1,117 @@ +{ + "Header": { + "CreatedBy": "", + "Date": "2021-07-13T16:04:17.8328273Z", + "AppVersion": "3", + "FileVersion": 10 + }, + "Body": { + "SavedInDeclMode": false, + "VehCat": "Tractor", + "LegislativeClass": "Unknown", + "CurbWeight": 8229.0, + "CurbWeightExtra": 7500.0, + "MassMax": 18.0, + "Loading": 19300.0, + "rdyn": 492.0, + "CdCorrMode": "CdofVdecl", + "CdCorrFile": "", + "AxleConfig": { + "Type": "4x2", + "Axles": [ + { + "Inertia": 14.9, + "Wheels": "315/70 R22.5", + "AxleWeightShare": 0.2, + "TwinTyres": false, + "RRCISO": 0.0055, + "FzISO": 33350.0, + "Type": "VehicleNonDriven" + }, + { + "Inertia": 14.9, + "Wheels": "315/70 R22.5", + "AxleWeightShare": 0.25, + "TwinTyres": true, + "RRCISO": 0.0065, + "FzISO": 33350.0, + "Type": "VehicleDriven" + }, + { + "Inertia": 19.2, + "Wheels": "385/65 R22.5", + "AxleWeightShare": 0.18333, + "TwinTyres": false, + "RRCISO": 0.0055, + "FzISO": 41690.0, + "Type": "Trailer" + }, + { + "Inertia": 19.2, + "Wheels": "385/65 R22.5", + "AxleWeightShare": 0.18333, + "TwinTyres": false, + "RRCISO": 0.0055, + "FzISO": 41690.0, + "Type": "Trailer" + }, + { + "Inertia": 19.2, + "Wheels": "385/65 R22.5", + "AxleWeightShare": 0.18334, + "TwinTyres": false, + "RRCISO": 0.0055, + "FzISO": 41690.0, + "Type": "Trailer" + } + ] + }, + "EngineStopStart": true, + "EcoRoll": "None", + "PredictiveCruiseControl": "None", + "ATEcoRollReleaseLockupClutch": false, + "CdA": 5.3, + "VehicleHeight": 4.0, + "IdlingSpeed": 600.0, + "Retarder": { + "Type": "None", + "Ratio": 1.0, + "File": "" + }, + "Angledrive": { + "Type": "None", + "Ratio": 0.0, + "LossMap": "" + }, + "PTO": { + "Type": "None", + "LossMap": "", + "Cycle": "", + "CycleDriving": "" + }, + "TorqueLimits": {}, + "InitialSoC": 50.0, + "PowertrainConfiguration": "ParallelHybrid", + "ElectricMotors": [ + { + "Count": 1, + "Ratio": 1.0, + "Position": "P2", + "MotorFile": "GenericEMotor_140kW_936Nm.vem", + "MechanicalEfficiency": 1.0 + } + ], + "Batteries": [ + { + "NumPacks": 1, + "BatteryFile": "GenericBattery_10kWh_658V.vbat", + "StreamId": 0 + }, + { + "NumPacks": 2, + "BatteryFile": "GenericBattery_5kWh_320V.vbat", + "StreamId": 2 + } + ] + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Group5_HEV_2.vveh b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Group5_HEV_2.vveh new file mode 100644 index 0000000000000000000000000000000000000000..5c15ae2e6e4bb474f05b85750923deb5d0e1b38b --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Group5_HEV_2.vveh @@ -0,0 +1,122 @@ +{ + "Header": { + "CreatedBy": "", + "Date": "2021-07-14T09:15:25.3117102Z", + "AppVersion": "3", + "FileVersion": 10 + }, + "Body": { + "SavedInDeclMode": false, + "VehCat": "Tractor", + "LegislativeClass": "Unknown", + "CurbWeight": 8229.0, + "CurbWeightExtra": 7500.0, + "MassMax": 18.0, + "Loading": 19300.0, + "rdyn": 492.0, + "CdCorrMode": "CdofVdecl", + "CdCorrFile": "", + "AxleConfig": { + "Type": "4x2", + "Axles": [ + { + "Inertia": 14.9, + "Wheels": "315/70 R22.5", + "AxleWeightShare": 0.2, + "TwinTyres": false, + "RRCISO": 0.0055, + "FzISO": 33350.0, + "Type": "VehicleNonDriven" + }, + { + "Inertia": 14.9, + "Wheels": "315/70 R22.5", + "AxleWeightShare": 0.25, + "TwinTyres": true, + "RRCISO": 0.0065, + "FzISO": 33350.0, + "Type": "VehicleDriven" + }, + { + "Inertia": 19.2, + "Wheels": "385/65 R22.5", + "AxleWeightShare": 0.18333, + "TwinTyres": false, + "RRCISO": 0.0055, + "FzISO": 41690.0, + "Type": "Trailer" + }, + { + "Inertia": 19.2, + "Wheels": "385/65 R22.5", + "AxleWeightShare": 0.18333, + "TwinTyres": false, + "RRCISO": 0.0055, + "FzISO": 41690.0, + "Type": "Trailer" + }, + { + "Inertia": 19.2, + "Wheels": "385/65 R22.5", + "AxleWeightShare": 0.18334, + "TwinTyres": false, + "RRCISO": 0.0055, + "FzISO": 41690.0, + "Type": "Trailer" + } + ] + }, + "EngineStopStart": true, + "EcoRoll": "None", + "PredictiveCruiseControl": "None", + "ATEcoRollReleaseLockupClutch": false, + "CdA": 5.3, + "VehicleHeight": 4.0, + "IdlingSpeed": 600.0, + "Retarder": { + "Type": "None", + "Ratio": 1.0, + "File": "" + }, + "Angledrive": { + "Type": "None", + "Ratio": 0.0, + "LossMap": "" + }, + "PTO": { + "Type": "None", + "LossMap": "", + "Cycle": "", + "CycleDriving": "" + }, + "TorqueLimits": {}, + "InitialSoC": 50.0, + "PowertrainConfiguration": "ParallelHybrid", + "ElectricMotors": [ + { + "Count": 1, + "Ratio": 1.0, + "Position": "P2", + "MotorFile": "GenericEMotor_140kW_936Nm.vem", + "MechanicalEfficiency": 1.0 + } + ], + "Batteries": [ + { + "NumPacks": 1, + "BatteryFile": "GenericBattery_10kWh_658V.vbat", + "StreamId": 0 + }, + { + "NumPacks": 3, + "BatteryFile": "GenericBattery_5kWh_320V.vbat", + "StreamId": 2 + }, + { + "NumPacks": 1, + "BatteryFile": "GenericBattery_5kWh_320V.vbat", + "StreamId": 0 + } + ] + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Hybrid_Parameters.vhctl b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Hybrid_Parameters.vhctl new file mode 100644 index 0000000000000000000000000000000000000000..a46aef1a05bf9df86bedf57572abe03a6de5fb23 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Hybrid_Parameters.vhctl @@ -0,0 +1,17 @@ +{ + "Header": { + "CreatedBy": "", + "Date": "2020-09-07T15:28:08.3781385Z", + "AppVersion": "3", + "FileVersion": 1 + }, + "Body": { + "EquivalenceFactor": 2.0, + "MinSoC": 20.0, + "MaxSoC": 80.0, + "TargetSoC": 50.0, + "AuxBufferTime": 5.0, + "AuxBufferChgTime": 5.0, + "MinICEOnTime": 10.0 + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/MaxCurrent.vimax b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/MaxCurrent.vimax new file mode 100644 index 0000000000000000000000000000000000000000..5552bda2b03a9e6d5f0b2de49ea79b598013047f --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/MaxCurrent.vimax @@ -0,0 +1,3 @@ +SOC, I_charge, I_discharge +0, 280, 280 +100, 280, 280 \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/MaxCurrent_2.vimax b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/MaxCurrent_2.vimax new file mode 100644 index 0000000000000000000000000000000000000000..d5d8caaff861481f3fed59db75f7b32a8a69eafa --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/MaxCurrent_2.vimax @@ -0,0 +1,3 @@ +SOC, I_charge, I_discharge +0, 180, 180 +100, 180, 180 \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/P2 Group 5.vecto b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/P2 Group 5.vecto new file mode 100644 index 0000000000000000000000000000000000000000..690904a192b1c7dd5083482977b8f814dc272f08 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/P2 Group 5.vecto @@ -0,0 +1,64 @@ +{ + "Header": { + "CreatedBy": "", + "Date": "2020-08-24T13:41:04.1591616Z", + "AppVersion": "3", + "FileVersion": 8 + }, + "Body": { + "SavedInDeclMode": false, + "EngineOnlyMode": false, + "VehicleFile": "Group5_HEV.vveh", + "EngineFile": "Engine_325kW_12.7l.veng", + "GearboxFile": "AMT_12.vgbx", + "TCU": "AMT_12.vgbx", + "ShiftStrategy": "TUGraz.VectoCore.Models.SimulationComponent.Impl.AMTShiftStrategy", + "HybridStrategyParams": "Hybrid_Parameters.vhctl", + "AuxiliaryAssembly": "Classic", + "AuxiliaryVersion": "CLASSIC", + "AdvancedAuxiliaryFilePath": "", + "Aux": [], + "Padd": 3000.0, + "Padd_electric": 0.0, + "VACC": "Truck.vacc", + "EngineStopStartAtVehicleStopThreshold": 0.0, + "EngineStopStartMaxOffTimespan": 1000.0, + "EngineStopStartUtilityFactor": 0.0, + "EcoRollMinSpeed": 0.0, + "EcoRollActivationDelay": 0.0, + "EcoRollUnderspeedThreshold": 0.0, + "EcoRollMaxAcceleration": 0.0, + "PCCEnableSpeed": 0.0, + "PCCMinSpeed": 0.0, + "PCCUnderspeed": 0.0, + "PCCOverSpeed": 5.0, + "PCCPreviewDistanceUC1": 0.0, + "PCCPreviewDistanceUC2": 0.0, + "LAC": { + "Enabled": true, + "PreviewDistanceFactor": 10.0, + "DF_offset": 2.5, + "DF_scaling": 1.5, + "DF_targetSpeedLookup": "", + "Df_velocityDropLookup": "", + "MinSpeed": 50.0 + }, + "OverSpeedEcoRoll": { + "Mode": "Overspeed", + "MinSpeed": 50.0, + "OverSpeed": 2.5 + }, + "Cycles": [ + "LongHaul", + "Coach", + "Construction", + "HeavyUrban", + "Interurban", + "MunicipalUtility", + "RegionalDelivery", + "Suburban", + "Urban", + "UrbanDelivery" + ] + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/P2 Group 5_2.vecto b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/P2 Group 5_2.vecto new file mode 100644 index 0000000000000000000000000000000000000000..fa7807e6944e46d36dab253565a21da75058dc6d --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/P2 Group 5_2.vecto @@ -0,0 +1,64 @@ +{ + "Header": { + "CreatedBy": "", + "Date": "2020-08-24T13:41:04.1591616Z", + "AppVersion": "3", + "FileVersion": 8 + }, + "Body": { + "SavedInDeclMode": false, + "EngineOnlyMode": false, + "VehicleFile": "Group5_HEV_2.vveh", + "EngineFile": "Engine_325kW_12.7l.veng", + "GearboxFile": "AMT_12.vgbx", + "TCU": "AMT_12.vgbx", + "ShiftStrategy": "TUGraz.VectoCore.Models.SimulationComponent.Impl.AMTShiftStrategy", + "HybridStrategyParams": "Hybrid_Parameters.vhctl", + "AuxiliaryAssembly": "Classic", + "AuxiliaryVersion": "CLASSIC", + "AdvancedAuxiliaryFilePath": "", + "Aux": [], + "Padd": 3000.0, + "Padd_electric": 0.0, + "VACC": "Truck.vacc", + "EngineStopStartAtVehicleStopThreshold": 0.0, + "EngineStopStartMaxOffTimespan": 1000.0, + "EngineStopStartUtilityFactor": 0.0, + "EcoRollMinSpeed": 0.0, + "EcoRollActivationDelay": 0.0, + "EcoRollUnderspeedThreshold": 0.0, + "EcoRollMaxAcceleration": 0.0, + "PCCEnableSpeed": 0.0, + "PCCMinSpeed": 0.0, + "PCCUnderspeed": 0.0, + "PCCOverSpeed": 5.0, + "PCCPreviewDistanceUC1": 0.0, + "PCCPreviewDistanceUC2": 0.0, + "LAC": { + "Enabled": true, + "PreviewDistanceFactor": 10.0, + "DF_offset": 2.5, + "DF_scaling": 1.5, + "DF_targetSpeedLookup": "", + "Df_velocityDropLookup": "", + "MinSpeed": 50.0 + }, + "OverSpeedEcoRoll": { + "Mode": "Overspeed", + "MinSpeed": 50.0, + "OverSpeed": 2.5 + }, + "Cycles": [ + "LongHaul", + "Coach", + "Construction", + "HeavyUrban", + "Interurban", + "MunicipalUtility", + "RegionalDelivery", + "Suburban", + "Urban", + "UrbanDelivery" + ] + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Truck.vacc b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Truck.vacc new file mode 100644 index 0000000000000000000000000000000000000000..54e77864874d21d67e8f8d69a97b35c5c6031749 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Hybrids/GenericVehicle_Group5_P2_BatSystem/Truck.vacc @@ -0,0 +1,6 @@ +v [km/h],acc [m/s²],dec [m/s²] +0,1,-1 +25,1,-1 +50,0.642857143,-1 +60,0.5,-0.5 +120,0.5,-0.5 diff --git a/VectoCore/VectoCoreTest/Utils/MockBatteryInputData.cs b/VectoCore/VectoCoreTest/Utils/MockBatteryInputData.cs index a300b4f5a2d12e57a27cabb4dcc2e6dc86376034..6b159e915d4cc7f2fcd8842d7d5e11dce10dd02c 100644 --- a/VectoCore/VectoCoreTest/Utils/MockBatteryInputData.cs +++ b/VectoCore/VectoCoreTest/Utils/MockBatteryInputData.cs @@ -1,9 +1,47 @@ -using TUGraz.VectoCommon.InputData; +using System.Collections.Generic; +using System.Linq; +using TUGraz.VECTO; +using TUGraz.VectoCommon.InputData; namespace TUGraz.VectoCore.Tests.Utils { - public class MockBatteryInputData : IElectricStorageEngineeringInputData + public class MockBatteryInputData : IElectricStorageSystemEngineeringInputData { - public IREESSPackInputData REESSPack { get; set; } - public int Count { get; set; } + protected internal IList<IElectricStorageDeclarationInputData> _electricStorageElements = new List<IElectricStorageDeclarationInputData>(); + + public IREESSPackInputData REESSPack + { + set + { + _electricStorageElements.Add(new MockElectricStorageInputWrapper() { + REESSPack = value, + StringId = 0, + Count = 1, + }); + } + } + + #region Implementation of IElectricStorageSystemDeclarationInputData + + IList<IElectricStorageDeclarationInputData> IElectricStorageSystemDeclarationInputData.ElectricStorageElements => _electricStorageElements; + + #endregion + + #region Implementation of IElectricStorageSystemEngineeringInputData + + IList<IElectricStorageEngineeringInputData> IElectricStorageSystemEngineeringInputData.ElectricStorageElements => _electricStorageElements.Cast<IElectricStorageEngineeringInputData>().ToList(); + + #endregion + + public class MockElectricStorageInputWrapper : IElectricStorageDeclarationInputData, IElectricStorageEngineeringInputData + { + #region Implementation of IElectricStorageDeclarationInputData + + public IREESSPackInputData REESSPack { get; set; } + public int Count { get; set; } + public int StringId { get; set; } + + #endregion + } + } } \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs b/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs index 1d9dc6e7b47bb279cd82627db198d1f59cab70f6..b83bde203d76065e11904f94aec270d5bcb1efb7 100644 --- a/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs +++ b/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs @@ -81,7 +81,7 @@ namespace TUGraz.VectoCore.Tests.Utils { public IPTOTransmissionInputData PTOTransmissionInputData { get; set; } public IAxlesDeclarationInputData AxleWheels { get; set; } public IBusAuxiliariesDeclarationData BusAuxiliaries { get; set; } - public IElectricStorageDeclarationInputData ElectricStorage { get; set; } + public IElectricStorageSystemDeclarationInputData ElectricStorage { get; set; } public IElectricMachinesDeclarationInputData ElectricMachines { get; set; } #endregion @@ -179,7 +179,7 @@ namespace TUGraz.VectoCore.Tests.Utils { public IRetarderInputData RetarderInputData { get; set; } public IPTOTransmissionInputData PTOTransmissionInputData { get; set; } public IAxlesEngineeringInputData AxleWheels { get; set; } - public IElectricStorageEngineeringInputData ElectricStorage { get; set; } + public IElectricStorageSystemEngineeringInputData ElectricStorage { get; set; } public IElectricMachinesEngineeringInputData ElectricMachines { get; set; } #endregion diff --git a/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs b/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs index 3caea6a689b1eceddcde9ead2c5f40093e4a1591..0d67379cba3a0fa92df9843ce0e8bb05b9e07221 100644 --- a/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs +++ b/VectoCore/VectoCoreTest/Utils/MockModalDataContainer.cs @@ -54,6 +54,9 @@ namespace TUGraz.VectoCore.Tests.Utils protected Dictionary<IFuelProperties, Dictionary<ModalResultField, DataColumn>> FuelColumns = new Dictionary<IFuelProperties, Dictionary<ModalResultField, DataColumn>>(); + protected Dictionary<int, Dictionary<ModalResultField, DataColumn>> BatteryColumns = + new Dictionary<int, Dictionary<ModalResultField, DataColumn>>(); + private Second _duration; private Meter _distance; @@ -131,6 +134,41 @@ namespace TUGraz.VectoCore.Tests.Utils set => throw new NotImplementedException(); } + public object this[ModalResultField key, int? pos] + { + get + { + if (pos == null) { + return CurrentRow[key.GetName()]; + } + + if (!BatteryColumns.ContainsKey(pos.Value)) { + return null; + } + + var entry = BatteryColumns[pos.Value]; + return !entry.ContainsKey(key) ? null : CurrentRow[entry[key]]; + } + set + { + if (pos == null) { + CurrentRow[key.GetName()] = value; + } else { + if (!BatteryColumns.ContainsKey(pos.Value)) { + BatteryColumns[pos.Value] = new Dictionary<ModalResultField, DataColumn>(); + } + + var entry = BatteryColumns[pos.Value]; + if (!entry.ContainsKey(key)) { + var col = Data.Columns.Add($"{key.GetName()}_{pos.Value}", typeof(SI)); + entry[key] = col; + } + + CurrentRow[entry[key]] = value; + } + } + } + public object this[string auxId] { get => CurrentRow[Auxiliaries[auxId]]; diff --git a/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs b/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs index a5e43b2bb0f580ecc5335965e8d65a91d097a0fb..228d31239fc2ce38dbd93dd1a8ce045e0e52a76d 100644 --- a/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs +++ b/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs @@ -194,10 +194,10 @@ namespace TUGraz.VectoCore.Tests.Utils } - public static BatteryData CreateBatteryData(string file, double initialSoC, int cnt = 1) + public static BatterySystemData CreateBatteryData(string file, double initialSoC) { var inputData = JSONInputDataFactory.ReadREESSData(file, false); - return new EngineeringDataAdapter().CreateBatteryData(new MockBatteryInputData() {Count = cnt, REESSPack = inputData}, initialSoC); + return new EngineeringDataAdapter().CreateBatteryData(new MockBatteryInputData() {REESSPack = inputData}, initialSoC); } } } diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj index c60edb48e0329015705afc477f96d2552f1d7097..bfbdc378cb15b942bbff642cdec30255439eb36e 100644 --- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj +++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj @@ -148,6 +148,7 @@ <Compile Include="Models\SimulationComponentData\TorqueConverterDataTest.cs" /> <Compile Include="Models\SimulationComponentData\ValidationTest.cs" /> <Compile Include="Models\SimulationComponent\ATGearboxTest.cs" /> + <Compile Include="Models\SimulationComponent\BatterySystemTest.cs" /> <Compile Include="Models\SimulationComponent\BatteryTest.cs" /> <Compile Include="Models\SimulationComponent\ElectricMotorTest.cs" /> <Compile Include="Models\SimulationComponent\EngineFanAuxTest.cs" /> @@ -1090,6 +1091,114 @@ <None Include="TestData\Hybrids\GenericVehicle_Group5_P2\VKM\Engine_325kW_12.7l.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\325kW.vfld"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\325kW.vmap"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\AMT_12.vgbx"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\Axle_4x2_Tractor.vtlm"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\Default.vrlm"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\Engine_325kW_12.7l.veng"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\Gear_1.vtlm"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\Gear_10.vtlm"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\Gear_11.vtlm"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\Gear_12.vtlm"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\Gear_2.vtlm"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\Gear_3.vtlm"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\Gear_4.vtlm"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\Gear_5.vtlm"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\Gear_6.vtlm"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\Gear_7.vtlm"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\Gear_8.vtlm"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\Gear_9.vtlm"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\GenericBattery_10kWh_658V.vbat"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\GenericBattery_10kWh_658V.vbatr"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\GenericBattery_10kWh_658V.vbatv"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\GenericBattery_5kWh_320V.vbat"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\GenericBattery_5kWh_320V.vbatr"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\GenericBattery_5kWh_320V.vbatv"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\GenericDrag_140kW_936Nm.vemd"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\GenericEMotor_140kW_900Nm.vemp"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\GenericEMotor_140kW_936Nm.vem"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\GenericMap_140kW_936Nm.vemo"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\Group5_HEV.vveh"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\Group5_HEV_2.vveh"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\Hybrid_Parameters.vhctl"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\MaxCurrent.vimax"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\MaxCurrent_2.vimax"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\P2 Group 5.vecto"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\P2 Group 5_2.vecto"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Hybrids\GenericVehicle_Group5_P2_BatSystem\Truck.vacc"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4\325kW.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None>