diff --git a/.gitignore b/.gitignore index 0f4bd7bb9eb175ec9e68009448ae79a99b7038fd..0f6e6ab57cf9b8b246b9e2d1b043dc98c6921f85 100644 --- a/.gitignore +++ b/.gitignore @@ -218,3 +218,4 @@ Documentation/VehiclesReleaseComparisonDeclarationMode/tmp/ /VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/test.VIF_Report_5.xml /VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/tests.xml /VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/finalGroup41.VIF_Report_4.xml +/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/output diff --git a/VECTO3GUI2020/Helper/MultistageParameterViewModel.cs b/VECTO3GUI2020/Helper/MultistageParameterViewModel.cs index 1656da5d2dc5b74ceb4a609ec74a9f137e00311c..7c3413d7539e46b06491da6c9b66f20a25ece57c 100644 --- a/VECTO3GUI2020/Helper/MultistageParameterViewModel.cs +++ b/VECTO3GUI2020/Helper/MultistageParameterViewModel.cs @@ -77,10 +77,12 @@ namespace VECTO3GUI2020.Helper Action<MultistageParameterViewModel> propertyChangedCallback = null, params ResourceManager[] resourceManagers) { + _propertyName = propertyName; PreviousContent = previousContent; _propertyChangedCallback = propertyChangedCallback; _parentViewModel = parentViewModel; + //_parentViewModel.PropertyChanged += ParentViewModelPropertyChanged; _propertyInfo = parentViewModel.GetType().GetProperty(propertyName); _viewMode = viewMode; @@ -110,6 +112,20 @@ namespace VECTO3GUI2020.Helper CurrentContent = _propertyInfo.GetValue(parentViewModel); } + private void ParentViewModelPropertyChanged(object sender, PropertyChangedEventArgs e) + { + Debug.Assert((IViewModelBase)sender == _parentViewModel); + if (e.PropertyName != _propertyName) { + return; + } + + var valueFromParent = _propertyInfo.GetValue(sender); + if (valueFromParent != CurrentContent) { + CurrentContent = valueFromParent; + } + } + + private object CreateDummyContent() { var type = _type; @@ -278,6 +294,7 @@ namespace VECTO3GUI2020.Helper _propertyInfo.SetValue(_parentViewModel, _currentContent); _propertyChangedCallback?.Invoke(this); }; + OnPropertyChanged(nameof(CurrentContent)); } } diff --git a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLAirDragWriter.cs b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLAirDragWriter.cs index 0ef9bc19890062b7f1d15363ed3cc40064e645bb..aaeaa4fa379841f7b8f023942b9bab822ff7b9d4 100644 --- a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLAirDragWriter.cs +++ b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLAirDragWriter.cs @@ -25,7 +25,10 @@ namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter public XMLAirDragWriter(IAirdragDeclarationInputData inputData) { _inputData = inputData; - _uri = inputData.DigestValue.Reference.Replace("#",""); + _uri = inputData.DigestValue?.Reference?.Replace("#",""); + if (_uri == null) { + _uri = "AirdragComponent" + Guid.NewGuid().ToString("n").Substring(0, 20); + } } public XElement GetElement() diff --git a/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs index 71d7b9c58eb8a5ca78241985b02d5f1b72a3ca54..f910a87d065547a9324f4620388b2695ddc2b74a 100644 --- a/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs +++ b/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs @@ -159,7 +159,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation cancellationTokenSource = new CancellationTokenSource(); SimulationRunning = true; await Task.Run(() => RunSimulationAsync(cancellationTokenSource.Token, - new Progress<MessageEntry>((message) => { _outputViewModel.Messages.Add(message); }), + new Progress<MessageEntry>((message) => { _outputViewModel.AddMessage(message); }), new Progress<int>((i) => _outputViewModel.Progress = i), new Progress<string>((msg) => _outputViewModel.StatusMessage = msg))); SimulationRunning = false; @@ -369,6 +369,8 @@ namespace VECTO3GUI2020.ViewModel.Implementation var duration = start.Elapsed.TotalSeconds; jobProgress.Select(x => x.Value.Progress); + + progress.Report(Convert.ToInt32(sumProgress * 100 / jobProgress.Count)); status.Report(string.Format( "Duration: {0:F1}s, Current Progress: {1:P} ({2})", duration, sumProgress / jobProgress.Count, @@ -444,6 +446,9 @@ namespace VECTO3GUI2020.ViewModel.Implementation Type = MessageType.StatusMessage, Message = string.Format("Simulation finished in {0:F1}s", start.Elapsed.TotalSeconds) }); + + status.Report($"Simulation finished in {start.Elapsed.TotalSeconds} s"); + } private void PrintRuns(Dictionary<int, JobContainer.ProgressEntry> progress, Dictionary<int, FileOutputWriter> fileWriters, IProgress<MessageEntry> outputMessages) { @@ -510,7 +515,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation get { return _cancelSimulationCommand ?? new RelayCommand(() => { - _outputViewModel.Messages.Add(new MessageEntry() { + _outputViewModel.AddMessage(new MessageEntry() { Message="Canceling Simulation", Type=MessageType.StatusMessage, }); diff --git a/VECTO3GUI2020/ViewModel/Implementation/OutputViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/OutputViewModel.cs index 345f474799d1c78da6aa943e431e84b00df0a693..3e41e51fdd89f701162b0f9b997869f22b7ad463 100644 --- a/VECTO3GUI2020/ViewModel/Implementation/OutputViewModel.cs +++ b/VECTO3GUI2020/ViewModel/Implementation/OutputViewModel.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.Windows.Data; +using Microsoft.WindowsAPICodePack.Shell.Interop; using VECTO3GUI2020.ViewModel.Implementation; using VECTO3GUI2020.ViewModel.Implementation.Common; using VECTO3GUI2020.ViewModel.Interfaces; @@ -22,6 +23,13 @@ namespace VECTO3GUI2020.ViewModel get { return _messages; } } + public void AddMessage(MessageEntry messageEntry) + { + lock (_messageLock) { + Messages.Add(messageEntry); + } + } + public int Progress { get => _progress; @@ -43,9 +51,10 @@ namespace VECTO3GUI2020.ViewModel public interface IOutputViewModel : IMainViewModel { - ObservableCollection<MessageEntry> Messages { get; } + //ObservableCollection<MessageEntry> Messages { get; } int Progress { get; set; } string StatusMessage { get; set; } + void AddMessage(MessageEntry messageEntry); } } \ No newline at end of file diff --git a/VECTO3GUI2020/ViewModel/Interfaces/Common/IViewModelBase.cs b/VECTO3GUI2020/ViewModel/Interfaces/Common/IViewModelBase.cs index dff379d33bc1c544aa8b9360da5d2108869a4eb7..39808350ec312e252e4fee1d1df3624f39f19ff1 100644 --- a/VECTO3GUI2020/ViewModel/Interfaces/Common/IViewModelBase.cs +++ b/VECTO3GUI2020/ViewModel/Interfaces/Common/IViewModelBase.cs @@ -1,6 +1,8 @@ -namespace VECTO3GUI2020.ViewModel.Interfaces.Common +using System.ComponentModel; + +namespace VECTO3GUI2020.ViewModel.Interfaces.Common { - public interface IViewModelBase + public interface IViewModelBase : INotifyPropertyChanged { string Title { get; set; } } diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs index b739a88820f6b767a920fb4a605dd12d899a2bde..6acdf1436719dc0f725bed27144a42c983a09446 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs @@ -151,14 +151,9 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation MultistageAirdragViewModel.AirdragViewModelChanged += ((sender, args) => { if (sender is IMultistageAirdragViewModel vm) { if (AirdragModifiedMultistageMandatory) { - if (vm.AirDragViewModel != null) - { + if (vm.AirDragViewModel != null) { AirdragModifiedMultistage = true; } - else - { - AirdragModifiedMultistage = false; - } } } }); @@ -173,13 +168,13 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation if (consolidatedVehicleData?.AirdragModifiedMultistage != null) { - _airdragModifiedMultistageMandatory = true; + AirdragModifiedMultistageMandatory = true; AirdragModifiedMultistageEditingEnabled = true; } if (consolidatedVehicleData?.Components?.AirdragInputData != null) { - _airdragModifiedMultistageMandatory = true; + AirdragModifiedMultistageMandatory = true; AirdragModifiedMultistageEditingEnabled = true; } } @@ -614,11 +609,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation { get { - if (AirdragModifiedMultistageEditingEnabled) { - return _airdragModifiedMultistage.toAirdragModifiedEnum(); - } else { - return null; - } + return _airdragModifiedMultistage.toAirdragModifiedEnum(); } set { @@ -626,10 +617,10 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation var newVal = value?.toNullableBool(); if (prevVal != newVal) { AirdragModifiedMultistage = value?.toNullableBool(); - if (_parameterViewModels.ContainsKey(nameof(AirdragModifiedEnum))) - { - _parameterViewModels[nameof(AirdragModifiedEnum)].CurrentContent = value; - } + } + if (_parameterViewModels.ContainsKey(nameof(AirdragModifiedEnum))) + { + _parameterViewModels[nameof(AirdragModifiedEnum)].CurrentContent = value; } } } @@ -650,14 +641,23 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public bool? AirdragModifiedMultistage { - get => _airdragModifiedMultistage; + get + { + return _airdragModifiedMultistage; + } set { if (SetProperty(ref _airdragModifiedMultistage, value)) { + if(value == false){ + MultistageAirdragViewModel.AirDragViewModel = null; + } else { + MultistageAirdragViewModel.RestoreAirdragViewModel(); + } AirdragModifiedEnum = value.toAirdragModifiedEnum(); }; } } + public bool AirdragModifiedMultistageMandatory { get => _airdragModifiedMultistageMandatory; diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/ManufacturingStageViewModel_v0_1.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/ManufacturingStageViewModel_v0_1.cs index 51fe765ba99a5d65deb4cb5578f73e7730b2471a..a0f8a942108ebf574af9b5dcc2d7640a11bf3dc9 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/ManufacturingStageViewModel_v0_1.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/ManufacturingStageViewModel_v0_1.cs @@ -80,6 +80,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public ManufacturingStageViewModel_v0_1(IManufacturingStageInputData consolidatedManufacturingStageInputData, IMultiStageViewModelFactory viewModelFactory) { + Title = "Edit Manufacturing Stage"; _viewModelFactory = viewModelFactory; _stageCount = consolidatedManufacturingStageInputData?.StageCount + 1 ?? 2; diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAirdragViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAirdragViewModel.cs index cb78e564ef31bb63fb71bb344bc1f47e19492f3c..03e0394b8961589b7d5c4c7af9ae954b3d84636b 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAirdragViewModel.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAirdragViewModel.cs @@ -17,6 +17,7 @@ using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Factory; +using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Utils; using VECTO3GUI2020.Helper; using VECTO3GUI2020.Ninject; @@ -54,12 +55,29 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation get => _airdragViewModel; set { + StoreAirdragViewModel(); if (SetProperty(ref _airdragViewModel, value)) { OnAirdragViewModelChanged(); }; } } + private void StoreAirdragViewModel() + { + if (AirDragViewModel != null && StoredAirdragViewModel != AirDragViewModel) { + StoredAirdragViewModel = AirDragViewModel; + } + } + + public void RestoreAirdragViewModel() + { + if (AirDragViewModel == null) { + AirDragViewModel = StoredAirdragViewModel; + } + } + + private IAirDragViewModel StoredAirdragViewModel { get; set; } = null; + public void SetAirdragInputData(IAirdragDeclarationInputData airdragInputData) { @@ -120,7 +138,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } - internal bool LoadAirdragFile(string fileName) + public bool LoadAirdragFile(string fileName) { var success = true; var errorStringBuilder = new StringBuilder(); @@ -185,13 +203,20 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public ICommand RemoveAirdragDataCommand{ get => _removeAirdragDataCommand ?? new RelayCommand(() => { - AirDragViewModel = null; + RemoveAirdragComponent(); OnPropertyChanged(nameof(AirdragFilePath)); }, () => AirDragViewModel != null); } #endregion + public void RemoveAirdragComponent() + { + AirDragViewModel = null; + StoredAirdragViewModel = null; + OnPropertyChanged(nameof(AirdragFilePath)); + + } diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs index 2c30de164145f6de2d6b15e5c7c82e0a582a53ad..09e3f3b20d883a67c7c0ef6a69361dd639cc94e4 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs @@ -63,7 +63,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public MultiStageJobViewModel_v0_1(IMultistageBusInputDataProvider inputData, IMultiStageViewModelFactory vmFactory, IMultistageDependencies multistageDependencies, IXMLInputDataReader inputDataReader) { - + Title = "Edit Multistage Job"; _dataSource = inputData.DataSource; _jobInputData = inputData.JobInputData; _inputData = inputData; diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultistageAirdragViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultistageAirdragViewModel.cs index b88d8fbb8aa84e91310262a597d4e40ee8b4f841..865e3d14f189454ac9ff688b01ac2a99a07d5909 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultistageAirdragViewModel.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Interfaces/IMultistageAirdragViewModel.cs @@ -10,5 +10,9 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Interfaces IAirDragViewModel AirDragViewModel { get; set; } void SetAirdragInputData(IAirdragDeclarationInputData airdragInputData); + bool LoadAirdragFile(string fileName); + void RestoreAirdragViewModel(); + + void RemoveAirdragComponent(); } } \ No newline at end of file diff --git a/VECTO3GUI2020/Views/OutputView.xaml b/VECTO3GUI2020/Views/OutputView.xaml index 3cc600686185c0ef8730eafe6322bde72ce61c06..7f8015871ae09214136d3b87940a49dff23249c6 100644 --- a/VECTO3GUI2020/Views/OutputView.xaml +++ b/VECTO3GUI2020/Views/OutputView.xaml @@ -9,67 +9,83 @@ mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800" d:DataContext="{d:DesignData Type=viewModel:IOutputViewModel}"> <Grid> - <DockPanel> - <ProgressBar DockPanel.Dock="Top" Minimum="0" Maximum="100" Value="{Binding Progress}"></ProgressBar> - <DataGrid DockPanel.Dock="Top" ItemsSource="{Binding Messages}" BorderThickness="1" CanUserAddRows="False" AutoGenerateColumns="False" SelectionUnit="FullRow" - IsReadOnly="True" HeadersVisibility="All" RowHeaderWidth="5" Name="MessageList"> + <DockPanel LastChildFill="False"> + <ProgressBar DockPanel.Dock="Top" + Minimum="0" + Maximum="100" + Value="{Binding Progress}"/> + <StatusBar DockPanel.Dock="Bottom" MinHeight="30"> + <TextBlock Text="{Binding StatusMessage}" TextWrapping="Wrap"/> + </StatusBar> + <DataGrid + VerticalAlignment="Stretch" + VerticalScrollBarVisibility="Auto" + DockPanel.Dock="Top" + ItemsSource="{Binding Messages, IsAsync=True}" + BorderThickness="1" + CanUserAddRows="False" + AutoGenerateColumns="False" + SelectionUnit="FullRow" + IsReadOnly="True" + HeadersVisibility="All" + RowHeaderWidth="5" + Name="MessageList"> + <DataGrid.Columns> + <DataGridTemplateColumn Header="Message" Width="*"> + <DataGridTemplateColumn.CellTemplate> + <DataTemplate> + <StackPanel> + <TextBlock Text="{Binding Message}" Visibility="{Binding Message, Converter={StaticResource NullToVisibilityConverter}}" + TextWrapping="Wrap"/> + <TextBlock Text="{Binding Link}" Visibility="{Binding Message, Converter={StaticResource NullToVisibilityConverter}}" + TextWrapping="Wrap"/> + </StackPanel> + </DataTemplate> + </DataGridTemplateColumn.CellTemplate> + </DataGridTemplateColumn> + <DataGridTextColumn Header="Time" Binding="{Binding Time}" Width="130" /> + </DataGrid.Columns> + <DataGrid.RowStyle> + <Style TargetType="DataGridRow"> + <Style.Triggers> + <DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.StatusMessage}"> + <Setter Property="Background" Value="AliceBlue"/> + </DataTrigger> + <DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.InfoMessage}"> + <Setter Property="Background" Value="LemonChiffon"/> + </DataTrigger> + <DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.ErrorMessage}"> + <Setter Property="Background" Value="Red"/> + </DataTrigger> + <DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.WarningMessage}"> + <Setter Property="Background" Value="Gold"/> + </DataTrigger> + </Style.Triggers> + </Style> + </DataGrid.RowStyle> + <DataGrid.CellStyle> + <Style TargetType="DataGridCell"> + <Setter Property="FontFamily" Value="Courier New"/> + <Style.Triggers> + <DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.StatusMessage}"> + <Setter Property="Foreground" Value="Black"/> + </DataTrigger> + <DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.InfoMessage}"> + <Setter Property="Foreground" Value="DimGray"/> + </DataTrigger> + <DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.ErrorMessage}"> + <Setter Property="Foreground" Value="White"/> + <Setter Property="FontWeight" Value="Bold"/> + </DataTrigger> + <DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.WarningMessage}"> + <Setter Property="Foreground" Value="Black"/> + <Setter Property="FontWeight" Value="Bold"/> + </DataTrigger> + </Style.Triggers> + </Style> + </DataGrid.CellStyle> + </DataGrid> - <DataGrid.Columns> - <DataGridTemplateColumn Header="Message" Width="*"> - <DataGridTemplateColumn.CellTemplate> - <DataTemplate> - <StackPanel> - <TextBlock Text="{Binding Message}" Visibility="{Binding Message, Converter={StaticResource NullToVisibilityConverter}}" - TextWrapping="Wrap"/> - <TextBlock Text="{Binding Link}" Visibility="{Binding Message, Converter={StaticResource NullToVisibilityConverter}}" - TextWrapping="Wrap"/> - </StackPanel> - </DataTemplate> - </DataGridTemplateColumn.CellTemplate> - </DataGridTemplateColumn> - <DataGridTextColumn Header="Time" Binding="{Binding Time}" Width="130" /> - </DataGrid.Columns> - <DataGrid.RowStyle> - <Style TargetType="DataGridRow"> - <Style.Triggers> - <DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.StatusMessage}"> - <Setter Property="Background" Value="AliceBlue"/> - </DataTrigger> - <DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.InfoMessage}"> - <Setter Property="Background" Value="LemonChiffon"/> - </DataTrigger> - <DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.ErrorMessage}"> - <Setter Property="Background" Value="Red"/> - </DataTrigger> - <DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.WarningMessage}"> - <Setter Property="Background" Value="Gold"/> - </DataTrigger> - </Style.Triggers> - </Style> - </DataGrid.RowStyle> - <DataGrid.CellStyle> - <Style TargetType="DataGridCell"> - <Setter Property="FontFamily" Value="Courier New"/> - <Style.Triggers> - <DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.StatusMessage}"> - <Setter Property="Foreground" Value="Black"/> - </DataTrigger> - <DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.InfoMessage}"> - <Setter Property="Foreground" Value="DimGray"/> - </DataTrigger> - <DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.ErrorMessage}"> - <Setter Property="Foreground" Value="White"/> - <Setter Property="FontWeight" Value="Bold"/> - </DataTrigger> - <DataTrigger Binding="{Binding Type}" Value="{x:Static impl:MessageType.WarningMessage}"> - <Setter Property="Foreground" Value="Black"/> - <Setter Property="FontWeight" Value="Bold"/> - </DataTrigger> - </Style.Triggers> - </Style> - </DataGrid.CellStyle> - </DataGrid> - <StatusBar DockPanel.Dock="Bottom" VerticalAlignment="Bottom"><TextBlock Text="{Binding StatusMessage}"/></StatusBar> </DockPanel> </Grid> </UserControl> diff --git a/Vecto3GUI2020Test/Vecto3GUI2020Test.csproj b/Vecto3GUI2020Test/Vecto3GUI2020Test.csproj index 25b0d573f0db43b3263d3506470237c0ac25aa0a..61e6686bd13a15f88e9aba5aa5ff5159c7136733 100644 --- a/Vecto3GUI2020Test/Vecto3GUI2020Test.csproj +++ b/Vecto3GUI2020Test/Vecto3GUI2020Test.csproj @@ -93,6 +93,9 @@ </ItemGroup> <ItemGroup> + <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework"> + <HintPath>..\..\..\..\..\..\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll</HintPath> + </Reference> <Reference Include="PresentationFramework" /> </ItemGroup> diff --git a/Vecto3GUI2020Test/ViewModelTests/AirdragTests.cs b/Vecto3GUI2020Test/ViewModelTests/AirdragTests.cs new file mode 100644 index 0000000000000000000000000000000000000000..2aadd6117d635ea7a42f50356528eb49a07e4182 --- /dev/null +++ b/Vecto3GUI2020Test/ViewModelTests/AirdragTests.cs @@ -0,0 +1,280 @@ +using NUnit.Framework; +using VECTO3GUI2020.ViewModel.MultiStage.Implementation; + +namespace Vecto3GUI2020Test.ViewModelTests +{ + [TestFixture] + public class AirdragTests : ViewModelTestBase + { + /* + * Airdrag component loaded -> Airdragmodified true (if mandatory) + Airdrag component deleted -> Airdragmodified unchanged + Airdrag modified false -> Airdragcomponent set to null (& temporarily saved) + Airdrag modified true -> Airdragcomponent unchanged + * + * + */ + + #region Airdrag + [Test] + public void airdragModifiedInPreviousStages() + { + var vm = loadFile(consolidated_multiple_stages_airdrag); + + var vehicleVM = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as + DeclarationInterimStageBusVehicleViewModel_v2_8; + + Assert.IsTrue(vehicleVM.AirdragModifiedMultistageEditingEnabled); + + //try to change to false + + vehicleVM.AirdragModifiedMultistage = false; //should not change the value + Assert.IsTrue(vehicleVM.AirdragModifiedMultistageEditingEnabled); + } + + [Test] + public void airdragNotModifiedInPreviousStages() + { + var vm = loadFile(consolidated_multiple_stages); + + var vehicleVM = + vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as + DeclarationInterimStageBusVehicleViewModel_v2_8; + + Assert.IsFalse(vehicleVM.AirdragModifiedMultistageEditingEnabled); + } + + /// <summary> + /// 1st interim stage adds AirDrag component + /// => 'AirdragModifiedMultistage' not present in input, VIF 2, Airdrag Component in VIF + /// => 'AirdragModifiedMultistage' required in all consecutive stages + /// </summary> + [Test] + public void airdragComponentLoadedFirstTime() + { + ///Load VIF without airdrag + + var vm = loadFile(primary_vehicle_only); + var vehicleVM = + vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as + DeclarationInterimStageBusVehicleViewModel_v2_8; + + Assert.IsNull(vehicleVM.AirdragModifiedMultistage); + + var airdragViewModel = vehicleVM.MultistageAirdragViewModel as MultistageAirdragViewModel; + Assert.IsTrue(airdragViewModel.LoadAirdragFile(GetFullPath(airdragLoadTestFile))); + + Assert.IsNull(vehicleVM.AirdragModifiedMultistage); + Assert.IsFalse(vehicleVM.AirdragModifiedMultistageMandatory); + + vehicleVM.AirdragModifiedMultistageEditingEnabled = true; + Assert.IsFalse(vehicleVM.AirdragModifiedMultistageEditingEnabled); + + Assert.IsNull(vehicleVM.AirdragModifiedMultistage); + + //Set Mandatory Fields + vehicleVM.Manufacturer = "testManufacturer"; + vehicleVM.ManufacturerAddress = "Address"; + vehicleVM.VIN = "123456789"; + + //Save as new VIF + var multistageJobViewModel = vm.MultiStageJobViewModel as MultiStageJobViewModel_v0_1; + var outputName = "AidragLoadedInFirstStage"; + multistageJobViewModel.SaveVif(GetFullPath($"{outputName}.xml")); + + var resultFile = $"{outputName}.VIF_Report_2.xml"; + Assert.IsTrue(checkFileNameExists(resultFile)); + var secondstageVM = loadFile(resultFile); + Assert.IsNotNull(secondstageVM); + var secondStageVehicleVM = + (secondstageVM.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel) as + DeclarationInterimStageBusVehicleViewModel_v2_8; + Assert.IsTrue(secondStageVehicleVM.AirdragModifiedMultistageEditingEnabled); + Assert.IsTrue(secondStageVehicleVM.AirdragModifiedMultistageMandatory); + Assert.IsNull(secondStageVehicleVM.ConsolidatedVehicleData.AirdragModifiedMultistage); + + //try to disable AirdragModified + secondStageVehicleVM.AirdragModifiedMultistageEditingEnabled = false; + Assert.IsTrue(secondStageVehicleVM.AirdragModifiedMultistageEditingEnabled); + } + /// <summary> + /// no airdrag component set in VIF => AirdragModifiedMultistage is disabled + /// </summary> + [Test] + public void airdragModifiedDisabled() + { + var vm = loadFile(primary_vehicle_only); + var vehicleVM = + vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as + DeclarationInterimStageBusVehicleViewModel_v2_8; + + Assert.IsNull(vehicleVM.AirdragModifiedMultistage); + + Assert.IsNull(vehicleVM.AirdragModifiedMultistage); + Assert.IsFalse(vehicleVM.AirdragModifiedMultistageMandatory); + + var airdragViewModel = vehicleVM.MultistageAirdragViewModel; + Assert.IsTrue(airdragViewModel.LoadAirdragFile(GetFullPath(airdragLoadTestFile)), "Airdrag file not loaded"); + Assert.IsFalse(vehicleVM.AirdragModifiedMultistageMandatory); + + vehicleVM.AirdragModifiedMultistageEditingEnabled = true; + Assert.IsFalse(vehicleVM.AirdragModifiedMultistageEditingEnabled); + + } + /// <summary> + /// airdrag component is in VIF set => AirdragModifiedMultistage is mandatory + /// </summary> + [Test] + + public void airdragModifiedMandatory() + { + //var vm = loadFile(primary_vehicle_only); + //var vehicleVM = + // vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as + // DeclarationInterimStageBusVehicleViewModel_v2_8; + + //Assert.IsNull(vehicleVM.AirdragModifiedMultistage); + + //Assert.IsNull(vehicleVM.AirdragModifiedMultistage); + //Assert.IsFalse(vehicleVM.AirdragModifiedMultistageMandatory); + + //vehicleVM.AirdragModifiedMultistageEditingEnabled = true; + //Assert.IsFalse(vehicleVM.AirdragModifiedMultistageEditingEnabled); + + } + + [Test] + public void temporarySaveAirdragComponent1() + { + var vm = loadFile(consolidated_multiple_stages_airdrag); + + var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8; + + Assert.IsNull(vehicleViewModel.AirdragModifiedMultistage); + + + //Load airdrag file + var airdragLoaded = vehicleViewModel.MultistageAirdragViewModel.LoadAirdragFile(GetFullPath(airdragLoadTestFile)); + var loadedAirdragComponent = vehicleViewModel.MultistageAirdragViewModel.AirDragViewModel; + Assert.IsTrue(airdragLoaded, "Airdrag file was not loaded"); + + //Airdrag modified set to true if a component is loaded and the field is mandatory + Assert.IsTrue(vehicleViewModel.AirdragModifiedMultistage); + Assert.IsTrue(vehicleViewModel.AirdragModifiedMultistageMandatory); + Assert.AreEqual( + AIRDRAGMODIFIED.TRUE, + vehicleViewModel.ParameterViewModels[nameof(vehicleViewModel.AirdragModifiedEnum)].CurrentContent); + + vehicleViewModel.AirdragModifiedMultistage = false; + Assert.AreEqual(AIRDRAGMODIFIED.FALSE,vehicleViewModel.ParameterViewModels[nameof(vehicleViewModel.AirdragModifiedEnum)].CurrentContent); + Assert.IsNull(vehicleViewModel.Components?.AirdragInputData); + Assert.IsNull(vehicleViewModel.MultistageAirdragViewModel.AirDragViewModel); + + vehicleViewModel.AirdragModifiedMultistage = true; + Assert.AreEqual(loadedAirdragComponent, vehicleViewModel.MultistageAirdragViewModel.AirDragViewModel); + + } + + [Test] + public void temporarySaveAirdragComponent2() + { + var vm = loadFile(consolidated_multiple_stages_airdrag); + + var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8; + + Assert.IsNull(vehicleViewModel.AirdragModifiedMultistage); + + + //Load input file + var multistageJobViewModel = vm.MultiStageJobViewModel as MultiStageJobViewModel_v0_1; + var mockDialogHelper = setMockDialogHelper(stageInputFullSample, null); + multistageJobViewModel.LoadVehicleDataCommand.Execute(null); + + + + + var loadedAirdragComponent = vehicleViewModel.MultistageAirdragViewModel.AirDragViewModel; + Assert.NotNull(loadedAirdragComponent); + + //Airdrag modified set to true if a component is loaded and the field is mandatory + Assert.IsTrue(vehicleViewModel.AirdragModifiedMultistage); + Assert.IsTrue(vehicleViewModel.AirdragModifiedMultistageMandatory); + Assert.AreEqual( + AIRDRAGMODIFIED.TRUE, + vehicleViewModel.ParameterViewModels[nameof(vehicleViewModel.AirdragModifiedEnum)].CurrentContent); + + vehicleViewModel.AirdragModifiedMultistage = false; + Assert.AreEqual(AIRDRAGMODIFIED.FALSE, vehicleViewModel.ParameterViewModels[nameof(vehicleViewModel.AirdragModifiedEnum)].CurrentContent); + Assert.IsNull(vehicleViewModel.Components?.AirdragInputData); + Assert.IsNull(vehicleViewModel.MultistageAirdragViewModel.AirDragViewModel); + + vehicleViewModel.AirdragModifiedMultistage = true; + Assert.AreEqual(loadedAirdragComponent, vehicleViewModel.MultistageAirdragViewModel.AirDragViewModel); + + } + + [Test] + public void removeAirdragComponent() + { + var vm = loadFile(consolidated_multiple_stages_airdrag); + + var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8; + + Assert.IsNull(vehicleViewModel.AirdragModifiedMultistage); + + + //Load input file + var multistageJobViewModel = vm.MultiStageJobViewModel as MultiStageJobViewModel_v0_1; + var mockDialogHelper = setMockDialogHelper(stageInputFullSample, null); + multistageJobViewModel.LoadVehicleDataCommand.Execute(null); + + + Assert.IsTrue(vehicleViewModel.AirdragModifiedMultistage); + vehicleViewModel.MultistageAirdragViewModel.RemoveAirdragComponent(); //remove airdrag viewmodel; + Assert.IsTrue(vehicleViewModel.AirdragModifiedMultistage); + + + + } + + + + + [Test] + public void airdragModifiedSetToTrueWhenComponentIsLoaded() + { + var vm = loadFile(consolidated_multiple_stages_airdrag); + + var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as DeclarationInterimStageBusVehicleViewModel_v2_8; + + Assert.IsNull(vehicleViewModel.AirdragModifiedMultistage); + + + //Load airdrag file + var airdragLoaded = vehicleViewModel.MultistageAirdragViewModel.LoadAirdragFile(GetFullPath(airdragLoadTestFile)); + Assert.IsTrue(airdragLoaded, "Airdrag file was not loaded"); + + //Airdrag modified set to true if a component is loaded and the field is mandatory + Assert.IsTrue(vehicleViewModel.AirdragModifiedMultistage); + Assert.IsTrue(vehicleViewModel.AirdragModifiedMultistageMandatory); + Assert.AreEqual( + AIRDRAGMODIFIED.TRUE, + vehicleViewModel.ParameterViewModels[nameof(vehicleViewModel.AirdragModifiedEnum)].CurrentContent); + + + //AirdragComponent is removed when airdragmodified is set to false; + //Load airdrag file + airdragLoaded = vehicleViewModel.MultistageAirdragViewModel.LoadAirdragFile(GetFullPath(airdragLoadTestFile)); + Assert.IsTrue(airdragLoaded, "Airdrag file was not loaded"); + + vehicleViewModel.AirdragModifiedMultistage = false; + Assert.IsNull(vehicleViewModel.MultistageAirdragViewModel.AirDragViewModel); + + + } + + #endregion + + + } +} diff --git a/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs b/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs index 99e19a515b7d1ce6458e4da226af17d35c521d51..8758db065c94b238396213ab54a6c184dae73b8c 100644 --- a/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs +++ b/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs @@ -211,11 +211,12 @@ namespace Vecto3GUI2020Test Assert.IsNull(vehicleViewModel_v2_8.AirdragModifiedMultistage); Assert.IsNull(vehicleViewModel_v2_8.ConsolidatedAirdragModifiedEnum); - Assert.IsNull(vehicleViewModel_v2_8.AirdragModifiedEnum); + Assert.IsTrue(vehicleViewModel_v2_8.AirdragModifiedEnum == AIRDRAGMODIFIED.UNKNOWN || vehicleViewModel_v2_8.AirdragModifiedEnum == null); Assert.AreEqual(vehicleViewModel_v2_8.AirdragModifiedMultistageEditingEnabled, false); + Assert.Null(vehicleViewModel_v2_8.BusAuxiliaries); @@ -224,6 +225,62 @@ namespace Vecto3GUI2020Test Assert.Null(vifInputData.VehicleInputData.Components); } + [TestCase(consolidated_multiple_stages_airdrag, true)] + [TestCase(consolidated_multiple_stages, null)] + [TestCase(consolidated_one_stage, null)] + [TestCase(primary_vehicle_only, null)] + public void loadAirdragComponentAndSaveVehicleData(string fileName, object expectedAirdragModifiedValue) + { + var vm = loadFile(fileName); + + var vehicleVm = + vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as + DeclarationInterimStageBusVehicleViewModel_v2_8; + + + var airdragLoadResult = vehicleVm.MultistageAirdragViewModel.LoadAirdragFile(GetFullPath(airdragLoadTestFile)); + Assert.IsTrue(airdragLoadResult, "Airdrag file not loaded"); + + + //TODO: Set mandatory fields + vehicleVm.Manufacturer = "TestManufacturer"; + vehicleVm.ManufacturerAddress = "ManufacturerADDRESS"; + vehicleVm.VIN = "1234567890"; + + + + var fileToSave = "stageInput.xml"; + + var mockDialogHelper = setMockDialogHelper(null, fileToSave: fileToSave); + + TestContext.Write("Saving file with loaded Airdrag Component ... "); + var multistageJobViewModel = vm.MultiStageJobViewModel as MultiStageJobViewModel_v0_1; + multistageJobViewModel.SaveInputDataAsCommand.Execute(null); + + var savePath = mockDialogHelper.Object.SaveToXMLDialog(); + Assert.IsTrue(File.Exists(savePath)); + TestContext.WriteLine("Done!"); + + TestContext.WriteLine("Checking saved File ... "); + var inputData = (IDeclarationInputDataProvider)_kernel.Get<IXMLInputDataReader>().Create(savePath); + + Assert.NotNull(inputData.JobInputData.Vehicle.Components.AirdragInputData, "No Airdrag Component loaded"); + var airdragData = inputData.JobInputData.Vehicle.Components.AirdragInputData; + + Assert.AreEqual(expectedAirdragModifiedValue, vehicleVm.AirdragModifiedMultistage); + + + + + TestContext.WriteLine("Done!"); + + + File.Delete(savePath); + + + + + } @@ -294,6 +351,8 @@ namespace Vecto3GUI2020Test Assert.AreEqual(500, vehicleViewModel.CurbMassChassis.Value());//CorrectedActualMass Assert.AreEqual(3500, vehicleViewModel.GrossVehicleMassRating.Value());//TechnicalPermissibleMaximumLadenMass Assert.AreEqual(false, vehicleViewModel.AirdragModifiedMultistage); + Assert.AreEqual(AIRDRAGMODIFIED.FALSE, vehicleViewModel.AirdragModifiedEnum); + Assert.AreEqual(AIRDRAGMODIFIED.FALSE, vehicleViewModel.ParameterViewModels[nameof(vehicleViewModel.AirdragModifiedEnum)].CurrentContent); Assert.AreEqual(TankSystem.Compressed, vehicleViewModel.TankSystem);//NgTankSystem Assert.AreEqual(RegistrationClass.II_III, vehicleViewModel.RegisteredClass);//ClassBus Assert.AreEqual(1, vehicleViewModel.NumberPassengerSeatsLowerDeck); diff --git a/Vecto3GUI2020Test/ViewModelTests/MultistageAuxiliariesViewModelTests.cs b/Vecto3GUI2020Test/ViewModelTests/MultistageAuxiliariesViewModelTests.cs index 09a3943e4895014ea28827ebba934952a20aa533..07c2f96cb70c838b6c2e0afb2353d3f83328556b 100644 --- a/Vecto3GUI2020Test/ViewModelTests/MultistageAuxiliariesViewModelTests.cs +++ b/Vecto3GUI2020Test/ViewModelTests/MultistageAuxiliariesViewModelTests.cs @@ -57,11 +57,11 @@ namespace Vecto3GUI2020Test.ViewModelTests Assert.IsTrue(auxVm.HeatPumpGroupEditingEnabled); auxVm.HeatPumpGroupEditingEnabled = false; - auxVm.ParameterViewModels[nameof(auxVm.HeatPumpModeDriverCompartment)].CurrentContent = + auxVm.ParameterViewModels[nameof(auxVm.HeatPumpTypeDriverCompartment)].CurrentContent = HeatPumpType.R_744; Assert.IsTrue(auxVm.HeatPumpGroupEditingEnabled); - auxVm.ParameterViewModels[nameof(auxVm.HeatPumpModeDriverCompartment)].CurrentContent = + auxVm.ParameterViewModels[nameof(auxVm.HeatPumpTypeDriverCompartment)].CurrentContent = HeatPumpType.none; diff --git a/Vecto3GUI2020Test/ViewModelTests/VehicleViewModelTests.cs b/Vecto3GUI2020Test/ViewModelTests/VehicleViewModelTests.cs index 51fa2cdc749365299dcfb1a39575b18a815a70e1..7f5d3ef5692cb23875978161f14ebb06728a06db 100644 --- a/Vecto3GUI2020Test/ViewModelTests/VehicleViewModelTests.cs +++ b/Vecto3GUI2020Test/ViewModelTests/VehicleViewModelTests.cs @@ -4,146 +4,21 @@ using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; +using Ninject; using NUnit.Framework; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.FileIO.XML; using VECTO3GUI2020.Annotations; +using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components; using VECTO3GUI2020.ViewModel.MultiStage.Implementation; +using VECTO3GUI2020.ViewModel.MultiStage.Interfaces; namespace Vecto3GUI2020Test.ViewModelTests { [TestFixture] public class VehicleViewModelTests : ViewModelTestBase { - - #region Airdrag - [Test] - public void airdragModifiedInPreviousStages() - { - var vm = loadFile(consolidated_multiple_stages_airdrag); - - var vehicleVM = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as - DeclarationInterimStageBusVehicleViewModel_v2_8; - - Assert.IsTrue(vehicleVM.AirdragModifiedMultistageEditingEnabled); - - //try to change to false - - vehicleVM.AirdragModifiedMultistage = false; //should not change the value - Assert.IsTrue(vehicleVM.AirdragModifiedMultistageEditingEnabled); - } - - [Test] - public void airdragNotModifiedInPreviousStages() - { - var vm = loadFile(consolidated_multiple_stages); - - var vehicleVM = - vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as - DeclarationInterimStageBusVehicleViewModel_v2_8; - - Assert.IsFalse(vehicleVM.AirdragModifiedMultistageEditingEnabled); - } - - /// <summary> - /// 1st interim stage adds AirDrag component - /// => 'AirdragModifiedMultistage' not present in input, VIF 2, Airdrag Component in VIF - /// => 'AirdragModifiedMultistage' required in all consecutive stages - /// </summary> - [Test] - public void airdragComponentLoadedFirstTime() - { - ///Load VIF without airdrag - - var vm = loadFile(primary_vehicle_only); - var vehicleVM = - vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as - DeclarationInterimStageBusVehicleViewModel_v2_8; - - Assert.IsNull(vehicleVM.AirdragModifiedMultistage); - - var airdragViewModel = vehicleVM.MultistageAirdragViewModel as MultistageAirdragViewModel; - Assert.IsTrue(airdragViewModel.LoadAirdragFile(GetFullPath(airdragComponent))); - - Assert.IsNull(vehicleVM.AirdragModifiedMultistage); - Assert.IsFalse(vehicleVM.AirdragModifiedMultistageMandatory); - - vehicleVM.AirdragModifiedMultistageEditingEnabled = true; - Assert.IsFalse(vehicleVM.AirdragModifiedMultistageEditingEnabled); - - //Set Mandatory Fields - vehicleVM.Manufacturer = "testManufacturer"; - vehicleVM.ManufacturerAddress = "Address"; - vehicleVM.VIN = "123456789"; - - //Save as new VIF - var multistageJobViewModel = vm.MultiStageJobViewModel as MultiStageJobViewModel_v0_1; - var outputName = "AidragLoadedInFirstStage"; - multistageJobViewModel.SaveVif(GetFullPath($"{outputName}.xml")); - - var resultFile = $"{outputName}.VIF_Report_2.xml"; - Assert.IsTrue(checkFileNameExists(resultFile)); - var secondstageVM = loadFile(resultFile); - Assert.IsNotNull(secondstageVM); - var secondStageVehicleVM = - (secondstageVM.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel) as - DeclarationInterimStageBusVehicleViewModel_v2_8; - Assert.IsTrue(secondStageVehicleVM.AirdragModifiedMultistageEditingEnabled); - Assert.IsTrue(secondStageVehicleVM.AirdragModifiedMultistageMandatory); - Assert.IsNull(secondStageVehicleVM.ConsolidatedVehicleData.AirdragModifiedMultistage); - - //try to disable AirdragModified - secondStageVehicleVM.AirdragModifiedMultistageEditingEnabled = false; - Assert.IsTrue(secondStageVehicleVM.AirdragModifiedMultistageEditingEnabled); - - } - /// <summary> - /// no airdrag component set in VIF => AirdragModifiedMultistage is disabled - /// </summary> - [Test] - public void airdragModifiedDisabled() - { - var vm = loadFile(primary_vehicle_only); - var vehicleVM = - vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as - DeclarationInterimStageBusVehicleViewModel_v2_8; - - Assert.IsNull(vehicleVM.AirdragModifiedMultistage); - - Assert.IsNull(vehicleVM.AirdragModifiedMultistage); - Assert.IsFalse(vehicleVM.AirdragModifiedMultistageMandatory); - - vehicleVM.AirdragModifiedMultistageEditingEnabled = true; - Assert.IsFalse(vehicleVM.AirdragModifiedMultistageEditingEnabled); - - } - /// <summary> - /// airdrag component is in VIF set => AirdragModifiedMultistage is mandatory - /// </summary> - [Test] - - public void airdragModifiedMandatory() - { - //var vm = loadFile(primary_vehicle_only); - //var vehicleVM = - // vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as - // DeclarationInterimStageBusVehicleViewModel_v2_8; - - //Assert.IsNull(vehicleVM.AirdragModifiedMultistage); - - //Assert.IsNull(vehicleVM.AirdragModifiedMultistage); - //Assert.IsFalse(vehicleVM.AirdragModifiedMultistageMandatory); - - //vehicleVM.AirdragModifiedMultistageEditingEnabled = true; - //Assert.IsFalse(vehicleVM.AirdragModifiedMultistageEditingEnabled); - - } - - - - - #endregion - [Test] public void restoreValuesWhenEditingAgain() { @@ -294,19 +169,12 @@ namespace Vecto3GUI2020Test.ViewModelTests var vehicleData = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle; - - vehicleViewModel.EcoRollTypeNullable = EcoRollType.WithEngineStop; Assert.NotNull(vehicleData.ADAS); - vehicleViewModel.EcoRollTypeNullable = null; Assert.Null(vehicleData.ADAS); - - - - } diff --git a/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs b/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs index 9955c70292cc94d394bcb0ec0e0f211c24884aa9..de58ab608a5806d62e56487de319ef3759104b57 100644 --- a/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs +++ b/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs @@ -33,7 +33,7 @@ namespace Vecto3GUI2020Test protected const string stageInputFullSample = "vecto_vehicle-stage_input_full-sample.xml"; - protected const string airdragComponent = "AidragComponent.xml"; + protected const string airdragLoadTestFile = "AirdragLoadTestFile.xml"; //protected IXMLInputDataReader xmlInputReader; protected IKernel _kernel; diff --git a/Vecto3GUI2020Test/inputdata/final.VIF_Report_4.xml b/Vecto3GUI2020Test/inputdata/final.VIF_Report_4.xml new file mode 100644 index 0000000000000000000000000000000000000000..094ccf10ca1d8f2bb5702912eeb5772ef2facb59 --- /dev/null +++ b/Vecto3GUI2020Test/inputdata/final.VIF_Report_4.xml @@ -0,0 +1,783 @@ +<?xml version="1.0" encoding="utf-8"?> +<vif0.1:VectoOutputMultistage xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xmlns:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD//DEV/VectoOutputMultistage.0.1.xsd"> + <vif0.1:PrimaryVehicle> + <vif0.1:Data xsi:type="PrimaryVehicleDataType" id="PIF-0cfb413a8bf1457a8dcd"> + <vif0.1:Vehicle xsi:type="VehiclePIFType"> + <vif0.1:ManufacturerPrimaryVehicle>Generic Bus Manufacturer</vif0.1:ManufacturerPrimaryVehicle> + <vif0.1:ManufacturerAddressPrimaryVehicle>Street, ZIP City</vif0.1:ManufacturerAddressPrimaryVehicle> + <vif0.1:Model>Generic Model</vif0.1:Model> + <vif0.1:VIN>VEH-1234567890_nonSmart</vif0.1:VIN> + <vif0.1:Date>2017-02-15T11:00:00Z</vif0.1:Date> + <vif0.1:LegislativeCategory>M3</vif0.1:LegislativeCategory> + <vif0.1:ChassisConfiguration>Bus</vif0.1:ChassisConfiguration> + <vif0.1:AxleConfiguration>4x2</vif0.1:AxleConfiguration> + <vif0.1:Articulated>false</vif0.1:Articulated> + <vif0.1:TechnicalPermissibleMaximumLadenMass>20000</vif0.1:TechnicalPermissibleMaximumLadenMass> + <vif0.1:IdlingSpeed>700</vif0.1:IdlingSpeed> + <vif0.1:RetarderType>Transmission Output Retarder</vif0.1:RetarderType> + <vif0.1:RetarderRatio>1.000</vif0.1:RetarderRatio> + <vif0.1:AngledriveType>None</vif0.1:AngledriveType> + <vif0.1:ZeroEmissionVehicle>false</vif0.1:ZeroEmissionVehicle> + <vif0.1:ADAS xmlns:adas="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xsi:type="adas:AdvancedDriverAssistantSystemsType"> + <adas:EngineStopStart>false</adas:EngineStopStart> + <adas:EcoRollWithoutEngineStop>false</adas:EcoRollWithoutEngineStop> + <adas:EcoRollWithEngineStop>false</adas:EcoRollWithEngineStop> + <adas:PredictiveCruiseControl>none</adas:PredictiveCruiseControl> + </vif0.1:ADAS> + <vif0.1:TorqueLimits xmlns:tcl="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="tcl:TorqueLimitsType"> + <tcl:Entry gear="6" maxTorque="1800" /> + <tcl:Entry gear="1" maxTorque="2500" /> + </vif0.1:TorqueLimits> + <vif0.1:Components xsi:type="VehicleComponentsPIFType"> + <vif0.1:Engine> + <vif0.1:Data xsi:type="EngineDataPIFType"> + <vif0.1:Manufacturer>Generic Engine Manufacturer</vif0.1:Manufacturer> + <vif0.1:Model>Generic primary bus 41 Engine</vif0.1:Model> + <vif0.1:CertificationNumber>e12*0815/8051*2017/05E0000*00</vif0.1:CertificationNumber> + <vif0.1:Date>2017-02-15T11:00:00Z</vif0.1:Date> + <vif0.1:AppVersion>VectoEngine x.y</vif0.1:AppVersion> + <vif0.1:Displacement>7700</vif0.1:Displacement> + <vif0.1:RatedSpeed>2200</vif0.1:RatedSpeed> + <vif0.1:RatedPower>200000</vif0.1:RatedPower> + <vif0.1:MaxEngineTorque>1100</vif0.1:MaxEngineTorque> + <vif0.1:WHRType> + <MechanicalOutputICE xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3">false</MechanicalOutputICE> + <MechanicalOutputDrivetrain xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3">false</MechanicalOutputDrivetrain> + <ElectricalOutput xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3">false</ElectricalOutput> + </vif0.1:WHRType> + <vif0.1:Mode> + <vif0.1:IdlingSpeed>700</vif0.1:IdlingSpeed> + <vif0.1:FullLoadAndDragCurve> + <vif0.1:Entry engineSpeed="600.00" maxTorque="546.02" dragTorque="-39.66" /> + <vif0.1:Entry engineSpeed="800.00" maxTorque="760.78" dragTorque="-48.83" /> + <vif0.1:Entry engineSpeed="1000.00" maxTorque="973.29" dragTorque="-56.44" /> + <vif0.1:Entry engineSpeed="1200.00" maxTorque="1092.03" dragTorque="-67.29" /> + <vif0.1:Entry engineSpeed="1400.00" maxTorque="1092.03" dragTorque="-77.58" /> + <vif0.1:Entry engineSpeed="1600.00" maxTorque="1092.03" dragTorque="-87.88" /> + <vif0.1:Entry engineSpeed="1800.00" maxTorque="1022.52" dragTorque="-94.11" /> + <vif0.1:Entry engineSpeed="2000.00" maxTorque="944.17" dragTorque="-100.76" /> + <vif0.1:Entry engineSpeed="2200.00" maxTorque="868.12" dragTorque="-113.36" /> + <vif0.1:Entry engineSpeed="2400.00" maxTorque="741.99" dragTorque="-122.60" /> + <vif0.1:Entry engineSpeed="2500.00" maxTorque="647.29" dragTorque="-126.66" /> + <vif0.1:Entry engineSpeed="2600.00" maxTorque="0.00" dragTorque="-132.07" /> + </vif0.1:FullLoadAndDragCurve> + <vif0.1:Fuels> + <vif0.1:FuelType>Diesel CI</vif0.1:FuelType> + </vif0.1:Fuels> + </vif0.1:Mode> + </vif0.1:Data> + </vif0.1:Engine> + <vif0.1:Transmission> + <vif0.1:Data xsi:type="TransmissionDataPIFType"> + <vif0.1:Manufacturer>Generic Gearbox Manufacturer</vif0.1:Manufacturer> + <vif0.1:Model>AT 6 Gear</vif0.1:Model> + <vif0.1:MainCertificationMethod>Standard values</vif0.1:MainCertificationMethod> + <vif0.1:Date>2017-01-11T11:00:00Z</vif0.1:Date> + <vif0.1:AppVersion>3.0.1</vif0.1:AppVersion> + <vif0.1:TransmissionType>APT-S</vif0.1:TransmissionType> + <vif0.1:Gears xsi:type="TransmissionGearsPIFType"> + <vif0.1:Gear number="1"> + <vif0.1:Ratio>3.364</vif0.1:Ratio> + <vif0.1:MaxTorque>1900</vif0.1:MaxTorque> + <vif0.1:MaxSpeed>2500</vif0.1:MaxSpeed> + </vif0.1:Gear> + <vif0.1:Gear number="2"> + <vif0.1:Ratio>1.909</vif0.1:Ratio> + <vif0.1:MaxTorque>1900</vif0.1:MaxTorque> + <vif0.1:MaxSpeed>2500</vif0.1:MaxSpeed> + </vif0.1:Gear> + <vif0.1:Gear number="3"> + <vif0.1:Ratio>1.421</vif0.1:Ratio> + <vif0.1:MaxSpeed>2500</vif0.1:MaxSpeed> + </vif0.1:Gear> + <vif0.1:Gear number="4"> + <vif0.1:Ratio>1.000</vif0.1:Ratio> + <vif0.1:MaxSpeed>2500</vif0.1:MaxSpeed> + </vif0.1:Gear> + <vif0.1:Gear number="5"> + <vif0.1:Ratio>0.720</vif0.1:Ratio> + <vif0.1:MaxSpeed>2500</vif0.1:MaxSpeed> + </vif0.1:Gear> + <vif0.1:Gear number="6"> + <vif0.1:Ratio>0.615</vif0.1:Ratio> + <vif0.1:MaxSpeed>2500</vif0.1:MaxSpeed> + </vif0.1:Gear> + </vif0.1:Gears> + </vif0.1:Data> + </vif0.1:Transmission> + <vif0.1:Axlegear> + <vif0.1:Data xsi:type="AxlegearDataPIFType"> + <vif0.1:Manufacturer>Generic Gearbox Manufacturer</vif0.1:Manufacturer> + <vif0.1:Model>Generic primary bus 41 AxleGear</vif0.1:Model> + <vif0.1:CertificationMethod>Standard values</vif0.1:CertificationMethod> + <vif0.1:Date>2017-01-11T11:00:00Z</vif0.1:Date> + <vif0.1:AppVersion>3.0.1</vif0.1:AppVersion> + <vif0.1:LineType>Single portal axle</vif0.1:LineType> + <vif0.1:Ratio>6.500</vif0.1:Ratio> + </vif0.1:Data> + </vif0.1:Axlegear> + <vif0.1:AxleWheels> + <vif0.1:Data xsi:type="AxleWheelsDataPIFType"> + <vif0.1:Axles> + <vif0.1:Axle axleNumber="1" xsi:type="AxleDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <AxleType>VehicleNonDriven</AxleType> + <TwinTyres>false</TwinTyres> + <Steered>true</Steered> + <Tyre> + <Data id="WHL-5432198760-315-70-R22.5" xsi:type="TyreDataDeclarationType"> + <Manufacturer>Generic Wheels Manufacturer</Manufacturer> + <Model>Generic Wheel</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T14:00:00Z</Date> + <AppVersion>Tyre Generation App 1.0</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0055</RRCDeclared> + <FzISO>31300</FzISO> + </Data> + <Signature> + <di:Reference URI="#WHL-5432198760-315-70-R22.5" xmlns:di="http://www.w3.org/2000/09/xmldsig#"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>4TkUGQTX8tevHOU9Cj9uyCFuI/aqcEYlo/gyVjVQmv0=</di:DigestValue> + </di:Reference> + </Signature> + </Tyre> + </vif0.1:Axle> + <vif0.1:Axle axleNumber="2" xsi:type="AxleDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <AxleType>VehicleDriven</AxleType> + <TwinTyres>true</TwinTyres> + <Steered>false</Steered> + <Tyre> + <Data id="WHL-5432198760-315-70-R22.5" xsi:type="TyreDataDeclarationType"> + <Manufacturer>Generic Wheels Manufacturer</Manufacturer> + <Model>Generic Wheel</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T14:00:00Z</Date> + <AppVersion>Tyre Generation App 1.0</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0063</RRCDeclared> + <FzISO>31300</FzISO> + </Data> + <Signature> + <di:Reference URI="#WHL-5432198760-315-70-R22.5" xmlns:di="http://www.w3.org/2000/09/xmldsig#"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>KljvtvGUUQ/L7MiLVAqU+bckL5PNDNNwdeLH9kUVrfM=</di:DigestValue> + </di:Reference> + </Signature> + </Tyre> + </vif0.1:Axle> + </vif0.1:Axles> + </vif0.1:Data> + </vif0.1:AxleWheels> + <vif0.1:Auxiliaries> + <vif0.1:Data xsi:type="AuxiliaryDataPIFType"> + <vif0.1:Fan> + <vif0.1:Technology>Hydraulic driven - Constant displacement pump</vif0.1:Technology> + </vif0.1:Fan> + <vif0.1:SteeringPump> + <vif0.1:Technology axleNumber="1">Variable displacement elec. controlled</vif0.1:Technology> + </vif0.1:SteeringPump> + <vif0.1:ElectricSystem> + <vif0.1:AlternatorTechnology>smart</vif0.1:AlternatorTechnology> + <vif0.1:SmartAlternator> + <vif0.1:RatedCurrent>310</vif0.1:RatedCurrent> + <vif0.1:RatedVoltage>48</vif0.1:RatedVoltage> + </vif0.1:SmartAlternator> + <vif0.1:Battery> + <vif0.1:BatteryTechnology>li-ion battery - high power</vif0.1:BatteryTechnology> + <vif0.1:RatedCapacity>1</vif0.1:RatedCapacity> + <vif0.1:NominalVoltage>48</vif0.1:NominalVoltage> + </vif0.1:Battery> + <vif0.1:SupplyFromHEVPossible>false</vif0.1:SupplyFromHEVPossible> + </vif0.1:ElectricSystem> + <vif0.1:PneumaticSystem> + <vif0.1:SizeOfAirSupply>Large Supply 2-stage</vif0.1:SizeOfAirSupply> + <vif0.1:CompressorDrive>mechanically</vif0.1:CompressorDrive> + <vif0.1:Clutch>none</vif0.1:Clutch> + <vif0.1:CompressorRatio>1.000</vif0.1:CompressorRatio> + <vif0.1:SmartCompressionSystem>false</vif0.1:SmartCompressionSystem> + <vif0.1:SmartRegenerationSystem>false</vif0.1:SmartRegenerationSystem> + <vif0.1:AirsuspensionControl>electronically</vif0.1:AirsuspensionControl> + <vif0.1:PneumaticSCRReagentDosing>true</vif0.1:PneumaticSCRReagentDosing> + </vif0.1:PneumaticSystem> + <vif0.1:HVAC> + <vif0.1:AdjustableCoolantThermostat>true</vif0.1:AdjustableCoolantThermostat> + <vif0.1:EngineWasteGasHeatExchanger>true</vif0.1:EngineWasteGasHeatExchanger> + </vif0.1:HVAC> + </vif0.1:Data> + </vif0.1:Auxiliaries> + </vif0.1:Components> + </vif0.1:Vehicle> + <vif0.1:InputDataSignature> + <di:Reference URI="#VEH-PrimaryBus_nonSmart"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>W1n8NZVFsw4QrL7Dy/rJ1J02Xk4UvfMfBfZ+lO5x2i4=</di:DigestValue> + </di:Reference> + </vif0.1:InputDataSignature> + <vif0.1:ManufacturerRecordSignature> + <di:Reference URI="#RESULT-0f8290ebb0b8446c9841"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>vo6X6Me6wrxqosr7cAnrliB6kTd8RVmvw5AJ86ezzD4=</di:DigestValue> + </di:Reference> + </vif0.1:ManufacturerRecordSignature> + <vif0.1:Results> + <vif0.1:Status>success</vif0.1:Status> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Heavy Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13098.63</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1123.63</vif0.1:Payload> + <vif0.1:PassengerCount>16.52</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">19.26127</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1411.89</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Heavy Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">17593.16</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">5618.16</vif0.1:Payload> + <vif0.1:PassengerCount>82.62</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">23.36173</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1712.46</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13098.63</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1123.63</vif0.1:Payload> + <vif0.1:PassengerCount>16.52</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">15.79525</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1157.82</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">17593.16</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">5618.16</vif0.1:Payload> + <vif0.1:PassengerCount>82.62</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">19.17590</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1405.63</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Suburban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13098.63</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1123.63</vif0.1:Payload> + <vif0.1:PassengerCount>16.52</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">14.24764</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1044.38</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Suburban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">17593.16</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">5618.16</vif0.1:Payload> + <vif0.1:PassengerCount>82.62</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">17.32635</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1270.06</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Interurban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13050.44</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1075.44</vif0.1:Payload> + <vif0.1:PassengerCount>15.15</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">12.66038</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">928.03</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Interurban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">15494.61</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">3519.61</vif0.1:Payload> + <vif0.1:PassengerCount>49.57</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">13.98543</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1025.16</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Heavy Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13543.34</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1193.34</vif0.1:Payload> + <vif0.1:PassengerCount>17.55</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">20.31731</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1489.30</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Heavy Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">18316.69</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">5966.69</vif0.1:Payload> + <vif0.1:PassengerCount>87.75</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">24.95584</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1829.32</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13543.34</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1193.34</vif0.1:Payload> + <vif0.1:PassengerCount>17.55</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">16.66413</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1221.52</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">18316.69</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">5966.69</vif0.1:Payload> + <vif0.1:PassengerCount>87.75</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">20.46277</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1499.96</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Suburban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13543.34</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1193.34</vif0.1:Payload> + <vif0.1:PassengerCount>17.55</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">14.85984</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1089.26</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Suburban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">18316.69</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">5966.69</vif0.1:Payload> + <vif0.1:PassengerCount>87.75</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">18.25391</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1338.05</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Interurban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">14225.44</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1075.44</vif0.1:Payload> + <vif0.1:PassengerCount>15.15</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">12.84841</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">941.82</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Interurban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">16669.61</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">3519.61</vif0.1:Payload> + <vif0.1:PassengerCount>49.57</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">14.17565</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1039.10</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Coach</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">14244.99</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1094.99</vif0.1:Payload> + <vif0.1:PassengerCount>15.42</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">11.06324</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">810.96</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Coach</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">15887.48</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">2737.48</vif0.1:Payload> + <vif0.1:PassengerCount>38.56</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">11.51205</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">843.86</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Interurban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">14662.82</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1262.82</vif0.1:Payload> + <vif0.1:PassengerCount>17.79</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">13.25759</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">971.81</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Interurban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">17609.41</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">4209.41</vif0.1:Payload> + <vif0.1:PassengerCount>59.29</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">14.86026</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1089.29</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Coach</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">14747.01</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1347.01</vif0.1:Payload> + <vif0.1:PassengerCount>18.97</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">11.54039</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">845.93</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Coach</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">16767.53</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">3367.53</vif0.1:Payload> + <vif0.1:PassengerCount>47.43</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">12.07723</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">885.29</vif0.1:CO2> + </vif0.1:Result> + </vif0.1:Results> + <vif0.1:ApplicationInformation> + <vif0.1:SimulationToolVersion>0.6.1.2050-DEV !!NOT FOR CERTIFICATION!!</vif0.1:SimulationToolVersion> + <vif0.1:Date>2020-08-12T12:05:05.0183214Z</vif0.1:Date> + </vif0.1:ApplicationInformation> + </vif0.1:Data> + <vif0.1:Signature> + <di:Reference URI="#PIF-0cfb413a8bf1457a8dcd"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>W7emEpfo1jlRFXGEtgmzLL1NyY0CLxWmWXeEAPjXpks=</di:DigestValue> + </di:Reference> + </vif0.1:Signature> + </vif0.1:PrimaryVehicle> + <vif0.1:ManufacturingStage stageCount="2"> + <vif0.1:Data xsi:type="BusManufacturingStageDataType" id="MST-61bb1be640414611890a"> + <vif0.1:HashPreviousStage> + <di:Reference URI="#PIF-0cfb413a8bf1457a8dcd"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>W7emEpfo1jlRFXGEtgmzLL1NyY0CLxWmWXeEAPjXpks=</di:DigestValue> + </di:Reference> + </vif0.1:HashPreviousStage> + <vif0.1:Vehicle xsi:type="v2.8:InterimStageInputType" id="VEH-9d733334cd9f41e0acad"> + <v2.8:Manufacturer>TUG</v2.8:Manufacturer> + <v2.8:ManufacturerAddress>Inffeldgasse 19</v2.8:ManufacturerAddress> + <v2.8:VIN>VIN-1234</v2.8:VIN> + <v2.8:Date>2021-06-06T22:00:00Z</v2.8:Date> + <v2.8:HeightIntegratedBody>3000</v2.8:HeightIntegratedBody> + <v2.8:VehicleLength>12000</v2.8:VehicleLength> + <v2.8:VehicleWidth>2550</v2.8:VehicleWidth> + <v2.8:EntranceHeight>250</v2.8:EntranceHeight> + <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> + <v2.8:Components xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xsi:type="v2.8:CompletedVehicleComponentsDeclarationType"> + <v2.8:AirDrag> + <v2.0:Data id="CabinX23h" xsi:type="v2.0:AirDragDataDeclarationType" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <v2.0:Manufacturer>Generic Manufacturer</v2.0:Manufacturer> + <v2.0:Model>Generic Model</v2.0:Model> + <v2.0:CertificationNumber>e12*0815/8051*2017/05E0000*00</v2.0:CertificationNumber> + <v2.0:Date>2017-03-24T15:00:00Z</v2.0:Date> + <v2.0:AppVersion>Vecto AirDrag x.y</v2.0:AppVersion> + <v2.0:CdxA_0>4.90</v2.0:CdxA_0> + <v2.0:TransferredCdxA>4.90</v2.0:TransferredCdxA> + <v2.0:DeclaredCdxA>4.90</v2.0:DeclaredCdxA> + </v2.0:Data> + <v2.0:Signature xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <di:Reference URI="#CabinX23h" xmlns:di="http://www.w3.org/2000/09/xmldsig#"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </v2.8:AirDrag> + </v2.8:Components> + </vif0.1:Vehicle> + <vif0.1:ApplicationInformation> + <vif0.1:SimulationToolVersion>0.7.3.2247-DEV</vif0.1:SimulationToolVersion> + <vif0.1:Date>2021-06-07T14:16:34.4975457Z</vif0.1:Date> + </vif0.1:ApplicationInformation> + </vif0.1:Data> + <vif0.1:Signature> + <di:Reference URI="#MST-61bb1be640414611890a"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>vksf02b9s63N8XzYQOI05wWEBGuGKNzvDoPPZZdtmc4=</di:DigestValue> + </di:Reference> + </vif0.1:Signature> + </vif0.1:ManufacturingStage> + <vif0.1:ManufacturingStage stageCount="3"> + <vif0.1:Data xsi:type="BusManufacturingStageDataType" id="MST-233e115924334252b720"> + <vif0.1:HashPreviousStage> + <di:Reference URI="#MST-61bb1be640414611890a"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>vksf02b9s63N8XzYQOI05wWEBGuGKNzvDoPPZZdtmc4=</di:DigestValue> + </di:Reference> + </vif0.1:HashPreviousStage> + <vif0.1:Vehicle xsi:type="v2.8:InterimStageInputType" id="VEH-c29d3888e9b04ae6bb76"> + <v2.8:Manufacturer>IVT</v2.8:Manufacturer> + <v2.8:ManufacturerAddress>Inffeldgasse 19</v2.8:ManufacturerAddress> + <v2.8:VIN>VIN-1234</v2.8:VIN> + <v2.8:Date>2021-06-06T22:00:00Z</v2.8:Date> + <v2.8:AirdragModifiedMultistage>false</v2.8:AirdragModifiedMultistage> + <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> + <v2.8:Components xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xsi:type="v2.8:CompletedVehicleComponentsDeclarationType"> + <v2.8:Auxiliaries> + <v2.8:Data xsi:type="v2.8:CompletedVehicleAuxiliaryDataDeclarationType"> + <v2.8:ElectricSystem> + <v2.8:LEDLights> + <v2.8:Interiorlights>false</v2.8:Interiorlights> + <v2.8:Positionlights>false</v2.8:Positionlights> + <v2.8:Headlights>false</v2.8:Headlights> + </v2.8:LEDLights> + </v2.8:ElectricSystem> + <v2.8:HVAC> + <v2.8:SystemConfiguration>0</v2.8:SystemConfiguration> + <v2.8:HeatPumpTypeDriverCompartment>non R-744 2-stage</v2.8:HeatPumpTypeDriverCompartment> + <v2.8:HeatPumpModeDriverCompartment>cooling</v2.8:HeatPumpModeDriverCompartment> + <v2.8:HeatPumpTypePassengerCompartment>non R-744 4-stage</v2.8:HeatPumpTypePassengerCompartment> + <v2.8:HeatPumpModePassengerCompartment>cooling</v2.8:HeatPumpModePassengerCompartment> + </v2.8:HVAC> + </v2.8:Data> + </v2.8:Auxiliaries> + </v2.8:Components> + </vif0.1:Vehicle> + <vif0.1:ApplicationInformation> + <vif0.1:SimulationToolVersion>0.7.3.2247-DEV</vif0.1:SimulationToolVersion> + <vif0.1:Date>2021-06-07T14:19:48.8765868Z</vif0.1:Date> + </vif0.1:ApplicationInformation> + </vif0.1:Data> + <vif0.1:Signature> + <di:Reference URI="#MST-233e115924334252b720"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>UDttJZ/1Z3Q4jX4SH20+AQXUB8V/DGfSpGoHyF1MqQ0=</di:DigestValue> + </di:Reference> + </vif0.1:Signature> + </vif0.1:ManufacturingStage> + <vif0.1:ManufacturingStage stageCount="4"> + <vif0.1:Data xsi:type="BusManufacturingStageDataType" id="MST-cccd4fc555204aaab963"> + <vif0.1:HashPreviousStage> + <di:Reference URI="#MST-233e115924334252b720"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>UDttJZ/1Z3Q4jX4SH20+AQXUB8V/DGfSpGoHyF1MqQ0=</di:DigestValue> + </di:Reference> + </vif0.1:HashPreviousStage> + <vif0.1:Vehicle xsi:type="v2.8:InterimStageInputType" id="VEH-1f24ad93d65d42858e0e"> + <v2.8:Manufacturer>Some Manufacturer</v2.8:Manufacturer> + <v2.8:ManufacturerAddress>Infinite Loop 1</v2.8:ManufacturerAddress> + <v2.8:VIN>VEH-1234567890</v2.8:VIN> + <v2.8:Date>2021-06-06T22:00:00Z</v2.8:Date> + <v2.8:LegislativeCategory>M3</v2.8:LegislativeCategory> + <v2.8:CorrectedActualMass>10680</v2.8:CorrectedActualMass> + <v2.8:TechnicalPermissibleMaximumLadenMass>18000</v2.8:TechnicalPermissibleMaximumLadenMass> + <v2.8:NgTankSystem>Compressed</v2.8:NgTankSystem> + <v2.8:ClassBus>II</v2.8:ClassBus> + <v2.8:NumberPassengerSeatsLowerDeck>86</v2.8:NumberPassengerSeatsLowerDeck> + <v2.8:NumberPassengersStandingLowerDeck>0</v2.8:NumberPassengersStandingLowerDeck> + <v2.8:NumberPassengerSeatsUpperDeck>0</v2.8:NumberPassengerSeatsUpperDeck> + <v2.8:NumberPassengersStandingUpperDeck>0</v2.8:NumberPassengersStandingUpperDeck> + <v2.8:BodyworkCode>CE</v2.8:BodyworkCode> + <v2.8:LowEntry>true</v2.8:LowEntry> + <v2.8:HeightIntegratedBody>3000</v2.8:HeightIntegratedBody> + <v2.8:VehicleLength>10633</v2.8:VehicleLength> + <v2.8:VehicleWidth>2550</v2.8:VehicleWidth> + <v2.8:EntranceHeight>270</v2.8:EntranceHeight> + <v2.8:DoorDriveTechnology>pneumatic</v2.8:DoorDriveTechnology> + <v2.8:VehicleDeclarationType>final</v2.8:VehicleDeclarationType> + <v2.8:Components xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xsi:type="v2.8:CompletedVehicleComponentsDeclarationType"> + <v2.8:AirDrag> + <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Manufacturer</Manufacturer> + <Model>Generic Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-03-24T15:00:00Z</Date> + <AppVersion>Vecto AirDrag x.y</AppVersion> + <CdxA_0>4.90</CdxA_0> + <TransferredCdxA>4.90</TransferredCdxA> + <DeclaredCdxA>4.90</DeclaredCdxA> + </Data> + <v2.0:Signature xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <di:Reference URI="#CabinX23h" xmlns:di="http://www.w3.org/2000/09/xmldsig#"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </v2.8:AirDrag> + <v2.8:Auxiliaries> + <v2.8:Data xsi:type="v2.8:CompletedVehicleAuxiliaryDataDeclarationType"> + <v2.8:ElectricSystem> + <v2.8:LEDLights> + <v2.8:Interiorlights>true</v2.8:Interiorlights> + <v2.8:Dayrunninglights>true</v2.8:Dayrunninglights> + <v2.8:Positionlights>true</v2.8:Positionlights> + <v2.8:Brakelights>true</v2.8:Brakelights> + <v2.8:Headlights>true</v2.8:Headlights> + </v2.8:LEDLights> + </v2.8:ElectricSystem> + <v2.8:HVAC> + <v2.8:SystemConfiguration>6</v2.8:SystemConfiguration> + <v2.8:HeatPumpTypeDriverCompartment>none</v2.8:HeatPumpTypeDriverCompartment> + <v2.8:HeatPumpModeDriverCompartment>N.A.</v2.8:HeatPumpModeDriverCompartment> + <v2.8:HeatPumpTypePassengerCompartment>non R-744 2-stage</v2.8:HeatPumpTypePassengerCompartment> + <v2.8:HeatPumpModePassengerCompartment>cooling</v2.8:HeatPumpModePassengerCompartment> + <v2.8:AuxiliaryHeaterPower>15000</v2.8:AuxiliaryHeaterPower> + <v2.8:DoubleGlazing>true</v2.8:DoubleGlazing> + <v2.8:AdjustableAuxiliaryHeater>false</v2.8:AdjustableAuxiliaryHeater> + <v2.8:SeparateAirDistributionDucts>false</v2.8:SeparateAirDistributionDucts> + </v2.8:HVAC> + </v2.8:Data> + </v2.8:Auxiliaries> + </v2.8:Components> + </vif0.1:Vehicle> + <vif0.1:ApplicationInformation> + <vif0.1:SimulationToolVersion>0.7.3.2247-DEV</vif0.1:SimulationToolVersion> + <vif0.1:Date>2021-06-07T14:20:29.2200233Z</vif0.1:Date> + </vif0.1:ApplicationInformation> + </vif0.1:Data> + <vif0.1:Signature> + <di:Reference URI="#MST-cccd4fc555204aaab963"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>tIady8bCsDpxkxIqZG33mOcE2m8UwigTEdV60fDA8R8=</di:DigestValue> + </di:Reference> + </vif0.1:Signature> + </vif0.1:ManufacturingStage> +</vif0.1:VectoOutputMultistage> \ No newline at end of file diff --git a/Vecto3GUI2020Test/inputdata/interim2.VIF_Report_3.xml b/Vecto3GUI2020Test/inputdata/interim2.VIF_Report_3.xml new file mode 100644 index 0000000000000000000000000000000000000000..c181235c609cf5f861714f5fdde607e340a464df --- /dev/null +++ b/Vecto3GUI2020Test/inputdata/interim2.VIF_Report_3.xml @@ -0,0 +1,684 @@ +<?xml version="1.0" encoding="utf-8"?> +<vif0.1:VectoOutputMultistage xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xmlns:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD//DEV/VectoOutputMultistage.0.1.xsd"> + <vif0.1:PrimaryVehicle> + <vif0.1:Data xsi:type="PrimaryVehicleDataType" id="PIF-0cfb413a8bf1457a8dcd"> + <vif0.1:Vehicle xsi:type="VehiclePIFType"> + <vif0.1:ManufacturerPrimaryVehicle>Generic Bus Manufacturer</vif0.1:ManufacturerPrimaryVehicle> + <vif0.1:ManufacturerAddressPrimaryVehicle>Street, ZIP City</vif0.1:ManufacturerAddressPrimaryVehicle> + <vif0.1:Model>Generic Model</vif0.1:Model> + <vif0.1:VIN>VEH-1234567890_nonSmart</vif0.1:VIN> + <vif0.1:Date>2017-02-15T11:00:00Z</vif0.1:Date> + <vif0.1:LegislativeCategory>M3</vif0.1:LegislativeCategory> + <vif0.1:ChassisConfiguration>Bus</vif0.1:ChassisConfiguration> + <vif0.1:AxleConfiguration>4x2</vif0.1:AxleConfiguration> + <vif0.1:Articulated>false</vif0.1:Articulated> + <vif0.1:TechnicalPermissibleMaximumLadenMass>20000</vif0.1:TechnicalPermissibleMaximumLadenMass> + <vif0.1:IdlingSpeed>700</vif0.1:IdlingSpeed> + <vif0.1:RetarderType>Transmission Output Retarder</vif0.1:RetarderType> + <vif0.1:RetarderRatio>1.000</vif0.1:RetarderRatio> + <vif0.1:AngledriveType>None</vif0.1:AngledriveType> + <vif0.1:ZeroEmissionVehicle>false</vif0.1:ZeroEmissionVehicle> + <vif0.1:ADAS xmlns:adas="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xsi:type="adas:AdvancedDriverAssistantSystemsType"> + <adas:EngineStopStart>false</adas:EngineStopStart> + <adas:EcoRollWithoutEngineStop>false</adas:EcoRollWithoutEngineStop> + <adas:EcoRollWithEngineStop>false</adas:EcoRollWithEngineStop> + <adas:PredictiveCruiseControl>none</adas:PredictiveCruiseControl> + </vif0.1:ADAS> + <vif0.1:TorqueLimits xmlns:tcl="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="tcl:TorqueLimitsType"> + <tcl:Entry gear="6" maxTorque="1800" /> + <tcl:Entry gear="1" maxTorque="2500" /> + </vif0.1:TorqueLimits> + <vif0.1:Components xsi:type="VehicleComponentsPIFType"> + <vif0.1:Engine> + <vif0.1:Data xsi:type="EngineDataPIFType"> + <vif0.1:Manufacturer>Generic Engine Manufacturer</vif0.1:Manufacturer> + <vif0.1:Model>Generic primary bus 41 Engine</vif0.1:Model> + <vif0.1:CertificationNumber>e12*0815/8051*2017/05E0000*00</vif0.1:CertificationNumber> + <vif0.1:Date>2017-02-15T11:00:00Z</vif0.1:Date> + <vif0.1:AppVersion>VectoEngine x.y</vif0.1:AppVersion> + <vif0.1:Displacement>7700</vif0.1:Displacement> + <vif0.1:RatedSpeed>2200</vif0.1:RatedSpeed> + <vif0.1:RatedPower>200000</vif0.1:RatedPower> + <vif0.1:MaxEngineTorque>1100</vif0.1:MaxEngineTorque> + <vif0.1:WHRType> + <MechanicalOutputICE xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3">false</MechanicalOutputICE> + <MechanicalOutputDrivetrain xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3">false</MechanicalOutputDrivetrain> + <ElectricalOutput xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3">false</ElectricalOutput> + </vif0.1:WHRType> + <vif0.1:Mode> + <vif0.1:IdlingSpeed>700</vif0.1:IdlingSpeed> + <vif0.1:FullLoadAndDragCurve> + <vif0.1:Entry engineSpeed="600.00" maxTorque="546.02" dragTorque="-39.66" /> + <vif0.1:Entry engineSpeed="800.00" maxTorque="760.78" dragTorque="-48.83" /> + <vif0.1:Entry engineSpeed="1000.00" maxTorque="973.29" dragTorque="-56.44" /> + <vif0.1:Entry engineSpeed="1200.00" maxTorque="1092.03" dragTorque="-67.29" /> + <vif0.1:Entry engineSpeed="1400.00" maxTorque="1092.03" dragTorque="-77.58" /> + <vif0.1:Entry engineSpeed="1600.00" maxTorque="1092.03" dragTorque="-87.88" /> + <vif0.1:Entry engineSpeed="1800.00" maxTorque="1022.52" dragTorque="-94.11" /> + <vif0.1:Entry engineSpeed="2000.00" maxTorque="944.17" dragTorque="-100.76" /> + <vif0.1:Entry engineSpeed="2200.00" maxTorque="868.12" dragTorque="-113.36" /> + <vif0.1:Entry engineSpeed="2400.00" maxTorque="741.99" dragTorque="-122.60" /> + <vif0.1:Entry engineSpeed="2500.00" maxTorque="647.29" dragTorque="-126.66" /> + <vif0.1:Entry engineSpeed="2600.00" maxTorque="0.00" dragTorque="-132.07" /> + </vif0.1:FullLoadAndDragCurve> + <vif0.1:Fuels> + <vif0.1:FuelType>Diesel CI</vif0.1:FuelType> + </vif0.1:Fuels> + </vif0.1:Mode> + </vif0.1:Data> + </vif0.1:Engine> + <vif0.1:Transmission> + <vif0.1:Data xsi:type="TransmissionDataPIFType"> + <vif0.1:Manufacturer>Generic Gearbox Manufacturer</vif0.1:Manufacturer> + <vif0.1:Model>AT 6 Gear</vif0.1:Model> + <vif0.1:MainCertificationMethod>Standard values</vif0.1:MainCertificationMethod> + <vif0.1:Date>2017-01-11T11:00:00Z</vif0.1:Date> + <vif0.1:AppVersion>3.0.1</vif0.1:AppVersion> + <vif0.1:TransmissionType>APT-S</vif0.1:TransmissionType> + <vif0.1:Gears xsi:type="TransmissionGearsPIFType"> + <vif0.1:Gear number="1"> + <vif0.1:Ratio>3.364</vif0.1:Ratio> + <vif0.1:MaxTorque>1900</vif0.1:MaxTorque> + <vif0.1:MaxSpeed>2500</vif0.1:MaxSpeed> + </vif0.1:Gear> + <vif0.1:Gear number="2"> + <vif0.1:Ratio>1.909</vif0.1:Ratio> + <vif0.1:MaxTorque>1900</vif0.1:MaxTorque> + <vif0.1:MaxSpeed>2500</vif0.1:MaxSpeed> + </vif0.1:Gear> + <vif0.1:Gear number="3"> + <vif0.1:Ratio>1.421</vif0.1:Ratio> + <vif0.1:MaxSpeed>2500</vif0.1:MaxSpeed> + </vif0.1:Gear> + <vif0.1:Gear number="4"> + <vif0.1:Ratio>1.000</vif0.1:Ratio> + <vif0.1:MaxSpeed>2500</vif0.1:MaxSpeed> + </vif0.1:Gear> + <vif0.1:Gear number="5"> + <vif0.1:Ratio>0.720</vif0.1:Ratio> + <vif0.1:MaxSpeed>2500</vif0.1:MaxSpeed> + </vif0.1:Gear> + <vif0.1:Gear number="6"> + <vif0.1:Ratio>0.615</vif0.1:Ratio> + <vif0.1:MaxSpeed>2500</vif0.1:MaxSpeed> + </vif0.1:Gear> + </vif0.1:Gears> + </vif0.1:Data> + </vif0.1:Transmission> + <vif0.1:Axlegear> + <vif0.1:Data xsi:type="AxlegearDataPIFType"> + <vif0.1:Manufacturer>Generic Gearbox Manufacturer</vif0.1:Manufacturer> + <vif0.1:Model>Generic primary bus 41 AxleGear</vif0.1:Model> + <vif0.1:CertificationMethod>Standard values</vif0.1:CertificationMethod> + <vif0.1:Date>2017-01-11T11:00:00Z</vif0.1:Date> + <vif0.1:AppVersion>3.0.1</vif0.1:AppVersion> + <vif0.1:LineType>Single portal axle</vif0.1:LineType> + <vif0.1:Ratio>6.500</vif0.1:Ratio> + </vif0.1:Data> + </vif0.1:Axlegear> + <vif0.1:AxleWheels> + <vif0.1:Data xsi:type="AxleWheelsDataPIFType"> + <vif0.1:Axles> + <vif0.1:Axle axleNumber="1" xsi:type="AxleDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <AxleType>VehicleNonDriven</AxleType> + <TwinTyres>false</TwinTyres> + <Steered>true</Steered> + <Tyre> + <Data id="WHL-5432198760-315-70-R22.5" xsi:type="TyreDataDeclarationType"> + <Manufacturer>Generic Wheels Manufacturer</Manufacturer> + <Model>Generic Wheel</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T14:00:00Z</Date> + <AppVersion>Tyre Generation App 1.0</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0055</RRCDeclared> + <FzISO>31300</FzISO> + </Data> + <Signature> + <di:Reference URI="#WHL-5432198760-315-70-R22.5" xmlns:di="http://www.w3.org/2000/09/xmldsig#"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>4TkUGQTX8tevHOU9Cj9uyCFuI/aqcEYlo/gyVjVQmv0=</di:DigestValue> + </di:Reference> + </Signature> + </Tyre> + </vif0.1:Axle> + <vif0.1:Axle axleNumber="2" xsi:type="AxleDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <AxleType>VehicleDriven</AxleType> + <TwinTyres>true</TwinTyres> + <Steered>false</Steered> + <Tyre> + <Data id="WHL-5432198760-315-70-R22.5" xsi:type="TyreDataDeclarationType"> + <Manufacturer>Generic Wheels Manufacturer</Manufacturer> + <Model>Generic Wheel</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T14:00:00Z</Date> + <AppVersion>Tyre Generation App 1.0</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0063</RRCDeclared> + <FzISO>31300</FzISO> + </Data> + <Signature> + <di:Reference URI="#WHL-5432198760-315-70-R22.5" xmlns:di="http://www.w3.org/2000/09/xmldsig#"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>KljvtvGUUQ/L7MiLVAqU+bckL5PNDNNwdeLH9kUVrfM=</di:DigestValue> + </di:Reference> + </Signature> + </Tyre> + </vif0.1:Axle> + </vif0.1:Axles> + </vif0.1:Data> + </vif0.1:AxleWheels> + <vif0.1:Auxiliaries> + <vif0.1:Data xsi:type="AuxiliaryDataPIFType"> + <vif0.1:Fan> + <vif0.1:Technology>Hydraulic driven - Constant displacement pump</vif0.1:Technology> + </vif0.1:Fan> + <vif0.1:SteeringPump> + <vif0.1:Technology axleNumber="1">Variable displacement elec. controlled</vif0.1:Technology> + </vif0.1:SteeringPump> + <vif0.1:ElectricSystem> + <vif0.1:AlternatorTechnology>smart</vif0.1:AlternatorTechnology> + <vif0.1:SmartAlternator> + <vif0.1:RatedCurrent>310</vif0.1:RatedCurrent> + <vif0.1:RatedVoltage>48</vif0.1:RatedVoltage> + </vif0.1:SmartAlternator> + <vif0.1:Battery> + <vif0.1:BatteryTechnology>li-ion battery - high power</vif0.1:BatteryTechnology> + <vif0.1:RatedCapacity>1</vif0.1:RatedCapacity> + <vif0.1:NominalVoltage>48</vif0.1:NominalVoltage> + </vif0.1:Battery> + <vif0.1:SupplyFromHEVPossible>false</vif0.1:SupplyFromHEVPossible> + </vif0.1:ElectricSystem> + <vif0.1:PneumaticSystem> + <vif0.1:SizeOfAirSupply>Large Supply 2-stage</vif0.1:SizeOfAirSupply> + <vif0.1:CompressorDrive>mechanically</vif0.1:CompressorDrive> + <vif0.1:Clutch>none</vif0.1:Clutch> + <vif0.1:CompressorRatio>1.000</vif0.1:CompressorRatio> + <vif0.1:SmartCompressionSystem>false</vif0.1:SmartCompressionSystem> + <vif0.1:SmartRegenerationSystem>false</vif0.1:SmartRegenerationSystem> + <vif0.1:AirsuspensionControl>electronically</vif0.1:AirsuspensionControl> + <vif0.1:PneumaticSCRReagentDosing>true</vif0.1:PneumaticSCRReagentDosing> + </vif0.1:PneumaticSystem> + <vif0.1:HVAC> + <vif0.1:AdjustableCoolantThermostat>true</vif0.1:AdjustableCoolantThermostat> + <vif0.1:EngineWasteGasHeatExchanger>true</vif0.1:EngineWasteGasHeatExchanger> + </vif0.1:HVAC> + </vif0.1:Data> + </vif0.1:Auxiliaries> + </vif0.1:Components> + </vif0.1:Vehicle> + <vif0.1:InputDataSignature> + <di:Reference URI="#VEH-PrimaryBus_nonSmart"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>W1n8NZVFsw4QrL7Dy/rJ1J02Xk4UvfMfBfZ+lO5x2i4=</di:DigestValue> + </di:Reference> + </vif0.1:InputDataSignature> + <vif0.1:ManufacturerRecordSignature> + <di:Reference URI="#RESULT-0f8290ebb0b8446c9841"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>vo6X6Me6wrxqosr7cAnrliB6kTd8RVmvw5AJ86ezzD4=</di:DigestValue> + </di:Reference> + </vif0.1:ManufacturerRecordSignature> + <vif0.1:Results> + <vif0.1:Status>success</vif0.1:Status> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Heavy Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13098.63</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1123.63</vif0.1:Payload> + <vif0.1:PassengerCount>16.52</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">19.26127</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1411.89</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Heavy Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">17593.16</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">5618.16</vif0.1:Payload> + <vif0.1:PassengerCount>82.62</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">23.36173</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1712.46</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13098.63</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1123.63</vif0.1:Payload> + <vif0.1:PassengerCount>16.52</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">15.79525</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1157.82</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">17593.16</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">5618.16</vif0.1:Payload> + <vif0.1:PassengerCount>82.62</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">19.17590</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1405.63</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Suburban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13098.63</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1123.63</vif0.1:Payload> + <vif0.1:PassengerCount>16.52</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">14.24764</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1044.38</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Suburban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">17593.16</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">5618.16</vif0.1:Payload> + <vif0.1:PassengerCount>82.62</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">17.32635</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1270.06</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Interurban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13050.44</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1075.44</vif0.1:Payload> + <vif0.1:PassengerCount>15.15</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">12.66038</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">928.03</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Interurban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">15494.61</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">3519.61</vif0.1:Payload> + <vif0.1:PassengerCount>49.57</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">13.98543</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1025.16</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Heavy Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13543.34</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1193.34</vif0.1:Payload> + <vif0.1:PassengerCount>17.55</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">20.31731</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1489.30</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Heavy Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">18316.69</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">5966.69</vif0.1:Payload> + <vif0.1:PassengerCount>87.75</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">24.95584</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1829.32</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13543.34</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1193.34</vif0.1:Payload> + <vif0.1:PassengerCount>17.55</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">16.66413</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1221.52</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">18316.69</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">5966.69</vif0.1:Payload> + <vif0.1:PassengerCount>87.75</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">20.46277</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1499.96</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Suburban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13543.34</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1193.34</vif0.1:Payload> + <vif0.1:PassengerCount>17.55</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">14.85984</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1089.26</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Suburban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">18316.69</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">5966.69</vif0.1:Payload> + <vif0.1:PassengerCount>87.75</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">18.25391</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1338.05</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Interurban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">14225.44</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1075.44</vif0.1:Payload> + <vif0.1:PassengerCount>15.15</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">12.84841</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">941.82</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Interurban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">16669.61</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">3519.61</vif0.1:Payload> + <vif0.1:PassengerCount>49.57</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">14.17565</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1039.10</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Coach</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">14244.99</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1094.99</vif0.1:Payload> + <vif0.1:PassengerCount>15.42</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">11.06324</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">810.96</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Coach</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">15887.48</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">2737.48</vif0.1:Payload> + <vif0.1:PassengerCount>38.56</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">11.51205</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">843.86</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Interurban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">14662.82</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1262.82</vif0.1:Payload> + <vif0.1:PassengerCount>17.79</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">13.25759</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">971.81</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Interurban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">17609.41</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">4209.41</vif0.1:Payload> + <vif0.1:PassengerCount>59.29</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">14.86026</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1089.29</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Coach</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">14747.01</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1347.01</vif0.1:Payload> + <vif0.1:PassengerCount>18.97</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">11.54039</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">845.93</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Coach</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">16767.53</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">3367.53</vif0.1:Payload> + <vif0.1:PassengerCount>47.43</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">12.07723</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">885.29</vif0.1:CO2> + </vif0.1:Result> + </vif0.1:Results> + <vif0.1:ApplicationInformation> + <vif0.1:SimulationToolVersion>0.6.1.2050-DEV !!NOT FOR CERTIFICATION!!</vif0.1:SimulationToolVersion> + <vif0.1:Date>2020-08-12T12:05:05.0183214Z</vif0.1:Date> + </vif0.1:ApplicationInformation> + </vif0.1:Data> + <vif0.1:Signature> + <di:Reference URI="#PIF-0cfb413a8bf1457a8dcd"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>W7emEpfo1jlRFXGEtgmzLL1NyY0CLxWmWXeEAPjXpks=</di:DigestValue> + </di:Reference> + </vif0.1:Signature> + </vif0.1:PrimaryVehicle> + <vif0.1:ManufacturingStage stageCount="2"> + <vif0.1:Data xsi:type="BusManufacturingStageDataType" id="MST-61bb1be640414611890a"> + <vif0.1:HashPreviousStage> + <di:Reference URI="#PIF-0cfb413a8bf1457a8dcd"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>W7emEpfo1jlRFXGEtgmzLL1NyY0CLxWmWXeEAPjXpks=</di:DigestValue> + </di:Reference> + </vif0.1:HashPreviousStage> + <vif0.1:Vehicle xsi:type="v2.8:InterimStageInputType" id="VEH-9d733334cd9f41e0acad"> + <v2.8:Manufacturer>TUG</v2.8:Manufacturer> + <v2.8:ManufacturerAddress>Inffeldgasse 19</v2.8:ManufacturerAddress> + <v2.8:VIN>VIN-1234</v2.8:VIN> + <v2.8:Date>2021-06-06T22:00:00Z</v2.8:Date> + <v2.8:HeightIntegratedBody>3000</v2.8:HeightIntegratedBody> + <v2.8:VehicleLength>12000</v2.8:VehicleLength> + <v2.8:VehicleWidth>2550</v2.8:VehicleWidth> + <v2.8:EntranceHeight>250</v2.8:EntranceHeight> + <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> + <v2.8:Components xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xsi:type="v2.8:CompletedVehicleComponentsDeclarationType"> + <v2.8:AirDrag> + <v2.0:Data id="CabinX23h" xsi:type="v2.0:AirDragDataDeclarationType" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <v2.0:Manufacturer>Generic Manufacturer</v2.0:Manufacturer> + <v2.0:Model>Generic Model</v2.0:Model> + <v2.0:CertificationNumber>e12*0815/8051*2017/05E0000*00</v2.0:CertificationNumber> + <v2.0:Date>2017-03-24T15:00:00Z</v2.0:Date> + <v2.0:AppVersion>Vecto AirDrag x.y</v2.0:AppVersion> + <v2.0:CdxA_0>4.90</v2.0:CdxA_0> + <v2.0:TransferredCdxA>4.90</v2.0:TransferredCdxA> + <v2.0:DeclaredCdxA>4.90</v2.0:DeclaredCdxA> + </v2.0:Data> + <v2.0:Signature xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <di:Reference URI="#CabinX23h" xmlns:di="http://www.w3.org/2000/09/xmldsig#"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </v2.8:AirDrag> + </v2.8:Components> + </vif0.1:Vehicle> + <vif0.1:ApplicationInformation> + <vif0.1:SimulationToolVersion>0.7.3.2247-DEV</vif0.1:SimulationToolVersion> + <vif0.1:Date>2021-06-07T14:16:34.4975457Z</vif0.1:Date> + </vif0.1:ApplicationInformation> + </vif0.1:Data> + <vif0.1:Signature> + <di:Reference URI="#MST-61bb1be640414611890a"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>vksf02b9s63N8XzYQOI05wWEBGuGKNzvDoPPZZdtmc4=</di:DigestValue> + </di:Reference> + </vif0.1:Signature> + </vif0.1:ManufacturingStage> + <vif0.1:ManufacturingStage stageCount="3"> + <vif0.1:Data xsi:type="BusManufacturingStageDataType" id="MST-233e115924334252b720"> + <vif0.1:HashPreviousStage> + <di:Reference URI="#MST-61bb1be640414611890a"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>vksf02b9s63N8XzYQOI05wWEBGuGKNzvDoPPZZdtmc4=</di:DigestValue> + </di:Reference> + </vif0.1:HashPreviousStage> + <vif0.1:Vehicle xsi:type="v2.8:InterimStageInputType" id="VEH-c29d3888e9b04ae6bb76"> + <v2.8:Manufacturer>IVT</v2.8:Manufacturer> + <v2.8:ManufacturerAddress>Inffeldgasse 19</v2.8:ManufacturerAddress> + <v2.8:VIN>VIN-1234</v2.8:VIN> + <v2.8:Date>2021-06-06T22:00:00Z</v2.8:Date> + <v2.8:AirdragModifiedMultistage>false</v2.8:AirdragModifiedMultistage> + <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> + <v2.8:Components xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xsi:type="v2.8:CompletedVehicleComponentsDeclarationType"> + <v2.8:Auxiliaries> + <v2.8:Data xsi:type="v2.8:CompletedVehicleAuxiliaryDataDeclarationType"> + <v2.8:ElectricSystem> + <v2.8:LEDLights> + <v2.8:Interiorlights>false</v2.8:Interiorlights> + <v2.8:Positionlights>false</v2.8:Positionlights> + <v2.8:Headlights>false</v2.8:Headlights> + </v2.8:LEDLights> + </v2.8:ElectricSystem> + <v2.8:HVAC> + <v2.8:SystemConfiguration>0</v2.8:SystemConfiguration> + <v2.8:HeatPumpTypeDriverCompartment>non R-744 2-stage</v2.8:HeatPumpTypeDriverCompartment> + <v2.8:HeatPumpModeDriverCompartment>cooling</v2.8:HeatPumpModeDriverCompartment> + <v2.8:HeatPumpTypePassengerCompartment>non R-744 4-stage</v2.8:HeatPumpTypePassengerCompartment> + <v2.8:HeatPumpModePassengerCompartment>cooling</v2.8:HeatPumpModePassengerCompartment> + </v2.8:HVAC> + </v2.8:Data> + </v2.8:Auxiliaries> + </v2.8:Components> + </vif0.1:Vehicle> + <vif0.1:ApplicationInformation> + <vif0.1:SimulationToolVersion>0.7.3.2247-DEV</vif0.1:SimulationToolVersion> + <vif0.1:Date>2021-06-07T14:19:48.8765868Z</vif0.1:Date> + </vif0.1:ApplicationInformation> + </vif0.1:Data> + <vif0.1:Signature> + <di:Reference URI="#MST-233e115924334252b720"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>UDttJZ/1Z3Q4jX4SH20+AQXUB8V/DGfSpGoHyF1MqQ0=</di:DigestValue> + </di:Reference> + </vif0.1:Signature> + </vif0.1:ManufacturingStage> +</vif0.1:VectoOutputMultistage> \ No newline at end of file diff --git a/Vecto3GUI2020Test/inputdata/vecto_vehicle-completed_heavyBus_31b.xml b/Vecto3GUI2020Test/inputdata/vecto_vehicle-completed_heavyBus_31b.xml new file mode 100644 index 0000000000000000000000000000000000000000..f617c5c3545e266d7e7cbfae03eb933abcb5199a --- /dev/null +++ b/Vecto3GUI2020Test/inputdata/vecto_vehicle-completed_heavyBus_31b.xml @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD//DEV/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="InterimStageInputType"> + <Manufacturer>Some Manufacturer</Manufacturer> + <ManufacturerAddress>Infinite Loop 1</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <Date>2020-01-09T11:00:00Z</Date> + <Model>Sample Bus Model</Model> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>10680</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>18000</TechnicalPermissibleMaximumLadenMass> + <AirdragModifiedMultistage>true</AirdragModifiedMultistage> + <NgTankSystem>Compressed</NgTankSystem> + <ClassBus>II</ClassBus> + <NumberPassengerSeatsLowerDeck>86</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>0</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>0</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>0</NumberPassengersStandingUpperDeck> + <BodyworkCode>CE</BodyworkCode> + <LowEntry>true</LowEntry> + <HeightIntegratedBody>3000</HeightIntegratedBody> + <VehicleLength>10633</VehicleLength> + <VehicleWidth>2550</VehicleWidth> + <EntranceHeight>270</EntranceHeight> + <DoorDriveTechnology>pneumatic</DoorDriveTechnology> + <VehicleDeclarationType>final</VehicleDeclarationType> + <Components xsi:type="CompletedVehicleComponentsDeclarationType"> + <AirDrag> + <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Manufacturer</Manufacturer> + <Model>Generic Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-03-24T15:00:00Z</Date> + <AppVersion>Vecto AirDrag x.y</AppVersion> + <CdxA_0>4.90</CdxA_0> + <TransferredCdxA>4.90</TransferredCdxA> + <DeclaredCdxA>4.90</DeclaredCdxA> + </Data> + <v2.0:Signature> + <di:Reference URI="#CabinX23h"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </AirDrag> + <Auxiliaries> + <Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>true</Interiorlights> + <Dayrunninglights>true</Dayrunninglights> + <Positionlights>true</Positionlights> + <Brakelights>true</Brakelights> + <Headlights>true</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>6</SystemConfiguration> + <HeatPumpTypeDriverCompartment>none</HeatPumpTypeDriverCompartment> + <HeatPumpModeDriverCompartment>N.A.</HeatPumpModeDriverCompartment> + <HeatPumpTypePassengerCompartment>non R-744 2-stage</HeatPumpTypePassengerCompartment> + <HeatPumpModePassengerCompartment>cooling</HeatPumpModePassengerCompartment> + <AuxiliaryHeaterPower>15000</AuxiliaryHeaterPower> + <DoubleGlazing>true</DoubleGlazing> + <AdjustableAuxiliaryHeater>false</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>false</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCore/OutputData/XML/XMLMultistageBusReport.cs b/VectoCore/VectoCore/OutputData/XML/XMLMultistageBusReport.cs index ce6de4a3804e55b595105358b2d5707265b7cc17..106ef6b5d02102fa977ed58382f0fc881e618764 100644 --- a/VectoCore/VectoCore/OutputData/XML/XMLMultistageBusReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/XMLMultistageBusReport.cs @@ -277,10 +277,9 @@ namespace TUGraz.VectoCore.OutputData.XML switch (_vehicleInputData.AirdragModifiedMultistage) { case null: throw new VectoException("AirdragModifiedMultistage must be set if an airdrag component has been set in previous stages."); - case false: + default: return new XElement(v28 + XMLNames.Bus_AirdragModifiedMultistage, _vehicleInputData.AirdragModifiedMultistage); } - return null; } private XElement GetADAS(IAdvancedDriverAssistantSystemDeclarationInputData adasData) @@ -318,7 +317,7 @@ namespace TUGraz.VectoCore.OutputData.XML private XElement GetBusAirdrag(IAirdragDeclarationInputData airdrag) { - if (airdrag != null) + if (airdrag != null && _vehicleInputData.AirdragModifiedMultistage != false) return GetAirdragElement(airdrag); return _vehicleInputData.AirdragModifiedMultistage == true diff --git a/VectoCore/VectoCoreTest/Integration/Multistage/MultistageVehicleTest.cs b/VectoCore/VectoCoreTest/Integration/Multistage/MultistageVehicleTest.cs index 305c2a461dbb4837cff635618cc1f2ac3c462323..ed000eb7d38711d7a9c60e0cdecf0debe6f78020 100644 --- a/VectoCore/VectoCoreTest/Integration/Multistage/MultistageVehicleTest.cs +++ b/VectoCore/VectoCoreTest/Integration/Multistage/MultistageVehicleTest.cs @@ -346,7 +346,8 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage Assert.IsTrue(progress.All(r => r.Value.Success), string.Concat<Exception>(progress.Select(r => r.Value.Error))); Assert.IsTrue(jobContainer.Runs.All(r => r.Success), string.Concat<Exception>(jobContainer.Runs.Select(r => r.ExecException))); } - + + [NonParallelizable] [TestCase(PrimaryBus, TestName = "Multistage Write VIF Primary"), TestCase(PrimaryBus_SmartES, TestName = "Multistage Write VIF Primary SmartES")] public void TestMultistageWritingVif(string primaryFile) diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_full-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_full-sample.xml index c417f3e1822ca5785ab51ec4db0b9a5ac6a00365..85f865e71925dbca4a77fc9246cadbfcf02df70b 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_full-sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_full-sample.xml @@ -15,7 +15,6 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor <LegislativeCategory>M3</LegislativeCategory> <CorrectedActualMass>500</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>3500</TechnicalPermissibleMaximumLadenMass> - <AirdragModifiedMultistage>false</AirdragModifiedMultistage> <NgTankSystem>Compressed</NgTankSystem> <ClassBus>II+III</ClassBus> <NumberPassengerSeatsLowerDeck>1</NumberPassengerSeatsLowerDeck> diff --git a/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputDataTest.cs b/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputDataTest.cs index fa4c8b678a3b34567e2ea0e8a8120219f0b36004..2310a21f26852f99680f6a650ce4874d9db540d7 100644 --- a/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputDataTest.cs +++ b/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputDataTest.cs @@ -48,7 +48,7 @@ namespace TUGraz.VectoCore.Tests.XML Assert.AreEqual(LegislativeClass.M3, vehicle.LegislativeClass); Assert.AreEqual(500, vehicle.CurbMassChassis.Value());//CorrectedActualMass Assert.AreEqual(3500, vehicle.GrossVehicleMassRating.Value());//TechnicalPermissibleMaximumLadenMass - Assert.AreEqual(false, vehicle.AirdragModifiedMultistage); + Assert.AreEqual(null, vehicle.AirdragModifiedMultistage); Assert.AreEqual(TankSystem.Compressed, vehicle.TankSystem);//NgTankSystem Assert.AreEqual(RegistrationClass.II_III, vehicle.RegisteredClass);//ClassBus Assert.AreEqual(1, vehicle.NumberPassengerSeatsLowerDeck);